تستهای #API واقعاً مهم و فوقالعاده تأثیرگذارند! یعنی نسبت به حجمشون، تأثیرشون تو رصد وضعیت #سیستم خیلی زیاده. حالا برای طرفداران مارتین فاولر (فاولر بازها! 😂) بزارید یه نقل قول ازش بگم: “تستهای API بخشی حیاتی از #استراتژی #تست شما هستند. آنها کمک میکنند تا اطمینان حاصل کنید که سرویسهای شما به درستی ارتباط برقرار میکنند و برنامه شما مطابق انتظار عمل میکند.”
اما من نکتهای که مایک کوهن (نویسنده و متخصص #Agile) میگه رو خیلی مهمتر میدونم:
“وقتی درباره تست فکر میکنیم، معمولاً به #unit_test ها فکر میکنیم. اما تستهای API میتوانند مشکلاتی را شناسایی کنند که تستهای واحد از دست میدهند، به ویژه آنهایی که مربوط به #یکپارچگی و جریان دادهها هستند.”
حالا بریم سراغ ۹ مدل تست در APIها:
🔹 تست دودی (#Smoke_Testing)
این تست بعد از اینکه توسعه API به پایان رسید، انجام میشه. هدفش اینه که ببینیم آیا APIها کار میکنند و چیزی خراب نشده.
چه چیزی باید در Smoke Testing تست بشه:
- - عملکرد اصلی: بررسی عملکردهای کلیدی مثل ورود به سیستم، ثبتنام و دسترسی به صفحات مهم.
- - پاسخگویی API: اطمینان از اینکه APIها به درستی پاسخ میدهند و وضعیتهای HTTP مناسب (مثل 200، 404، 500) رو برمیگردونند.
- - یکپارچگی سیستم: تأیید اینکه اجزای مختلف سیستم به درستی با هم کار میکنند.
- - نصب و راهاندازی: بررسی اینکه نرمافزار به درستی نصب و راهاندازی شده.
چه چیزی نباید در Smoke Testing تست بشه:
- - جزئیات داخلی: تست منطق داخلی و جزئیات پیادهسازی (مثل تستهای واحد).
- - سناریوهای پیچیده: تست سناریوهای پیچیده و خاص که نیاز به تستهای عمیقتر دارند.
- - عملکرد: تست بار و عملکرد (مثل Load Testing) که نیاز به آزمایشهای جداگانه دارند.
- - امنیت: تستهای امنیتی که نیاز به بررسیهای
🔹 تست عملکردی (#Functional_Testing)
در این نوع تست، یک برنامه تست بر اساس نیازهای عملکردی تهیه میشه و نتایج با آنچه انتظار میرفت مقایسه میشه.
🔹 تست یکپارچگی (#Integration_Testing)
این تست چندین فراخوانی API رو با هم ترکیب میکنه تا تستهای انتها به انتها انجام بشه. ارتباطات بین سرویسها و انتقال دادهها مورد آزمایش قرار میگیره.
🔹 تست رگرسیون (#Regression_Testing)
هدف این تست اینه که اطمینان حاصل کنیم که رفع اشکالات یا اضافه کردن ویژگیهای جدید، رفتارهای موجود APIها رو خراب نمیکنه.
🔹 تست بار (#Load_Testing)
این تست عملکرد برنامهها رو با شبیهسازی بارهای مختلف ارزیابی میکنه. بعد از این تست، میتونیم ظرفیت برنامه رو محاسبه کنیم.
البته معمولا لود تست و استرس تست رو از ابزارهای بهتری خارج از محدوده اپ میگیرن ولی شاید یه کارهای حداقلی رو بشه انجام داد به عنوان یه شاخص کوچیک اولیه برای اینکه مشکلات حاد رو تو مرحله CI/CD جلوش رو گرفت.
🔹 استرس تست (#Stress_Test)
در این تست، به عمد بارهای سنگین به APIها وارد میکنیم و بررسی میکنیم که آیا APIها میتونند به طور عادی کار کنند یا نه.
🔹 تست امنیت (#Security_Test)
این تست APIها رو در برابر همه تهدیدات خارجی ممکن آزمایش میکنه.
🔹 تست رابط کاربری (#UI_Test)
این تست تعاملات رابط کاربری با APIها رو بررسی میکنه تا مطمئن بشیم که دادهها به درستی نمایش داده میشوند.
🔹 تست فازی (#Fuzz_Test)
در این تست، دادههای نامعتبر یا غیرمنتظره به API وارد میشه و سعی میکنیم API رو خراب کنیم. به این ترتیب، نقاط ضعف API شناسایی میشن.
وقتشه که با قدرت به سمت تستهای API برید! 🚀