تست نرم‌افزار

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

تست نرم‌افزار یا آزمایش نرم‌افزار تحقیق برروی کیفیت یک محصول یا سرویس نرم‌افزاری و ارایه اطلاعات ناشی از آن به مشتری‌ها است. این تحقیق جستجوی نرم‌افزار مزبور برای یافتن خطاها را نیز دربرمی‌گیرد ولی به آن محدود نمی‌شود.

تست‌ها یک سری از سوال و جواب‌هایی هستند که نرم‌افزار را با آن امتحان می‌کنیم در حالی که از برنامه انتظار داریم با توجه به ورودی‌هایی که با استفاده از سوالات وارد می‌کنیم، جواب‌های صحیحی را به عنوان خروجی به دست دهد.

آزمایش نرم‌افزار حیطه وسیعی از فعالیت‌های مربوط به تولید برنامه‌های رایانه‌ای را دربرمی‌گیرد که از آزمایش کردن کد برنامه توسط برنامه‌نویس گرفته تا نشان دادن عملکرد درست یک سیستم اطلاعاتی بزرگ به مشتری و ارزیابی نرم‌افزار در حین رانش یک شبکه مرکزی کاربردی را دربرمی‌گیرد.

آزمایش نرم‌افزار از وظایف توسعه دهندگان نرم‌افزار است و نه از وظایف تحویل گیرندگان آن.

می‌توان قبل از نوشتن خود برنامه تست‌های برنامه را انجام داد. به این روش en:Test Driven Development می‌گویند.

سازمانها یا شرکت‌های که نرم‌افزارها را توسعه می دهند، محصولی به نام نرم‌افزار تولید می کنند. ولی چه عامل یا عواملی باعث می شوند که یک نرم‌افزار از نرم‌افزار مشابه دیگر متمایز و برجسته شود؟ عواملی متعددی را می توان نام برد که باعث این برتری و تمایز شود اما یکی از این عوامل می تواند کیفیت محصول نهایی باشد که به بازار عرضه خواهد شد. اما برای رسیدن به این نقطه تمایز و برتری باید چگونه عملکرد و اندیشید؟ یگ پاسخ به این سوال می تواند تست نرم‌افزار و نحوه انجام آن باشد. تنها پارامتری که در اینجا به صورت گذرا به آن اشاره خواهیم کرد و در انتها به بررسی روش تست و آزمایش نرم‌افزار در XP خواهیم پرداخت. (هدف ما بررسی دقیق تست نرم‌افزار نمی‌باشد و فقط آشنایی با بعضی واژه‌ها و کلمات کلیدی آن می باشد.)

تست فقط می تواند وجود خطاها را نشان دهد ولی نمی‌تواند عدم وجود خطا را تضمین نماید.

"نرم‌افزار خوب نرم‌افزاری است که مشتری را خوشحال کند و زمانی مشتری خوشحال خواهد شد که تمام نیازمندیهای که در نظر دارد برآورده شود". پس ما به عنوان توسعه دهنده نرم‌افزار باید مطمئن شویم که مشتری خود را خوشحال خواهیم کرد، فرایند و شیوه رسیدن به این اطمینان خاطر یعنی هدف تست نرم‌افزار. تست نرم‌افزار به طور رسمی، جزئی از بازبینی و اعتبارسنجی نرم‌افزار می باشد، که این دو واژه به صورت زیر تعریف و با هم مقایسه می شوند.

وارسی: "آیا محصول درستی را می سازیم؟" اعتبارسنجی: "آیا محصول را به درستی می سازیم؟"

وارسی بررسی می‌کند که آیا نرم‌افزار از مشخصاتش پیروی می‌کند یا خیر. اعتبارسنجی باید تضمین کند که نرم‌افزار انتظارات مشتری را برآورده می سازد یا نه. توجه کنید که آنچه در مشخصات می آید ممکن است دقیقاً خواسته‌های مشتری را برآورده نسازد.

استراتژی تست[ویرایش]

استراتژی تست نرم‌افزار یک توصیف رسمی از این است که نرم‌افزار چگونه تست خواهد شد. هدف استراتژی تست تعریف همه مراحل برای فرایند تست نرم‌افزار است که شامل برنامه ریزی آزمایش، طراحی ابزار آرمایش، اجرای آزمایش و جمع آوری و ارزیابی داده‌های بدست آمده باشد.

==استراتژی جعبه سیاه==این آزمایش جایگزین آزمایش جعبه سفید نمی‌باشد بلکه مکمل آن است.وخطاهایی متفاوت باآن راتست میکند.

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

در یک استراتژی آزمایش جعبه سیاه ما عموماً موارد زیر را مورد بررسی و آزمایش قرار می دهیم:

۱. بررسی اینکه سیستم نیازمندهای عملیاتی و غیر عملیاتی را تامین می‌کند یا نه.

۲. اعتبارسنجی ورودیها

۳. بررسی مقادیر مرزی برای متغیرها: به یک متغیر مقداری کمتر از حداقل مقداری که می تواند قبول کند یا بیشتر از حداکثر مقداری که می تواند قبول کند می دهیم و سیستم را در این شرایط تست می کنیم.

۴. بررسی خروج‌های سیستم: یک مجموعه از ورودهای صحیح با خروج‌های مربوط به آن را تهیه می کنیم و سپس ورودها را به سیستم وارد می کنیم و خروج‌های که توسط سیستم داده می‌شود را با خروجی‌های واقعی مقایسه می کنیم.

۵. بررسی رفتار سیستم در برابر پردازش ورودها و پرس و جوهای بزرگ و سنگین

برای موارد بالا و مواردی دیگری که ذکر نشد روشهای مختلف تست در استراتژی جعبه سیاه وجود دارد که عبارتند از:

آیا می توان در استراتژی جعبه سیاه، از این مطمئن شد که سیستم به طور کامل تست شده است؟ خیر، هرگز در این استراتژی نمی توان مطمئن شد که سیستم به طور کامل تست شده است. برای نمونه با چه احتمالی کاربر می تواند ورودهای را انتخاب کند تا شرط زیر چک شود.

if ("name=="Lee" && employeeNumber=="1234" && employmentStatus=="RecentlyTerminatedForCause) {

send Lee a check for $1,000,000;

}

پس همیشه در این استراتژی مسیرهای خواهند بود که تست نمی‌شوند و همیشه سیستم با داده‌های ورودی محدود می توانند تست شوند.

استراتژی جعبه سفید[ویرایش]

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

در یک استراتژی آزمایش جعبه سفید ما عموماً موارد زیر را مورد توجه و بررسی قرار می دهیم:

۱. بررسی سطر به سطر کد (Code coverage): در این حالت باید سیستم را به گونه ای اجراء و بررسی کنیم که مطمئن شویم سطر به سطر کد برنامه حداقل یکبار اجراء شده است.

۲. بررسی همه انشعاب‌ها در کد برنامه (branch) : در کد برنامه باید تمام عبارت‌های شرطی ( if elseها و Switch case ها) را تک به تک مورد بررسی قرار داد. به این صورت که در یک عبارت if else هم فسمت if و هم قسمت else هر کدام بصورت مجزا یکبار اجراء شوند.

۳. بررسی همه حلقه‌ها در برنامه : حلقه‌ها در نرم‌افزار نقش اساسی دارند، چون می تونند با اشتباه جزئی مقدار زیادی از منابع را مصرف کرد برای مثال شرط خروج از حلقه به اشتباه هیچ وقت True نشود. برای نمونه حلقه‌ها را با ورودی بزرگتر از شرط خروج حلقه چک کنید یعنی حلقه اصلاً اجر نشود. تستی طراحی کنید که حلقه دقیقاً یکبار اجراء شود، تستی طراحی کنید که حلقه در یک بازه خاص اجراء شود و ....

۴. مدیریت خطای مطلوب : برسی اینکه اگر به یک متد یک ورودی نامعتبر وارد شود، نحوه آگاه سازی و نمایش مطلوب خطا برای کاربر چگونه باشد؟

۵. بررسی امنیت : سیستم را از این جهت که چگونه در برابر دسترسی‌های غیرمجاز، هک، کرک و هر چیز دیگر که می تواند به آن آسیب برساند مورد بررسی قرار می دهد. در اینجا ما باید مکانهای از کد را که داده‌ها را اعتبارسنجی و مدیریت می کنند، دسترسی به منابع یا عملیات مهم و حیاتی را انجام می دهند را بررسی کنیم.

۶. برای موارد بالا و مواردی دیگری که ذکر نشد روشهای مختلف تست در استراتژی جعبه سفید وجود دارد که عبارتند از:

Basis Path Testing, Equivalence Partitioning/Boundary Value Analysis, Method Coverage, Statement Coverage, Branch Coverage, Condition Coverage, Data Flow Testing, Flow Graphs Revisited, ….

منابع[ویرایش]