سیلابس دوره های آموزشی ارزیابی و پایش کیفیت نرم افزار
مخاطبین:
دوره های مربوط به مفاهیم و ابزارهای فرایند تست، تست کارکردی و تست کارایی عمدتا برای تسترها (شامل نقشهای مدیر تست، طراح و تحلیلگر تست، متخصص ابزار تست و تستر) می باشد؛ هرچند تولیدکنندگان (developers) هم می توانند از آنها بهره ببرند. دوره های مربوط به مفاهیم و ابزارهای تست امنیت برای تسترهای امنیت درنظر گرفته شده است که به طور خاص برروی تشخیص مشکلات امنیتی سیستم فعالیت می نمایند. دوره های مربوط به مفاهیم و ابزارهای تست واحد ویکپارچه سازی، مرور سورس کد و پروفایلینگ به طور خاص متعلق به تولیدکنندگان و برنامه نویس ها می باشد. این دوره ها وابسته به بستر تولید بوده (یعنی ++Java، .Net، C و PHP) و طبیعتا برای هر بستر به طور جداگانه برگزار می گردد.دوره آموزشی مفاهیم و ابزارهای مانیتورینگ و پایش کارایی نرم افزار برای هر سه تیم تولید، عملیات و زیرساخت قابل استفاده است.
عناوین دوره های آموزش تست نرم افزار :
فرایند تست
مفاهیم و تکنیکهای تست کارکردی
مفاهیم و تکنیکهای تست کارایی (تست های بار، فشار و پایداری)
مفاهیم و تکنیکهای تست امنیت (تست های نفوذ)
مفاهیم و تکنیکهای تست واحد و یکپارچه سازی
مفاهیم و تکنیکهای تحلیل ایستای کد (مرور سورس کد)
مفاهیم و تکنیکهای تحلیل پویای برنامه (پروفایلینگ)
مفاهیم و تکنیکهای پایش کارایی نرمافزار (مانیتورینگ اپلیکیشن)
برنامه نویسی بهینه
برنامه نویسی امن
مدیریت پیکربندی و تغییرات
ابزار مدیریت فرایند تست
ابزار تست کارکردی
ابزار تست کارایی
ابزار تست امنیت
ابزار مانیتورینگ و پایش کارایی نرم افزار (APM)
ابزار تست واحد و یکپارچه سازی برای سیستم های تحت Java
ابزار تست واحد و یکپارچه سازی برای سیستم های تحت Net.
ابزار تست واحد و یکپارچه سازی برای سیستم های تحت C و ++C
ابزار تست واحد و یکپارچه سازی برای سیستم های تحت PHP
ابزار مرور سورس کد برای سیستم های تحت Java
ابزار مرور سورس کد برای سیستم های تحت Net.
ابزار مرور سورس کد برای سیستم های تحت C و ++C
ابزار مرور سورس کد برای سیستم های تحت PHP
ابزار پروفایلینگ برای سیستم های تحت Java
ابزار پروفایلینگ برای سیستم های تحت Net.
ابزار پروفایلینگ برای سیستم های تحت C و ++C
ابزار پروفایلینگ برای سیستم های تحت PHP
ابزار مدیریت پیکربندی و تغییرات
ابزار مانیتورینگ برنامه کاربردی
سیلابس دوره های آموزشی تست نرم افزار و تضمین کیفیت:
- فرایند تست
- مفاهیم پایه ای تست
- شیوه تحلیل ریسک
- شیوه برنامه ریزی تست
- نحوه تحلیل و طراحی تست
- نحوه راه اندازی محیط تست
- مباحث درگیر در اجرای تست
- مفاهیم و تکنیکهای تست کارکردی
- تکنیکهای مبتنی بر گراف یا فلوچارت همچون line and branch coverage
- تکنیکهای مبتنی بر منطق همچون logic and predicate coverage
- تکنیکهای مبتنی بر افراز فضای حالات همچون each choice, pair-wise, k-wise
- نحوه استخراج test-case از روی use-case
- تکنیکهای مبتنی بر state machine
- سایر تکنیکها (exploratory testing, ad-hoc testing, etc)
- مفاهیم و تکنیکهای تست کارایی (تست های بار، فشار و پایداری)
- تحلیل ریسكهای كارایی
- برنامه ریزی تست كارایی
- شناسایی سناریوهای تست كارایی
- راه اندازی محیط مناسب برای تست كارایی
- بررسی داده های مورد نیاز برای تست كارایی
- مشخص كردن معیارهای سنجش كارایی
- شناسایی شاخصهای كارایی سرورها و شبكه
- تحلیل root-cause مسائل كارایی
- انواع تست كارایی شامل تست پایداری، بار و فشار(Stability، Load & Stress)
- بررسی تاثیر انتخاب تكنولوژی تولید روی كارایی سیستم تولید شده
- مفاهیم و تکنیکهای تست امنیت (تست های نفود)
- تحلیل ریسكهای امنیت
- برنامه ریزی تست امنیت
- طراحی و اجرای تست امنیت
- مفاهیم و تکنیکهای تست واحد و یکپارچه سازی
- استرتژیهای طراحی و انتخاب تست واحد
- ویژگیهای تست واحد سیستماتیک
- سازماندهی تست های واحد
- انواع تست واحد(مبتنی بر حالت یا تعامل)
- الگوهای تست واحد
- اصول و مبانی TDD
- نقش Mock Object ها در تست واحد
- ابزارها و چارچوبهای تست واحد
- مفاهیم و تکنیکهای تحلیل ایستای کد (مرور سورس کد)
- تكنیكهای مرور و بازبینی
- تشریح شیوه های تشخیص خطاهابه کمک syntax and data flow checking
- ارتقاء كیفیت طراحی و كد از طریق مرور از ابعاد مختلف ذیل:
- انواع bug های رایج تحت بستر موردنظر و دلایل پایه ای آنها
- چک لیست ارزیابی کیفیت سورس کد
- مفاهیم و تکنیکهای تحلیل پویای برنامه (پروفایلینگ)
- تشخیص bad query های صورت گرفته برروی DB server
- تشخیص و برطرف كردن خطاهای مربوط به نشتی حافظه (memory leakage)
- تشخیص و برطرف كردن مشکلات مربوط به پردازشهای سنگین سیستم (high CPU usage)
- تشخیص و برطرف كردن بن بست احتمالی در سیستم (deadlock)
- تشخیص مشکلات همروندی (Concurrency)
- تشخیص برخی مشکلات طراحی سیستم در زمان اجرا
- تشخیص برخی از مشکلات کدنویسی رایج در زمان اجرا
- ابزار مدیریت فرایند تست
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای مدیریت تست
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای مدیریت تست
- تعریف نیازمندهای سیستم مورد تست در محیط ابزار یا لینک کردن نیازمندهای از قبل تعریف شده به ابزار (در صورت پشتیبانی ابزار انتخاب شده)
- تعریف موارد و روالهای تست سیستم در ابزار
- اتصال موارد تست به نیازمندهای مورد تست جهت برقراری traceability
- پیکربندی ابزار جهت اجرای manual و automated تست ها
- پیکربندی ابزار (یا لینک کردن آن به ابزار issue tracking) برای گزارش خطاهای تست
- مقایسه ابزار انتخاب شده با سایر ابزارهای مدیریت تست
- ابزار تست کارکردی
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای تست کارکردی
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای تست کارکردی
- نحوه record کردن test procedure ها جهت خودکارسازی آنها
- نحوه تولید موارد تست (test case) در ابزار
- نحوه parametric کردن سناریوهای تست و data binding
- نحوه assert کردن نتایج مورد انتظار
- مقایسه ابزار انتخاب شده با سایر ابزارهای تست کارکردی
- ابزار تست کارایی
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای تست کارایی
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای تست کارایی
- نحوه رکورد کردن سناریوهای تست کارایی
- نحوه تعریف data set و link کردن آنها به سناریوهای کارایی موردنظر
- مقدمه ای بر نحوه تولید دیتا و ابزارهای مربوطه
- نحوه ارزیابی خروجی از دید عملکردی
- نحوه مانیتور کردن performance counter ها در حین اجرای تست
- تفسیر نتایج و نمودارهای خروجی تست کارایی
- مقایسه ابزار انتخاب شده با سایر ابزارهای تست کارایی
- ابزار تست امنیت
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای تست امنیت
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای تست امنیت
- نحوه crawling وب سایت موردنظر
- پیکربندی ابزار برای اجرای تست های امنیت موردنظر
- نحوه تشخیص false-positive ها در گزارشات خروجی ابزار
- تشخیص Injection های رایج (همچون SQL/XSS Injection) به کمک ابزار
- نحوه fuzzy testing و بررسی استحکام سیستم در مقابل انواع داده های ورودی
- نحوه HTTP editing/encoding/decoding برای بررسی مشروح request/response های ترافیک شبکه
- مقایسه ابزار انتخاب شده با سایر ابزارهای تست امنیت
- ابزار تست واحد و یکپارچه سازی تحت بستر مورد نظر
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای تست واحد و یکپارچه سازی
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای تست واحد
- نحوه تولید test script تحت چارچوب موردنظر (مثلا JUnit برای جاوا)
- نحوه تولید test case طبق تکنیکهای رایج به کمک ابزار در سطح برنامه
- نحوه پیکربندی ابزار برای تولید تست ها
- نحوه پارامتریک کردن script های تست و bind کردن دیتای موردنظر به آنها
- نحوه اندازه گیری test coverage در ابزار تست واحد
- نحوه تولید mock object ها به کمک ابزار
- مقایسه ابزار انتخاب شده با سایر ابزارهای تست واحد
- ابزار مرور سورس کد تحت بستر مورد نظر
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای مرور سورس کد
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای مرور کد
- نحوه پیکربندی ابزار برای انجام بازبینی های مختلف
- نحوه انجام data flow testing به کمک ابزار (در صورت پشتیبانی ابزار انتخابی)
- نحوه تعریف قوانین جدید تشخص مشکلات (در صورت پشتیبانی ابزار انتخابی)
- تشخیص false-positive ها در گزارشات خروجی
- نحوه fix کردن برخی از خطاهای استخراج شده
- نحوه گزارش گیری های مختلف ابزار
- مقایسه ابزار انتخاب شده با سایر ابزارهای مرور کد
- ابزار پروفایلینگ تحت بستر مورد نظر
- نحوه نصب و راه اندازی ابزار
- مقدمه ای بر ابزارهای پروفایلینگ
- ارائه قابلیتهای عمومی ابزار انتخاب شده برای پروفایلینگ
- تشریح مدهای مختلف پروفایلینگ (sampling و tracing)
- شیوه CPU capturing
- شیوه Memory capturing
- تشخیص مشکلات deadlock به کمک ابزار
- تشخیص مشکلات concurrency به کمک ابزار
- تشخیص مشکلات کدنویسی در لایه data access به کمک ابزار
- مقایسه ابزار انتخاب شده با سایر ابزارهای پروفایلینگ
- مدیریت پیکربندی و تغییرات
- برنامه ریزی مدیریت پیکربندی و تغییرات
- تشکیل کمیته کنترل تغییرات
- شناسایی اقلام پیکربندی
- طبقه بندی و نام گذاری فراورده ها
- نحوه نسخه گذاری فراورده ها و ایجاد baseline
- کنترل تغییرات فراورده های سیستم
- تدوین جریان کاری تغییرات (change workflow)
- ممیزی فراورده ها
- ابزارهای مدیریت پیکربندی و تغییرات
- معرفی ابزارهای مناسب در زمینه مدیریت پیکربندی و تغییرات
- مقایسه ابزارها از دیدهای مختلف
- ابزار Jira به عنوان یک ابزار رایج در زمینه کنترل تغییرات
- ابزار SharePoint به عنوان یک ابزار رایج در زمینه مدیریت اسناد و محتوا
- ابزارهای Git، SVN و TFS به عنوان ابزارهای رایج در زمینه کنترل سورس کد
- مفاهیم و ابزارهای مانیتورینگ برنامه کاربردی (APM)
- مقدمه ای بر ابزارهای مانیتورینگ لایه اپلیکیشن
- نحوه نصب و راه اندازی ماژول های مختلف ابزار
- مقایسه ابزارهای مانیتورینگ
- ارائه شاخص های کارایی در لایه های مختلف نرم افزار
- معرفی شاخص های کارایی مهم وب سرور، دیتابیس سرور و سیستم عامل
- تشریح قابلیت های عمومی ابزارهای مانیتورینگ
- نحوه مانیتور کردن کاربران و نحوه استفاده آنها از سیستم
- تشخیص نحوه استفاده از سیستم (مرورگر، موبایل و غیره)
- تشخیص میزان استفاده از منابع سیستم در لایه های مختلف
- بررسی متریک های مختلف سنجش کارایی سیستم
- نحوه مانیتور کردن تراکنش های کاری
- نحوه راه اندازی سیستم های هشدار دهنده
- نحوه شناسایی خطاهای سیستم
- ریشه یابی نقاط کند سیستم
تكنیكهای جمع آوری اطلاعات یك برنامه كاربردی( عمدتا وب سایتها)
تست مدیریت پیكربندی (Configuration Management)
تست منطق كاری (Business Logic)
تست مدیریت نشست (Session Management)
تست احراز هویت (Authentication)
تست كنترل دسترسی (Authorization)
تست های مربوط به اعتبارسنجی داده های وروردی (Injections، Buffer overflow)
تست DOS
صحت کارکرد
كارایی
امنیت
قابلیت نگهداشت شامل قابلیت تغییر، قابلیت استفاده مجدد، خوانایی و قابلیت حمل
لازم به ذکر است که در مورد دوره های مربوط به تضمین کیفیت تولید (یعنی تست واحد، مرور سورس کد و پروفایلینگ)، طبیعتا ابزار موردنظر بستگی به بستر و زبان مورد استفاده دارد. آموزش ابزارهای تضمین کیفیت تولید، برای اکثر بسترها و زبانهای رایج همچون ++Java، C#، C و PHP ارائه می گردد.