در توسعه یک نرم افزار مجموعه فعالیتهایی داریم که بروز اشتباهات انسانی در آنها غیرقابل اجتناب است. پس از آنکه کد منبع تولید شد، نرم افزار باید برای خطاهای احتمالی و موجود مورد ارزیابی قرار گیرد. بنابراین هدف طراحی حالاتی است که نرم افزار تحت آنها تست گردد و احتمال یافتن خطا توسط آنها زیاد باشد. تحت این تکنیکها منطق درونی قطعات نرم افزار و همچنین دامنه های ورودی و خروجی به کل نرم افزار مورد بررسی قرار میگیرد. در مراحل اولیه مهندسین نرم افزار این کار را انجام میدهند و با توسعه بیشتر ، متخصصین تست.
تست نرم افزار باید بتواند نشان دهد که آیا نیازمندیهای مشتری ارضاء شده است یا خیر. تست باید از اجزای کوچک شروع شود و سپس به کل نرم افزار برسد. هر چه قابلیت یک نرم افزار بیشتر باشد آسانتر و سریعتر میتوان آنرا تست نمود و احتمال یافتن خطا نیز در ان بالا خواهد رفت.
تست خوب (software testing) تستی است که احتمال یافتن خطا در آن بالا باشد و کار اضافه انجام ندهد زیرا منابع و زمان محدود است. همچنین باید نه خیلی ساده باشد و نه خیلی پیچیده.
نام دیگر این روش، تست جعبه شیشه ای است و با استفاده از ساختارهای درونی یک قطعه، حالات تست را استخراج میکند. در این روش سعی میشود حالات تست به نحوی استخراج شوند که موارد زیر تضمین گردند:
در این روش سعی میگردد تا تمامی مسیرهای کنترلی برنامه حداقل یکبار اجرا شوند تا بدین صورت تمامی دستورات برنامه اجرا شده باشند. برای انجام این تست ساختار جریان کنترلی بصورت گراف جریان در نظر گرفته میشود. این گراف جریان کنترلی منطق درون برنامه را نشان میدهد و ساختار برنامه را میتوان بصورت چنین گرافی بیان کرد. در این روش برای استخراج حالات تست، با استفاده از طراحی و یا کد منبع گراف جریان متناظر آن رسم میگردد. میزان پچیدگی منطق درون برنامه برای گراف جریان تعیین میشود و برای هر کدام از مسیرهای مستقل یک حالت تست آماده میگردد تا تضمین کند که آن حالت حتما اجرا میشود.
این روش شرطهای منطقی (if) موجود در برنامه را تست میکند. شرطها میتوانند به انواع مختلفی باشند:
حلقه ها عناصر مهم وسازنده اغلب الگوریتم هایی هستند که در نرم افزار بکار میروند. برای یک حلقه ساده که حداکثر n مرتبه باید انجام شود تستهای زیر را میتوان انجام داد:
برای تست حلقه های متوالی نیز میتوان فرض کرد که هرکدام یک حلقه مستقل هستند و از روش تست حلقه ساده استفاده کرد.
نام دیگر این روش، تست رفتاری است و بر وری نیازمندی های عملیاتی نرم افزار تمرکز دارد. حالات تستی که در این روش استخراج میگردند باید به نحوی باشند که تمامی نیازمندیهای عملیاتی نرم افزار را تست کنند . روش تست جعبه سیاه ، مکملی برای تست جعبه سفید است و توسط آن یک مجموعه نیازهای متفاوتی را میتوان تشخیص داد. توسط این تست میتوان دسته خطاهای زیر را تشخیص داد:
یکی از روشهای جعبه سیاه روش تست تقسیم بندی به گروههای هم ارز است. در این روش دامنه داده های ورودی برنامه به دسته های متفاوتی تقسیم میشوند و حالات تست براساس این دسته ها انتخاب میشوند. هدف اصلی استفاده از این روش کم کردن تعداد حالات تست است بدین صورت که از یک مجموعه حالات یکسان تنها یک حالت تست اعمال شود.
معمول تعداد زیادی از خطاها در حالات مرزی یک ورودی رخ میدهد. بنابراین، این روش نیز بر این تمرکز دارد که حالات تست حتما شامل مقادیر مرزی باشند. این روش مکمل روش تقسیم بندی به گروههای هم ارز است و حالات تستی که توسط آن استخراج میگردند شامل مقادیر مرزی هر دسته هست.
در بعضی از شرایط قابلیت اعتماد نرم افزار تولید شده بسیار حساس ومورد نیاز است همانند سیستمهای پرواز، سیستم ترمز اتومبیل. در این حالت دو تیم توسعه مختلف یک تعریف مشخصات یکسانی را از سیستم که در مرحله تحلیل و طراحی ایجاد گردیده است پیاده سازی میکنند. در این حال هر دو نسخه متفاوت چک میگردند تا به ازای حالات تست متفاوت خروجی های صحیحی یکسانی را تولید کنند. سپس هر دو سیستم بصورت موازی اجرا میشوند تا خروجی های انها به ازای حالات متفاوت تست شود. اگر به ازای یک ورودی، یکی از نسخه ها خروجی متفاوت با دیگری تولید کرد آنگاه دو نسخه برای وجود خطا تست میشوند.