از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
شروع به کار با PostmanTesting یک برنامه به معنای چیزی بیشتر از کلیک کردن در اطراف تا زمانی که چیزی خراب شود یا امتحان ورودی های مختلف تا زمانی که چیزی درست کار نمی کند، است. در حالی که این یک راه خوب برای پیدا کردن هر چیزی است که ممکن است خراب شود روی سمت کاربر رو به روی برنامه، به دلیل استفاده نادرست – آنچه مورد غفلت قرار می گیرد …
سرفصلهای مطلب
معرفی
آزمایش یک برنامه به معنای چیزی بیشتر از کلیک کردن در اطراف آن است تا زمانی که چیزی خراب شود یا ورودی های مختلف را امتحان کنید تا زمانی که چیزی درست کار نکند.
در حالی که این یک راه خوب برای پیدا کردن هر چیزی است که ممکن است خراب شود روی سمت کاربر رو به روی برنامه، به دلیل استفاده نادرست – آنچه که نادیده گرفته می شود این واقعیت است که API هایی که process درخواست های شما از این طریق به اندازه کافی مورد آزمایش قرار نمی گیرند.
API چیست؟
اول از همه، برای اینکه بدانید چگونه یک API را آزمایش کنید، باید بدانید که API چیست. که در خیلی به طور کلی، به دو نرم افزار اجازه می دهد تا با یکدیگر تعامل داشته باشند تا به داده ها یا بخشی از عملکرد برنامه دیگر دسترسی پیدا کنند.
به شما امکان ارسال یک درخواست HTTP به منظور به دست آوردن یک پاسخ HTTP، به عبارت فنی تر. این عملاً ستون فقرات اینترنت و روش تعامل ما با برنامه ها / روش تعامل برنامه ها با یکدیگر است.
یک مثال خاص تر این است – برنامه شما دارای یک رابط کاربری گرافیکی است که در آن می توانید عنوان فیلم را وارد کنید و نتایج (پاسخ) را بر اساس آن برمی گرداند. روی آنچه نوشتی (درخواست). میتوانید این کار را با استفاده از یک API انجام دهید، که به سادگی این دادهها را از سرور دریافت میکند.
مثال دیگر می تواند این باشد – شما می خواهید به شخصی پرداخت کنید (درخواست) و داده های گیرنده بر اساس سرور به سرور ارسال می شود. روی ورودی شما، دوباره از طریق یک API. این بار، پاسخ این خواهد بود که پرداخت را با موفقیت (یا ناموفق) انجام داده اید.
چرا از پستچی استفاده کنیم؟
در حالی که ابزارهای دیگری در دسترس هستند (SoapUI، کاتالون، Tricentis) پستچی به عنوان یکی از ابزارهای مبتدی دوستانه ای که می توانید برای شروع آزمایش API خود از آن استفاده کنید برجسته است.
یکی از بزرگترین دلایل این است – شما مجبور نیستید یک زبان جدید یاد بگیرید و فقط به جاوا اسکریپت نیاز خواهید داشت، صرف نظر از زبانی که API به آن نوشته شده است. تست مجدد
برخی از دلایل دیگر عبارتند از:
- شما می توانید مجموعه های آزمایشی خودکار را نسبتاً آسان و سریع ایجاد کنید
- همچنین می توانید تست های قابل استفاده مجدد را بدون نیاز به اجرای خودکار آنها انجام دهید یا آنها را با هر چیزی ادغام کنید
- مجموعه های آزمایشی را می توان از طریق خط فرمان با بسته Node.js آن صادر و اجرا کرد. انسان جدید، که به نوبه خود می تواند با یک سیستم CI/CD یکپارچه شود
- قابل اجرا است روی Mac، Windows، Chrome Apps و Linux
- به اشتراک گذاری مجموعه های آزمایشی خود بسیار آسان است، حتی زمانی که در حال انجام هستند
- رابط اجازه می دهد تا نقاط پایانی را وارد کنید فحش دادن یا RAML فایلها، به عنوان نقطه شروعی برای آزمایشها، که مدت زمان مورد نیاز برای درخواست را کوتاه میکند
- توسعهدهندگان میتوانند از آن بهعنوان راهی سریع برای آزمایش نقطه پایانی استفاده کنند، در حالی که هنوز کار در حال انجام است، بهویژه همراه با نقطهبندی قبلی.
- به ذخیره متغیرها از پاسخ ها برای استفاده در آینده اجازه می دهد
- امکان استفاده از مجموعههای متفاوتی از متغیرها را برای آزمایش تنظیمات مختلف و پاسخهای پویا فراهم میکند
- اجازه استفاده از فایل ها را برای تست مبتنی بر داده
- دارد console که مبتنی است روی یکی از گوگل کروم دارد، به شما این امکان را می دهد که در حین اجرای تست ها به راحتی اشکال زدایی کنید
- رایگان (با ویژگی های برتر)
- داده ها را ذخیره می کند (روی حساب) در سراسر دستگاه ها
معایب پستچی
در حالی که میتوانید از فایلها برای آزمایش مبتنی بر داده استفاده کنید، باید تلاش بیشتری را برای طراحی آزمایشهای خود بدون استفاده از آن انجام دهید. Postman وقتی نمی تواند یک فایل را بخواند، خطاها را برمی گرداند، که شما نمی توانید هنگام اجرای دستی یک درخواست انجام دهید – که عمدتاً هنگام اجرای یک آزمایش انجام می دهید.
همچنین، در حالی که رایگان بودن آن حرفه ای است، دارای ویژگی های ممتاز نظارت قفل و تماس های خودکار بدون هیچ گونه برنامه خارجی است. این را می توان با یک سیستم داخلی یا خط لوله، مانند موارد ذکر شده، مقابله کرد انسان جدید.
با استفاده از پستچی
نصب پستچی
نصب Postman به سادگی رفتن به آنها است سایت اینترنتی، آن را دانلود کرده و اجرا کنید .exe
فایل. مطمئن شوید که نسخه صحیح را دانلود کردهاید، اما معمولاً نسخهای را بر اساس آن انتخاب میکند روی سیستم شما:
راه اندازی پستچی
پس از نصب آن، به سادگی Postman را راه اندازی کنید و با رابط کاربری زیر روبرو خواهید شد:
در اینجا، می توانید یک حساب کاربری ایجاد کنید. لازم نیست، اما توصیه میشود که یکی بسازید، زیرا این حساب به شما امکان میدهد دادههای خود را در همه دستگاهها صرفاً با کار در برنامه ذخیره کنید.
اگر یک حساب کاربری بسازید، به احتمال زیاد همه چیزهایی که کار کرده اید را حذف خواهید کرد روی تا آن نقطه در صورتی که می خواهید هر چه سریعتر وارد گوشت آن شوید، کلیک کنید از ورود به سیستم رد شوید و من را مستقیماً به برنامه ببرید.
پس از ساختن یک حساب کاربری (یا نه)، با اصلی مواجه خواهید شد page:
ارسال درخواست ها
اول از همه، شما باید یک تصمیم حیاتی بگیرید – حالت تاریک یا حالت روشن؟ من حالت تاریک را ترجیح می دهم، که در ادامه این مقاله از آن استفاده خواهم کرد:
وقتی تصمیم گرفتید، یکی را انتخاب کنید آ) یا ب) یک تب جدید ایجاد خواهد کرد:
اکنون، روش تعامل شما با یک API، فراخوانی URL آن است، یا به عبارت دیگر، فراخوانی نقطه پایانی. این بدان معنی است که شما با چیزی تماس خواهید گرفت که یا به صورت عمومی در معرض دید قرار گرفته است، یا با چیزی که به صورت محلی شروع کرده اید.
برای ساده نگه داشتن آن، از چیزی استفاده خواهیم کرد که در دسترس عموم باشد. این وب سایت به شما اجازه می دهد انیمه را بر اساس فیلتر کنید روی عبارت جستجوی شما:
این کار را توسط فراخوانی نقطه پایانی (ارسال درخواست شما) و بازگرداندن وب page با نتایج (نشان دادن پاسخ).
توجه داشته باشید: بسته به روی الگوریتم جستجویی که وب سایت ها استفاده می کنند، ممکن است عباراتی را برگردانند که به طور مبهم با عبارت جستجو مطابقت دارند. این ممکن است نتایج شما را در ادامه مقاله تحت تأثیر قرار دهد.
می توانید از عبارت جستجوی خود استفاده کنید، یا به سادگی یکی را که در تصویر مثال ایجاد شده است کپی کنید:https://api.jikan.moe/v3/search/anime؟q=aggretsuko&limit=16
با بازگشت به پستچی، میتوانیم URL را در فیلد تعیینشده وارد کنیم:
را پارامترها بخش به طور خودکار با پارامترهای موجود در URL ارائه شده پر می شود. این به این معنی است که URL با دو ساخته شده است ارزش های که بر چیزی که در نتیجه ارسال این به دست می آورید تأثیر می گذارد درخواست.
حالا بیایید درخواست را ارسال کنیم:
را واکنش هست در JSON فرمت، که امروزه برای اکثر APIها بسیار استاندارد است. اگر به وب سایت نگاهی بیاندازید، لیستی از آنها دریافت می کنید موارد که با عبارت جستجوی شما مطابقت دارد، و این در واقع همان لیست است، با همان موارد.
می بینید که چندتایی وجود دارد کلیدها که نام یکسانی دارند و هر کدام کلید دارد ارزش، که با آیتم قبلی متفاوت است (اما لزومی ندارد).
بیایید نگاهی به این بخش بیندازیم JSON:
{
"mal_id": 12391,
"url": "https://myanimelist.net/anime/12391/Mouretsu_Atarou_1990",
"image_url": "https://cdn.myanimelist.net/images/anime/12/34815.jpg؟s=18636fcc6bfe9368cbd3e021d6aca915",
"title": "Mouretsu Atarou (1990)",
"airing": false,
"synopsis": "Batsugoro was the owner of a grocery store, Yaobatsu. When he tried to take a balloon hanged caught روی the branch for a little child, he fell روی to the ground to die. His son, Ataro, succeeded to the...",
"type": "TV",
"episodes": 34,
"score": 0,
"start_date": "1990-04-21T00:00:00+00:00",
"end_date": "1990-12-22T00:00:00+00:00",
"members": 231,
"rated": "G"
},
{
"mal_id": 34016,
"url": "https://myanimelist.net/anime/34016/Hatsukoi_Monster__Mou_Chotto_dake_Tsuzukunja",
"image_url": "https://cdn.myanimelist.net/images/anime/2/81905.jpg؟s=b2c7e247db555c7477f319ace2d927c8",
"title": "Hatsukoi Monster: Mou Chotto dake Tsuzukunja",
"airing": false,
"synopsis": "Unaired episode bundled with the eight manga volume.",
"type": "OVA",
"episodes": 1,
"score": 6.27,
"start_date": "2017-02-07T00:00:00+00:00",
"end_date": "2017-02-07T00:00:00+00:00",
"members": 5594,
"rated": "PG-13"
}
تمام اطلاعات بازگردانده شده توسط API، از جمله پیوندهای تصاویر استفاده شده، در اینجا موجود است.
حالا ممکن است از خود بپرسید:
چرا با این کار زحمت بکشید، وقتی می توانید به سادگی به وب سایت بروید و در آنجا جستجو کنید؟
خوب، در توسعه process، گاهی اوقات شما تیمی از توسعه دهندگان خواهید داشت که در آن بخشی از تیم در حال توسعه back-end (API) هستند در حالی که هنوز هیچ جلویی (GUI) برای مشاهده وجود ندارد. در این مرحله، آزمایش API به محض توسعه، حتی قبل از ادغام در هر چیز دیگری، بسیار مفید است و در صورتی که مطابق با مستندات نیست، یا نوعی خطا وجود داشته باشد، بازخورد را بازگردانید.
نکته دیگری که ممکن است متوجه شوید این است که داده های زیادی وجود دارد که استفاده نمی شود روی تارنما. دلیل اینجاست – توسعهدهنده این وبسایت احتمالاً به این اطلاعات نیاز نداشته است، اما API مورد استفاده او آن را ارائه میدهد – زیرا برای توسعهدهنده این API لازم است. گاهی اوقات، حتی داده هایی وجود دارد که به سادگی در جای دیگری مورد نیاز هستند، و/یا نیازی به دیده شدن ندارند روی اصلا رابط کاربری
شاید بخواهید این را ذخیره کنید درخواست در صورتی که بخواهید بعداً از آن استفاده کنید، و روشی که این کار را انجام می دهید فقط کلیک کردن است Ctrl+S
روی صفحه کلید خود یا کلیک کردن بر روی صرفه جویی دکمه کنار ارسال دکمه:
را انتخاب کنید + ایجاد مجموعه را فشار دهید، زیرا برای ذخیره به یکی نیاز دارید درخواست که در:
و درخواست را ذخیره کنید:
شما می توانید به خود دسترسی داشته باشید مجموعه ها و درخواست ها از طریق مجموعه ها برگه:
کلیک کردن روی را درخواست آن را در برگه جدید باز می کند.
ایجاد ادعاها
در زیر برگه «تستها»، یک ویرایشگر برای کدتان پذیرفته میشوید:
اکنون، بیایید یک آزمایش بسیار ساده را وارد کنیم که نشان می دهد ما یک کد وضعیت را دریافت خواهیم کرد 200
:
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
همانطور که می بینید روی سمت راست، برخی وجود دارد تکه ها، که در حین آشنایی با آنها می تواند بسیار مفید باشد. از اینها می توان به عنوان ماکرو استفاده کرد تا از نوشتن کدهای معمولی همیشه جلوگیری شود.
کلیک کردن ارسال مجدداً، اکنون یک آزمایش ضمیمه درخواست خود خواهید داشت. این یکی به ویژه کد وضعیت را نشان می دهد 200 OK
.
این برای بررسی اینکه آیا عملکرد درخواستی را با موفقیت انجام داده اید (در این مورد، دریافت برخی از داده ها) استفاده می شود. اگر مشکلی پیش بیاید، یکی از کدهای خطا مانند 404 not found
، 400 bad request
، و غیره.
با ارسال درخواست، با یک مورد آزمایشی با موفقیت مواجه می شویم:
حالا بیایید بررسی کنیم که آیا هر دو عنوان حاوی کلمه “seven” هستند یا خیر:
// Get the response
let responseBody = pm.response.json();
// Get the title of the first few elements
let firstTitle = responseBody.results().title;
let secondTitle = responseBody.results().title;
pm.test("Title of the first item in response contains 'seven'", function() {
pm.expect(firstTitle.toLowerCase()).to.include("seven");
});
pm.test("Title of the second item in response contains 'seven'", function() {
pm.expect(secondTitle.toLowerCase()).to.include("seven");
});
از آنجا که .to.include()
به حروف کوچک و بزرگ حساس است، ما از آن استفاده می کنیم .toLowerCase()
در زنجیره عمل می کند، در غیر این صورت آزمایش به طور کاذب با شکست مواجه می شود.
اجرای این قطعه کد ما را برمی گرداند:
حالا، تصور کنید فهرستی از بیش از 10 موردی که میخواهید بررسی کنید… دیوانهوار است که کد را 10 بار کپی کنید، و گاهی اوقات میتوانید به طور واقع بینانه بیش از صدها نتیجه دریافت کنید، بنابراین بیایید یک روش ساده را معرفی کنیم. for-each
حلقه
اول، بیایید تغییر دهیم q
به چیزی اصلی تر مانند Naruto
و limit
پارامتر به 10
:
pm.test("Status code is 200", function() {
pm.response.to.have.status(200);
});
let responseBody = pm.response.json();
let results = responseBody.results;
results.forEach(function(result, i) {
pm.test(`Title of item number ${i + 1} in response contains 'naruto'`, function() {
pm.expect(result.title.toLowerCase()).to.include("naruto");
});
});
که در function(result, i)
هر یک از موارد به طور خودکار به آنها اختصاص داده می شود result
روی هر پاس، و i
آخرین پارامتر است، بنابراین جاوا اسکریپت به طور خودکار آن را به عنوان یک شمارنده داخلی اختصاص می دهد. به همین دلیل است که استفاده می کنیم ${i + 1}
برای شمارش اینکه کدام مورد را آزمایش می کنیم. اگر یک شمارنده به نام تست اضافه نمی کردیم، Postman آن را با یک تست رندر می کرد. سعی کنید آن را حذف کنید تا خودتان ببینید.
همانطور که می بینید، کد بسیار کمتر، و تست های بسیار بیشتر!
به عنوان تمرین، پارامتر دیگری به نام اضافه کنید type
و مقدار آن را بر روی TV
، سپس ادعا کنید که هر موردی خود را دارد key
تنظیم کنید TV
. به یاد داشته باشید که ممکن است عبارتی را برگرداند که به طور مبهم با عبارت مطابقت دارد، در صورتی که در آزمونی شکست خورده باشید.
معرفی متغیرها
برای توانایی بیشتر Postman، اجازه دهید متغیرها را به ترکیب معرفی کنیم. من وارد نمی شوم متغیرهای جهانی، متغیرهای محیطی برای مبتدیان مفیدتر هستند:
بیایید یک متغیر محیطی مانند naruto-10
با q
و limit
تنظیم کنید naruto
و 10
به ترتیب:
URL خود را طوری تغییر دهید که پارامترها کدگذاری سختی نداشته باشند، بلکه می توانند روی هر متغیری که بعدا تعریف می کنیم تنظیم شوند:
https://api.jikan.moe/v3/search/anime؟q={{q}}&limit={{limit}}
همانطور که می بینید اضافه کردیم q={{q}}&limit={{limit}}
به جای یک مقدار ثابت را {{}}
با چیزی در بین این است که پستمن چگونه می داند که به دنبال یک متغیر است. متوجه خواهید شد که قرمز خواهد بود، و این به این دلیل است که ما محیطی را انتخاب نکرده ایم، بنابراین Postman به ما می گوید که نمی تواند متغیر را پیدا کند:
و اکنون، میتوانیم کد خود را برای استفاده از متغیرهای محیطی با فراخوانی تغییر دهیم environment
هدف – شی:
let responseBody = pm.response.json();
let results = responseBody.results;
results.forEach(function(result, i) {
pm.test(`Title of item number ${i + 1} in response contains ${environment.q}`, function() {
pm.expect(result.title.toLowerCase()).to.include(environment.q);
});
});
ارسال درخواست در این حالت همچنین باید چندین تست گذرانده را به ما برگرداند:
نتیجه
پستچی به عنوان یکی از ابزارهای مبتدی دوستانه ای که می توانید برای شروع آزمایش API های خود استفاده کنید برجسته است. یکی از بزرگترین دلایل این است – شما مجبور نیستید یک زبان جدید یاد بگیرید و صرف نظر از زبانی که API به آن نوشته شده است فقط به جاوا اسکریپت نیاز خواهید داشت.
اگر می خواهید خودتان را امتحان کنید و در حال حاضر هستید روی یک پروژه، سعی کنید دریابید که آیا API وجود دارد که بتوانید به آن دسترسی داشته باشید یا نه، و احتمالاً از Postman تماس بگیرید. اگر نه، تعداد زیادی وجود دارد API های عمومی مشابه آنچه در این مقاله استفاده شده است.
منتشر شده در 1403-01-23 15:42:04