جلسه ششم : تست و خطا یابی
تست: خروجی این گام مشخصه تست است. در پیاده شازی باید موارد زیر انجام شود تا تست راحتتر باشد:
1) کدها عملیاتی باشند
2) هیچ اجرایی آزمایش برنامه را قطع نکند
3)قابلیت مشاهده در هر فرآیند
4) حالتهای مختلف سیستم قابل نمایش باشد
5) خطاهای داخلی را تشخیص دهد
6) نرمافزاری که مرتب نیازهای اولیه آن تغییر کند هزینه تست بیشتری خواهد داشت
ویژگیهای تست خوب
1) هدف تست خوب یافتن خطاها و اشکالات بیشتر با حداقل هزینه و زمان است
2) تست بیش از حد انجام نشود.
3) آزمایشها هوشمندانه باشد.
4) تست نرمافزار به معنی کشف همه خطاها و ارائه یک نرمافزار بدون خطاست.
انواع روشهای تست:
1) جعبه سفید: رویه برنامه یعنی خط به خط کدها را تست میکند.
2) جعبه سیاه: به داخل ماژولها کار ندارد. ورودی میخواهد و خروجی درست میخواهد.
استراتژی تست نرمافزار: پیادهسازدر گام باید تست مربوط به آن گام را انجام دهد تا در کل, تست نرمافزار در انتها بهتر و راحتتر باشد. هر یک از گامهای تولید نرمافزار تست خاص خود را دارد:
1) تست مولفه: از جعبه سفید استفاده میشود.
2) معماری: کمی از جعبه سیاه و کمی از جعبه سفید استفاده میشود.
3) تست اعتبارسنجی: با توجه به نیازها و محدودیتهای تعین شده در گام تحلیل, هر یک را تست (از نوع جعبه سیاه) میکنیم.
4) تست سیستم: در سطح مهندسی, از جعبه سیاه استفاده میشود.
تست جعبه سفید:
1) ساختمانداده محلی را بررسی میکنیم.
2) همهی شرطهای موجود در کدها بررسی میشوند.
3) حلقهها بررسی میشوند ( تعداد تکرار حلقهها )
4) بررسی مسیرهای کنترل: همهی مسیرهای مستقل که برنامه با طی آن اجرا میشود.
آزمایش شرطها: در تست جعبه سفید مسیرهای مبنا بررسی میشوند. در این مرحله طراحی رویهها رادرنظر میگیرند و از روی آن گراف جریان را رسم میکنند. برای تعیین تعداد مسیرهای مبنا 4 روش مختلف ووددارد:
1) محاسبه پیچیدگی دورانی: تعداد ناحیههای گراف جریان را محاسبه میکنیم.
2) استفاده از گزارههای شرطی: شمارههای گزارههای شرطی و جمع آنها با 1 است.
3) استفاده از فرمول: E تعداد یالها و N تعداد گرهها E - N + 2
4) ایجادماتریس گراف
آزمایش ساختارهای کنترل: در شرط موارد زیر را بررسی میکنیم:
پرانتز گزارهها, عبارت محاسباتی, عملگرهای محاسباتی, اولویتهای عملگرها, عملگرهای رابطهای, نوع متغیرها در عملگرهای رابطهای و نوع دادهها
ازمایش جریان دادهها: DU (Define Use) تعیین میکند که یک متغیر خاص در چه شماره دستوری تعریف و در چه شماره دستوری استفاده شده و در این زمان متغیر باید زنده بماند.
آزمایش حلقهها: حلقهها را در شرایط بررسی میکنیم:
اجرا نشدن حلقه, فقط یک گذر در طول حلقه, دو گذر طول حلقه, n-1 گذر, n گذر, n/2گذر, n-1 گذر, n+1 گذر
تست جعبه سیاه: میتواند از روی DFD هم بررسی شود. در تست جعبه سیاه در این گام از بالا به پائین انجام میشود. اول main را بررسی میکنیم و چون ما هنوز زیر سیستمهای main را بررسی نکردهایم و میخواهیم فقط main را بررسی کنیم از روش stub استفاده میکنیم.
Stub : زیر برنامهای است که چردازشی انجام نمیدهد و به جای زیر سیستمها stub قرار میدهیم.
تست آلفا: تست پیادهسازی با مشتری متفاوت است. از کاربر دعوت میشود و زیر نظر پیادهساز با سیستم کار میکند.
تست بتا: سیستم در یک محیط کنترل نشده زیر نظر مشتری مورد استفاده قرار میگیرد. هر سه ماه یکبار خطاها شناسایی شده را ارائه میکند.
تست سیستم: مهندس سیستم, سیستم را با سختافزار و رویههای کاری Join میکند و بعد کل سیستم را بررسی میکند.
تست فشار: تعداد ورودیهایی که برای سیستم در نظر گرفته شده را خیلی زیاد بالا میبریم تا ببینیم سیستم با این فشار چطور برخورد میکند.
تست احیا: سعی در جهت شکست و پائین آوردن نرمافزار داریم تا مشخص شود چقدر طول میکشد دوباره سیستم بالا بیاید و به حالت عادی خود بازگردد.
تست حفاظت: امنیت بررسی میشود.
تست کارایی: سیستم در زمان تعیین شده باید پاسخگو باشد.
تست رابط گرافیکی: انواع حالتهای رابط گرافیکی را چک میکنیم.
خطایابی: تست فرآیند رفتاری, درک علامتهای ظاهر شده در نرمافزار و دلیل ان. در تست فقط علائم شناسایی میشوند, اما روشهای حل و اینکه به کجا ربط دارد بر عهده خطایاب است. روشهای خطایابی عبارتند از:
1) تصادفی: محتویات حافظه را چاپ میکنیم و از خود کامپیوتر با صرف هزینه و وقت زیاد استفاده میکنیم.
2) عقبگرد: حدس میزنیم خطا از کجا رخ داده به عقب میرویم تا بررسی کنیم در مسیر کار چطور انجام شده.
3) حذف علت: حدس میزنیم که دلایل این شکست چیست, هر یک را بررسی میکنیم (از روی تجربه)