آزمون و تحلیل نرمافزار پیشرفته
اطلاعات کلی
- نام درس به فارسی: آزمون و تحلیل نرمافزار پیشرفته
- نام درس به انگلیسی: Advanced Software Testing and Analysis
- رشته، گرایش، نوع و واحد درس: مهندسی کامپیوتر – نرمافزار، اختصاصی، 3 واحد
- مقطع: تحصیلات تکمیلی
پیش نیازها
- پیش نیازها: آزمون نرمافزار
- هم نیازها: –
- مطالب پیش نیاز: مفاهیم پایه در آزمون نرمافزار
توضیح کوتاه درس
آزمون نرمافزار تصمیمناپذیر و پرهزینه است. استفاده از فنون مختلف برای خودکارسازی آزمون، نه تنها هزینه آزمون را کاهش میدهد، بلکه پوشش آزمون بهتری بهدست میدهد. در این درس، شرکتکنندگان با مفاهیم پیشرفته آزمون نرمافزار، بهویژه فنون خودکارسازی تولید دادههای آزمون و طراحی برای آزمونپذیری آشنا میشوند.
اهداف و نتایج درس
- آشنایی با روشهای نوین در آزمون خودکار نرمافزارها
- آشنایی با آزمونپذیری نرمافزار
- آشنایی با فنون تحلیل ایستای برنامه و سنجش کیفیت نرمافزار
مخاطبین
- دانشجویان مهندسی و علوم کامپیوتر
- آزمونگران و متخصصین تضمین کیفیت نرمافزار
- پژوهشگران حوزه علوم کامپیوتر و نرمافزار
سطح دوره
- پیشرفته
طول و زمانبندی دوره
- مدت دوره: 3 ماه (12 هفته)
- کلاسها: 10 هفته کلاس (30 ساعت)
- جلسات جبرانی: 1 هفته
- جلسات ارزیابی: 1 هفته
سرفصلها و مباحث
مقدمه (2 جلسه)
- خودکارسازی آزمون نرمافزار
- آزمون خودکار
- تحلیل نرمافزار
تحلیل ایستای برنامه (4 جلسه)
- محاسبه متریکهای نرمافزار
- استخراج گرافهای برنامه
- سنجش صفات کیفی
- پیشبینی خطا و آسیبپذیری
- برشبندی ایستا
تحلیلپویای برنامه (4 جلسه)
- ابزارگذاری و پایش برنامه
- پیشگوی آزمون و آزمون دگردیس
- تحلیل موتاسیون و کمینهسازی مجموعه آزمون
- اولویتبندی و انتخاب آزمایهها
- برشبندی پویا و مکانیابی خطا
الگوریتمها و ابزارهای تولید خودکار دادههای آزمون (4 جلسه)
- آزمون تصادفی و تصادفی تطبیقی
- آزمون مبتنی بر جستوجو و مبتنی بر یادگیری
- آزمون نمادین و نمادین پویا
- آزمون فازی
طراحی برای آزمونپذیری (4 جلسه)
- تعاریف آزمونپذیری
- سنجش آزمونپذیری
- بهبود آزمونپذیری
- تبدیل و بازآرایی برای آزمونپذیری
دیگر آزمونها (2 جلسه)
- آزمون کارایی (بار و فشار)
- آزمون امنیت (نفوذ)
- اَبَر آزمون (hyper-testing)
نرمافزارهای مورد نیاز
- ابزارهای تحلیل استاتیک و سنجش کیفیت: Understand, SonarQube, SourceMeter, OpenStaticAnalyzer, PMD
- ابزارهای تجزیه و تحلیل کد: ANTLR, Roslyn
- ابزارهای سنجش پوشش کد: LCov, JCov, JaCoCo, Colver
- ابزارهای تولید تست: EvoSuite, Randoop
- ابزارهای تحلیل پویا: DART, JDART, KLEE, CROWN, JSlice
- ابزارهای آزمون فازی: AFL, Peach, SPIKE, DeepFuzz
- سایر ابزارها: ADAFEST
تکالیف پیشنهادی و روند ارزیابی
- تکالیف: 20%
- تعداد 2 تکلیف
- تکالیف عملی: (دستکم 2 تکلیف عملی)
- سمینار: 20%
- انتخاب و ارائه یک مقاله از کنفرانسها یا مجلات معتبر مهندسی نرمافزار (مانند ECSE، ASE، ICPC، FSE، TSE، TOSEM، ESE، SysSoft)
- پروژه: 20%
- اجرای یک پروژه آزمون نرمافزار و تحلیل کد با استفاده از ابزارهای تدریس شده (مثلاً تکرار و ارزیابی مصنوعات مقاله انتخاب شده)
- آزمون(ها): 40%
- مبتنی بر پرسشهای چندگزینهای و تشریحی
مراجع درس
کتابها
- X. Rival and K. Yi. Introduction to Static Analysis: An Abstract Interpretation Perspective. MIT Press, 2020.
- S. Parsa. Software Testing Automation: Testability Evaluation, Refactoring, Test Data Generation and Fault Localization. Springer, 2023.
- C. S. Păsăreanu. Symbolic Execution and Quantitative Reasoning: Applications to Software Safety and Security. Morgan & Claypool Publishers, 2020.
- Ari Takanen, Jared DeMott, Charlie Miller, Atte Kettunen. Fuzzing for Software Security Testing and Quality Assurance, 2nd Edition., 2018.
مقالات
- Zakeri-Nasrabadi, M., Parsa, S., & Kalaee, A. Format-aware learn&fuzz: deep test data generation for efficient fuzzing. Neural Computing and Applications, 33(5), 2021. دسترسی
- Golmohammadi, R., Parsa, S. & Zakeri-Nasrabadi, M. Dynamic domain testing with multi-agent Markov chain Monte Carlo method. Soft Comput 28, 8293–8317, 2024. دسترسی
- Candea, G., Godefroid, P. Automated software test generation: some challenges, solutions, and recent advances. In: Steffen, B., Woeginger, G. (eds) Computing and Software Science. Lecture Notes in Computer Science, vol 10000. Springer, Cham, 2019. دسترسی
- Tsong Yueh Chen, Fei-Ching Kuo, Huai Liu, Pak-Lok Poon, Dave Towey, T. H. Tse, and Zhi Quan Zhou. Metamorphic testing: a review of challenges and opportunities. ACM Comput. Surv. 51, 1, Article 4 (January 2019), 27 pages. دسترسی
تهیهکننده
- نام: مرتضی ذاکری
- نگارش: 2.0