مقدمه ای بر تست نرم افزار

مقدمه ای بر تست نرم افزار

 

مفاهیم تست
برای اینکه تست قدرتمند و جامعی داشته باشیم نیازمند فراگیری مفاهیم تست هستیم. در پست‌های اول بر روی مفاهیم تست که شامل تعاریف، سطوح، استراتژی ها و… تمرکز کرده و سپس به پیاده سازی تست و ابزارهای مربوطه می‌پردازیم.
تست نرم‌افزار چیست؟
سازمان‌ها یا شرکت‌هایی که نرم افزارها را توسعه می‌دهند، محصولی به نام نرم افزار تولید می‌کنند. ولی چه عامل یا عواملی باعث می‌شوند که یک نرم افزار از نرم افزار مشابه دیگر متمایز و برجسته شود؟ عوامل متعددی را می‌توان نام برد که باعث این برتری و تمایز شود اما یکی از این عوامل می‌تواند کیفیت محصول نهایی باشد که به بازار عرضه خواهد شد. اما برای رسیدن به این نقطه تمایز و برتری باید چگونه عمل کرد و اندیشید؟ یک پاسخ به این سوال می‌تواند تست نرم افزار و نحوه انجام آن باشد.


حتی تست را می‌توان یکی از زیرمجموعه‌های مبحث کیفیت نرم افزار با نام “تضمین کیفیت” درنظر گرفت. در واقع تست نرم افزار به دنبال خطایابی و عیب یابی محصول، قبل از تحویل به مشتری است. اینکه هم توسعه‌دهندگان و هم کاربران نهایی برروی یک نرم افزار کارآمد و قابل بکارگیری که پاسخگوی نیازمندی‌های تعریف شده باشد، هم نظر باشند.
تست را می توان به صورت‌های زیر معنا کرد:
– تلاش‌هایی در جهت عیب یابی و رفع آن، نه تلاش در جهت اثبات کامل صحت نرم افزار، زیرا این قضیه با ماهیت تست تفاوت دارد.
– تست نرم‌افزار یا آزمایش نرم‌افزار، تحقیق برروی کیفیت یک محصول یا سرویس نرم‌افزاری و ارایه اطلاعات ناشی از آن به مشتری‌ها است. این تحقیق جستجوی نرم‌افزار مزبور برای یافتن خطاها را نیز دربرمی‌گیرد ولی به آن محدود نمی‌شود.
– تست‌ها یک سری از سوال و جواب‌هایی هستند که نرم‌افزار را با آن امتحان می‌کنیم در حالی که از برنامه انتظار داریم با توجه به ورودی‌هایی که با استفاده از سوالات وارد می‌کنیم، جواب‌های صحیحی را به عنوان خروجی به دست دهد.
– تست نرم‌افزار حیطه وسیعی از فعالیت‌های مربوط به تولید برنامه‌های کامپیوتری را دربرمی‌گیرد که از تست کردن کد برنامه توسط برنامه‌نویس گرفته تا نشان دادن عملکرد درست یک سیستم اطلاعاتی بزرگ به مشتری و ارزیابی نرم‌افزار در حین رانش یک شبکه مرکزی کاربردی را دربرمی‌گیرد.
– تست نرم افزار شامل فرآیند اجراهای متعدد برنامه با هدف یافتن باگ‌های نرم افزاری است اما محدود به آن نمی‌باشد، تضمین اینکه تا چه حد نیازمندی‌های موجود را برآورده می‌کند و آیا با انتظارات مشتری سازگار است یا خیر نیز توسط فرآیند تست مشخص می‌شود.
– تست ها به دفعات تکرار خواهند شد تا مشکلات هر چه بیشتر نمایان شوند. استاندارد تست نرم افزار فرآیندهایی را در جهت آشکارسازی و برطرف کردن عیوب سیستم دنبال خواهد کرد.
– تست نرم‌افزاراز وظایف توسعه دهندگان نرم‌افزار است و نه از وظایف تحویل گیرندگان آن.
– دایکسترا (Edsgar W.Dijkstra) در تعریف تست می گوید: تست فقط می‌تواند وجود خطاها را نشان دهد نه عدم وجود آنها را !
– تست نرم افزار به طور رسمی جزی از بازبینی و اعتبارسنجی نرم افزار می‌باشد، که این دو واژه به صورت زیر تعریف و با هم مقایسه می‌شوند.
وارسی: آیا محصول را به درستی می‌سازیم؟
اعتبارسنجی: آیا محصول درستی را می‌سازیم؟
وارسی بررسی می‌کند که آیا نرم افزار از مشخصاتش پیروی می‌کند یا خیر. اعتبارسنجی باید تضمین کند که نرم افزار انتظارات مشتری را برآورده می‌سازد یا نه. توجه کنید که آنچه در مشخصات می‌آید ممکن است دقیقا خواسته‌های مشتری را برآورده نسازد.
در واقع هدف فرآیند تست در یک جمله ” ایجاد اعتماد نسبت به سیستم ” است. اما چطور می‌توان نسبت به سیستم ایجاد اعتماد نمود؟ عوامل مختلفی در این امر دخیل هستند اما نقش تست پررنگ‌تر می باشد. به همین دلیل تست دو هدف اصلی را دنبال می‌کند:
۱- تست اعتبارسنجی: موفقیت آن در درست کارکردن سیستم است.
۲- تست نقص: موفقیت آن در نمایان سازی خطاهایی است که موجب کارکرد نادرست سیستم می شود.

چه کسی تست می‌کند؟
در صنعت IT، شرکت‌های بزرگ، تیمی برای بررسی نرم افزارهای تولیدی در چارچوب الزامات و فعالیت‌های شرکت دارند که این تیم، تیم تست می‌باشد.
در اغلب موارد تستر در یکی از بخش‌های زیر قرار می‌گیرد:
– بخش تست نرم افزار
– بخش توسعه نرم افزار
شرکت‌ها طراحی‌های متفاوت و وظایف و نقش‌های متفاوتی برای اشخاصی که تست نرم افزار انجام می‌دهند، قائل می‌شوند. این نقش‌ها عبارتند از : تستر نرم افزار، تضمین کیفیت نرم افزار( QA) ، تحلیلگر و …
چه زمانی تست شروع می‌شود؟
در طول چرخه عمر توسعه نرم افزار (Software Development Life Cycle) که به آن SDLC گفته می‌شود، تست آغاز شده و تا استقرار نرم افزار به طول می‌انجامد.
با این حال تمامی این تست‌ها بستگی به مدل توسعه‌ای دارد که شرکت‌ها انجام می‌دهند. به طور مثال در مدل آبشاری، تست در مرحله تولید نرم افزار انجام می‌شود اما در مدل افزایشی، تست در پایان هر افزایش یا تغییر، تکرار می‌شود و در پایان تولید نرم افزار هم دوباره تست انجام می‌شود.
در هر مرحله از SDLC ، تجزیه و تحلیل و تاییدیه‌های مورد نیاز نیز برای تست در نظر گرفته می‌شود. بررسی طراحی در مرحله طراحی محصول نیز به قصد بهبود طراحی در حوزه تست نیز در نظر گرفته می‌شود. انجام تست توسط یک توسعه دهنده پس از اتمام کد نیز به عنوان تست واحد (Unit Test) طبقه بندی می‌شود.
انجام تست در طول SDLC مزایای زیر را در بر دارد:
۱- کاهش زمان تولید
۲- کاهش هزینه ها
۳- کاهش زمان دوباره کاری‌ها
۴- کاهش خطاهای نرم افزاری
۵- افزایش بازدهی
۶- افزایش کیفیت نرم افزار
۷- تحویل به موقع پروژه به کارفرما
۸- افزایش رضایت مشتری
چه زمانی تست پایان می‌یابد؟
بر خلاف آنکه می‌دانیم چه زمانی تست را آغاز کنیم، تعیین زمان پایان تست بسیار دشوار است. تست فرآیندی بی پایان می‌باشد و تعیین زمانی برای توقف آن بسیار دشوار است و نمی‌توان با اطمینان گفت که نرم افزار تولیدی ۱۰۰% تست شده است.
مواردی که نبایستی برای تست درنظر گرفته شود:
۱- تعیین مهلت تست
۲- اطمینان از کامل بودن تست
۳- پس از اتمام تست فانکشنال و تست پوشش کد، نبایستی نتیجه را به نقطه خاصی سوق دهیم.
۴- اگر در سطح خاصی نرخ خطا کمتر بوده و بدون باگ باشد این سطح از اولویت بالاتری شناخته شود.
محصولات نرم افزاری برای کشف و رفع باگ‌ها وهمچنین تعیین کیفیت نیاز به تست دارند. روند تست نرم افزار گاهی می‌تواند به اندازه توسعه نرم افزار انرژی برده و بااهمیت باشد. تست نرم افزار شامل فرآیند اجراهای متعدد برنامه با هدف یافتن باگ‌های نرم افزاری است اما محدود به آن نمی باشد، تضمین اینکه تاچه حد نیازمندی‌های موجود را برآورده می‌کند و آیا با انتظارات مشتری سازگار است یا خیر نیز توسط فرآیند تست مشخص می‌شود.

منابع ( + + )

18 نظر برای نوشته «مقدمه ای بر تست نرم افزار»

  • فروردین ۲۷, ۱۳۹۳ در ساعت ۲:۵۲ ب.ظ
    لینک

    ممنونم خانم رضا. مطالب بسیار خوب و کاملی بود. با توجه به اینکه در ایران منبع مناسبی جهت تست نرم افزار وجود ندارد، شروع این بلاگ را به فال نیک می گیریم.

    پاسخ
    • اردیبهشت ۱۵, ۱۳۹۳ در ساعت ۲:۵۹ ب.ظ
      لینک

      مرسی آقای ایمانی توجه شما من رو دلگرم می کنه که این راه رو ادامه بدم و به همکاری دوستان امیدوار باشم

      پاسخ
  • اردیبهشت ۶, ۱۳۹۳ در ساعت ۱۱:۰۸ ق.ظ
    لینک

    با تشکر از خانوم رضا بابت مطالب مفیدی که ارائه دادن

    پاسخ
  • اردیبهشت ۱۴, ۱۳۹۳ در ساعت ۳:۱۵ ب.ظ
    لینک

    آفرین، یک سایت برای تست که فارسی هم هست. کار قشنگیه، امیدوارم به همین خوبی ادامه بدی و ما هم استفاده کنیم از مطالب خوبت.
    ۲ تا نیمچه نکته بگم:
    ۱- تست در آنور آبها خیلی کار خوب و پردرآمدی هست و خیلی شرکتها دنبال تستر خوب میگردن که حقوقشون هم اصلا از اکثر برنامه نویسها پایین تر نیست.
    ۲- بد نیست که چند نمونه تست رو همراه با کد بزاری اینجا در آینده که روشنتر بشه منظور چی هست، مخصوصا تفاوت تستهایی مثل Unit Test، Functional Test و User Acceptance Test

    پاسخ
    • اردیبهشت ۱۵, ۱۳۹۳ در ساعت ۳:۰۵ ب.ظ
      لینک

      تشویق و پیشنهادت خیلی خوشحالم کرد. با اینکه زمینه تست داخل کشور بسیار ناچیز شمرده شده و بسیاری از مواقع دیده نمی شه، توجه و پیگیری شما امیدوارم میکنه که این مسیر رو ادامه بدم. مرسی از دو نکته ای که گفتی. از مفاهیم تست شروع کردم که ان شاالله به نکته هایی که گفتی برسم واز نظر اطلاعات بشه گفت سایت جامعی هست. در این مسیر همین که کنارم باشین و با این نکات منو کمک کنین برام کافیه

      پاسخ
  • اردیبهشت ۲۶, ۱۳۹۳ در ساعت ۱۲:۲۴ ب.ظ
    لینک

    فکر کنم وارسی و اعتبارسنجی جاهاشون اشتباه شده است.
    Validation: Are we building the right system?
    Verification: Are we building the system right?

    پاسخ
    • اردیبهشت ۲۷, ۱۳۹۳ در ساعت ۱۰:۴۶ ق.ظ
      لینک

      ممنون از دقتتون درستش کردم

      پاسخ
  • بهمن ۱۱, ۱۳۹۳ در ساعت ۹:۲۵ ق.ظ
    لینک

    کار زیبایی رو شروع کردین.
    امیدوارم که به قدرت ادامه بدین.
    با افتخار در سایتم شما رو لینک کردم :)

    پاسخ
  • بهمن ۱۱, ۱۳۹۳ در ساعت ۹:۲۶ ق.ظ
    لینک

    بی زحمت مطالبی درباره انواع تست ها نیز منتشر کنین.
    با تشکر

    پاسخ
    • بهمن ۱۱, ۱۳۹۳ در ساعت ۱:۳۸ ب.ظ
      لینک

      در مورد انواع تست مطالب متعددی منتشر شده است

      پاسخ
  • خرداد ۲۴, ۱۳۹۴ در ساعت ۲:۰۲ ب.ظ
    لینک

    با تشکر از شما به خاطر مطالب خوبی که گذاشتید اگر ممکن است در مورد معرفی تکنیک های موارد آزمون در سطح نرم افزار هم مطالبی را بگذارید

    پاسخ
  • مهر ۸, ۱۳۹۴ در ساعت ۱:۰۸ ب.ظ
    لینک

    با سلام و خسته نباشید
    و ممنون از اطلاعاتی که در دسترس قرار دادید .من میخواستم بدونم که بعد از اینکه تست رو انجام دادیم و در قالب یه فایل با کلی جدول آماده کردیم ، سند مربوط به تست که باید آماده بشه رو با چه فیلد هایی تهیه کنیم .
    در پناه خدا .
    سپاس.

    پاسخ
  • آبان ۴, ۱۳۹۴ در ساعت ۱۲:۴۸ ب.ظ
    لینک

    خیلی ممنون از زحمتی که کشیدید. مطالب فارسی مربوط به برنامه نویسی کم پیدا میشه. واقعا ممنون از زحمتتون

    پاسخ
  • آبان ۲۸, ۱۳۹۵ در ساعت ۲:۱۹ ب.ظ
    لینک

    سلام

    انواع بازبینی رو میشه لطفا ذکر کنید
    تشکر

    ( راستش موضوع سمینارم آزمون نرم افزار است )

    پاسخ
  • دی ۲۵, ۱۳۹۵ در ساعت ۴:۲۶ ب.ظ
    لینک

    خیلی ممنون.
    تشکر بابت وقتی که برای جمع آوری و ارائه این مطالب گذاشتین.

    پاسخ
  • بهمن ۲۶, ۱۳۹۵ در ساعت ۲:۱۴ ب.ظ
    لینک

    با سلام ،

    اگه امکانش باشه برای مطالب سایتتون گزینه چاپ مطلب رو هم اضافه کنید

    پاسخ
  • بهمن ۷, ۱۳۹۷ در ساعت ۱۰:۰۹ ب.ظ
    لینک

    شما اطلاعاتی درباره ی سربار هزینه های تست دارید به بنده کمک کنید ممنون از لطفتون

    پاسخ

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *