09982292579
info@mehraeen.ac.ir
فارسی پرچم
فارسی
یک زبان را انتخاب کنید
فارسی پرچم
فارسی
0
دسته ها
خانه تقویم‌آموزشی مدرس وبلاگ چارت‌‌دروس تماس‌با‌ما درباره‌ما انجمن‌ها
برنامه سازی پیشرفته

جلسه 10آزمون نرم افزار 

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

مقدمه و اهمیت آزمون نرم‌افزار


  • تعریف: آزمون نرم‌افزار فرآیندی است برای ارزیابی و تأیید اینکه یک محصول نرم‌افزاری یا برنامه‌های کاربردی مورد نیاز خود را برآورده می‌کنند یا خیر. این فرآیند همچنین به یافتن نقص‌ها (باگ‌ها) کمک می‌کند تا قبل از تحویل به مشتری رفع شوند.

  • اهمیت:

  • اطمینان از کیفیت و قابلیت اطمینان نرم‌افزار.

  • کاهش هزینه‌های نگهداری و رفع اشکال در بلندمدت.

  • افزایش رضایت مشتری و اعتبار محصول.

  • شناسایی زودهنگام ریسک‌ها و نقاط ضعف.

  • تضمین امنیت و جلوگیری از آسیب‌پذیری‌ها.

۲. اهداف آزمون نرم‌افزار


  • یافتن خطاها و نقص‌های نرم‌افزاری.

  • تأیید اینکه نرم‌افزار نیازمندی‌های مشخص شده را برآورده می‌کند (Verification).

  • اعتبارسنجی اینکه نرم‌افزار نیازهای واقعی کاربر را برآورده می‌کند (Validation).

  • ارائه اطلاعات به ذینفعان در مورد کیفیت نرم‌افزار.

  • پیشگیری از بروز مشکلات در آینده.

۳. سطوح مختلف آزمون نرم‌افزار


  • آزمون واحد (Unit Testing): آزمون کوچکترین بخش‌های قابل تست کد (مانند توابع یا متدها) به صورت مجزا. معمولاً توسط توسعه‌دهندگان انجام می‌شود.

  • آزمون یکپارچه‌سازی (Integration Testing): آزمون تعامل و ارتباط بین واحدهای مختلف نرم‌افزار پس از یکپارچه‌سازی آن‌ها.

  • آزمون سیستمی (System Testing): آزمون کل سیستم به عنوان یک موجودیت واحد برای ارزیابی انطباق آن با نیازمندی‌های عملکردی و غیرعملکردی.

  • آزمون پذیرش (Acceptance Testing): آزمونی که توسط کاربر نهایی یا نمایندگان او انجام می‌شود تا تأیید کند که سیستم نیازهای کسب‌وکار را برآورده کرده و برای استقرار آماده است.

۴. انواع آزمون نرم‌افزار


  • آزمون عملکردی (Functional Testing):

  • آزمون جعبه سیاه (Black-Box Testing): تمرکز بر ورودی‌ها و خروجی‌ها بدون در نظر گرفتن ساختار داخلی کد.

  • آزمون جعبه سفید (White-Box Testing): تمرکز بر ساختار داخلی کد، منطق و مسیرهای اجرایی.

  • آزمون جعبه خاکستری (Gray-Box Testing): ترکیبی از رویکردهای جعبه سیاه و سفید.

  • آزمون غیرعملکردی (Non-Functional Testing):

  • آزمون کارایی (Performance Testing): ارزیابی سرعت، پاسخ‌دهی و پایداری سیستم تحت بار کاری مشخص. (شامل Load, Stress, Soak Testing)

  • آزمون امنیتی (Security Testing): شناسایی آسیب‌پذیری‌ها و اطمینان از حفاظت داده‌ها و سیستم.

  • آزمون کاربردپذیری (Usability Testing): ارزیابی سهولت استفاده و تجربه کاربری.

  • آزمون سازگاری (Compatibility Testing): اطمینان از عملکرد صحیح نرم‌افزار در محیط‌های مختلف (سیستم‌عامل‌ها، مرورگرها، دستگاه‌ها).

  • آزمون قابلیت اطمینان (Reliability Testing): ارزیابی توانایی نرم‌افزار برای انجام وظایف بدون خطا برای مدت زمان مشخص.

  • آزمون نگهداری (Maintenance Testing):

  • آزمون رگرسیون (Regression Testing): اطمینان از اینکه تغییرات جدید (رفع اشکال یا افزودن ویژگی) باعث ایجاد مشکل در بخش‌های قبلاً تست شده نشده است.

  • آزمون بازآزمایی (Re-testing): آزمون مجدد یک نقص که قبلاً گزارش شده و اکنون (ادعا می‌شود) رفع شده است.

۵. فرآیند آزمون نرم‌افزار (Software Testing Life Cycle - STLC)


  • تحلیل نیازمندی‌ها: درک نیازمندی‌های عملکردی و غیرعملکردی.

  • طراحی آزمون: ایجاد استراتژی تست، تعریف موارد تست (Test Cases)، سناریوهای تست و داده‌های تست.

  • پیاده‌سازی آزمون: نوشتن کد آزمون (برای تست‌های خودکار) یا آماده‌سازی محیط تست.

  • اجرای آزمون: اجرای موارد تست و ثبت نتایج (Pass/Fail).

  • گزارش‌دهی نقص (Defect Reporting): مستندسازی و گزارش باگ‌های یافت شده.

  • بستن چرخه آزمون: ارزیابی نتایج نهایی، تهیه گزارش خلاصه آزمون و تأیید اتمام آزمون.

۶. معیارهای کیفیت نرم‌افزار


  • صحت (Correctness): آیا نرم‌افزار وظایف خود را طبق مشخصات انجام می‌دهد؟

  • قابلیت اطمینان (Reliability): آیا نرم‌افزار به طور مداوم و بدون خطا کار می‌کند؟

  • کاربردپذیری (Usability): آیا استفاده از نرم‌افزار آسان است؟

  • کارایی (Efficiency): آیا نرم‌افزار منابع (CPU، حافظه) را بهینه مصرف می‌کند؟

  • قابلیت نگهداری (Maintainability): آیا اصلاح و به‌روزرسانی نرم‌افزار آسان است؟

  • قابلیت انتقال (Portability): آیا نرم‌افزار را می‌توان به راحتی به محیط‌های دیگر منتقل کرد؟

  • امنیت (Security): آیا نرم‌افزار در برابر تهدیدات محافظت شده است؟

۷. ابزارها و تکنیک‌های آزمون


  • ابزارهای تست خودکار (Automation Testing Tools): Selenium, Appium, JUnit, TestNG, Pytest, Postman.

  • ابزارهای مدیریت تست (Test Management Tools): Jira (with plugins like Zephyr/Xray), TestRail.

  • تکنیک‌های طراحی موارد تست:

  • کلاس‌های معادل (Equivalence Partitioning)

  • تحلیل مقدار مرزی (Boundary Value Analysis)

  • جدول تصمیم (Decision Table Testing)

  • تست جریان داده (Data Flow Testing)

  • تست وضعیت (State Transition Testing)


خلاصه نکات کلیدی


  • آزمون نرم‌افزار جزء حیاتی چرخه توسعه نرم‌افزار برای تضمین کیفیت و کاهش ریسک است.

  • سطوح مختلف آزمون (واحد، یکپارچه‌سازی، سیستمی، پذیرش) رویکردهای متفاوتی را پوشش می‌دهند.

  • انواع آزمون (عملکردی و غیرعملکردی) جنبه‌های مختلف نرم‌افزار را ارزیابی می‌کنند.

  • فرآیند STLC یک رویکرد منظم برای اجرای آزمون‌ها فراهم می‌کند.

  • شناخت معیارهای کیفیت به ارزیابی جامع نرم‌افزار کمک می‌کند.

  • استفاده صحیح از ابزارها و تکنیک‌ها، اثربخشی آزمون را افزایش می‌دهد.


تمرین پایان فصل (برای انجام توسط دانشجویان)





















  1. مفهوم “شکاف آزمون” (Testing Gap) را توضیح دهید و بگویید چگونه می‌توان از بروز آن جلوگیری کرد.

  2. تفاوت اصلی بین Verification و Validation در فرآیند آزمون نرم‌افزار چیست؟

  3. یک سناریوی ساده برای نرم‌افزار بانکی (مانند انتقال وجه) در نظر بگیرید و چند مورد تست (Test Case) برای آزمون عملکردی (جعبه سیاه) آن طراحی کنید.

  4. چرا آزمون رگرسیون برای پروژه‌های نرم‌افزاری بلندمدت اهمیت حیاتی دارد؟

  5. مزایا و معایب اصلی استفاده از تست خودکار (Automated Testing) در مقابل تست دستی (Manual Testing) را بیان کنید.
درس متنی 10/19
در حال مشاهده
جلسه 10آزمون نرم افزار