آزمون نرم‌افزار

مدرس: مهران ریواده گواهی رسمی: دوزبانه
ترم: تابستان ۱۴۰۳ پیش‌نیاز: برنامه‌سازی پیشرفته
زمان ارائه: شنبه ۱۷:۰۰ تا ۲۰:۰۰ محل برگزاری: کلاس مجازی

هدف کلی

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

سرفصل‌ها

  • مفاهیم آزمون نرم‌افزار
    • مفهوم آزمون و شکست
    • روال کاری یک آزمونگر نرم‌افزار
    • انواع آزمون‌های نرم‌افزاری (آزمون پذیرش، آزمون سیستم، آزمون یکپارچگی و …)
    • مدل V
    • مفهوم پوشش کد
    • آزمون‌های جعبه‌سیاه و جعبه سفید
  • آزمون واحد
    • هدف از آزمون واحد
    • نحوه نگارش و اجرای آزمون‌های واحد در پایتون (بسته unittest)
  • خودکار ‌سازی آزمون
    • نرم‌افزار آزمون پذیر و آزمون مستمر
    • هدف از خودکارسازی آزمون
    • طراحی موارد آزمون
    • خودکارسازی آزمون‌های واحد (ابزار Robot یا Pytest)
  • آزمون در محیط‌های چابک
    • نمودار هزینه تغییر
    • یکپارچگی مستمر
    • تست‌های سیستمی در محیط‌های چابک
    • مفهوم TDD همراه با مثال‌های عملی
  • آشنایی با طراحی آزمون مبتنی بر معیار پوشش
    • نیازمندی‌های آزمون و تعریف معیار پوشش
    • نحوه استفاده از معیارهای پوشش
    • آشنایی کلی با معیارهای پوشش (افراز فضای ورودی، پوشش گراف، پوشش منطق، پوشش نحوی)
  • نگارش نقشه‌راه آزمون و برنامه‌ریزی برای آن
  • سیستم‌های در حال تغییر و آزمون رگرسیون
  • Mock‌ و Stub
    • مفهوم Mock و Stub‌ و معماری
    • پیاده‌سازی آزمون Mock
  • تحلیل ایستای کد
    • آشنایی با مفهوم تحلیل ایستای کد
    • آشنایی با ابزارهای تحلیل ایستای کد (SonarQube)

ارزیابی

  • تمرین‌های عملی هفتگی: ۵۰٪ نمره
  • آزمون‌ نهایی: ۵۰٪ نمره

منابع

  1. P. Ammann and J. Offutt. Introduction to Software Testing. Cambridge University Press, 2017.