آشنایی با Automated Testing

چرا تست خودکار؟

با رشد پروژه، تست دستیِ همه‌چیز بعد از هر تغییر، ناممکن می‌شود. بدتر از آن بسیاری از خرابی‌ها فقط هنگام ترکیب تغییرات ظاهر می‌شوند (Regression) و تست دستی قبلی آن‌ها را دوباره نمی‌بیند. تست خودکار یعنی کدی که رفتار کد دیگر را بررسی می‌کند — سریع، تکرارپذیر و بدون خستگی.

بیش از سرعت، ارزش اصلی تست خودکار اطمینان برای تغییر سریع است: وقتی تست‌ها سبزند، تغییر بزرگ را با خیال راحت‌تر merge می‌کنید. این دقیقاً همان چیزی است که سرعت DevOps را ممکن می‌کند.

سطوح تست

  • Unit Test — کوچک‌ترین بخش‌ها به‌تنهایی (یک تابع، یک کلاس)؛ سریع و فراوان
  • Integration Test — همکاری چند بخش با هم (تابع + دیتابیس + سرویس دیگر)
  • End-to-End (E2E) — کل مسیر کاربر از بیرون؛ کندترین اما واقعی‌ترین

تناسب این سطوح با هم را معمولاً با Testing Pyramid نشان می‌دهند: پایه‌ی عریض از تست‌های Unit و نوک باریک از E2E.

نمودار Testing Pyramid نمودار Testing Pyramid

منبع تصویر: Reddit

جایگاه در چرخه

تست‌ها در هر تغییر کد اجرا می‌شوند — از اجرای محلی و پیش از commit، تا به‌صورت خودکار روی Pull Requestها. اجرای خودکار تست‌ها روی مخزن، اولین قدم دنیای CI است که در هفته‌ی ششم به آن می‌رسیم. الان فقط مفهوم و انگیزه را بگیرید.

منابع یادگیری

مقالات و مستندات

ویدیو