امروزه خیلی از افراد زمان و منابع زیادی رو در تحلیل و تست نرمافزارها صرف میکنن. از نظر مهندسهای نرمافزار، با افزایش پیچیدگی برنامهها، نوشتن کدهای تست، مثل توسعهی خود برنامه زمانبره. بنابراین خودکارسازی تست، راهحلیه که کارهای سنگین تست رو برای شما سادهتر میکنه. در واقع تست خودکار ، تکنیکی هست برای آزمایش و مقایسهی نتیجهی واقعی با نتیجهی مورد انتظار، که با استفاده از ابزارهای تست خودکار، میتونین به این هدف برسین و خطاها و مشکلات برنامهتون رو کشف کنین.
درمقاله گذشته به معرفی ابزارهای استقرار برنامهها پرداختیم. دراین پست تصمیم داریم ابزارهای تست خودکار برنامه رو براتون توضیح بدیم. برای خودکارسازی تست نرمافزار، ابزارهای مختلفی وجود داره که در این پست به توضیح چند ابزار مهم تست خودکار نرمافزار میپردازیم و مزیتهای هر کدوم رو براتون توضیح میدیم.
اما قبل از بررسی و ارزیابی ابزارها، ببینیم هرم تست چیه و از چه لایههایی تشکیل شده:
معرفی هرم تست یا سطوح تست برنامه
هرم تست از چهار سطح مختلف تشکیل شده:
- سطح اول: تست Unit
یکی از مراحل اولیهی تست یک برنامه، تست unit است و معمولا این گونه تستها توسط توسعهدهندههای نرمافزار و به موازات توسعهی برنامه انجام میشه.
در طی تست unit، هر واحد از برنامه (کوچکترین قطعهی کد) به طور جداگانه و دقیق تست میشه. همونطور که در شکل بالا میبینین شما باید بیشترین میزان تست unit رو در مقایسه با انواع دیگر تستها داشته باشین.
- سطح دوم: تست Component
لایه بعدی هرم برای سرویسهای سمت backend، سطح تست component است. در این سطح ما میخوایم بررسی کنیم آیا endpointهای ما درست عمل میکنن یا نه؟!
در واقع هدف اصلی تست component، اینه که رفتار ورودی/خروجی شی مورد نظر رو بررسی کنه.
با انجام این تست اطمینان حاصل میشه که شی مورد بررسی با توجه به مشخصههایی که داره، عملکرد درستی رو از خودش نشون میده.
- سطح سوم: تست Integration
تست integration، مرحلهای از تست برنامه است که در اون ماژولهای برنامه با هم ترکیب شده و به صورت گروهی تست میشن.
برای آشنایی بیشتر با تست integration، پیشنهاد میکنم این پست سکو رو مطالعه کنین.
- سطح چهارم: تست End-to-End
تست end-to-end تکنیکی است که کل محصول نرمافزاری رو از ابتدا تا انتها آزمایش میکنه تا اطمینان حاصل بشه که برنامه تمام نیازهای فعلی کاربران نهایی رو برآورده میکنه.
به عبارتی، این نوع تست مشخص میکنه که آیا تطابقی بین انتظارهای کاربران از برنامهی کاربردی با اون چیزی که واقعاً در اختیارشون قرار میده، وجود داره یا نه.
از اونجایی که تستهای unit و component، فقط توسط توسعهدهندهی برنامه انجام میشه، ابزارهای تست مربوط به این دو سطح رو توی این پست بررسی نمیکنیم.
معرفی ابزارهای تست خودکار در سطوح یکپارچهسازی و End-to-End
ابزار تست یکپارچهسازی سال ۲۰۲۰: Cucumber
Cucumber، ابزاری مبتنی بر چارچوب توسعهی رفتار محور (BDD) است که برای نوشتن تستهای پذیرش برنامههای تحت وب استفاده میشه.
این امکان رو فراهم میکنه که نحوهی عملکرد برنامه به راحتی برای تحلیلگران کسبوکار، توسعهدهندهها، تستکنندهها و سایر افراد قابل درک باشه.
این ابزار، ویژگیها و مستندات مربوط به تست این ویژگیها رو توی یک سند منسجم و پویا ادغام میکنه. ویژگیهای (مشخصههای) برنامه توسط Cucumber به طور خودکار مورد تست قرار میگیرن و این اسناد هم به طور خودکار به روز میشن.
این مستندات میتونه سند خوبی برای همهی افراد باشه. ابزارهای مختلف دیگهای مثل JBehave هم وجود داره که از چارچوب BDD، پشتیبانی میکنن. Cucumber اول در Ruby پیادهسازی شد و بعدا در زبان جاوا هم مورد استفاده قرار گرفت.
Cucumber از بسیاری از زبانهای دیگه مثل Perl ،PHP ،Python ،Net و ...، پشتیبانی میکنه.
از Cucumber میشه به همراه Selenium ،Watir ،Capybara و ...، استفاده کرد.
اگه میخواین رفتار کاربر رو روی یک برنامهی وب شبیهسازی کنین، میتونین برای یادگیری و پیادهسازی Cucumber در پروژهی موجود، از Selenium WebDriver با Java، و Cucumber BDD استفاده کنین.
مزیتهای اصلی
- توسعهی رفتار محور
Cucumber به عنوان فریمورک محبوب تست توسعهی رفتار محور یا BDD شناخته شده.
در واقع توسعهی رفتار محور یا BDD، از مدل توسعهی توسعهمحور پدید اومده، به طوری که در توسعهی رفتار محور به جای تست یک قطعه کد خاص، رفتار کلی سیستم و کاربران مورد توجه قرار میگیره تا جزئیاتی که در توسعهی سنتی تست محور ممکنه نادیده بشه رو به طور کامل روشن کنه.
- مستندات پویا/زنده
جمعاوری اسناد همیشه مشکلزاست. از اونجایی که تستهای شما به صورت کد تعریف میشن، Cucumber، اسنادی رو به طور خودکار ایجاد میکنه و میتونین اطمینان داشته باشین که این اسناد همیشه همگامسازی میشن.
- پشتیبانی
ابزارهای زیادی برای انجام تست برنامه وجود داره، اما وقتی برنامهی شما پیچیدهتر میشه، به پشتیبانی قوی برای رفع مشکلات موجود نیاز پیدا میکنین. Cucumber، تیم و ساختار پشتیبانی قویای داره و میتونه در این زمینه موثر باشه.
ابزار مناسب برای پیروزی در رقابت
در فضای DevOps، فریمورکها و ابزارهای فناوریمحور زیادی وجود داره، اما فقط Cucumber میتونه یک راهحل کاملاً مناسبی برای انجام تستهای خودکار باشه.
. . .
ابزارهای تست End-to-End
هنگام انجام تست end-to-end، دو زمینهی تست اصلی وجود داره که باید روی آنها تمرکز کنین:
- تست عملکردی
تست عملکردی، یعنی اون چیزی که واقعا میخواین به درستی رخ بده. مثلا وقتی روی صفحات اپلیکیشن تک صفحهای کلیک کنین، فرمهایی رو پر کنین و گزینهی ارسال رو بزنین، دادهها در پایگاه داده ذخیره بشن و صفحه، پیغام success رو بهتون نشون بده.
- تست بار
علاوه بر این همه میدونین که در شرایط مختلف تقریبا چند کاربر به طور همزمان از برنامهی شما استفاده میکنن. بنابراین با انجام تست بار، میتونین با این تعداد کاربر، نحوهی عملکرد و کارکرد برنامه رو هم تست کنین تا مطمئن بشین که برنامه بدون خطا کار میکنه.
حالا اگه این دو تا تست رو انجام ندین، در CI/CD pipeline تون، با شکاف بزرگی رو به رو میشین.
۱. ابزار تست End-to-End سال ۲۰۲۰ -تست عملکردی: SoapUI Pro
امروزه استفاده از APIها و وبسرویسهای تحت وب رواج زیادی در طراحی نرمافزارها دارن. در واقع اکثر برنامههای کاربردی امروزی، از یک سرور ارتباط میگیرن و با هم تبادل اطلاعات میکنن.
حالا برای تست این وبسرویسها از ابزارهای مختلفی استفاده میشه که یکی از این ابزارها رو میخوایم در این قسمت بهتون معرفی کنیم.
SoapUI، یکی از ابزارهای رایگان و اوپن سورس برای تست وبسرویسها است و زمان زیادی میشه که ازش برای تست APIها استفاده میشه - چون وبسرویسهای SOAP برای مدت زمان طولانی به عنوان وبسرویس پیشفرض مورد استفاده قرار گرفتن.
SoapUI یک ساختار عالی برای ساخت تستهای عملکردی خودکار برای وبسرویسهای backend شما فراهم میکنه. این وبسرویسها میتونن به راحتی با ابزارهای یکپارچگی مداوم، ادغام بشن و به عنوان بخشی از CI/CD pipeline شما اجرا بشن.
مزیتهای اصلی
- مستندات گسترده
با توجه به اینکه این ابزار مدتهاست که مورد استفاده قرار میگیره، منابع آنلاین زیادی هم در موردش وجود داره و این منابع به شما کمک میکنن تا با نحوهی تنظیم تستهای بار آشنا بشین.
- سهولت استفاده
در حالی که ابزارهای مختلفی برای تست API وجود داره، اما ابزار SoapUI، به خاطر داشتن یک رابط برای سرویسهای متعدد، انجام تست رو سادهتر کرده.
ابزار مناسب برای پیروزی در رقابت
Selenium- این ابزار، یکی از بهترین ابزارهای تست عملکرد وبسایت یا برنامهها محسوب میشه و اگه در حال ساخت و اجرای یک برنامهی مبتنی بر جاوا هستین، این ابزار و بهتون پیشنهاد میکنم.
با این حال اگه یک برنامهی تحت وب غیر جاوایی رو دارین ایجاد میکنین و در ساختش از فناوریهای مختلفی هم استفاده میکنین، ممکنه استفاده از این ابزار کمی براتون مشکل باشه.
۲. ابزار تست End-to-End سال ۲۰۲۰ - تست بار: LoadRunner
وقتی نوبت به تست بار در تمام جنبههای برنامهی شما میرسد، فقط ابزار LoadRunner میتونه این کار رو براتون انجام بده.
بله، هزینهی آن بالا و کار باهاش یکم سخته، اما این تنها ابزاریه که میتونه تستهایی رو انجام بده که به شما به عنوان یک مهندس فنی، اطمینان میده که کدهای برنامه با افزایش مداوم و مداوم بار به درستی اجرا میشه.
مزیتهای اصلی
- مستندات گسترده
با توجه به اینکه این ابزار هم مدتهاست که مورد استفاده قرار میگیره، منابع آنلاین زیادی در موردش وجود داره و این منابع به شما کمک میکنن تا با نحوهی تنظیم تستهای بار آشنا بشین.
- پشتیبانی از پروتکلها
ابزار LoadRunner، از ODPC تا AJAX، تا HTTP و هر نوع پروتکل ناشناس دیگری که ممکنه شما در برنامه ازش استفاده کنین، پشتیبانی میکنه.
جمعبندی
برای خودکار سازی تست نرمافزارها میشه انواع مختلفی از تست رو انجام داد و از ابزارهای مختلفی برای اینکار استفاده کرد.
استفاده از ابزارهای خودکارسازی تست نرمافزار، باعث میشه که توسعهدهندهها زمان بیشتری برای تمرکز روی جنبههای دیگه داشته باشن و بتونن خطاهای برنامه رو به صورت موثرتری رفع کنن.
اگه کنجکاو شدین که نحوه ساخت یک نمونه از ابزار تست خودکار یکپارچه رو بدونید، پیشنهاد میکنیم نگاهی به این پست سکو داشته باشید.