در این پست ابتدا به بررسی هفت اصل اساسی تست نرم افزار خواهیم پرداخت، سپس کلیات و گام های فرآیند تست نرم افزار را بررسی خواهیم نمود.
هفت اصل در فرآیند تست نرم :
در این بخش به هفت اصلی که پایه و اساس تست نرم افزار را تشکیل می دهند خواهیم پرداخت. این اصول در بسیاری از پروژه های تست نرم افزار یا حتی همه ی آنها تاثیر گذار هستند. دانستن این اصول برای هر تستر نرم افزار الزامی می باشد.
اصل ۱: تست نرم افزار نشاندهنده ی حضور خطا هست و الزاما نشانه ی یک نرم افزار بدون خطا نمی باشد
در تست نرم افزار هدف یافتن باگ ها و خطا های نرم افزاری می باشد و زمانی که تست نرم افزار با موفقیت pass می شود نشان دهنده ی این موضوع می باشد که در موارد تست خطایی پیدا نشده است اما این موضوع نشان دهنده ی این نیست که در همان موارد تست شده با ورودی های متفاوتی خطایی وجود ندارد. در واقع شما با تست یک نرم افزار احتمال وجود خطای نرم افزاری را کاهش می دهید. در نتیجه با اجرای روش های مختلف تست بر روی ماژول های نرم افزاری شما احتمال حضور خطا را کاهش می دهید. در نظر داشته باشید که زمانی که با تست نرم افزار سناریو های مختلف نرم افزاری را مورد تست قرار داده باشد الزاما نشان دهنده ی صحیح بودن نرم افزار نیست.
اصل ۲: تست کامل نرم افزار غیر ممکن است
توجه کنید که تست همه چیز (تمامی ورودی ها و پیش شرط های ممکن) تنها برای موارد ساده قابل انجام است و در سناریو های واقعی این امر یک امر غیر ممکن است. در نتیجه به جای تست کامل نرم افزار باید با استفاده از فرآیند های آنالیز ریسک، تکنیک های تست نرم افزار و اولویت بندی تست نرم افزار سعی در متمرکز کردن فرآیند تست در یافتن خطا ها داشت.
اصل ۳: تست زودهنگام نرم افزار در هزینه و زمان صرفه جویی می کند
جهت یافتن خطا های در زودترین زمان، باید فعالیت های تست ایستا و تست پویا در زودترین زمان ممکن در چرخه ی توسعه ی نرم افزار انجام شود. تست زودهنگام خروجی های فرآیند توسعه ی نرم افزار (Software Artifacts) باعث کاهش هزینه یا از میان رفتن هزینه ی تغییرات می شود.
اصل ۴: خطا های نرم افزاری در کنار هم قرار دارند
معمولا تعداد کمی از ماژول های نرم افزاری دارای درصد بیشتری از خطاهای نرم افزاری می باشند یا باعث ایجاد خطا در محیط عملیاتی میشوند. پیش بینی خوشه های خطا در تست نرم افزار و یافتن این خوشه ها در زمان تست یا در سیستم عملیاتی، یکی از مهمترین ورودی ها در آنالیز ریسک و تمرکز بیشتر فرآیند تست نرم افزار می باشد.
اصل ۵: به پارادوکس آفت کشی (pesticide paradox) توجه کنید
اگر تست های نرم افزار را دائما تکرار کنید، این تست ها خطا های جدیدی را کشف نمی کنند. برای یافتن خطا های جدید، تست های طاحی شده کنونی با داده های تست جدید و یا طراحی تست های جدید میسر می شود.( همانند سموم آفت کش با اجرای چندین باره آفت های جدید کشته نمی شوند). در برخی از موارد مانند تست رگرسیون اتوماتیک، این پارادوکس خروجی مورد نظر که خطا های کمتر رگرسیون می باشد را به ارمغان می آورد.
اصل ۶: تست نرم افزار وابسته به context است
تست نرم افزار در context های مختلف، مختلف انجام می شود.به عنوان مثال تست نرم افزار در نرم افزار های safety-critical نسبت به تست نرم افزار در نرم افزار های تجاری و اپلیکیشن های موبایل متفاوت انجام می شود و یا تست نرم افزار در پروژه های agile و تست نرم افزار در پروژه های sequential مانند متدولوژی waterfall متفاوت است.
اصل ۷: نرم افزار بدون خطا غیر ممکن است
برخی از سازمان ها انتظار دارند تا تستر ها بتوانند تمامی تست های ممکن انجام شده و تمامی خطاهای نرم افزاری در زمان تست نرم افزار یافته شده و رفع شوند. اما اصول ۲ و ۱ به ما نشان می دهند که رسیدن به این هدف غیر ممکن می باشد. همچنین انتظار این که با یافتن و رفع خطا های زیاد نرم افزاری الزاما نشاندهنده ی موفقیت نرم افزار نیست. به عنوان مثال بررسی کامل نیازمندی ها و تست و رفع تمامی خطا های یافته شده ممکن است در نتیجه به یک نرم افزار با کاربری دشوار را تولید شود که تمامی نیازمندی های کاربر را پاسخ می دهد.
فرآیند تست نرم افزار
با توجه به اصول تست نرم افزار، فرآیند تست نرم افزار با توجه به context و فرهنگ سازمان باید طراحی شود و نمی توان یک فرآیند را برای تمامی سازمان ها و پروژه ها در نظر گرفت. فاکتور های تاثیر گذار در طراحی فرآیند تست نرم افزار شامل موارد زیر می شود:
- مدل SDLC و متدولوژی مورد استفاده در توسعه ی پروژه ی نرم افزاری. به عنوان مثال فرآیند تست نرم افزار در پروژه های agile با فرآیند تست نرم افزار در پروژه های waterfall متفاوت می باشد.
- سطوح تست (سطح واحد، یکپارچه سازی و ... ) و انواع تست (تست های عملکردی و غیر عملکردی) مورد نظر مورد نظر در پروژه. به عنوان مثال در یک پروژه ی بزرگ و پیچیده ممکن است از روش های مختلف تست یکپارچه سازی با فرآیندی مطابق با این نیاز استفاده شود در صورتی که در پروژه های کوچکتر از تست یکپارچه سازی استفاده نشود.
- ریسک های پروژه و محصول در حال توسعه (زمانی که ریسک پروژه پایین باشد نیازی به فرآیند formal تست نرم افزار نمی باشد)
- حوزه ی کسب و کار (به عنوان مثال حوزه ی توسعه ی اپلیکیشن های موبایل در برابر حوزه ی توسعه ی نرم افزارهای دستگاه های مرتبط با سلامت)
محدودیت های اجرایی شامل:
- بودجه و منابع پروژه
- زمانبندی پروژه
- پیچیدگی های پروژه
- نیازمندی های قراردادی و رگولاتوری
- سیاست های سازمانی
- استاندارد های داخلی و خارجی مورد نیاز
سطح پوشش تست (test coverage)
سطح پوشش تست در فرآیند تست نرم افزار یک معیار یا اندازهگیری است که نشان میدهد چه میزان از کد، نیازمندیها، یا موارد تستشده در فرآیند تست پوشش داده شده است. این مفهوم بهطور معمول برای ارزیابی میزان جامعیت تستهای اجرا شده بهکار میرود. سطح پوشش تست میتواند به اشکال مختلفی تعریف شود، مانند:
- پوشش کد: درصد خطوط کد، شاخهها، یا مسیرهای اجرایی که توسط تستها بررسی شدهاند.
- پوشش نیازمندیها: درصد نیازمندیهای سیستمی که توسط تستها پوشش داده شدهاند.
معمولاً این معیار برای شناسایی بخشهای نادیدهگرفتهشده از سیستم و افزایش کیفیت تستها استفاده میشود.
مبنی تست(test basis):
مبنای تست شامل مجموعهای از اطلاعات است که برای طراحی و ایجاد موارد تست استفاده میشود. این اطلاعات میتواند شامل موارد زیر باشد:
- نیازمندیها (مانند نیازمندیهای کسبوکار یا عملکردی)
- مدلهای طراحی (مانند دیاگرامهای معماری یا فلوچارتها)
- مستندات سیستم (مانند مشخصات فنی یا مستندات رابط کاربری)
- اطلاعات تجربی یا تاریخی (مانند نتایج تستهای قبلی)
مبنای تست مشخص میکند که چه چیزی باید تست شود و به تستکنندهها کمک میکند تا از کامل بودن و مرتبط بودن تستها اطمینان حاصل کنند.
فعالیت ها و کارهای تست نرم افزار:
فرآیند تست نرم افزار شامل گروه های اصلی فعالیتی زیر می شود:
- برنامه ریزی تست نرم افزار
- نظارت و کنترل تست نرم افزار
- آنالیز تست نرم افزار
- طراحی تست نرم افزار
- پیاده سازی تست نرم افزار
- اجرای تست نرم افزار
- اتمام تست نرم افزار
برنامه ریزی در فرآیند تست نرم افزار:
برنامهریزی تست اولین و اساسیترین مرحله در فرآیند تست نرمافزار است که در آن اهداف، استراتژیها، منابع، زمانبندی، و روشهای ارزیابی مشخص میشوند. این مرحله شامل تعیین مسئولیتها، ابزارها، معیارهای قبولی و تعیین ریسکها است.
خروجی گام:
برنامه تست (Test Plan): شامل استراتژی تست، اهداف، محدوده، منابع مورد نیاز، زمانبندی، و معیارهای قبولی.
ماتریس ردیابی نیازمندیها (Requirements Traceability Matrix - RTM): سندی که نیازمندیها را به موارد تست مرتبط میکند.
نظارت و کنترل تست نرم افزار
این فعالیت به ارزیابی پیشرفت تست نسبت به برنامه اولیه و اتخاذ اقدامات اصلاحی برای برطرف کردن انحرافات میپردازد. نظارت بر عملکرد تستها به اطمینان از دستیابی به اهداف تعیینشده کمک میکند. این اهداف را می توان به شکل زیر دسته بندی کرد:
- بررسی نتایج تست و لاگ های تولید شده در برابر سطح پوشش مشخص شده در برنامه ی تست (تا زمانی که سطوح پوشش مشخص شده پوشش داده نشده اند باید فرآیند تست ادامه پیدا کند)
- ارزیابی سطح کیفی مولفه یا سیستم تولید شده بر اساس نتایج و لاگ های تست های انجام شده
- ارزیابی ریسک محصول و تصمیم گیری جهت اضافه نمودن تست های بیشتر جهت بهبود کیفیت و یا کاهش ریسک
خروجی گام:
- گزارش پیشرفت (Test Progress Report): گزارشی که وضعیت فعلی تستها را نشان میدهد.
- اقدامات اصلاحی (Corrective Actions): تغییراتی در برنامه برای همراستا کردن فرآیند با اهداف تعیینشده
آنالیز در فرآیند تست نرم افزار
در این مرحله نیازمندیها و مستندات سیستم بررسی میشود تا مشخص شود چه چیزی باید تست شود. هدف، شناسایی شرایط تست(Test Conditions) است.
خروجی گام:
· شرایط تست (Test Conditions): لیستی از ویژگیها یا سناریوهایی که باید مورد بررسی قرار گیرند.
· شناسایی ریسکهای تست: مواردی که ممکن است بر کیفیت یا جامعیت تست تأثیر بگذارد.
طراحی در فرآیند تست نرم افزار
در این مرحله، موارد تست (Test Cases) و مجموعه تستها (Test Suites) بر اساس شرایط تست تعریفشده طراحی میشوند. هدف این مرحله ایجاد تستهایی است که جامعیت و دقت کافی را داشته باشند.
خروجی گام:
- موارد تست (Test Cases): سناریوهای دقیق شامل ورودیها، پیششرطها، اقدامات، و نتایج مورد انتظار.
- داده های تست (Test data): مشخص نمودن ورودی های مختلف جهت اجرای هر مورد تست و نتایج مورد انتظار
- مجموعه تستها (Test Suites): گروهبندی موارد تست بر اساس اهداف یا ویژگیهای مشترک.
پیاده سازی تست نرم افزار
این مرحله شامل آمادهسازی محیط تست، ابزارها و دادههای مورد نیاز برای اجرای تستها است. همچنین ترتیب اجرای تستها نیز مشخص میشود.
خروجی گام:
- محیط تست (Test Environment): تنظیمات سختافزاری و نرمافزاری مورد نیاز برای تست.
- دادههای تست (Test Data): دادههای نمونه برای اجرای تست.
- لیست اولویت اجرای تستها: ترتیب اجرای تستها بر اساس اهمیت و اولویت
اجرای تست نرم افزار
در این مرحله، موارد تست به ترتیب مشخصشده اجرا میشوند و نتایج آنها ثبت میشود. خطاهای شناساییشده ثبت و برای رفع به تیم توسعه ارجاع داده میشوند.
خروجی گام:
- گزارش اجرای تست (Test Execution Report): نتایج هر تست و وضعیت آن (موفق یا ناموفق).
- گزارش باگ (Bug/Defect Report): مستنداتی که مشکلات شناساییشده را توضیح میدهند.
اتمام تست نرم افزار
پس از اطمینان از پوشش کافی تستها و برآورده شدن اهداف تست، فعالیتهای اتمام تست آغاز میشوند. این شامل ارزیابی فرآیند تست و مستندسازی درسآموختهها است.
خروجی گام:
- گزارش نهایی تست (Test Summary Report): مروری جامع بر تمامی فعالیتها، نتایج، و کیفیت محصول.
- مستندات درسآموختهها (Lessons Learned): نکاتی برای بهبود فرآیند تست در آینده.
- آرشیو مستندات تست: شامل برنامهها، گزارشها، و موارد تست برای استفاده در آینده.
حال که با فرآنید تست نرم افزار آشنا شدید. می توانید از دیگر مقالات سایت ایوولرن دیدن کنید.