خودکار سازی با استفاده از Postman

خودکارسازی تست چیست؟
تست در فرآیند توسعه نرمافزار جهت تعیین کیفیت نرمافزار از اهمیت بالایی برخوردار است. فرایند تست را میتوان هم به صورت دستی و هم به صورت خودکار انجام داد. تست خودکار یکی از تکنیکهای تست نرم افزار میباشد که توسط ابزارهای خودکارسازی تست قابل پیاده سازی است. تفاوتهای بسیار زیادی بین تست دستی و خودکار وجود دارد. تست دستی توسط یک شخص که تمام مراحل تست را به صورت دستی اجرا میکند انجام میشود. تست دستی نیازمند تلاش و زمان زیادی است تا اطمینان حاصل شود که نرم افزار تمام نیازمندیها را برآورده میکند. تست خودکار در اکثر پروژههای نرمافزاری که نیاز به اجرای مکرر تستهای تکراری دارند مناسب است. اگر چه برخی از انواع تست مانند تست رگرسیون (regression) یا تست عملکردی (functional) را میتوان به صورت دستی انجام داد اما تست خودکار مزایای بیشتری دارد و میتوان آن را در هر زمانی اجرا کرد. بسیاری از سازمانها زمان و نیروی کافی برای انجام تست دستی را ندارند به همین دلیل تست خودکار میتواند به این امر کمک کند.
مزایا تست خودکار چیست؟
خودکار سازی مزایای زیادی دارد که در این بخش برخی از مزایای آن را بررسی میکنیم:
- افزایش پوشش تست (Test Coverage): با استفاده از خودکارسازی میتوان تستهای بیشتری را اجرا نمود که این امر به افزایش پوشش تست کمک خواهد کرد.
- کاهش هزینه: با تست خودکار، تست با سرعت بیشتری اجرا میشود و مشکلات نرمافزار در در حین توسعه، شناسایی و مرتفع می گردند. علیرغم هزینه اولیه بالا، پس از راهاندازی تست خودکار، هزینهها کاهش چشمگیری خواهند داشت.
- صرفه جویی در زمان: با استفاده از خودکارسازی، زمان تست رگرسیون کاهش میابد. از آنجایی که این تستها به صورت ۲۴/۷ قابل اجرا هستند باعث صرفهجویی در زمان نیز میگردد.
- قابلیت استفاده مجدد از تستها (Reusability): میتوان اسکریپتهای ایجاد شده برای یک سناریو را در سناریوهای دیگر استفاده نمود، و این امر هزینه و زمان پیادهسازی سناریوهای متعدد را کاهش میدهد.
- کاهش دخالت انسان: تستها را میتوان در هر زمانی بدون نظارت انسان اجرا کرد که این امر خطای انسانی را نیز کاهش میدهد.
ابزارهای زیادی برای خودکارسازی تستها وجود دارد که یکی از محبوبترین آنها ابزار Postman بوده و دارای نسخه رایگان نیز میباشد، با استفاده از این ابزار میتوانید APIهای خود را به صورت دستی و اتوماتیک تست کنید. همچنین میتوان در خودکارسازی تست نرمافزار در سطح API استفاده نمود. در مقاله شروع کار با Postman میتوانید با این ابزار آشنا شوید.
سازماندهی تستها در collection
در خودکارسازی تستها باید به سازماندهی و دستهبندی کردن آنها توجه بیشتری نمود بدین منظور در ابزار Postman میتوانید از collection استفاده کنید. یک Collection مانند پوشهای است که میتوانید چندین API را در آن ذخیره نموده و دادهها و متغیرها را بین APIها به اشتراک گذارید. برای مثال شما ممکن است همزمان با چندین سرویس یا اپلیکیشن سروکار داشته باشید و هر کدام API و متغیرهای خاص خودشان را داشته باشند، با استفاده از collection میتوان API هر سرویس را از سرویس دیگر مجزا نمود. در هر collection نیز میتوان با استفاده از folder دستهبندی دیگری ایجاد نمود.
مدیریت متغیرها در Postman
فرض کنید میخواهید درخواستی را به آدرس مشخصی ارسال نمایید. شما میتوانید آدرس مربوطه را در زمان ایجاد درخواست در قسمت URL وارد کنید. در صورتی که فقط یک درخواست موجود باشد، مشکلی نخواهد بود، اما تصور کنید که تعداد زیادی درخواست به این آدرس ارسال میشود. با تغییر URL شما باید هر بار تمام درخواستهای موجود را بروزرسانی کنید. این کار به مرور زمان و با افزایش تستها کاری کسل کننده و زمانبر خواهد بود. با استفاده از متغیرها میتوانید این موضوع را مدیریت کنید و با تغییر URL فقط کافی است مقدار متغیر را تغییر دهید و پس از آن تمامی درخواستها به مقصد جدید ارسال میگردند.
مدیریت متغیرها در Environment
یک Environment مجموعهای از متغیرها میباشد که میتوان در درخواستهای مختلف از آن استفاده کرد. شما میتوانید از Environment برای دستهبندی کردن متغیرهای مرتبط استفاده کنید. برای مثال میتوان Environment متفاوتی برای پروژههای مختلف و یا برای محیطهای اجرایی مختلف (محیط تست، محیط عملیاتی) ایجاد نمود. مانند شکل زیر مقدار متغیر URL را میتوان به عنوان یک متغیر تعریف نموده و در همهی درخواستها با استفاده از کاراکتر {{variable_name}} استفاده کرد.


مدیریت متغیرها در Collection
در هر collection نیز میتوان متغیرهای متفاوتی تعریف کرد. با این تفاوت که متغیرهای هر collection فقط در همان collection در دسترس هستند، اما متغیرهای موجود در Environment در چند Collection قابل استفاده هستند. با انتخاب collection مورد نظر و انتخاب گزینه Edit در تب variables میتوان متغیرهای مورد نیاز را تعریف نمود.

اشتراک متغیرها بین درخواستها
در Postman این امکان به شما داده میشود اسکریپتهایی نوشته شود که قبل و بعد از ارسال یک درخواست اجرا شوند. به کمک این اسکریپتها میتوان مقادیری را از پاسخ یک درخواست استخراج کرده و در یک متغیر ذخیره نمایید و پس از آن میتوانید از این متغیر در درخواستهای بعدی استفاده کنید. در بخش زیر فرایند استخراج مقدار از پاسخ یک درخواست، ذخیره آن در متغیر و استفاده آن در درخواستهای بعدی توضیح داده شدهاست.
مثال: دریافت اطلاعات کامل یک آگهی از سایت دیوار
در این مثال سعی داریم درخواست دریافت لیست آگهیهای مربوط به خودرو را در سایت دیوار اجرا کرده و از پاسخ آن شناسه یکی از آگهیها را استخراج کنیم و در یک متغیر ذخیره نماییم. سپس API مربوط به درخواست دریافت اطلاعات کامل آن آگهی را اجرا کنیم. در پاسخ API مربوط به لیست تمامی آگهی خودروهایی که به کاربر نمایش داده میشود، مقداری با عنوان token وجود دارد که مشخص کننده یک آگهی میباشد.برای نمایش جزئیات یک آگهی مربوط به خودرو، میبایست مقدار token دریافتی را در URL درخواست بعدی قرار دهیم.


برای استخراج این مقدار از پاسخ این API کافی است مانند زیر اسکریپت مربوطه را در تب Test اضافه کنیم. این اسکریپت پس از دریافت پاسخ از سمت سرور، اجرا شده و مقدار token را در متغیر car_id ذخیره میکند.
var jsonData = JSON.parse(responseBody);
pm.environment.set("car_id", jsonData.web_widgets.post_list[0].data.token);

پس از اجرای این API متغیر car_id در متغیرهای بخش Environment ایجاد میشود و شما میتوانید مقدار آن را مشاهده کنید.

در این مرحله میتوانید از متغیر ایجاد شده در هر درخواستی استفاده کنید.

اجرای تست توسط Collection Runner
اجرای تست توسط Collection Runner روشی است که میتوانید تستهای خود را به صورت اتوماتیک اجرا کنید. Collection Runner شما را قادر می سازد تا درخواستهای یک مجموعه را در یک توالی مشخص اجرا کنید. توجه کنید که پیش از اینکه Collection Runner را باز کنید تمام تستهای خود را ذخیره نمایید تا تغییرات در دسترس باشند. روی آیکون سه نقطه سمت راست collection کلیک کرده و گزینه Run collection را انتخاب کنید.

پس از آن صفحهای مشابه زیر نمایش داده میشود. در این بخش مقادیر مختلفی وجود دارد که میتوانید با تغییر آنها روند اجرای تست را تغییر دهید.

- Iterations: این مقدار تعداد دفعات اجرای تست را مشخص میکند.
- Delay: زمان انتظار بین درخواست ها که در واحد میلی ثانیه میباشد.
- Data: فایل حاوی اطلاعات استفاده شده در درخواستها
- Save responses: با انتخاب این مقدار پاسخ دریافتی شامل body و header در یک فایل ذخیره میشوند. به این نکته توجه کنید که انتخاب این مقدار برای مجموعههای با حجم بالا کارایی سیستم را تحت تاثیر قرار میدهد.
- Keep variable values: با انتخاب این گزینه در پایان اجرای تست، تمامی مقادیر متغیرها با آخرین مقدار جایگزین میشوند.
- Run collection without using stored cookies: در صورتی که تست شما از cookie استفاده میکند با انتخاب این گزینه میتوانید آن را غیر فعال کنید.
- Save cookies after collection run: مقادیر cookie که در این اجرا استفاده شده را در cookie manager ذخیره مینماید.
به صورت پیشفرض درخواست ها به همان ترتیبی که در collection ایجاد شدهاند اجرا میشوند. اما به راحتی میتوان با انتخاب آن ها و تغییر محل، ترتیب اجرای آنها را تغییر داد. همچنین میتوان درخواست را از لیست اجرا حذف نمود.
پس از اجرا، نتایج به صورت زیر قابل مشاهده است.

از آنجایی که درستی تستها چک نشده است در نتیجه اجرا، موفقیتآمیز بودن یا نبودن آن مشخص نشده است.در مقالههای بعدی نحوه نوشتن اسکریپت و بررسی نتیجه را خواهیم دید.