معرفی و تعریف
تست API فرایند بررسی عملکرد و صحت رابط برنامهنویسی کاربردی (Application Programming Interface یا API) از طریق ارسال درخواست و بررسی پاسخها است. هدف آن اطمینان از صحت قرارداد سرویس، کدهای وضعیت HTTP، ساختار دادهها، احراز هویت، اعتبارسنجی ورودیها و نحوه مدیریت خطاها است.
در این تست، رابط گرافیکی محصول مستقیما مورد بررسی قرار نمیگیرد و تمرکز روی ارتباط مستقیم با سرویس است. تستکننده میتواند یک Endpoint را با روشهایی مانند GET، POST، PUT و DELETE فراخوانی کند و بررسی کند که پاسخ دریافتی، دادههای بازگشتی و اثرات ایجادشده با نیازمندیهای محصول و مستندات API سازگار هستند.
این مسیر عمدتا برای تسترهای نرمافزار جونیور طراحی شده است که با مفاهیم پایه تست نرمافزار آشنایی دارند. فردی که با HTTP و JSON آشنایی دارد، با حدود ۶۰ تا ۸۰ ساعت مطالعه و تمرین هدفمند میتواند به سطح کاربردی اولیه برسد. اگر مبانی موردنیاز مانند HTTP، JSON و مفاهیم پایه API را از صفر میآموزید، معمولا ۹۰ تا ۱۲۰ ساعت زمان لازم است. این برآورد به میزان تمرین روی APIهای آزمایشی و طراحی سناریوهای واقعی تست وابسته است.
توسعهدهندگان بکاند و فرانتاند نیز از تست API استفاده میکنند، اما هدف و زاویه بررسی آنها متفاوت است. توسعهدهنده بکاند بیشتر روی قرارداد API، منطق سرویس و رفتار پاسخها تمرکز میکند؛ درحالیکه توسعهدهنده فرانتاند معمولا بررسی میکند که رابط کاربری در برابر پاسخهای مختلف API و خطاهای سرویس چگونه رفتار میکند.
این مهارت را با نامهای دیگری نیز میشناسند:
- آزمون API
- تست وبسرویس
- آزمون وبسرویس
- تست سرویسهای وب
- API Test
- Web Service Testing
- REST API Testing
اهمیت و کاربردها
چرا این مهارت مهم است؟
API اغلب نقطه اتصال میان رابط کاربری، سرویسهای بکاند، اپلیکیشنهای موبایل و سامانههای بیرونی است. خطا در این نقطه میتواند حتی زمانی که ظاهر محصول درست به نظر میرسد، باعث ثبت نادرست سفارش، نمایش دادههای اشتباه یا اختلال در یکپارچهسازی سیستمها شود.
برای تستر نرمافزار جونیور، توانایی طراحی و اجرای تست API یک مهارت مکمل در کنار تست دستی و پایهای برای ورود به حوزه خودکارسازی تست محسوب میشود. در تیمهایی که بکاند و فرانتاند بهصورت جداگانه توسعه مییابند، این مهارت امکان شناسایی زودتر خطاها را پیش از آمادهشدن کامل رابط کاربری فراهم میکند.
در رزومه و ارزیابی فنی نقشهایی مانند QA، Software Tester و Test Automation، یک مجموعه تست قابل اجرا، سناریوهای مثبت و منفی، گزارشهای دقیق باگ و مستندات نتایج تست، شواهد قابل ارزیابیتری از توانایی شما ارائه میکنند. برای توسعهدهنده بکاند، بررسی قرارداد API، ساختار پاسخها و مدیریت خطا اهمیت بیشتری دارد؛ توسعهدهنده فرانتاند میتواند بر پاسخهای موفق و خطاهایی که بر رفتار رابط کاربری تأثیر میگذارند تمرکز کند.
تست API جایگزین تست رابط کاربری، تست کارایی (Performance Testing) یا ارزیابی امنیت تخصصی نیست. این مهارت میتواند بررسیهای پایهای مانند کنترل دسترسی، احراز هویت و جلوگیری از افشای داده در پاسخهای خطا را پوشش دهد، اما آزمون امنیتی عمیق به دانش تخصصی امنیت و مجوز مناسب نیاز دارد.
کاربردها
-
بررسی قرارداد Endpointهای REST
بررسی کنید مسیر (Endpoint)، متد HTTP، پارامترها، بدنه درخواست و ساختار پاسخ API با مستندات فنی یا توافقهای تیم مطابقت داشته باشند.
-
اعتبارسنجی کدهای وضعیت و پاسخهای خطا در API
برای درخواستهای موفق، ورودیهای ناقص یا نامعتبر، منابع یافتنشده و درخواستهای بدون مجوز کافی، کد وضعیت HTTP و ساختار پاسخ مورد انتظار را بررسی کنید.
-
آزمون احراز هویت و کنترل دسترسی
رفتار API را با توکن احراز هویت معتبر، نامعتبر و منقضیشده، همچنین کاربران با نقشهای مختلف بررسی کنید تا از ایجاد دسترسی غیرمجاز جلوگیری شود.
-
بررسی چرخه عمر داده در API
یک داده ایجاد کنید، آن را بخوانید، بهروزرسانی کنید و حذف کنید؛ سپس اثر هر مرحله را در پاسخ API و وضعیت نهایی داده بررسی کنید.
-
تست یکپارچهسازی سرویسها
رفتار سیستم را هنگام دریافت پاسخ ناقص، خطا یا تأخیر از سرویسهای وابسته مانند پرداخت، پیامک یا سرویسهای بیرونی شبیهسازی و بررسی کنید.
-
اجرای تستهای API در فرایند CI/CD
مجموعه تستهای API شامل درخواستها و Assertionها را بهصورت قابل اجرا و تکرارپذیر نگهداری کنید تا پس از تغییرات بکاند، خطاهای بازگشتی (Regression) بهصورت خودکار شناسایی شوند.
ابزارهای مرتبط
پیشنیازها
شروع این مهارت با دانستن پیشنیازهای زیر هموارتر میشود.
مسیر یادگیری تست API
-
۱۰ ساعت
مفاهیم درخواست و پاسخ HTTP را یاد میگیرید.
این گام برای یادگیرندهای است که با HTTP آشنایی ندارد یا دانش مقدماتی از آن دارد. متدهای HTTP، URL، پارامترهای Query، هدرها، بدنه درخواست، کوکیها و کدهای وضعیت HTTP رایج را یاد بگیرید. با چند درخواست ساده بررسی کنید هر بخش چه نقشی دارد و تفاوت بین پاسخ موفق و پاسخ خطا را تشخیص دهید.
-
۱۲ ساعت
قرارداد API و داده JSON را بررسی میکنید.
مستندات Endpointها، پارامترهای اجباری و اختیاری، نوع داده ورودیها و فیلدهای پاسخ، و ساختار JSON را بررسی کنید. برای هر Endpoint، شرایط و نتایج مورد انتظار را بهصورت قابل تست مشخص کنید؛ ورودی معتبر، خروجی مورد انتظار و خطاهای احتمالی.
-
۱۶ ساعت
درخواستهای دستی را با یک کلاینت API اجرا میکنید.
با Postman، Bruno یا Insomnia درخواستهای API ایجاد کنید و یک Environment برای آدرس سرویس و متغیرهای موردنیاز تعریف کنید. متدهای GET، POST، PUT و DELETE را اجرا کنید و هدرها، بدنه درخواست و پاسخ دریافتی را با انتظار موردنظر یا مستندات API مقایسه کنید.
-
۱۸ ساعت
سناریوهای مثبت، منفی و مرزی طراحی میکنید.
برای هر Endpoint فقط سناریوی موفق را تست نکنید. ورودیهای خالی، نوع دادههای نادرست، مقادیر خارج از محدوده مجاز، شناسههای ناموجود، درخواستهای تکراری و جریانهای نامعتبر عملیات را به سناریوهای تست تبدیل کنید.
-
۱۴ ساعت
احراز هویت و رفتار خطا را در محیط مجاز ارزیابی میکنید
وجود یا نبود توکن احراز هویت، توکن نامعتبر یا منقضیشده و سطح دسترسی کاربران با نقشهای مختلف را بررسی کنید. مطمئن شوید پاسخهای خطا اطلاعات حساس یا جزئیات فنی غیرضروری افشا نمیکنند و کد وضعیت HTTP با نتیجه واقعی درخواست مطابقت دارد.
این آزمونها را فقط روی API آزمایشی، API عمومی با مجوز صریح یا محیط تست انجام دهید. از داده واقعی کاربران، توکنهای واقعی یا سامانه تولیدی استفاده نکنید.
-
۱۰ ساعت
مجموعه تست تکرارپذیر و گزارش باگ میسازید
برای پاسخها Assertion بنویسید، دادههای تست را از متغیرها بخوانید و Collection درخواستها را بهصورت قابل اجرا و تکرارپذیر نگه دارید. برای نسخهبندی Collection و فایلهای Environment بدون اطلاعات حساس از Git استفاده کنید. Apache JMeter را زمانی به کار بگیرید که بخواهید API را تحت بار، با درخواستهای تکرارشونده یا همزمان اجرا کنید و عملکرد آن را بررسی کنید.
برای هر خطا، Endpoint، متد HTTP، داده ورودی، پاسخ واقعی، نتیجه مورد انتظار و شرایط بازتولید را ثبت کنید.
زمان تقریبی یادگیری
برآورد مجموع زمان آموزش، مطالعه و تمرین تا رسیدن به سطح کاربردی؛ بسته به پیشزمینه شما میتواند کمتر یا بیشتر باشد.
پروژههای تمرینی
در ادامه، مهمترین موارد این بخش به تفکیک معرفی شدهاند.
-
مجموعه تست API یک سامانه مدیریت کارها
توضیح پروژه: برای یک API آزمایشی یا عمومی با مجوز استفاده در حوزه مدیریت Taskها، دستکم ۱۲ سناریو برای ایجاد، فهرست، ویرایش و حذف Task طراحی کنید. سناریوهای موفق، شناسه ناموجود، بدنه ناقص و دادههای نامعتبر را پوشش دهید. تحویل پروژه شامل Collection قابل اجرا، حداقل ۸ Assertion و گزارشی از نتیجه اجرای هر سناریو است.
-
بررسی دسترسی کاربران در API فروشگاه آزمایشی
توضیح پروژه: در یک محیط تست مجاز، سناریوهای مربوط به نقشهای مهمان، کاربر عادی و مدیر را برای Endpointهای سفارش و محصول تعریف کنید. حداقل ۹ سناریو اجرا کنید و برای هر نقش، کد وضعیت HTTP و نتیجه دسترسی (مجاز یا غیرمجاز) را ثبت کنید. از توکنهای واقعی کاربران، دادههای واقعی یا اطلاعات حساس استفاده نکنید.
-
مستندسازی یک باگ قابل بازتولید
توضیح پروژه: یک خطای واقعی در محیط تست مجاز یا یک خطای شبیهسازیشده را شناسایی کنید. گزارش نهایی باید شامل Endpoint، متد HTTP، هدرهای موردنیاز، بدنه درخواست، پاسخ واقعی، نتیجه مورد انتظار، مراحل بازتولید، شدت خطا (Severity) و تصویر یا خروجی درخواست باشد.
-
اجرای خودکار یک مجموعه تست
توضیح پروژه: یک Collection شامل حداقل ۶ درخواست API با متغیرهای محیطی و حداقل ۶ Assertion ایجاد کنید و آن را با دو مجموعه داده آزمایشی اجرا کنید. وابستگی میان درخواستها و دادههای موردنیاز هر مرحله را ثبت کنید و Collection و فایل Environment را بدون اطلاعات حساس با Git نسخهبندی کنید.
پرسشهای رایج درباره تست API
اگر درباره این مهارت پرسشی دارید، ممکن است پاسخ آن را در میان موارد زیر پیدا کنید.
آیا برای یادگیری تست API باید برنامهنویس باشم؟
خیر. برای تست دستی API، درک HTTP، JSON و منطق کسبوکار نرمافزار اهمیت بیشتری دارد. برنامهنویسی زمانی اهمیت بیشتری پیدا میکند که بخواهید تستها را خودکارسازی کنید یا پاسخهای پیچیده را با کد پردازش کنید.
تست API چه تفاوتی با تست رابط کاربری دارد؟
تست API رفتار سرویس، قرارداد و تبادل داده را مستقیما بررسی میکند، اما تست رابط کاربری تعامل کاربر با صفحه یا اپلیکیشن را ارزیابی میکند. یک API سالم لزوما رابط کاربری بدون خطا ایجاد نمیکند و یک رابط کاربری بدون خطای ظاهری نیز تضمینکننده سلامت API نیست.
آیا Postman برای تست API کافی است؟
Postman برای یادگیری، ارسال و بررسی دستی درخواستها و ساخت Assertionهای پایه ابزار مناسبی است. انتخاب ابزار به نیازها و فرایند تیم بستگی دارد؛ Bruno و Insomnia نیز برای ارسال درخواستهای API، بررسی پاسخها و تستهای مشابه استفاده میشوند. مهارت اصلی، طراحی سناریوهای تست و تفسیر درست پاسخهای API است.
در هر تست API چه چیزهایی را باید بررسی کنم؟
حداقل متد HTTP و Endpoint، پارامترها و بدنه درخواست، کد وضعیت، ساختار و مقادیر پاسخ، پیامهای خطا و وضعیت داده پس از عملیات را بررسی کنید. برای Endpointهای محافظتشده، احراز هویت (Authentication) و کنترل دسترسی (Authorization) را نیز بررسی کنید.
تست API با تست امنیت API یکسان است؟
خیر. تست API میتواند بررسیهای پایهای مانند کنترل دسترسی، نبود مجوز کافی و جلوگیری از افشای داده در پاسخهای خطا را شامل شود، اما ارزیابی امنیت تخصصی به دانش، روشها و ابزارهای اختصاصی مانند ارزیابی آسیبپذیری و آزمون نفوذ نیاز دارد.
چگونه مهارت تست API را در رزومه نشان دهم؟
یک Collection قابل اجرا، سناریوهای مثبت و منفی، Assertionها و یک یا دو گزارش باگ دقیق ارائه کنید. توضیح دهید چه قرارداد API یا رفتارهای خطایی را بررسی کردهاید، نتیجه هر تست چه بوده و پروژه در محیط آزمایشی یا API دارای مجوز انجام شده است.