امروزه استفاده از ابزارهای تست نرمافزار به بخشی لاینفک از فرآیند Software Testing تبدیل شده است. هر چند که در بسیاری از موارد تست اتوماتیک نمیتواند جایگزین مناسبی برای تست دستی باشد، لکن تست اتوماتیک هم موضوعیست که در بسیاری از موارد جز الزامات قطعییست.
تست نرمافزار دارای جنبههای مختلفیست از جمله Test Level، Test Type و … که هر یک از جنبه ها الزامات خاص خود را دارند. به عنوان نمونه تست کردن Backend سیستم با تست Frontend همان سیستم متفاوت است. تست Functional با Non-Functional متفاوت است. System Testing با Unit Testing تفاوت دارد و قس علی هذا. معمولا برای هر یک موارد مذبور ابزارهایی وجود دارد که صد البته نمیتوان آنها را بهترین یا بدترین ابزار نامید، چرا که هر کی از آنها ماموریت دارد، و ایضا هر کدام دارای نکات مثبت و منفی فراوانیست که به هر حال بخشی از نیاز تیمهای تست را برآورده میکنند.
یکی از این ابزارها Cypress نام دارد، که اخیرا به عنوان یک ابزار Open Source، در تمام دنیا به شهرت مناسبی رسیده است.
معرفی Cypress
Cypress یک ابزار نسل جدید است که برای Front End Testing ویژه سیستمهای مدرن وب تولید شده است. این ابزار که قابلیت اسکریپت نویسی را برای Test Developerها، فراهم کرده است، در چهار حوزه اسکریپتنویسی به این افراد کمک میکند:
- ستاپ کردن و تنظیم کردن شرایط اجرای تست
- نوشتن تستها
- اجرا کردن تستها
- دیباگ کردن تستها
اما Cypress اغلب اوقات با سلنیوم مقایسه می شود. با این حال Cypress به صورت پایهای و از لحاظ معماری با سلنیوم متفاوت است. باید بگوییم این ابزار محدودیتهای Selenium را شامل نمیشود. همین موضوع باعث میشود شما بتوانید سریعتر، راحت تر و قابل اعتمادتر تست بنویسید. هر چند که نمیتوان مزایای فوق العاده سلنیوم را نیز نادیده گرفت.
با چه هدفی از Cypress استفاده میکنند؟
Cypress میتواند هر آنچه را که در یک مرورگر اجرا میشود، و به نوعی Front End سیستم محسوب میشود را تحت تست قرار دهد.
Cypress یکی از بهترین گزینههای پیش روی ما در شرایطیست که:
- میخواهید تستها را روی مرورگرهای Firefox یا مبتنی بر Chrome(مانند Google Chrome، Chromium-based Microsoft Edge، و Electron) اجرا کنید.
- و دارای یک دانش ابتدایی روی Java Script هستید.
- و بخواهید درگیر تستهایی در سطوح Integration یا Unit شوید و یا قصد اجرای تستهای End-to-End را داشته باشید، آنچنانکه رفتار و خروجی عملیات تست در حیطه مرورگر انجام شود
امکانات Cypress
در اینجا لیستی از کارهایی که Cypress قادر به انجام آن است و بخشی از امتیازات آن محسوب میشود ارائه شده است:
- سفری در زمان: Cypress با اجرای آزمایشات عکس های فوری می گیرد. میتوانید در بخش Command Log روی Commandها هاور کنید تا ببینید در هر مرحله دقیقا چه اتفاقی رخ داده است.
- دیباگ کردن: حدس زدن در مورد ا ینکه چرا تستهای شما Fail میشود را متوقف کنید. مستقیماً از ابزارهای توسعه دهندگان برای دیباگ کردن بهره بگیرید. خطاهای قابل خواندن و Trace روی Stack، یافتن خطا را به تسریع میکند.
- انتظار خودکار: هرگز Waiting یا Sleep را به تستهای خود اضافه نکنید. Cypress قبل از انتقال به خطوط بعدی کد به طور خودکار منتظر Commandها و Assertها میماند. دیگر جهنمی به نام همگام سازی بارگذاری صفحه و اجرای Test Script وجود ندارد.
- Spyها ، Stubها و Clockها: رفتار Functionها، تایمرها یا پاسخهای سرور را تأیید و کنترل کنید. همان کارکردی که از Unit Testing دوست دارید، اینجا هم زیر دستان شماست.
- کنترل ترافیک شبکه: بدون درگیر کردن سرور، موارد مرزی را به راحتی کنترل کرده، Stub نموده و تست کنید. هر طور که دوست دارید می توانید ترافیک شبکه را Stub کنید.
- نتایج پایدار: معماری Cypress از سلنیوم یا WebDriver استفاده نمی کند. بنابراین به تستهای سریع(به لحاظ تولید)، پایدار و قابل اعتماد که Flake-Free(Flaky Test به تستهایی اطلاق میشود که پس از اجرا نمیتوانند همان نتایج قبلی را تولید کنند) هستند سلام کنید.
- اسکرین شاتها و فیلمها: امکان عکسبرداری خودکار در زمان بروز Failureها، یا ضبط ویدئو از کل Test Suite شما زمانیکه از CLI اجرا میشود.
- Cross Browser Testing: اجرای تست روی مرورگرهای خانواده Firefox و Chrome(از جمله Edge و Electron) به صورت Local و بهینه در Continuous Integration Pipeline.
انواع برگزاری: حضوری/مجازی آنلاین
برگزاریهای مختلف این دوره: تا کنون برگزار نشده است
وضعیت ثبت نام: در آینده نزدیک برگزار خواهد شد
- رئوس مطالب
- مدت
- پیشنیاز
- مخاطبین رویداد
- انتظارات پس از رویداد
- ملاحظات مهم
- مدرس/سخنران
این دوره آموزشی مشتمل بر دو قسمت است:
آموزش پیشنیازها(Java Script و NPM) | حدود ۳۳ ساعت
آموزش پیشنیازها(Java Script و NPM) | حدود ۳۳ ساعت
نکته: عزیزانی که در این پیشنیازها توانمندی دارند، لزومی به گذارندن این بخش از دوره ندارند و میتوانند صرفا بلیت بخش Cypress را تهیه نمایند.
آموزش تمام پیشنیازها تا حدی انجام میشود که برای کار کردن با Cypress به آن نیاز دارید. سرفصلها عبارتند از:
- Java Script
- Java Script چیست؟
- ستاپ کردن IDE
- مفاهیم اصلی
- مبانی JS
- انواع داده ای
- آرایهها، اشیاء، و Functionها
- JSON
- شروط، حلقهها، و سوییچها
- مفاهیم پیشرفته
- متدهای REST API
- Fetch API و AJAX
- Asynchronous JS
- Iteratorها
- Eventها و دست کاری DOM
- Functional programming
- NPM
- ستاپ کردن Node Package Manager
- دستورات بنیادین
Cypress | حدود ۳۹ ساعت
Cypress | حدود ۳۹ ساعت
- چرا Cypress
- معماری Cypress
- Commandهای Cypress
- نوشتن و اجرای یک تست ساده
- Cypress Test Runner
- پیکربندی Cypress و ساختارهای پوشه
- دیباگ، Pause، و Time Travel
- Locatorها
- چگونگی بهره گیری از Chrome Dev Tools
- DOM Elementها
- انواع Locatorها
- CSS Selectorها
- XPath
- باقی موارد
- Cypress Locator توکار
- Assertionها
- مقدمهای بر Chai
- Assertionهای پایه
- مقدمهای بر Mocha
- Testing Frameworkها
- چگونگی ستاپ کردن تستها
- چگونگی Validate کردن تستها
- مفاهیم پیشرفته
- ستاپ کردن یک Framework
- Customized Cypress Commands(مفهوم DRY)
- مدیریت کردن مقادیر محیطی در Cypress
- Fixtures And Handling Test Data
- پلاگینها و تنظیمات پیشرفته در Cypress
- Stub کردن و Mock کردن درخواستهای شبکه
- مدیریت کردن لاگین شخص ثالث در Cypress
این دوره به صورت یک کارگاه ۷۲ ساعته تعریف شده است، که مشتمل بر دو بخش پیشنیاز و Cypress است. بخش پیشنیاز کارگاه Cypress به مدت ۳۳ ساعت، و بخش آموزشی Cypress به مدت ۳۹ ساعت جمعا یک کارگاه ۷۲ ساعته را تشکیل میدهد.
در صورت گذراندن تمام دوره کارگاهی ۷۲ ساعته(مشتمل بر پیشنیازها و Cypress)، نیازی به هیچگونه پیشنیازی نخواهید داشت. اما اگر صرفا بنا دارید در ۳۹ ساعت دوره آموزشی Cypress حضور داشته باشید، باید تمام سرفصلهای آموزشی پیشنیاز را به صورت شخصی بیاموزید.
تمامی نقشهای زیر که به دنبال ایجاد مجموعهای از تستهای اتوماتیک برای اپلیکیشنهای وب هستند:
- متخصص QA
- متخصص تست
- توسعه دهنده نرمافزار(وب اپلیکیشن)
- کسب دانش کامل در مورد Cypress
- توانایی نوشتن تستهای اتوماتیک با استفاده از Cypress
- کسب دانش پایه کدنویسی به زبان JS که میتوانید آنرا برای تبدیل شدن به کدنویس حرفهای JS تعمیم داده و گسترش دهید.
آنچه باید داشته باشید
- اکانت اسکایپ. این دوره در بستر اسکایپ برگزار میشود.
- داشتن یک دستگاه لپتاپ، با حداقل مشخصات سخت افزاری که توانایی بارگذاری سریع Windows 10، مرورگر Chrome، Firefox، Edge، و IE.
- شرکت کنندگان الزاما باید دارای یک سیستم Windows 10 باشند، و باقی OSها در زمان آموزش توسط مدرس پشتیبانی نخواهند شد.
امکانات دوره
- اجازه صدابرداری و Capture کردن صفحه مانیتور دانشپژوه توسط خود وی وجود دارد. اما دانش پژوه به لحاظ اخلاقی و حرفهای مجاز به انتشار فیلم ضبط شده نخواهدد بود.
- در صورتی که دانشپژوه در حین برگزاری دوره دچار یک مشکل عملیاتی در راستای آموزش شود، مدرس دوره با استفاده از نرمافزار AnyDesk به سیستم دانشپژوه متصل شده و در صورت امکان، مشکل را رفع مینماید.
استرداد وجه
- پس از تهیه بلیت و پرداخت وجه، امکان مرجوعی بلیت وجود ندارد. لطفا در خرید خود دقت فرمایید.
- در صورتیکه کارگاه به هر دلیلی لغو شود، که مقصر آن ثبت نام کنندگان نباشند، وجه ثبت نام به طور کامل و بدون کم و کاست، حداکثر ظرف ۴۸ ساعت به شماره کارت ثبت نام کننده مسترد شده و واریز میگردد.
محدودیتهای برگزاری دوره
- کارگاه راس ساعت آغاز میگردد، حتی اگر فقط یک نفر از ثبت نام شدگان در کلاس حضور داشته باشد. لذا خواهشمند است راس ساعت و یا کمی قبلتر از آن در جلسه کارگاهی حضور یابید.
مطول شدن برگزاری دوره
- بسته به شرایط برگزاری از جمله پرسش و پاسخ زیاد، یا عدم برگزاری برخی از کلاسها به دلیل رویدادهای فورس ماژور، احتمالا اینکه دوره از ۷۲ ساعت فراتر رود، و یا روزهایی به عنوان جایگزین به علت رویدادهای فورس ماژور در نظر گرفته شود وجود. به هر حال در هیچ یک از موارد هزینه اضافهای شامل حال دانشپژوهان نخواهد شد.
ابوالفضل خواجه دیزجی، مشاور، مدرس، مترجم و مولف کتب دورههای تست نرمافزار