اصول و فرآیند آزمون
تست نرمافزار به فرایند ارزیابی یک نرمافزار به منظور تشخیص تفاوت بین ورودی و خروجی مورد انتظار گفته میشود. علاوه بر آن تست نرمافزار ارزیابی امکانات و ویژگیهای یک نرمافزار را نیز شامل میشود. به عبارت دیگر تست نرمافزار یک فرایندی است که به وسیله آن میتوانیم اطلاعاتی در رابطه با کیفیت نرمافزار بدست آوریم که شامل تایید و اعتبارسنجی است.
1- تایید : (Verification) در این مرحله اطمینان حاصل میشود که آیا نرمافزار مورد نظر، با توجه به انتظار ما رفتار میکند یا خیر.
2- اعتبار سنج : (Validation) این مرحله مشخصکننده این موضوع است که آیا نرمافزار نیازمندیها را پاسخگو هست یا خیر.
انواع رویکرد تست دو رویکرد برای تست داریم که این دونوع مشخصکننده نحوه طراحی تستهای ما هستند:
1- :Blackbox Testing در این رویکرد، تست تمامی مکانیسمهای داخلی یک سیستم نادیده گرفته میشود و روی خروجی تولید شده تمرکز میشود. به این رویکرد تست functional نیز میگویند.
2-Whitebox Testing: در این رویکرد، تست ما با مکانیستم داخلی یک سیستم سرو کار داریم. به این نوع تست structural تست نیز گفته میشود.
همیشه یکی از مهم ترین بحث ها در طراحی و پیاده سازی نرم افزارها، کارکرد درست سیستم طراحی شده می باشد. با رشد سیستم و توسعه چندین ساله آن توسط تیم های نرم افزار، کارکرد درست و بدون اشکال همه قسمت های آن همیشه یکی از دغدغه های برنامه نویسان می باشد.برای همین تست های مختلف تعریف و طراحی شده اند که به تیم های نرم افزاری کمک می کنند نرم افزاری های کم اشکال یا بی اشکالی را تولید نمایند. در فرآیند تست و ارزیابی نرمافزار، تست های مختلفی تعریف می شوند که هر یک از آنها در مرحله خاصی استفاده می شوند. تست نرم افزار در 10 سطح انجام میگیرد که به صورت ذیل است:
1-Unit Testing : در این نوع تست ما یک واحد و یا یک گروه از واحدهای مرتبط با هم را تست میکنیم. این نوع تست زیر مجموعه Whitebox Testing است.
2-Integration Testing: این نوع تست به ما این امکان را میدهد که چند نوع کامپننت مختلف را کنار یکدیگر تست کنیم. در این صورت حتی ما میتوانیم وابستگیهای میان سختافزار و نرمافزار را نیز بیازماییم. این دسته از تستها زیر مجموعه تستهای black box هستند.
3-Functional Testing: در این تست اطمینان حاصل میشود که عملکرد برنامه به درستی است. توجه شود که در این نوع تست برخلاف آزمون واحد ما میتوانیم عملکرد یک سیستم را تست کنیم و نه فقط یک واحد را. این تست زیر مجموعه black box تستها هستند.
4-System Testing: این نوع تست به ما اجازه میدهد که از عملکرد برنامه در محیطهای مختلف اطمینان حاصل کنیم (مثل سیستم عاملهای مختلف). این تست زیر مجموعه black box تستها است.
5-Stress Testing: این نوع تست عملکرد برنامه را در شرایط نامطلوب مورد بررسی قرار میدهد. این تست زیر مجموعه black box تستها است.
7-Performance Testing: تست عملکرد و کارایی که در مجموعه black box تستها جای میگیرد به ما این اطمینان را میدهد که برنامهمان عملکرد و کارایی لازم را در یک مدت زمان مشخص داراست.
8- :Usability Testing این نوع تست زیر مجموعه black box تستها است. این تست از دیدگاه مشتری انجام میشود و در واقع مشخص کننده فاکتورهای زیر است:
1) آیا برنامه کاربر پسند است؟
2) آیا برنامه ساده و قابل یادگیری است؟
3) آیا برنامه جذاب طراحی شده است؟
4) و …
9-Acceptance Testing: این نوع تست معمولا از طرف مشتری انجام میشود. هدف آن، مشخص کردن این است که آیا برنامه نیازهای مشتری را پاسخ میدهد و آیا برنامه همان چیزی که مشتری میخواهد هست یا خیر. که مهمترین تستهایآن آلفا و بتاست.
10-Regression Testing: این نوع تست به منظور صحت عملکرد سیستم بعد از تغییرات استفاده میشود و زیر مجموعهblack box تستها است.
<br/> آزمون آلفا و بتا
تست نرم افزار یکی از راههای اطمینان بیشتر به نرم افزار، برای ارائه نهایی آن به بازار است. تست نرم افزار از بخشها و قسمتهای مختلفی تشکیل شده است که به ترتیب خاصی مورد توجه قرار میگیرند. در این مقاله قصد داریم به بررسی روند تست و از همه مهمتر تستهای آلفا و بتا که جزئی از آزمون پذیرش (Acceptance testing) بپردازیم.
یک تست از مراحل زیر تشکیل میشود:
1- تست واحد : در این سایت، به طور مکرر توسط فریمورکهای مختلفی مورد توجه قرار گرفته است و هدف آن تست برنامه به صورت قطعات کوچک است تا اطمینان پیدا کنیم آن تکه کد طبق انتظار ما جلو میرود. این تست حتی در آینده هم برای دنبال کردن باگها، کار ما را سادهتر میکند.
2- تست یکپارچه: هدف تست یکپارچه، بررسی عملکرد برنامه بعد از قرار گرفتن همهی تکهها در کنار هم هستند و این اطمینان را میدهد که برنامه عملکرد مثبتی دارد.
3- تست رابط جز: هدف این تست بررسی ارتباط و دادههای بین قسمتها و اجزای مختلف یک سیستم یا ارتباط زیر سیستمها با یکدیگر در یک سیستم بزرگتر است.
4- تست سیستم: تست سیستم برای بررسی عملکرد برنامه در سیستمهای مختلف است. اینکه برنامه در محیطهای اجرایی مختلف چگونه عمل میکند و در این شیوه باید قابلیتهای مختلف برنامه را در محیطها و ابزارهای مختلفی که برنامه استفاده میکند سنجید.
تست پذیرش عملکرد: یا اصطلاحا OAT، جهت اطمینان از عملکرد سیستم، برای ارائه نهایی به کار میرود که در اینجا دو آزمون آلفا و بتا صورت میگیرند.
تست آلفا Alpha در داخل خود سازمان توسط توسعه دهندگان که مسئول بررسی و تست نرم افزار هستند اتفاق میافتد. شکل صفحه بعد به خوبی جایگاه تست آلفا را در میان تستها توضیح میدهد.
تست آلفا در دو فاز انجام میگیرد:
فاز اول: فاز اول داخل تیم اصلی، توسط توسعه دهندگان هست تا اصلیترین باگها به سرعت رفع و حل شوند.
در فاز دوم: برنامه به دست توسعه دهندگان واحد تضمین کیفیت Quality Assurance - QA مورد تست و ارزیابی قرار میگیرد.
تست آلفا قبل از عرضه عمومی اصطلاحا Commercial Off-the Shelf-COTSصورت میگیرد و قبل از تست بتا میباشد.
تست بتا Beta توسط کاربران نهایی نرم افزار و گاها کاربران شناخته شدهی محصول انجام میگیرد. این تست به منظور بررسی و ارزیابی عملکرد نرم افزار ، پایداری ، سازگاری ، میزان اطمینان به نرم افزار صورت میگیرد. تست بتا این ارزش را برای نرم افزار میآورد تا توسط کاربران اصلی و در محیطهای واقعی به طور وسیعتری مورد بررسی قرار گیرد تا بتواند چرخه تست نرم افزار را با موفقیت به اتمام برساند. همچین به توسعه دهنده کمک میکند تا حجم ورودیهای عظیمی را جمع آوری تا در آینده برای نسخهها و پشتیبانیهای آتی استفاده کند.
تصویر زیر جایگاه تست بتا را در روند تست نشان میدهد:
عوامل زیر در موفقیت هر چه بیشتر تست بتا وابسته هستند:
1- هزینه تست
2- تعداد شرکت کنندگان در این تست
3- نحوه ارسال به کاربر ( که امروزه بیشتر از طریق اینترنت صورت میگیرد)
4- مدت زمان تست
از نکات مهم در این تست میتوان گفت که طول دوره تست آلفا، بیشتر از تست بتاست که به طور متوسط 3 تا 5 برابر تست بتا طول میکشد و خود تست بتا، عموما در حد چند هفته و گاها تا چند ماه میباشد.
در صورتیکه تست آلفا با موفقیت بیرون داده شود، وارد نسخه بتا میشود و بعد از اتمام تست بتا وارد ریلیز نهایی میشود. تست آلفا با توجه COTS گفته شده میتواند کاربران خاص و محیط خاص خود را داشته باشد.