هدف از تست نرمافزار، ارزیابی آن در رسیدن به اهداف از قبل تعیین شده و همچنین مشخص کردن هر گونه خطا در عملکرد نرمافزار است. در طی مراحل تست ابتدا مشخص میکنند که آیا عناصر نرمافزاری وظایف خود را به درستی انجام میدهند و خروجیهای مطلوب را ایجاد میکنند؟ برای این منظور، میتوان با استفاده از تست جعبه سفید کد برنامه را بررسی کرد تا اینکه عامل خطا در داخل کد برنامه مشخص شود.
در پست قبل تست جعبه سفید را تعریف کرده و هدف از انجام آن را بیان کردیم. در این بخش مراحل انجام کار و مزایا و معایب این روش را میگوییم.
از جمله اعمالی که در این استراتژی انجام میشود:
۱- بررسی سطر به سطر کد (Code coverage): بررسی خطوط کد، بهصورت خط به خط و جزء به جزء، به صورتیکه خطوط کد و مسیرهای مستقل داخل یک پیمانه حداقل یک بار اجرا و تست شوند.
۲- بررسی همه انشعابها (branch) : در کد برنامه باید تمام عبارتهای شرطی ( if elseها و Switch case ها) را تک به تک مورد بررسی قرار داد. در یک عبارت if else هم قسمت if و هم قسمت else هر کدام بهصورت مجزا یک بار اجراء شوند. حتی else هایی که شاید هیچگاه اجرا نشوند را تست میکنیم.
۳- بررسی همه حلقهها: حلقهها در نرمافزار نقش اساسی دارند، چون میتوانند با اشتباه جزئی مقدار زیادی از منابع را مصرف کنند. برای مثال شرط خروج از حلقه به اشتباه هیچ وقت True نشود! برای مثال حلقهها را با ورودی بزرگتر از شرط خروج حلقه چک کنید یعنی حلقه اصلا اجر نشود. تستی طراحی کنید که حلقه دقیقا یک بار اجراء شود، تستی طراحی کنید که حلقه در یک بازه خاص اجراء شود و …. همه حلقهها باید تست شوند، زیرا میدانیم که حلقهها نقش تاثیرگذاری در برنامه، خصوصا در بخش حافظه ایفا میکنند. بنابراین بررسی روند کارکرد و فضای مصرفی آنها لازم بهنظر میرسد.
۴- از تمامی ساختارهای اطلاعاتی داخلی در جهت تضمین اعتبار نرمافزار استفاده کنیم.
۵- مدیریت خطای مطلوب : بررسی اینکه اگر به یک متد یک ورودی نامعتبر وارد شود، نحوه آگاه سازی و نمایش مطلوب خطا برای کاربر چگونه باشد؟
۶- بررسی امنیت : سیستم را از این جهت که چگونه در برابر دسترسیهای غیرمجاز، هک، کرک و هر چیز دیگر که میتواند به آن آسیب برساند مورد بررسی قرار میدهد. در اینجا ما باید مکانهایی از کد که دادهها را اعتبارسنجی و مدیریت میکنند، دسترسی به منابع یا عملیات مهم و حیاتی را انجام میدهند را بررسی کنیم.
۷- برای موارد بالا و مواردی دیگری که ذکر نشد روشهای مختلف تست در استراتژی جعبه سفید وجود دارد که عبارتند از:
Basis Path Testing –
Equivalence Partitioning/Boundary Value Analysis –
Method Coverage –
Statement Coverage –
Branch Coverage –
Condition Coverage –
Data Flow Testing –
Flow Graphs Revisited –
مزایای این تست عبارتند از:
- برای شروع این تست نیازی به GUI ندارید و میتوانید به راحتی تست کنید.
- تمامی مسیرها در کد تست میشوند، بنابراین میتوان گفت به پوشش تست تقریبا کاملی میرسید.
- تستر میتواند در مورد اجرای هر کد برنامه، از برنامه نویس سوالات خود را مطرح کند. آگاهی از نحوه کارکردن کدهای برنامه باعث میشود خطاها راحتتر یافت شوند.
- تستر مانند دستگاهی است که از بیرون به ساختاردرونی کد آگاهی کامل دارد. بنابراین نحوه ورود دادهها را شناسایی کرده و درعملکرد سیستم تاثیر مطلوب دارد.
- بهینه سازی کد برنامه بهواسطه تستر بهتر میشود.
معایب این تست عبارتند از:
- تسلط بر انجام تست در این بخش الزامی است. بنابراین تستر بایستی از دانش برنامه نویسی خوبی برخوردار باشد تا ساختار داخلی کد برنامه را شناخته و تستهای متفاوتی انجام دهد.
- برنامه در طول چرخه تولید، مداوم به روز رسانی میشود. با هر تغییر برنامه ، اسکریپتهای تست تغییر میکنند. تغییر اسکریپتها کاری هزینه بر است.
- تستهای بزرگ و زیاد روی برنامه بدین معنا نمیباشد که تست کامل صورت گرفته است.
- این تست بسیار هزینه بر از تستهای دیگر است.