در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

روش های تست نرم افزار - قسمت 1

متاسفانه در کشور ما آنچه که از سوی برنامه نویسان و شرکت های برنامه نویسی بسیار مورد کم لطفی قرار گرفته، موضوع کیفیت نرم افزار یا Quality Assurance است. تقریباً در بسیاری از نهادها و شرکت های برنامه نویسی اتمام کد نویسی به منزله اتمام و آماده شدن برنامه است. اما اغلب شرکت های پیشتاز جهانی در این زمینه دقیقاً برخلاف این روال عمل می کنند. آنها معتقدند که پیش از انتشار نرم افزار می بایست اقداماتی را در جهت تضمین و ارتقاء کیفیت نرم افزار از جمله رفع خطاهای احتمالی، افزایش کارائی و ساده تر کردن نرم افزار انجام داد.

در این مقاله که در دو بخش ارائه شده سعی داریم شما را با با یکی از معیارهای مهم در تضمین کیفیت نرم افزار که همانا تست برنامه است آشنا کنیم. در طول این مقاله با موضوعات زیر مواجه خواهیم شد:

  1. آشنایی با تست برنامه
  2. انواع تست و آزمون ها
  3. معیارهای تست برنامه
  4. روش های انجام تست
  5. زمان مناسب انجام تست
  6. ابزارهای انجام تست

راه های کشف و رفع خطا

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

Debug یا خطایابی

این روش از قدیم الایام برای کشف دلیل خطاهای برنامه مورد استفاده قرار می گرفته. در این روش برنامه نویس خط به خط کد خود را مطالعه می کند تا دلیل و عامل خطاهای موجود در برنامه کشف و رفع کند. در واقع هدف دیباگ آنست که کشف کند به چه دلیل یک باگ در برنامه رخ داده؛ بنابراین دیباگ یک فعالیت رفع اشکال است نه کشف اشکال. در این روش به نام متغییرها و طریقه استفاده از آنها، به حلقه ها و تمام ساختارهای موجود در برنامه توجه می کنیم، تا دلیل رخ دادن یک خطا را کشف کرده و آنرا رفع کنیم. دیباگ برای کشف سه نوع خطا استفاده می شود که در ذیل توضیح داده شده اند:

خطای لغوی یا Syntax Error

این نوع خطاها در اثر تایپ نادرست فرامین و کلمات کلیدی در کد برنامه تولید می شود. معمولاً این خطاها توسط محیط های برنامه نویسی امروزی (IDE) به راحتی کشف می شوند. مثلاً در ویژوال استودیو زیر این نوع خطاها با خط قرمزی مشخص می شود. در صورتی که چنین خطایی در برنامه داشته باشیم، برنامه ما اصلا اجرا نخواهد شد. این خطا ساده ترین نوع است.

خطاهای نحوی یا Semantic Error

این خطاها در نحو زبان ایجاد می شوند به این معنی که شما در تولید یک جمله صحیح در زبان برنامه نویسی دچار خطا می شوید. این مثال را در نظر بگیرید:

We went to the park yesterday.

ما دیروز به پارک رفتیم. این یک جمله صحیح است. اما جمله زیر را در نظر بگیرید:

We went to the park tomorrow.

ما فردا به پارک رفتیم. این جمله از نظر گرامری و نحوی غلط است.چنین حالتی در برنامه نویسی نیز می تواند به صورت های زیر رخ دهد:

در دستور switch بعد از case ها دستور break را قرار ندهید. در این صورت در تله آبشار سقوط خواهید کرد. (این خطا در C# به کاربر اعلام می شود) یا اینکه پس از دستور for یک علامت سمی کالون قرار دهید. در این صورت با یک حلقه پوچ مواجه خواهید شد.

For(int i=0;i<=100;i++);

خوشبختانه در بیشتر مواقع نیز IDE های مدرن در صورت کشف چنین خطاهایی به شما اخطار می دهند. این اخطارها در ویژوال استودیو معمولاً به رنگ سبز نمایش میابند؛ یا اینکه در قالب یک Warning در لیست خطاها دیده می شود. توجه داشته باشید که این خطاها اغلب اوقات نمی توانند از اجرای برنامه جلوگیری کنند اما نتیجه ای که میخواهید را به شما نخواهد داد.

خطاهای منطقی یا Logical Errors

این خطاها پیچیده ترین نوع خطاها هستند و کشف آنها زمانبر است. متاسفانه کامپایلر و محیط برنامه نویسی قادر به کشف این خطاها نمی باشند و برنامه ظاهراً نرمال و بدون هیچ مشکلی اجرا می شود، اما نتیجه مورد توقع شما را نمی دهد. در این نوع خطاها خود شما هستید که به عنوان برنامه نویس باید دست به کار شده و این خطاها را رفع کنید. این خطاها در اثر اشتباه در تبدیل الگوریتم و فلوچارت به کد ایجاد می شوند. یکی از خطاهای رایج از این نوع خطای Off-By-One است که در هنگام استفاده از حلقه ها ایجاد می شود. در این حالت حلقه شما یک دور کمتر یا بیشتر می چرخد و نتیجه خطا را به شما می دهد. بهشت خطاهای منطقی، زبان های قدیمی مانند اسمبلی و C و C++ هستند. در این زبانها به دلیل استفاده از برخی ساختارها (مانند اشارگرها و goto) احتمال رخ دادن خطاهای منطقی بسیار بالاست.

تست برنامه

همانطور که در بخش پیشین گفتیم، کامپایلر و IDE شما می تواند قسمتی از خطاها مانند خطاهای لغوی و در برخی اوقات خطاهای نحوی را کشف کند. اما بقیه خطاها را چگونه می توان کشف و ضبط کرد؟ این کار را می توان توسط تست و Code Review (مرور کد) انجام داد.تست که خود شامل چند نوع است در واقع فعالیتی است برای کشف خطاهای برنامه است. تاکید می کنم که این کار تنها بر امر کشف خطا تمرکز می کند و هیچ اقدامی برای رفع آن انجام نمی دهد. برای رفع خطاهای برنامه پس از کشف آنها توسط تست، از تکنیک دیباگ که در بالا ذکر شده استفاده کنید.

Code Review یا مرور کد

مرور کد یا نقد کد عبارت است از یافتن خطاهایی که جزئی از برنامه و روال کار آن هستند. این نوع خطاها اکثرا خطاهایی هستند که از دید برنامه نویس مخفی شده اند و در واقع برنامه نویس آنها را خطا تلقی نمی کند؛ بنابراین طبیعی است که در خلال تست کشف نشده و در دیباگ هم مرتفع نشوند! مرور کد و جستجو برای خطاهایی که در انبوهی از کدها مخفی شده اند، مکانیسم دیگری است برای کشف خطاها و اطمینان از اینکه برنامه نویس تمام نیازمندیهای کاربران را مرتفع کرده. پس از آنکه کد خود را نوشتید و سپس تست و دیباگ کردید و نیز پس از آن که تمیزکاری و Refactor را انجام دادید؛ آنگاه نوبت به مرور کد می رسد. اولاً این کار نباید توسط شما انجام شود؛ شما کد را نوشتید و به عنوان خالق آن نمی توانید آنرا نقد و بررسی کنید. درست مانند یک فیلم ساز که فیلمی را می سازد و دیگران آنرا نقد می کنند؛ کد شما نیز باید توسط متخصصان و برنامه نویسان دیگر نقد و بررسی شود. Code Review معمولاً در قالب جلسات پنج نفره و کاملاً رسمی انجام می شود. خب از بحث اصلی خود که تست است دور نشویم و در همینجا مبحث مرور کد را خاتمه می دهیم.

اهمیت تست برنامه در چیست؟

اما چه اهمیتی دارد که کلی از وقت خود را برای تست برنامه ای که تولید کردیم تلف کنیم. من معمولاً برای اثبات اهمیت یک چیز مصداقهای آنرا ذکر می کنم. در اینجا نیز به طور خلاصه چند نمونه را ذکر خواهم کرد:

  1. در سال 2002 طبق تحقیقاتی که یکی از موسسات معتبر انجام داده خطاهای نرم افزاری بیش از 59.5 بیلیون دلار به اقتصاد آمریکا ضرر زده.
  2. یکی از مراحل تضمین کیفیت نرم افزار خطایابی و تست آن است با تست می توان به صورت متوسط 80 درصد خطاها را در برنامه پیش از آنکه ضرری برای ما و اعتبارمان داشته باشند کشف و رفع کنیم.

امیدوارم که با این مصادیق قانع شده باشید که از این پس برنامه های خود را قبل از انتشار تست کنید!!!

چه چیزی را تست کنیم؟

تا جایی که برای شما مقدور است تمام کد و تمام پیچ و خم های کدتان را تست کنید؛ اما آیا عملا چنین چیزی ممکن است؟ واقعیت آنست که نمی توانید به صورت صد در صد کدتان را تست کنید. اگر یک برنامه با 50 هزار خط کد (اصطلاحاً می گوییم 50 کیلو خط) داشته باشید؛ تست این برنامه کار بسیار سخت و وقت گیری خواهد بود. بنابراین در ادامه شما را با معیارهایی آشنا می کنیم تا میزان تست برنامه را اندازگیری کنید؛ و بدانید چند درصد از برنامه خود را تست کرده اید.

معیارهای اندازگیری تست برنامه

این معیارها مشخص می کنند که چند درصد از کد خود را تست کردید. مهم ترین این معیارها دو مورد گفته شده در ذیل است.

Code Coverage

Code Coverage یا به اصطلاح پوشش کد میزان خطوطی که تحت تست و بررسی قرار گرفته اند را نشان می دهد. برای پوشش حداکثر کد به نکات زیر دقت کنید:

  1. دستورات خطی تنها به یک متد تست نیاز دارند؛ ساده ترین دستورات برای تست، این نوع دستورات خطی هستند؛ یعنی دستوراتی که شاخه به شاخه نمی شوند. در این دستورات از حلقه و شرط استفاده نشده و تنها یک سری عبارات ساده، خط به خط و پشت سر هم نوشته شده اند.
  2. شرط if ساده دو تست نیاز دارد؛ یک تست برای زمانی که شرط true شود و یکی دیگر نیز برای زمانی که شرط false شود. این شرط دو شاخه یا Branch دارد. (به هر مسیر از کد که می تواند اجرا شود یک Branch گفته می شود)
  3. هر شرط ترکیبی که دو شرط درون خود داشته باشد چهار متد تست باید داشته باشد. یکی برای حالت FF یکی برای حالت TF دیگری برای حالت FT و آخری نیز برای حالت TT. خلاصه اینکه برای هر شرط در دستور if دو حالت داریم که میزان تست های مورد نیاز نیز براساس تعداد شروط به صورت نمایی افزایش میابد.
  4. برای دستور switch نیز به ازای هر case یک متد تست باید طراحی کنیم.

Data Coverage

علاوه بر اینکه خطوط کد را چک می کنیم لازم است که داده های مختلفی به هر قطعه کد بدهیم تا ببینیم که در هر حالت کار را درست انجام می دهد یا خیر. در Data Coverage محدوده خاصی از داده های درست و غلط را به متدهای خود تزریق می کنیم تا ببینیم در هردو حالت چه اتفاقی بر سر نتیجه عملیات می افتد. آیا متدها در هر صورت درست کار می کنند یا اینکه ... بهترین داده هایی که می توان برای این کار برگزید به عبارت زیر هستند:

  1. داده های لب مرز مانند -1 , 1 ,100 , 101 و ... .
  2. داده های نامعتبر: برای مثال برای سن اشخاص مقدار صفر و برای وزن اجسام مقدار منفی بدهید و نتیجه را چک کنید.

نرم افزار تست برنامه ها

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

نویسنده : جنامی

منبع : جزیره برنامه نویسی و توسعه نرم افزار وب سایت توسینسو

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد

#بررسی_سلامت_سورس_کد_نرم_افزار #تست_سورس_کد_نرم_افزار #روش_های_تست_نرم_افزار #آزمایش_درست_بودن_نمودار_uml #تست_کدهای_نرم_افزار #آموزش_تست_نفوذ_سنجی #owasp_چیست #تست_سلامت_کدهای_نرم_افزار #چگونه_سورس_یک_برنامه_را_تست_کنیم #تست_کدهای_برنامه
عنوان
1 روش های تست نرم افزار - قسمت 1 رایگان
2 روش های تست نرم افزار - قسمت 2 رایگان
زمان و قیمت کل 0″ 0
0 نظر

هیچ نظری ارسال نشده است! اولین نظر برای این مطلب را شما ارسال کنید...

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

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