انجمن انفورماتیک ایران انجمن انفورماتیک ایران انجمن انفورماتیک ایران
گزارش کامپیوتر شماره 234, ویژه مرداد و شهریور ماه 96 منتشر شد. پنجشنبه  ٠٢/٠٩/١٣٩٦ ساعت ٢١:٤٢
 
آزمون پسنمایی نرم‌افزار: مفاهیم و روش‌ها

علیرضا خلیلیان
دانشجوی دکتری نرم­افزار دانشگاه اصفهان و عضو آزمایشگاه آزمون و تأیید نر­م­افزار دانشگاه شهید بهشتی
پست الکترونیکی: khalilian@eng.ui.ac.ir

مجتبی وحیدی اصل
استادیار دانشکدۀ مهندسی برق و کامپیوتر شهید بهشتی و سرپرست آزمایشگاه، آزمون و تأیید نرم‌افزار
پست الکترونیکی: mo_vahidi

حسن حقیقی
استادیار دانشکده مهندسی برق و کامپیوتر شهید بهشتی و سرپرست آزمایشگاه آزمون و تأیید
پست الکترونیکی: h_haghighi@sbu.ac.ir


 

مقدمه

آزمون پسنمایی نرم‌افزار، با مفهوم پسنمایی نرم‌افزار سروکار دارد. پسنمایی نرم‌افزار عبارت است از ایراد نرم‌افزاری، که سبب توقف عملکرد یک ویژگی می‌شود؛ به‌طوری‌که بعد از یک رویداد بخصوص (به‌عنوان مثال بروزرسانی یا تولید وصله‌های نرم‌افزاری) باید این ویژگی انجام شود. به‌عبارت دیگر، بعد از اصلاح نرم‌افزار و بروز تغییر، آزمونگران مایلند بدانند که آیا کد تغییر نیافته تحت تأثیر نامطلوب ناشی از این تغییر قرار گرفته است یا خیر. در صورتی که کد تغییر نیافته، تحت اثر نامطلوبی قرار گرفته باشد (عملکرد صحیح قبل دچار اختلال شده باشد)، گفته می‌شود که خطای پسنمایی اتفاق افتاده است. آزمون پسنمایی، به هر قسم از آزمون نرم‌افزاری اطلاق می‌شود که هدف آن، آشکارسازی پسنمایی‌های نرم‌افزاری باشد. این پسنمایی‌ها، هر زمان که عملکرد نرم‌افزار، که پیش‌تر به‌درستی کار می‌کرد، دچار توقف در این عملکرد مورد نظر ‌شود، رخ می‌دهند. عموماً پسنمایی‌ها، نتیجه‌ی تأثیرات نامطلوب ناشی از تغییرات در نرم‌افزار هستند. مقاله حاضر مروری به مفاهیم، تعاریف و ادبیات موضوع در حوزه آزمون پسنمایی خواهد داشت.
ساختار ادامه مقاله به شرح زیر است: در بخش دوم آزمون پسنمایی نرم‌افزار تشریح می‌شود. بخش سوم انواع آزمون پسنمایی و آزمایه­ها را ارائه می‌دهد. سپس درک و اندازه‌گیری نرم‌افزار در بخش چهارم مورد بحث قرار می‌گیرد. آزمون جامع کامل، آزمون پسنمایی انتخابی، اولویت‌دهی آزمایه­ها، کاهش مجموعه آزمون و افزایش مجموعه آزمون موضوع بخش‌های پنجم تا نهم را تشکیل می‌دهند. در بخش دهم رویکرد کلی برای طراحی فنون کاهش و اولویت‌دهی مورد بحث قرار می‌گیرد. بخش یازدهم هم به نتیجه گیری اختصاص دارد.

آزمون پسنمایی نرم‌افزار

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

شکل 1: جایگاه آزمون پسنمایی در چرخه‌ تولید نرم‌افزار

آزمون پسنمایی نرم‌افزار، دو مرحلۀ مجزا دارد: مرحلۀ اولیه و مرحلۀ بحرانی. مرحلۀ اولیه آزمون پسنمایی نرم‌افزار، پس از تحویل یک نسخه‌ جدید از نرم‌افزار آغاز می‌شود؛ در خلال این مرحله، برنامه‌نویسان به بهبود و تصحیح نرم‌افزار می‌پردازند. پس از تکمیل تصحیحات، مرحلۀ دوم یا بحرانی آزمون پسنمایی نرم‌افزار آغاز می‌شود؛ در جریان این مرحله، فرایند غالب، آزمون پسنمایی است که البته زمان آن به دلیل ضرب‌الاعجل‌های تحویل محصول نرم‌افزاری محدود است و از سوی دیگر به‌دلیل رقابت شدید در بازار نرم‌افزار، کمینه کردن هزینه‌ها در مرحلۀ بحرانی اهمیت فراوانی دارد. به‌عنوان مثال یک فن انجام آزمون پسنمایی ممکن است از سابقه آزمون و اطلاعات تحلیل برنامه که در جریان مرحلۀ اولیه جمع آوری شده است، برای دستیابی به کاهش هزینه‌ها و انتخاب آزمایه‌های مناسب، بهره گیرد.
علاوه بر این، سبک‌های جدید تولید نرم‌افزار چالش‌های بیشتری را نیز برای انجام کارامد آزمون پسنمایی ایجاد می‌کند. برای نمونه در تولید نرم‌افزار مؤلفه بنیاد از تعداد بسیاری مؤلفه‌های از پیش تولید شده‌ نرم‌افزاری به‌صورت آماده و جعبه سیاه استفاده می‌شود که اغلب از شرکت‌ها، منابع یا افراد خارجی گرفته می‌شوند. هر تغییری بر این مؤلفه‌های خارجی بر کل سیستم نرم‌افزاری تأثیر می‌گذارد ولی عملاً آزمون پسنمایی روی آن‌ها غیر ممکن است زیرا ساختار و عملکرد داخلی این اجزا برای برنامه‌نویسانی که از آن استفاده می‌کنند شناخته شده نیست. هر چه چرخه حیات تولید نرم‌افزار کوتاه‌تر باشد (مثل تولید نرم‌افزار با روشگان چابک)، محدودیت‌ها و حساسیت‌های بیشتری بر چگونگی انجام آزمون پسنمایی با توجه به منابع محدود ایجاد می‌شود.
هزینۀ آزمون پسنمایی، شامل زمان لازم برای اجرای کل آزمایه­ها بر روی نرم‌افزار و نیز هزینه‌های منابع و نیروی‌ انسانی صرف شده برای اجرای آزمایه­ها در هر بار اجرای آزمون پسنمایی است.
با تحول نرم‌افزار و برای هر نسخه جدید، هر بار آزمایه جدیدی به مجموعه آزمون افزوده می‌شوند. به‌عنوان مثال، برای یک نرم‌افزار صنعتی، بیش از سه هفته طول می‌کشد تا تمام دنباله‌ آزمون (مجموعه مرتب آزمایه­ها برای اجرا) برای یک برنامه با 20 هزار خط کد اجرا شوند. بنابراین آزمونگران در آزمون پسنمایی نرم‌افزار، با مشکل حجم بسیار زیاد و روبه رشد آزمون‌ها و از طرفی نیاز به تکرار فرایند آزمون کل، پس از هر تغییر جزئی برایاعتبارسنجی نسخه‌ی جدید نرم‌افزار، مواجهند (شکل 2). بدیهی است که کنار گذاشتن تصادفی آزمایه­ها، ریسک فراوانی دارد و قابلیت اطمینان نسخه جدید را شدیداً در مخاطره قرار می‌دهد. لذا یافتن مجموعه کوچک‌تر و غیر‌افزونه از آزمایه‌ها، که بتواند به‌طور مؤثر و کارا نرم‌افزار را بیازماید، از اهمیت زیادی برخوردار است. به‌دلیل تکرارهای زیاد، آزمون پسنمایی نرم‌افزار، بخش زیادی از هزینه‌های نگهداری نرم‌افزار را به‌ خود اختصاص می‌دهد. به‌طوری‌که تخمین زده می‌شود که آزمون پسنمایی ممکن است در اثر اجراهای مکرر، تقریباً نیمی از کل هزینۀ نگهداری نرم‌افزار را به‌خود اختصاص دهد. بنابراین، مهم‌ترین مسئله‌ای که آزمونگران نرم‌افزار در این مرحله با آن مواجهند، این است که چگونه در هر مرحله از آزمون پسنمایی، زیرمجموعه‌ای مناسب از آزمایه­ها را برای آزمون مؤثر بر روی نسخۀ جدید انتخاب کنند؟


شکل 2: تأثیر اصلاحات نرم‌افزار بر آزمایه­ها در آزمون پسنمایی نرم‌افزار

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

  • فنونی که از مجموعه  آزمون‌های موجود به شکلی مجدداً استفاده می‌کنند.
  • فنونی که آزمایه­های جدید ساخته و به مجموعه آزمون فعلی اضافه می‌کنند.

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

  • قابل استفاده مجدد: آزمایه­هایی هستند که فقط بخش‌هایی از برنامه را که بین دو نسخه تغییر نکرده‌اند، می‌آزمایند. اجرای این آزمایه­ها برای آزمون نسخه تغییریافته برنامه ضروری نیست ولی آن‌ها را در مجموعه آزمون نگه می‌دارند زیرا برای آزمون پسنمایی نسخه‌های بعدی برنامه لازم می‌شوند.
  • قابل آزمون مجدد: آزمایه­هایی هستند که بخش‌های تغییر کرده از برنامه فعلی در نسخه جدید آن‌را می‌آزمایند. بنابراین برای آزمون نسخه تغییر کرده، این آزمایه­ها حتماً باید اجرا شوند.
  • منسوخ: آزمایه­هایی هستند که:

الف. ارتباط بین ورودی/خروجی‌های آن‌ها به‌خاطر تغییر مشخصات دیگر معتبر نیست.

  • به‌خاطر تغییرات برنامه، بخش‌هایی که برای آزمون آن‌ها طراحی شده بودند را دیگر نمی‌آزمایند.

پ. آزمایه­هایی ساختاری هستند که دیگر سهمی در پوشش ساختاری برنامه ندارند.
4.  ساختاری جدید: ساختارهای برنامه تغییریافته را می‌آزمایند و پوشش ساختاری در بخش‌های تغییر یافته نسخه جدید برنامه ایجاد می‌کنند.

  • مشخصات جدید: آزمایه­های جدیدی هستند که مشخصات برنامه تغییریافته را می‌آزمایند؛ یعنی کدهای جدید تولید شده حاصل از بخش‌های تغییریافته مشخصات نسخه جدید.

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

درک و اندازه‌گیری نرم‌افزار

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

  • تغییرات مصنوعات نرم‌افزاری: رویداد مهمی است که منجر به ایجاد خطاهای پسنمایی می‌گردد. بنابراین، طبیعی است که تاریخچه تکامل محصول را در نظرگرفته و بخش‌های تغییر ‌یافته‌ای را که مورد توجه آزمون پسنمایی است، شناسایی نماییم.
  • اندازه‌گیری کیفیت نرم‌افزار: زمینه‌ تحقیقاتی دیگری است که از جنبه‌ مفهومی به آزمون پسنمایی مربوط می‌شود. معیار‌های کیفیت را می‌توان به‌منظور تشخیص نواحی از کد که خطاخیر هستند، به‌کار برد. در این‌صورت چنین نواحی را به‌طور وسیع‌تر در مرحلۀ آزمون پسنمایی، تحت آزمون مجدد قرار می‌دهیم.
  • اندازه‌گیری اطلاعات پوشش آزمون‌ها: مهم‌ترین جنبه‌ایست که اطلاعات دقیق و قاطعی را برای آزمون پسنمایی به‌دست می‌دهد. این اطلاعات در برنامه‌ریزی آزمون پسنمایی کمک می‌کنند که به پوشش مطلوب از مصنوعات نرم‌افزاری دست یابیم. استفاده از فنون تحلیل زمان اجرا همچون فراکدگذاری کد، ما را قادر می‌سازد تا میزان پوشش کد توسط هر آزمایه­ را اندازه‌گیری نماییم. اطلاعات پوشش کد، اساس اغلب فنون آزمون پسنمایی فعلی را تشکیل می‌دهند.

به‌واسطۀ اهمیتِ اندازه‌گیری اطلاعات پوشش آزمون‌ها و نیز کاربرد آن‌ها در فنون فعلی آزمون پسنمایی، در ادامه آن را به تفصیل بیشتری مورد بحث قرار می‌دهیم. مفهوم پوشش آزمون، جزء لاینفک عملیات آزمون بوده و نیز سهم عمده‌ای را در تحقیقات آکادمیک به‌خود اختصاص داده است. بخش عظیمی از تحقیق در حوزه آزمون، پیرامون روش‌هایی جهت تولید مجموعه آزمون‌هایی است که با توجه به یک معیار پوشش بخصوص به‌دست آمده‌اند. از منظر تولید آزمون، نیاز به مجموعه آزمون‌هایی داریم که کفایت پوشش را نسبت یک معیار پوشش خاص تأمین می‌نمایند. با این وجود، مفهوم پوشش تنها با تولید آزمایه­ها محدود نمی‌شود. فنون آزمون پسنمایی نیز عموماً اطلاعات پوشش را به‌کار می‌گیرند. در این حوزه، اندازه‌گیری پوشش آزمایه­هایی که هم‌اکنون موجود هستند، مورد نظر است. با وجودی‌که پوشش را می‌توان برحسب مصنوعات گوناگونی که در چرخۀ حیات نرم‌افزار موجود هستند (مثل نیازمندی‌ها) تعریف کرد، اما معمولاً برحسب ساختارهای کد تعریف می‌شود.
اندازه‌گیری پوشش کد، عبارت است از شناسایی ساختارهایی از کد که در خلال اجرای یک آزمایه به‌کار می‌روند (اجرا می‌شوند). استفاده از اندازۀ پوشش کد، نویدبخش این موضوع است که هرچه یک مجموعه آزمون کد بیشتری را بپوشاند، باعث ایجاد قابلیت اطمینان بالاتری در نرم‌افزار تحت آزمون می‌گردد. اگر مدل رفتاری نرم‌افزار را قطعی در نظر بگیریم، که یک ورودی مشخص همواره مسیر اجرایی یکسانی را طی می‌کند، در این‌صورت پوشش آزمایه از یک اجرا تا اجرای دیگر بدون تغییر می‌ماند. چنین داده‌هایی خصوصیتِ اتکاءپذیری از آزمایه را به‌دست می‌دهد که در عملیات مختلف آزمون به‌منظور درک بهتر آن، می‌تواند به‌کار رود.
در نظر گرفتن ساختارهای مشخصی از کد، معیارهای پوشش مختلفی را معرفی می‌کند. در ادبیات موضوع، معیارهای پوشش بسیاری مانند پوشش انشعاب، بلوک‌های اولیه، تعریف و استفاده و غیره معرفی شده است. به‌عنوان نمونه، پوشش دستورات مشخص می‌کند که آیا یک دستور مشخص از کد (یا نمایش خاصی از آن مثل بایت‌کد) توسط یک آزمایه به ‌اجرا درآمده است یا خیر.
جهت اندازه‌گیری پوشش یک آزمایه، می‌توانیم مسیر اجرایی آن را در برنامه هنگام اجرای آزمایه ردیابی نماییم که معمولاً به آن الگوبرداری از برنامه می‌گویند. این‌کار را می‌توان از طریق تغییر کد، با اضافه کردن کد اضافی که رویدادها را در ضمن اجرا ثبت می‌کند محقق نمود. این کد اضافی در فرایندی به نام فراکدگذاری درج می‌شود. فراکدگذاری، عملیات خودکاری است که می‌تواند در مراحل مختلفی از جمله زمان ترجمۀ برنامه انجام شود. مزیت استفاده از فراکدگذاری مستقیمِ فایل‌های اجرایی، عدم تأثیر بر ابزارهای سیستمی همچون مترجم‌ها و پیوند‌ دهنده‌ها است. ضمن این‌که باعث تسهیل اندازه‌گیری مفصل‌تر شده و به‌دلیل عدم نیاز به ترجمۀ مجدد، کل فرایند را ساده‌تر می‌نمایند. به‌طور کلی فراکدگذاری سه مرحله دارد:

  • تحلیل برنامۀ اصلی جهت تشخیص ساختار کد.
  • حاصل تحلیل فوق برای فراکدگذاری و یافتن محل‌هایی که باید آن‌ها را درج نمود، مورد استفاده قرار می‌گیرد.
  • کد مورد نظر با فراکدگذاری تغییر داده می‌شود به‌گونه‌ای که رفتار برنامه حفظ شود.

پس از فراکدگذاری، آزمایه را می‌توان روی آن اجرا کرد و نشانه‌های ثبت‌شده از رویدادها را برای استخراج پوشش هر آزمایه به‌کار برد.
در حوزۀ آزمون پسنمایی، اطلاعات پوشش عموماً از نسخۀ پیشین نرم‌افزار مورد استفاده قرار می‌گیرد. به‌منظور اندازه‌گیری پوشش هر آزمایه، لازم است تا آن را فراکدگذاری کرده و سپس اجرا نماییم. اما این‌کار هدف بهینه‌سازی آزمون پسنمایی را که جلوگیری از اجرای مجدد آزمایه­ها غیر ضروری است، به‌ مخاطره می‌اندازد. برای حل این مشکل، محققان بررسی و ارزیابی کرده‌اند که داده‌های پوشش حاصل از نسخۀ قبلی، اگر در دسترس باشند، تخمین منطقی از داده‌های پوشش کنونی هستند. بنابراین فنون آزمون پسنمایی مبتنی بر پوشش، فرض می‌کنند که در هنگام اجرای آزمایه­ها روی نسخۀ قبلی، از پیش کد فراکدگذاری شده و داده‌های پوشش جمع‌آوری شده‌اند. داده‌های پوشش موجود را می‌توان برای هدایتِ بهینه‌سازی نسخه‌ی کنونی به‌کار گرفت.

آزمون مجدد کامل

این روشگان، به بیان ساده، به معنی استفادۀ مجدد تمام آزمایه­های تولید شده در گذشته است؛ یعنی تمام آزمایه‌های مورد نیاز برای آزمودن نسخۀ اولیه، به‌همراه تمام آزمایه­هایی که در هر مرتبه تغییر یافتن نسخۀ نرم‌افزار تولید شده‌اند، در هر تکرار آزمون پسنمایی، مجدداً اجرا می‌شوند. روشن است که در جریان تغییرات نسخ، بسیاری از آزمایه­ها منسوخ خواهند شد. لذا همان‌طور که گفته شد، در جریان انجام مکرر آزمون پسنمایی، حجم مخزن آزمون بسیار زیاد خواهد شد؛ به‌طوری که باوجود سادگی و اطمینان بالایی که حاصل می‌شود، باعث می‌شود آزمون پسنمایی، به دلیل نیاز به میزان توجیه ناپذیر زمان و کار انسانی، غیرعملی باشد، در واقع، به‌دلیل هدر رفتن جدی منابع آزمون در اثر هزینۀ زیاد اجرای غیر لازم آزمون‌ها در این فن، آزمونگران سیستم‌های نرم‌افزاری بزرگ، از اجرای آزمون جامع در هر مرتبه خودداری می‌کنند.

آزمون پسنمایی انتخابی

روش‌های انتخاب در آزمون پسنمایی که به اختصار RTS گفته می‌شوند، هر بار، با انتخاب زیرمجموعه‌ای از کل آزمایه­های موجود، بر اساس عواملی مانند تغییرات رخ داده در کد و رفتار اجرایی آزمون‌ها برای اجرا انتخاب می‌کنند و به این ترتیب، هزینه‌ی آزمون پسنمایی را به میزان قابل توجهی کاهش می‌دهند. در عین حال فنون انتخاب در آزمون پسنمایی، مجموعه آزمونِ کل را کاهش دائمی نمی‌دهند و آزمایه­ها را حذف نمی‌کنند. مسئلۀ اجرای مجدد انتخابی آزمایه­ها را می‌توان به‌صورت زیر بیان کرد:
فرض: اگر T مجموعه‌ی کل آزمایه­های موجود، P نسخۀ اولیۀ برنامه و P' نسخۀ جدید آن باشد؛

  • زیرمجموعه‌ی را مجموعه‌ای از آزمایه­ها برای اجرا روی P' در نظر می‌گیریم.
  • با آزمودن P' توسط T'، تصحیحات مورد نیاز P' نسبت به T' مشخص می‌شود.
  • در صورت نیاز، T'' ایجاد می‌شود، که مجموعه‌ای از آزمون‌های عملکردی یا ساختاری جدید برایP' هستند.
  • با آزمودن P' توسط T''، تصحیحات مورد نیاز P' نسبت به T'' مشخص می‌شود.
  • سابقۀ آزمون و نیز T''' که دنباله آزمون جدیدی برای P' است، از T،  T'و T'' برای آن ایجاد می‌شوند.

در توضیح گام‌های بالا، می‌توان گفت که اجرای مجدد انتخابی آزمایه­ها، پاره‌ای مسایل را مد نظر قرار می‌دهد: در گام (1) که شامل مسئلۀ انتخاب آزمایه­های پسنمایی (آزمایه­ها برای بخش‌های دگرگونی یافته) است؛ که به‌صورت انتخاب زیرمجموعۀ T' از T برای آزمودن نسخۀ جدید P' بیان می‌شود. این مسئله، همچنین شامل زیرمسئله‌های تعیین آزمون‌هایی در T است که منسوخ شده‌اند. گام (3) نیز به بیان مسئلۀ تعیین پوشش می‌پردازد؛ که مسئلۀ تعیین بخش‌هایی از نسخۀ جدید P' یا مجموعۀ مشخصه‌های جدید S' است که نیاز به آزمون بیشتر دارند. گام (2) و (4)، بر مسئلۀ اجرای دنباله آزمون دلالت دارند؛ که مسئلۀ اجرای کارای آزمون‌ها و بررسی نتایج آزمون‌‌ها برای تصحیح برنامه است. گام (5) مسئلۀ نگهداری دنباله آزمون را بیان می‌کند؛ که مسئلۀ بروزرسانی و مرتب‌سازی اطلاعات آزمون است.
به بیان ساده‌تر، فنون انتخاب در آزمون پسنمایی در هر مرحله، به انتخاب یک زیر مجموعه از کل مخزن آزمون موجود با استفاده از اطلاعات برنامه و مجموعه آزمون می‌پردازند و در عین حال حجم مخزن آزمون کاهش نمی‌یابد. این انتخاب می‌تواند بر اساس ملاک‌های گوناگون صورت گیرد، مثلاً اگر ملاک انتخاب، رشته آزمونی با پوشش کامل کد باشد، این انتخاب را انتخاب امن در آزمون پسنمایی گویند. مسئلۀ بسیار مهم در مورد این فنون، موازنۀ بین ایمنی و کارایی است. فنون RTS ایمن، تحت شرایط بخصوص، تضمین می‌کند که آزمایه­های انتخاب نشده، در اجرا بر روی نسخۀ جدید نمی‌توانستند خطایی آشکار کنند. راهبرد اکثر فنون RTS امن، این است که با هر بار تغییر در نسخه و نیاز به تکرار آزمون پسنمایی، با بررسی و مقایسۀ گراف جریان کنترلی نسخۀ جدید و نسخۀ قبل، آزمایه­هایی انتخاب می‌شوند که بخش‌های اصلاح شده در نسخۀ جدید را می‌آزمایند. مطالعات نشان داده‌اند که میزان تغییرات بین دو نسخه، به‌شدت کارایی فنون آزمون پسنمایی انتخابی را تحت تأثیر قرار می‌دهد.
معمولاً فنون انتخاب آزمایه­ها براساس شناسایی تغییرات و میزان تأثیر آن‌ها می‌باشد که با استفاده از فنونی همچون تفاوت معنایی، تفاوت متنی، عملیات برش‌بندی، فوق داده‌های مؤلفه‌ای و گراف‌های رابطه‌ای بین رده‌ای صورت می‌پذیرد. از آن‌جا که انتخاب دقیق آزمایه­های آشکار کنندۀ خطا، که ایده‌آل آزمون پسنمایی انتخابی است، ممکن نیست، چالش اصلی که آزمونگران در تمام فنون آزمون پسنمایی انتخابی با آن مواجهند، موازنۀ بین منفعت- هزینه در مورد این فنون است.

اولویت‌دهی آزمایه­ها

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

کاهش مجموعه آزمون

روشن است که هر چه تعداد آزمایه­ها در فرایند آزمون بیشتر باشد، احتمال تأمین نیازمندی‌های آزمون بیشتر می‌گردد. اما مشکل این‌جا است که رشد بی‌رویۀ مجموعه آزمون می‌تواند مشکل‌ساز شود. به‌عبارت دیگر، آزمایه‌های جدید ممکن است تولید و در مجموعه درج شود تا نیازمندی‌های بیشتری را تأمین نماید. در نتیجه‌ آزمایه­های موجود در مجموعه آزمون، ممکن است بیشتر از حد نیاز برای تأمین نیازمندی‌های آزمون باشد. مسئله اینجاست که اگر تعدادی از آزمایه­ها از مجموعه آزمون حذف شود، این مجموعه کماکان همۀ نیازمندی‌های آزمون را که مجموعۀ اولیه تأمین می‌کرد، برآورده می‌نماید. این مسئله به «کاهش مجموعه آزمون» (کمینه‌سازی مجموعه آزمون یا پالایش آزمایه­ها) مشهور بوده و زیرمجموعۀ حاصل، مجموعۀ نماینده یا شاخص نامیده می‌شود. اگر هیچ زیرمجموعه‌ای از مجموعۀ نماینده، تمام نیازمندی‌ها را تأمین نکند، آن را مجموعۀ بهینه یا مجموعۀ کمینه می‌نامیم.
فنون کاهش مجموعه آزمون، با تشخیص و حذف آزمایه­های افزونه، ‌‌‌‌دنباله آزمون را به‌طور دائمی کاهش می‌دهند (برخلاف فنون آزمون پسنمایی انتخابی). امااین کاهش ممکن است در بلند مدت بر کیفیت نرم‌افزار تأثیر سوء داشته باشد. از سوی دیگر، کاهش تعداد آزمایه­ها به‌گونه‌ای که همۀ نیازمندی‌های آزمون را برآورده سازد، سبب افزایش کارایی فرایند آزمون می‌شود. علت این مسئله این است که زمان اجرای آزمایه­ها کمتر شده و نهایتاً منجر به کاهش زمان کل آزمون می‌شود. بنابراین مسئلۀ کاهش مجموعه آزمون در واقع به مسئلۀ‌ یافتن یک زیر‌مجموعه از مجموعۀ اصلی که بتواند تمام نیازمندی‌های آزمون را همانند مجموعۀ اصلی برآورده سازد، تبدیل می‌شود؛ این کاهش باید به‌گونه‌ای انجام شود که قابلیت آشکارکنندگی خطای مجموعۀ حاصل نسبت به مجموعه آزمون اولیه، بدون تغییر یا با کاهشی قابل اغماض (نسبت به میزان کاهش به‌دست آمده در زمان و منابع آزمون ناشی از کاهش مجموعه آزمون) همراه باشد. برقراری توازن بین کاهش توان آشکارسازی خطای مجموعه آزمون حاصل نسبت به کاهش به‌دست آمده در زمان و منابع مصرفی به دلیل کاهش حجم آزمون‌ها، همواره موضوعی چالشی بوده است. اصولاً در مورد کاهش مجموعه آزمون، دو هزینه اهمیت دارد:

  • هزینۀ اجرای فرایند (ابزار) کاهش مجموعه آزمون برای تولید مجموعۀ کاهش‌یافته: یک ابزار کاهش مجموعه آزمون را می‌توان درپی ارائه نسخه‌های نرم‌افزار اجرا کرد و اجرای آن می‌تواند به‌صورت خودکار و در ساعات خلوتی انجام شود و در این صورت هزینۀ اجرای ابزار خیلی مشکل‌زا نخواهد بود. علاوه بر این هنگامی‌که با استفاده از یک ابزار، مجموعه آزمون کاهش داده شد، هزینۀ این کاهش به‌تدریج در اجراهای مکرر آزمون و استفاده از مجموعۀ کاهش‌یافته در نگارش‌های بعدی توزیع شده و در مقایسه با سایر هزینه‌ها کم اهمیت می‌گردد.
  • حذف برخی از آزمایه­ها که در صورت اجرا منجر به آشکارسازی خطا می‌شوند: این هزینه از مورد قبلی مهم‌تر است. حذف چنین آزمایه­هایی موجب کاهش درصد کشف خطای مجموعه آزمون شده و از کارایی آن می‌کاهد. اثر این کاهش به‌تدریج با به‌کارگیری مجدد آن در نسخه‌های بعدی نرم‌افزار افزایش یافته تا جایی‌که حجم خطاهای از دست‌رفته زیاد شده و فرایند آزمون دچار اختلال و عدم کارایی می‌گردد. دو روش برای بررسی هزینه‌های مربوط به حذف آزمایه­های آشکار کننده خطا وجود دارد:

الف. بر مبنای هر آزمایه: با داشتن برنامه خطادارP و مجموعه آزمون T یکی از راه‌های اندازه‌گیری هزینۀ مجموعه آزمون کاهش‌یافته بر کشف خطا، شناسایی آزمایه­هایی است که در T وجود دارند و خطاهایی را از P آشکار می‌کنند اما در Tmin نیستند. این کمیت را می‌توان با تعداد آزمایه­های آشکار کننده خطا در T نرمال کرد. نکته مهم اینجاست که ممکن است چندین آزمایه یک خطای واحد را آشکار نمایند. در این‌حالت می‌توان بعضی از آن‌ها را حذف نمود بدون این‌که تأثیری در کشف خطا داشته باشند.
ب. بر مبنای هر مجموعه آزمون: روش دیگر دسته‌بندی نتایج کاهش مجموعه آزمون بر حسب یک خطا در P به یکی از سه روش زیر است: 1) هیچ آزمایه­ای در T خطا آشکار نمی‌کند. 2) بعضی آزمایه‌ها هم در T و هم در Tmin هستند که خطاهایی را آشکار می‌نمایند. 3) بعضی از آزمایه­ها در T آشکارکنندۀ خطا هستند اما در Tmin هیچ آزمایه آشکارکنندۀ خطا وجود ندارد. مورد 1 حالتی را نشان می‌دهد که T بی‌اثر است. حالت 2 حالتی است که کاهش مجموعه موجب کاهش درصد کشف خطا نمی‌شود و حالت سوم حالتی است که کاهش مجموعه آزمون باعث می‌شود کشف خطا با اختلال مواجه شود. توجه کنید که خطاهایی که توسط اکثر آزمایه­ها قابل کشف باشد، پس از کمینه‌سازی نیز می‌توان کشف نمود در حالی‌که خطاهایی را که توسط تعداد معدودی از آزمایه­ها قابل کشف باشد، پس از کمینه‌سازی در معرض عدم کشف قرار می‌گیرند.
عموماً کاهش مجموعه آزمون یک مسئلۀ بهینه‌سازی تک‌هدفه است. اما در برخی بررسی‌های اخیر کاهش مجموعه آزمون چندهدفه نیز مورد توجه قرار گرفته است که برخی از این اهداف پوشش کد، تاریخچۀ کشف خطا در گذشته و هزینۀ اجرایی هستند.
در کل مسئله کاهش مجموعه آزمون‌ها و انتخاب آزمایه­ها از این جهت که زیر مجموعه‌ای از مجموعه اصلی را تولید می‌کنند شبیه یکدیگر می‌باشند. معیار کاهش مجموعه آزمون این‌است که آیا زیر مجموعۀ منتخب، همه نیازمندی‌های آزمون را تأمین می‌کند در حالی‌که تمرکز انتخاب آزمایه­ها بر بخش‌های تغییر‌یافته سیستم نرم‌افزاری است. در بعضی از تقسیم‌‌بندی‌های اولیه، کاهش مجموعه آزمون در حوزۀ انتخاب آزمایه­ها دسته‌بندی می‌شود. بعضی از روش‌هایی که ارائه شده سعی می‌نمایند تا مسایل را به‌صورت ترکیبی حل نمایند. مثلاً روش ارائه شده توسط والکات و همکاران از الگوریتم‌های ژنتیک استفاده می‌کند تا مسئله اولویت‌دهی و انتخاب آزمایه­ها را همزمان حل نماید. یا تحقیقی که در انجام شده مجموعه‌ای روش‌های ابتکاری و الگوریتم‌های ژنتیک را برای حل مسئلۀ کاهش مجموعه آزمون و اولویت‌دهی آزمایه­ها ارائه نموده است.
از آن‌جایی‌که هر آزمایه می‌تواند یک یا چند نیازمندی آزمون را برآورده نماید، ارتباط میان آن‌ها را می‌توان با یک ماتریس به‌نام ماتریس آزمایه-نیازمندی نمایش داد. مثالی از آن را در  جدول 1 مشاهده می‌نمایید.

جدول 1: ماتریس آزمایه-نیازمندی

نیازمندی 5

نیازمندی 4

نیازمندی 3

نیازمندی 2

نیازمندی 1

نیازمندی/آزمایه

1

1

1

1

0

آزمایه 1

0

0

0

0

1

آزمایه 2

1

0

0

1

0

آزمایه 3

0

0

0

0

1

آزمایه 4




مجموعۀ {آزمایه 1، آزمایه 2، آزمایه 3، آزمایه 4} معرف آزمایه­ها و مجموعۀ {نیازمندی 1، نیازمندی 2، نیازمندی 3، نیازمندی 4} معرف نیازمندی‌های آزمون می‌باشد. عدد 1 در سطر i و ستون j
بیان می‌کند که آزمایه iام می‌تواند نیازمندی jام را تأمین نماید و عدد 0 به معنای عدم وجود رابطه می‌باشد. معمولاً فنون کاهش مجموعه آزمون‌ها ماتریس اخیر را به‌عنوان ورودی گرفته و در خروجی زیرمجموعه‌ای تولید می‌کنند که کماکان همۀ نیازمندی‌های آزمون را برآورده نماید. مسئله یافتن یک مجموعه نمایندۀ بهینه در حالت کلی NP کامل است و روش‌های موجود مجموعه‌های نیمه بهینه تولید می‌کنند.

افزایش مجموعه آزمون

انواع رویکردهای مورد استفاده در آزمون پسنمایی (انتخاب، اولویت‌دهی و کاهش) از مجموعه آزمون موجود استفاده مجدد می‌نمایند. اما حین آزمون پسنمایی مسئله دیگری بروز می‌کند. کدی که تغییر می‌کند، ممکن است حاوی بخش‌های جدیدی باشد که مجموعه آزمون موجود آن بخش‌ها را نمی‌آزماید. بنابراین یکی از فعالیت‌های تولیدکنندگان هنگام آزمون پسنمایی سنجش کیفیت مجموعه آزمون بعد از تغییر برنامه است. هدف این است که رفتارهای جدید یا تغییر کرده که با مجموعه آزمون موجود آزموده نمی‌شوند و نیازمند آزمایه‌های جدید هستند، شناسایی شود. لذا برای افزایش سودمندی مجموعه آزمون در پاسخ به تغییرات، دو کار باید انجام شود:

  • وارسی شود آیا مجموعه آزمون‌های موجود برای تغییرات ایجاد شده در برنامه کافی هستند.
  • اگر کافی نیستند، باید آزمایه­های جدیدی تولید شوند که هدفشان آزمون رفتار تغییر یافته برنامه باشد. پس نیازمند روشی هستیم که آزمونگر را در تولید این مجموعه آزمون‌ها هدایت کند.

این مسئله را افزایش مجموعه آزمون می‌نامیم.

طراحی الگوریتم‌های کاهش مجموعه آزمون و اولویت‌دهی آزمایه­ها

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

  • همه الگوریتم‌ها در ساخت  میزان سهم و مفید بودن هر یک از آزمایه­ها را بر اساس خصوصیات برنامه تحت آزمون P، خصوصیات آزمایه­ها در T و هدف  مورد ارزیابی قرار می‌دهند. با وجودی‌که خصوصیات متنوعی مطرح شده‌اند اما همگی را می‌توان به دو نوع پوشش و هزینه تقسیم‌بندی نمود. پوشش، نیازمندی‌های برنامه P، معیارهای مبتنی بر کد مثل دستور، انشعاب و جریان داده‌ها، خطرات، سالمندی و خطاخیز بودن مؤلفه‌های P را در بر می‌گیرد. هزینه نیز شامل زمان اجرای P به ازاء یک آزمایه، زمان برپایی و آماده‌سازی برای اجرای یک آزمایه و هر هزینه دیگری در ارتباط با اجرای یک آزمایه (بخصوص در حالتی که از شبیه‌سازی استفاده شده باشد) می‌باشد. الگوریتم‌ها آزمایه­های T را بر اساس ترکیبی از این خصوصیات ارزیابی می‌نمایند. مثلاً مراجعی انواع مختلفی از پوشش را جهت کاهش مجموعه آزمون به‌کار گرفته‌اند. فن آن‌ها هنگام تصمیم‌گیری دربارۀ آزمایه­هایی که باید در  قرار گیرند، به ازاء هر یک از موجودیت‌های برنامه،E، آزمایه­هایی را انتخاب می‌کند که E را بپوشاند. به‌عنوان مثالی دیگر، مرجع دیگری برای ایجاد ترتیبی از آزمایه­ها در ، انواع مختلفی از پوشش را همراه با میزان خطاخیز بودن پیمانه‌ها مورد استفاده قرار داده‌اند.
  • الگوریتم‌های کاهش مجموعه آزمون و اولویت‌دهی آزمایه­ها، در دفعاتی (فرکانسی) که سهم یک آزمایه را مجدداً محاسبه می‌نمایند، با هم فرق می‌کنند. یک روش ممکن است این سهم را یک‌بار محاسبه کرده و از آن برای شمول یا عدم شمول آزمایه­ها در استفاده کند. این فرکانس را جمع کل می­نامند و از آن برای محاسبۀ اولویت‌دهی مبتنی بر جمع استفاده می­شود. روش دیگر، سهم هر آزمایه را بر اساس سهم افزودۀ آن نسبت به  پس از شمول یا عدم شمول آن در  محاسبه مجدد می‌نماید. این فرکانس، افزوده نامگذاری شده و از آن برای محاسبه اولویت‌دهی مبتنی بر افزایش استفاده می‌شود.
  • یک الگوریتم می‌تواند از سهم آزمایه برای تعیین آزمایه­ای که باید به اضافه شود استفاده کند (مورد استفادۀ کاهش مجموعه آزمون و اولویت دهی آزمایه­ها) و یا از آن  در جهت تعیین آزمایه­ای که باید از T حذف شود، بهره ببرد (مورد استفادۀ کاهش مجموعه آزمون). اولی را فن افزایشی و دومی را فن تجزیه می‌نامند. فن افزایشی کار خود را با مجموعۀ خالی  شروع می‌کند و آزمایه­ها را یکی پس از دیگری به آن اضافه می‌کند. اما فن تجزیه با مجموعه T شروع کرده و به‌تدریج آزمایه­ها را از آن حذف می‌کند تا  به‌دست آید. مهم‌ترین مزیت روش تجزیه در کاهش مجموعه آزمون، این‌ است که می‌توان در حین فرایند کاهش، در هر زمان الگوریتم را متوقف نمود و مجموعۀ باقیمانده، نیازمندی‌های آزمایه­ها را می‌پوشاند. در مقابل الگوریتم افزایشی تنها زمانی که خاتمه یابد می‌توان تضمین کرد که پوشش کامل حاصل شده است. ترکیب این صفات یا به‌عبارتی محاسبۀ سهم هر آزمایه، فرکانس ارزیابی (مجدد) سهم هر آزمایه و روش ساخت ، می‌تواند الگوریتم‌های متفاوتی تولید نماید.

  • نتیجه‌گیری

    آزمون پسنمایی نرم‌افزار، از فعالیت‌های نگهداری نرم‌افزار برای برنامۀ اصلاح شده است، تا اطمینان حاصل شود که تغییرات صحیح هستند و تأثیر عکس (نامطلوب) بر روی بخش‌های تغییرنیافتۀ برنامه نداشته‌اند. برای حل مشکل هزینۀ زیاد آزمون پسنمایی، روشگان مختلفی ارائه شده‌اند که مهم‌ترین آن‌ها عبارتند از: آزمون پسنمایی انتخابی، کاهش مجموعه آزمون و اولویت‌دهی آزمایه­ها. در مورد کاهش مجموعه آزمون، دو هزینه اهمیت دارد: 1) هزینه اجرای فرایند (ابزار) کاهش مجموعه آزمون برای تولید مجموعۀ کاهش‌یافته و 2) حذف برخی از آزمایه­ها که در صورت اجرا منجر به آشکارسازی خطا می‌شوند. هزینۀ دوم اهمیت بیشتری دارد. پوشش و هزینه، دو خصوصیت مهمِ آزمایه­ها است که الگوریتم‌های کاهش در ساخت مجموعۀ کاهش‌یافته میزان سهم و مفید بودن هر یک از آزمایه­ها را بر اساس آن می‌سنجند.
    مراجع

    • Yoo, Shin, and Mark Harman. "Regression testing minimization, selection and prioritization: a survey." Software Testing, Verification and Reliability 22, no. 2 (2012): 67-120.
    • Elbaum, Sebastian, Alexey G. Malishevsky, and Gregg Rothermel. "Test case prioritization: A family of empirical studies." IEEE transactions on software engineering 28, no. 2 (2002): 159-182.
    • Haraty, Ramzi A., Nashat Mansour, Lama Moukahal, and Iman Khalil. "Regression Test Cases Prioritization Using Clustering and Code Change Relevance." International Journal of Software Engineering and Knowledge Engineering 26, no. 05 (2016): 733-768.
    • Mirarab, Siavash, and Ladan Tahvildari. "An empirical study on bayesian network-based approach for test case prioritization." In 2008 1st International Conference on Software Testing, Verification, and Validation, pp. 278-287. IEEE, 2008.
    • Jeffrey, Dennis, and Neelam Gupta. "Experiments with test case prioritization using relevant slices." Journal of Systems and Software 81, no. 2 (2008): 196-221.
    • Kim, Yunho, Zhihong Zu, Moonzoo Kim, Myra B. Cohen, and Gregg Rothermel. "Hybrid directed test suite augmentation: An interleaving framework." In 2014 IEEE Seventh International Conference on Software Testing, Verification and Validation, pp. 263-272. IEEE, 2014.
    • Mirarab, Siavash, Soroush Akhlaghi, and Ladan Tahvildari. "Size-constrained regression test case selection using multicriteria optimization." IEEE Transactions on Software Engineering 38, no. 4 (2012): 936-956.
    • Jeffrey, Dennis, and Neelam Gupta. "Improving fault detection capability by selectively retaining test cases during test suite reduction." IEEE Transactions on software Engineering 33, no. 2 (2007): 108-123.
    • Khalilian, Alireza, Mohammad Abdollahi Azgomi, and Yalda Fazlalizadeh. "An improved method for test case prioritization by incorporating historical test case data." Science of Computer Programming 78, no. 1 (2012): 93-116.
    • Parsa, Saeed, and Alireza Khalilian. "On the optimization approach towards test suite minimization." International Journal of Software Engineering and its applications 4, no. 1 (2010): 15-28.