
آموزش تست خودکار نرم افزار Automated Testing
آموزش تست خودکار نرم افزار Automated Testing یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی Automated Testing از ابتدا تا پایان است که با نام اصلی Automated Testing End to End از شرکت Pluralsight منتشر شده است.
اهمیت تست نرم افزار
تست نرم افزار یکی از جوانب حیاتی در فرآیند توسعه نرم افزار است و اهمیت بسیاری دارد. تست نرم افزار به توسعهدهندگان کمک میکند تا صحت و عملکرد صحیح نرم افزار را تضمین کنند و مشکلات و ایرادات را در مراحل ابتدایی شناسایی و برطرف کنند. با انجام تستهای منظم و جامع، میتوان مطمئن شد که نرم افزار در شرایط و مواقع مختلف به درستی عمل میکند و از نظر عملکرد، امنیت و پایداری بالایی دارد.

همچنین، تست نرم افزار کمک میکند تا باگها و خطاهای موجود در نرم افزار شناسایی شده و بهبودهای لازم انجام شود. با انجام تستهای خوب، اعتماد به نرم افزار بالا میرود و کاربران از عملکرد و کیفیت آن راضی خواهند بود. بنابراین، تست نرم افزار اهمیت بسیاری در تضمین کیفیت و موفقیت یک پروژه نرم افزاری دارد.
Automated Testing چیست؟
تست خودکار و یا اصطلاحاً Automated Testing روان تست کردن صحت عملکرد یک نرم افزار به صورت خودکار است. این روش از تست کردن در مقابل تست دستی و یا اصطلاحاً Manual Testing قرار دارد که در آن یک شخص و یا یک کاربر مسئول تست کردن عملکرد نرم افزار میباشد.

روشهای تست خودکار به مراتب سریعتر و بهتر عمل میکنند و از لحاظ هزینه نیز مقرون به صرفه تر هستند. علاوه بر این ابزارهای بسیار زیادی برای تست کردن نرم افزار به روش خودکار وجود دارند.
تفاوت Unit Testing و Integration Testing در توسعه نرمافزار
Unit Testing یا تست واحد برای بررسی رفتار یک بخش کوچک و مشخص از برنامه استفاده میشود. هدف این نوع تست آن است که یک تابع، کلاس یا جزء مستقل در شرایط تعریفشده، نتیجه مورد انتظار را تولید کند. محدود نگه داشتن محدوده آزمایش باعث میشود شناسایی علت خطا سادهتر باشد و توسعهدهنده بتواند رفتار کد را بدون وابستگی غیرضروری به سایر اجزای سیستم بررسی کند. تست واحد معمولاً یکی از پایههای اصلی راهبرد تست نرمافزار است و به تشخیص سریع مشکلات در طول توسعه کمک میکند.
Integration Testing یا تست یکپارچگی بر تعامل میان اجزای مختلف تمرکز دارد. ممکن است هر جزء بهتنهایی درست کار کند، اما هنگام ارتباط با سایر بخشها دچار مشکل شود؛ برای مثال، ناسازگاری در تبادل داده یا نحوه فراخوانی یک سرویس میتواند باعث بروز خطا شود. تست یکپارچگی برای بررسی چنین شرایطی طراحی میشود و مکمل تست واحد است. درک تفاوت این دو روش به تیمهای توسعه کمک میکند برای هر بخش از نرمافزار، نوع آزمایش مناسبی انتخاب کنند و پوشش تست را به شکل هدفمندتری گسترش دهند.
تست رابط کاربری و Functional UI Testing
تست رابط کاربری یا UI Testing رفتار نرمافزار را از طریق بخشهایی بررسی میکند که کاربر با آنها تعامل دارد. در این روش، مواردی مانند نمایش صحیح اطلاعات، واکنش برنامه به ورودیها و عملکرد کنترلهای رابط کاربری ارزیابی میشوند. Functional UI Testing نیز بر بررسی عملکردهای قابل مشاهده برنامه تمرکز دارد تا مشخص شود هر قابلیت مطابق انتظار عمل میکند یا خیر. این تستها میتوانند مشکلاتی را آشکار کنند که با بررسی مستقیم توابع یا کلاسهای داخلی بهسادگی شناسایی نمیشوند.
در برنامههایی که رابط کاربری بخش مهمی از تجربه استفاده را تشکیل میدهد، بررسی عملکرد صفحات و مسیرهای تعامل کاربر اهمیت زیادی دارد. برای مثال، ممکن است یک فرم بهدرستی نمایش داده شود، اما ارسال اطلاعات آن نتیجه مورد انتظار را ایجاد نکند. تستهای عملکردی رابط کاربری برای ارزیابی چنین سناریوهایی مفید هستند. در این دوره، Functional UI Test ها در کنار تست واحد و تست یکپارچگی بررسی میشوند تا با جایگاه تست رابط کاربری در یک راهبرد جامع تست نرمافزار آشنا شوید و تفاوت آن را با روشهای دیگر بهتر درک کنید.
اجرای تستهای نرمافزار در Continuous Integration
Continuous Integration یا CI رویکردی در توسعه نرمافزار است که در آن تغییرات کد بهطور منظم با یکدیگر ادغام میشوند و فرایندهای خودکار برای بررسی آنها اجرا میشوند. یکی از کاربردهای مهم CI، اجرای تستها پس از اعمال تغییرات است تا مشکلات احتمالی در مراحل اولیه شناسایی شوند. با خودکارسازی این فرایند، تیم توسعه میتواند بازخورد سریعتری درباره وضعیت کد دریافت کند و از وابستگی بیش از حد به اجرای دستی تستها جلوگیری کند. این رویکرد در پروژههایی که بهصورت تیمی توسعه داده میشوند، کاربرد زیادی دارد.
قرار دادن تستها روی یک Continuous Integration Server باعث میشود اجرای آزمایشها بخشی از جریان کاری توسعه باشد. در چنین ساختاری، تستهای واحد، یکپارچگی و رابط کاربری میتوانند در مراحل مناسب فرایند توسعه اجرا شوند. البته نحوه تنظیم این فرایند به ابزارها و ساختار پروژه بستگی دارد. در این آموزش، اجرای تستها در یک سرور CI بهعنوان بخشی از مسیر تست خودکار بررسی میشود. آشنایی با این موضوع به شما کمک میکند نقش خودکارسازی تستها را در کنترل کیفیت کد و بررسی تغییرات نرمافزار بهتر بشناسید.
آموزش تست خودکار نرمافزار برای چه کسانی مناسب است؟
این دوره برای توسعهدهندگانی مناسب است که میخواهند روشهای مختلف تست نرمافزار را در کنار یکدیگر یاد بگیرند و با ارتباط میان آنها آشنا شوند. اگر در حال توسعه برنامههای نرمافزاری هستید و میخواهید بهجای تکیه بر بررسی دستی، رفتار کد را به شکل تکرارپذیر ارزیابی کنید، آشنایی با تست واحد، تست یکپارچگی و تست رابط کاربری میتواند برایتان مفید باشد. سطح متوسط دوره نیز برای افرادی مناسب است که با اصول توسعه نرمافزار آشنا هستند و میخواهند دانش خود را درباره تستکردن گسترش دهند.
در طول این آموزش، با رویکردهای متفاوت تست و نحوه قرار دادن آنها در یک فرایند خودکار آشنا میشوید. این مباحث به شما کمک میکنند بدانید هر نوع تست چه مسئلهای را بررسی میکند و چرا استفاده از تنها یک روش برای ارزیابی تمام جنبههای نرمافزار کافی نیست. همچنین با اجرای تستها در محیط Continuous Integration آشنا میشوید و درک میکنید چگونه میتوان آزمایشهای خودکار را در جریان توسعه قرار داد. این دانش برای توسعهدهندگان و اعضای تیمهای نرمافزاری که به دنبال بهبود فرایند بررسی کد هستند، کاربردی است.
سرفصل مطالب آموزش ویدئویی Automated Testing از ابتدا تا پایان
فصل اول: مقدمه ای بر تست نرم افزار
- چرا باید از Automated Testing استفاده کنیم؟
- مقایسه Automated Testing و Manual Testing
- انواع مختلف Automated Test ها
- ساختار این دوره آموزشی
فصل دوم: انجام تست واحد و یا Unit Testing و تست کردن در Isolation
- مقدمه
- معرفی کردن Unit Testing
- بهترین روش ها در استفاده از Unit Testing
- یک Unit Test خوب چه ویژگی هایی دارد؟
- سه فاز ادراکی در تست ها
- مثال هایی از Unit Test های بد
- معرفی کردن Testing Framework ها
- مباحث اساسی در NUnit
- آموزش عملی: نوشتن و اجرا کردن اولین Unit Test در NUnit
- مباحث پیشرفته در NUnit
- استفاده از روش TDD در Unit Testing
- انجام Unit Test ها با روش State-based و Interaction-based
- تست کردن در Isolation با استفاده از Fake ها
- آموزش عملی: تست کردن با روش State-based با Moq
- آموزش عملی: تست کردن با روش Interaction-based با Moq
- آموزش عملی: تست کردن با روش State-based به همراه پیکربندی کردن رفتارهای Moq
- جمع بندی
فصل سوم: انجام تست یکپارچه و یا Integration Testing
- مقدمه
- معرفی کردن Integration Testing
- روش های مناسب در نوشتن Integration Test ها
- سطوح مختلف Integration Testing
- اهمیت Dependency Inversion
- تست کردن کلاس های Internal
- تست کردن عملکرد کلاس های Internal در کنار یکدیگر
- آموزش عملی: تست کردن عملکرد کلاس های Internal در کار کردن با یکدیگر
- تست کردن تعاملات کامپوننت های External
- ایزوله کردن کامپوننت های External با استفاده از الگوی طراحی Gateway
- آموزش عملی: تست کردن تعامل کامپوننت های External
- تست کردن Logical Subsystem های درونی
- آموزش عملی: تست کردن Logical Subsystem های درونی
- تست کردن Application Service Layer درونی
- آموزش عملی: تست کردن Application Service Layer درونی
- آموزش عملی: ریفکتور کردن Subsystem Test
- ترکیبی مناسب از Integration Test ها
- جمع بندی
فصل چهارم: Functional UI Test ها
- مقدمه
- مقدمه ای بر Functional UI Testing
- انتخاب کردن یک ابزار UI Automation
- معرفی کردن WatiN برای انجام تست بر روی Web Application ها
- مباحث اساسی مربوط به WatiN
- آموزش عملی: نوشتن اولین Functional UI Test با WaitN
- استفاده از سبک Physical Object Model و یا POM
- استفاده از سبک Logical Functional Model و یا LFM
- آموزش عملی: ایجاد کردن تست ها با سبک POM
- آموزش عملی: ریفکتور کردن به سبک LFM
- نکات پیشرفته
- جمع بندی
فصل پنجم: قرار دادن تمامی تست ها در یک Continuous Integration Server
- مقدمه
- مقدمه ای بر Continuous Integration
- یک Build Pipeline چیست؟
- مقدمه ای بر Build Pipeline مربوط به این آموزش
- معرفی کردن TeamCity به عنوان Build Server
- بررسی اولین فاز در Build Pipeline
- آموزش عملی: فاز اول در Pipeline و Build کردن وب سایت
- آموزش عملی: فاز اول در Pipeline و اجرا کردن یک Unit Test ها
- آموزش عملی: فاز اول در Pipeline و اجرا کردن Integration Smoke Test ها
- آموزش عملی: فاز اول در Pipeline و Deploy کردن وب سایت به Test Server
- آموزش عملی: فاز اول در Pipeline و اجرا کردن UI Smoke Test ها
- انجام فاز دوم در Build Pipeline
- آموزش عملی: فاز دوم در Pipeline و اجرا کردن Integration Test های کامل
- انجام فاز سوم در Build Pipeline
- آموزش عملی: فاز سوم از Pipeline و اجرا کردن UI Test های کامل
- مباحث پیشرفته
- جمع بندی







