راهنمای نهایی API برای تسترهای تضمین کیفیت (The Ultimate API Guide for Quality Assurance Testers)
APIs به بخشی جداییناپذیر از تضمین کیفیت تبدیل شدهاند زیرا بهعنوان مجرایی برای دادهها و اتصال دائمی عمل میکنند. APIها میتوانند برای تسترهای تضمین کیفیت بسیار تحولآفرین باشند، اما بدون چالش نیستند. برای یادگیری استفاده مؤثر و ایمن از APIها در تستهای QA، یک منحنی یادگیری وجود دارد. به همین دلیل این راهنما را برای تسترهای QA و مهندسان قابلیت اطمینان سایت گردآوری کردهایم. در این مطلب ابتدا شما را با اصول پایه آشنا میکنیم و سپس بهترین روشها برای تست API را با شما به اشتراک میگذاریم.
APIها چه هستند؟
API سرواژهی رابطهای برنامهنویسی کاربردی است. APIها اجازه میدهند نرمافزارها، اپلیکیشنها یا منابع مختلف بتوانند با یکدیگر تعامل کنند. هر زمان که یک اپلیکیشن درخواستی ارسال کند یا یک کوئری دریافت کند، احتمالاً یک API مسئول انجام آن است. APIها معمولاً از یک قالب استاندارد به نام مشخصات API پیروی میکنند. این استانداردسازی نقش مهمی در فرآیندهای خودکار دارد، جایی که APIها برای مهندسان QA وارد عمل میشوند.
تست API چیست؟
تست API فرآیند بررسی یک API است تا مطمئن شویم عملکرد مورد انتظار خود را ارائه میدهد. تست API امنیت، کارایی و قابلیت اطمینان را ارزیابی میکند. همچنین میتواند ادغام API را بررسی کند تا مشخص شود آیا یک API قادر به تعامل صحیح با یک نرمافزار یا منبع خاص هست یا خیر.
تست API معمولاً با شبیهسازی مجموعهای از درخواستها به اندپوینتهای API انجام میشود تا مطمئن شویم رفتار API مطابق انتظار است. تست API در DevOps رایج است و به توسعهدهندگان اجازه میدهد اجزای مختلف را قبل از نهاییسازی UI آزمایش کنند. بسیاری از درخواستهای نادرست API که نتیجهای باز نمیگردانند، ممکن است در لایهی UI نمایش داده نشوند. تست API به تسترهای QA کمک میکند مشکلاتی را شناسایی کنند که در صورت تکیه صرف بر UI از نظرشان پنهان میماند. همچنین امکان ارسال درخواستهایی را فراهم میکند که شاید از طریق UI قابل انجام نباشند، که برای امنیت API بسیار حیاتی است.
تست API برای سازمانهایی که از معماری میکروسرویس استفاده میکنند اهمیت مضاعفی دارد، زیرا APIها زیرساخت اتصال سرویسها به یکدیگر هستند. همچنین، تست API برای توسعهی چابک ضروری است. در توسعهی چابک، بسیاری از توسعهدهندگان تست API را به تست GUI ترجیح میدهند، زیرا سریعتر، آسانتر برای نگهداری و سادهتر برای پیادهسازی است.
در یک تست API باید به چه چیزهایی توجه کرد؟
مانند هر تست خوب دیگر، تست API نیازمند اهداف مشخص و قابل اندازهگیری است. مهندس تضمین کیفیت باید درک درستی از رفتار مورد انتظار API داشته باشد تا بتواند رفتارهای غیرعادی را تشخیص دهد. برخی پرسشهایی که تستر QA باید پیش از تست API مطرح کند عبارتاند از:
این API چه کاری انجام میدهد؟
این API باید چگونه رفتار کند؟
کدام اندپوینتهای API قابل تست هستند؟
چه کدهای خطایی برای خطاهای قابل پیشبینی انتظار میرود؟
در یک درخواست ناموفق، چه پیغام خطایی باید در بدنه بازگردانده شود؟
از چه ابزارهای تست API باید استفاده کرد؟
پس از مشخص شدن موارد بالا، مهندس QA میتواند شروع به نوشتن کد برای اعمال تکنیکهای مختلف تست کند. پس از نوشتن تستها، موارد زیر قابل ارزیابی خواهند بود:
- زمان پاسخ
- کیفیت داده
- تأیید اعتبارسنجی
- کدهای وضعیت HTTP
- کدهای خطا
تست API میتواند روی اندپوینتها، رابط کاربری و دیتابیسها انجام شود. مهندسان QA باید پیش از شروع فرایند تست، یک خط مبنا از رفتار مورد انتظار API را مشخص کنند، تا بتوان نتایج واقعی را با آن مقایسه کرد.
نمونههایی از تست API
تست API اشکال و اندازههای مختلفی دارد. این تستها را میتوان در سه دسته اصلی قرار داد: تست عملکردی، تست کارایی و تست امنیت.
تست عملکردی API
نمونهای از تست عملکردی API میتواند بررسی اندپوینتی باشد که میدانیم درست کار میکند و باید کد وضعیت ۲۰۰ OK بازگرداند. برای مثال، هنگام ارسال کوئری به API جستجوی نویسندگان OpenLibrary برای Stephen King با درخواست زیر:
https://openlibrary.org/search/authors.json?q=Stephen%20King
پاسخ ۲۰۰ OK دریافت میکنید، زیرا درخواست بهدرستی فرمت شده و API نیاز به احراز هویت ندارد.
نمونهی دیگری از تست عملکردی میتواند تلاش برای دسترسی به API با اعتبارسنجی نامعتبر باشد تا مطمئن شویم دسترسی غیرمجاز امکانپذیر نیست. این تست همچنین نشان میدهد چه دادهای بازمیگردد، تا تستر QA مطمئن شود هیچ اطلاعات حساسی افشا نمیشود. برای مثال، API موزه Rijksmuseum برای جستجوی مجموعه آنلاین نیازمند API Key است. با اعتبارسنجی درست، درخواست زیر باید پاسخ ۲۰۰ OK بازگرداند؛ در غیر این صورت باید خطای ۴۰۱ Unauthorized مشاهده شود:
https://www.rijksmuseum.nl/api/nl/collection?key=[api-key]&involvedMaker=Rembrandt+van+Rijn
تست عملکردی همچنین میتواند بررسی کند که صفحهبندی و محدودیت نرخ درخواستها صحیح کار میکند یا هنگام ارسال دادهی نادرست، API چگونه رفتار میکند. مهندسان QA همچنین میتوانند بررسی کنند آیا API از عملیات CRUD پشتیبانی میکند یا خیر.
برای مثال، با توجه به اینکه موزه Rijksmuseum نزدیک به ۱۲۰۰۰ شیء از Rembrandt van Rijn دارد، یک درخواست عملکردی میتواند بررسی کند که نتایج مورد انتظار نمایش داده میشوند. تست صفحهبندی API میتواند تعداد نتایج در هر صفحه و شماره صفحه را مشخص کند. اگر از محدوده خارج شوید، API باید بدنهی JSON خالی برگرداند:
https://www.rijksmuseum.nl/api/nl/collection?[API-Key]&involvedMaker=Rembrandt+van+Rijn&p=600&ps=20
پاسخ زیر بیانگر عملکرد صحیح صفحهبندی است:
{“elapsedMilliseconds”:0,”count”:0,”countFacets”:{},”artObjects”:[],”facets”:[]}
تست کارایی API
تست کارایی بررسی میکند که API چگونه رفتار میکند. تست API میتواند زمان عملکرد، زمان پاسخ یا تست فشار را ارزیابی کند تا مشخص شود API هنگام افزایش ناگهانی ترافیک چگونه عمل خواهد کرد. همچنین میتوان تأخیر، زمان خطا و مدت زمان لازم برای پاسخ به کوئریهای دیتابیس را اندازهگیری کرد. تست کارایی یکی از مهمترین انواع تست API برای تضمین تجربه کاربری مناسب است.
نمونهای از تست کارایی میتواند فراخوانی API زیر برای دریافت همهی اشیای مرتبط با گل آفتابگردان از مجموعه موزه Metropolitan باشد:
https://collectionapi.metmuseum.org/public/collection/v1/search?q=sunflowers
تستر QA میتواند ابتدا این درخواست را برای تعیین خط مبنا اجرا کند و سپس نسخهی سنگینتر زیر را با فیلترهای متعدد اجرا کند:
این تست بررسی میکند API هنگام درخواستهای پیچیده یا سنگین چگونه رفتار میکند.
تست امنیت API
تست امنیتی API از اهمیت بسیار بالایی برخوردار است، زیرا تعیین میکند آیا یک API ایمن است یا خیر. تسترها معمولاً موارد زیر را بررسی میکنند:
تأیید احراز هویت
تأیید مجوزها
امنیت توکنها
جلوگیری از دسترسی غیرمجاز
شبیهسازی حملات رایج مانند تزریق SQL
بررسی عدم افشای دادههای حساس یا عدم وجود CORS ناخواسته
برای مثال، هنگام تست API عمومی Icons8، نتایج زیر برای برخی تستهای امنیتی ثبت شده است:
PASS checks vulnerability with basic origin reflection
PASS checks vulnerability with trusted null origin
PASS checks vulnerability with trusted insecure protocols
PASS checks for response with valid access token
اما هشت مورد آسیبپذیری با خطاهای زیر پیدا شد:
FAIL checks for Content-Security-Policy header
FAIL checks for X-Frame-Options header
FAIL checks for Strict-Transport-Security header
FAIL checks for X-XSS-Protection header
FAIL checks for response with expired access token
FAIL checks for response without access token
ابزارهای تست API
تسترهای QA میتوانند خودشان کد بنویسند یا از ابزارهای تست API استفاده کنند.
Postman
یکی از محبوبترین گزینهها است، زیرا بسیاری از توسعهدهندگان API نسخههای خود را برای آن ارائه میکنند. رابط کاربری سادهای دارد و برای کاربران کمتجربهتر مناسب است. همچنین میتواند مجموعهای از درخواستها را در قالب Collection دستهبندی کند، که یک روش استاندارد در تست API است. Postman قابلیت تست خودکار نیز دارد و حتی میتواند پس از تکمیل تستها ایمیل ارسال کند.
Apigee
برای تست کارایی مناسب است و داشبوردی قابل سفارشیسازی دارد. همچنین امکان تهیه گزارشهای دقیق را فراهم میکند.
Apache JMeter
برای تستهای عملکردی محبوب است. پشتیبانی از فایلهای CSV دارد و بهآسانی با ابزارهای شخص ثالث ادغام میشود، که آن را برای خطوط CI مناسب میسازد.
بهترین روشها برای تست API توسط تسترهای QA
تسترهای QA باید پیش از شروع تستها، مستندات API را کاملاً مطالعه کنند. سپس تستهایی با سناریوهای صحیح و سناریوهای اشتباه طراحی کنند. تست موارد لبهای نیز اهمیت زیادی دارد.
تستها باید در مراحل مختلف چرخه توسعه API انجام شوند تا امنیت و عملکرد مناسب در همهی مراحل تضمین شود. همچنین بهتر است تا حد ممکن تستها خودکار شوند تا زمان تسترها آزاد شود.
جمعبندی
APIها بخش مهمی از دنیای توسعه هستند و روند استفاده از آنها در سالهای اخیر رو به افزایش بوده است. میکروسرویس، API-first و معماری ابری نیز در سال ۲۰۲۴ بسیار محبوب بودهاند. با توجه به نقش APIها در DevOps و توسعه چابک، کاملاً مشخص است که جایگاه آنها در آینده توسعه پایدار خواهد بود.
تسترهای تضمین کیفیت که به دنبال نتایج حرفهای و دقیق هستند، باید مهارت کافی در تست API را کسب کنند. امیدواریم این راهنما به شما در مسیر تسلط بر تست API کمک کرده باشد.
