چرا TestMace بهتر از Postman است

چرا TestMace بهتر از Postman است

سلام به همه، شما بروید TestMace! شاید بسیاری از مردم از ما در مورد ما بدانند از ما قبلی مقالات. برای کسانی که به تازگی عضو شده اند: ما در حال توسعه یک IDE برای کار با TestMace API هستیم. متداول ترین سوالی که هنگام مقایسه TestMace با محصولات رقیب پرسیده می شود این است که "شما چه تفاوتی با Postman دارید؟" ما به این نتیجه رسیدیم که وقت آن رسیده است که به این سوال پاسخ دقیق بدهیم. در زیر ما مزایای خود را بیش از آن بیان کرده ایم پستچی.

تقسیم به گره ها

اگر با Postman کار می کنید، می دانید که رابط درخواست شامل تمام عملکردهای لازم است. اسکریپت ها، تست ها و در واقع خود پرس و جوها وجود دارد. این کار را برای مبتدیان آسان می کند، اما در سناریوهای بزرگ این رویکرد انعطاف پذیر نیست. اگر بخواهید چندین پرس و جو ایجاد کنید و روی آنها تجمیع کنید چه؟ اگر بخواهید یک اسکریپت را بدون درخواست یا چندین اسکریپت منطقی جدا شده پشت سر هم اجرا کنید چه؟ از این گذشته، جدا کردن تست‌ها از اسکریپت‌های کاربردی معمولی ایده خوبی است. علاوه بر این، رویکرد "افزودن تمام عملکردها به یک گره" مقیاس پذیر نیست - رابط به سرعت بارگذاری می شود.

TestMace در ابتدا تمام عملکردها را به انواع مختلفی از گره ها تقسیم می کند. آیا می خواهید درخواستی بدهید؟ این برای تو است مرحله درخواست گره آیا می خواهید فیلمنامه بنویسید؟ این برای تو است خط گره به آزمایش نیاز دارید؟ لطفا - ادعا گره اوه بله، شما هنوز هم می توانید تمام این موضوع را در آن جمع کنید پوشه گره و همه اینها را می توان به راحتی با یکدیگر ترکیب کرد. این رویکرد نه تنها بسیار انعطاف پذیر است، بلکه مطابق با اصل مسئولیت واحد، به شما امکان می دهد فقط از آنچه در حال حاضر واقعاً نیاز دارید استفاده کنید. اگر فقط بخواهم درخواستی بدهم، چرا به اسکریپت و تست نیاز دارم؟

قالب پروژه قابل خواندن توسط انسان

تفاوت مفهومی بین TestMace و Postman در نحوه ذخیره آنها وجود دارد. در Postman، همه درخواست ها در جایی در حافظه محلی ذخیره می شوند. اگر نیاز به اشتراک گذاری درخواست ها بین چندین کاربر وجود دارد، باید از همگام سازی داخلی استفاده کنید. در واقع، این یک رویکرد پذیرفته شده است، اما بدون اشکال نیست. در مورد امنیت داده ها چطور؟ پس از همه، سیاست برخی از شرکت ها ممکن است اجازه ذخیره داده ها با اشخاص ثالث را ندهد. با این حال، ما فکر می کنیم TestMace چیز بهتری برای ارائه دارد! و نام این بهبود "فرمت پروژه قابل خواندن توسط انسان" است.

بیایید با این واقعیت شروع کنیم که در TestMace، در اصل، یک نهاد "پروژه" وجود دارد. و این برنامه در ابتدا با توجه به ذخیره پروژه ها در سیستم های کنترل نسخه توسعه داده شد: درخت پروژه تقریباً یک به یک بر روی ساختار فایل پیش بینی می شود، yaml به عنوان فرمت ذخیره سازی (بدون براکت و کاما اضافی) استفاده می شود. نمایش فایل هر گره با جزئیات در مستندات همراه با نظرات توضیح داده شده است. اما در بیشتر موارد شما آنجا را نگاه نمی‌کنید - همه نام‌های فیلد دارای نام‌های منطقی هستند.

این چه چیزی به کاربر می دهد؟ این به شما امکان می دهد تا با استفاده از رویکردهای آشنا، جریان کار تیم را بسیار انعطاف پذیر تغییر دهید. به عنوان مثال، توسعه دهندگان می توانند یک پروژه را در همان مخزن باطن ذخیره کنند. در شاخه‌ها، علاوه بر تغییر خود پایه کد، توسعه‌دهنده می‌تواند اسکریپت‌ها و تست‌های کوئری موجود را تصحیح کند. پس از انجام تغییرات در مخزن (git، svn، مرکوریال - هر آنچه که بیشتر دوست دارید)، CI (مورد علاقه شما، که توسط کسی تحمیل نشده است) ابزار کنسول ما را راه اندازی می کند. testmace-cliو گزارش دریافتی پس از اجرا (مثلا با فرمت junit که در testmace-cli نیز پشتیبانی می شود) به سیستم مربوطه ارسال می شود. و مشکل امنیتی فوق الذکر دیگر مشکلی ندارد.

همانطور که می بینید، TestMace اکوسیستم و پارادایم خود را تحمیل نمی کند. در عوض، به راحتی در فرآیندهای تثبیت شده قرار می گیرد.

متغیرهای پویا

TestMace از مفهوم بدون کد پیروی می کند: اگر مشکلی بدون استفاده از کد قابل حل است، سعی می کنیم این فرصت را فراهم کنیم. کار با متغیرها دقیقاً همان عملکردی است که در بیشتر موارد می توانید بدون برنامه نویسی انجام دهید.

مثال: ما یک پاسخ از سرور دریافت کردیم و می خواهیم بخشی از پاسخ را در یک متغیر ذخیره کنیم. در Postman، در یک اسکریپت آزمایشی (که به خودی خود عجیب است) چیزی شبیه به:

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", jsonData.data);

اما به نظر ما، نوشتن یک اسکریپت برای چنین سناریویی ساده و پرکاربرد، اضافی به نظر می رسد. بنابراین، در TestMace امکان اختصاص بخشی از پاسخ به یک متغیر با استفاده از رابط گرافیکی وجود دارد. ببینید چقدر ساده است:

چرا TestMace بهتر از Postman است

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

var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("data", CryptoJS.MD5(jsonData.data));

خوب، برای این منظور TestMace دارد خط گره، که این سناریو را پوشش می دهد. برای بازتولید مورد قبلی، اما قبلاً توسط TestMace اجرا شده است، باید یک گره اسکریپت به دنبال درخواست ایجاد کنید و از کد زیر به عنوان اسکریپت استفاده کنید:

const data = tm.currentNode.prev.response.body.data;
tm.currentNode.parent.setDynamicVar('data', crypto.MD5(data));

همانطور که می بینید، ترکیب گره ها در اینجا نیز به خوبی عمل می کند. و برای چنین مورد ساده ای که در بالا توضیح داده شد، می توانید به سادگی عبارت را اختصاص دهید ${crypto.MD5($response.data)} متغیر ایجاد شده از طریق رابط کاربری گرافیکی!

ایجاد تست از طریق رابط کاربری گرافیکی

Postman به شما این امکان را می دهد که با نوشتن اسکریپت ها تست ایجاد کنید (در مورد Postman، این جاوا اسکریپت است). این رویکرد دارای مزایای زیادی است - انعطاف پذیری تقریبا نامحدود، در دسترس بودن راه حل های آماده و غیره.

با این حال، واقعیت اغلب چنین است (ما این‌طور نیستیم، زندگی همین‌طور است) که یک آزمایش‌کننده مهارت برنامه‌نویسی ندارد، اما او می‌خواهد همین الان برای تیم مفید باشد. برای چنین مواردی، با پیروی از مفهوم بدون کد، TestMace به شما این امکان را می دهد تا بدون استفاده از نوشتن اسکریپت، تست های ساده ای را از طریق رابط کاربری گرافیکی ایجاد کنید. برای مثال، فرآیند ایجاد آزمونی که مقادیر برابری را با هم مقایسه می کند، در اینجا به نظر می رسد:

چرا TestMace بهتر از Postman است

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

موقعیت هایی اغلب زمانی به وجود می آیند که یک کوئری خاص یا حتی یک اسکریپت کامل باید چندین بار در بخش های مختلف پروژه اجرا شود. نمونه ای از این درخواست ها می تواند مجوز چند مرحله ای سفارشی، رساندن محیط به وضعیت مطلوب و غیره باشد. به طور کلی، از نظر زبان های برنامه نویسی، ما دوست داریم توابعی داشته باشیم که بتوان در قسمت های مختلف برنامه مجددا از آنها استفاده کرد. در TestMace این تابع توسط پیوند گره استفاده از آن بسیار ساده است:
1) یک پرس و جو یا اسکریپت ایجاد کنید
2) یک گره از نوع Link ایجاد کنید
3) در پارامترها، پیوندی به اسکریپت ایجاد شده در مرحله اول مشخص کنید

در یک نسخه پیشرفته تر، می توانید تعیین کنید که کدام متغیرهای پویا از اسکریپت به سطح بالاتری نسبت به پیوند ارسال شوند. گیج کننده به نظر می رسد؟ فرض کنید یک پوشه با نام ایجاد کردیم ایجاد پست، که در آن یک متغیر پویا به این گره اختصاص داده شده است postId. اکنون در گره پیوند ایجاد-پست-لینک شما می توانید به صراحت آن متغیر را مشخص کنید postId به یک اجداد اختصاص داده شده است ایجاد-پست-لینک. این مکانیسم (باز هم در زبان برنامه نویسی) می تواند برای برگرداندن یک نتیجه از یک "عملکرد" ​​استفاده شود. به طور کلی، خوب است، DRY در نوسان کامل است و باز هم حتی یک خط کد آسیب ندیده است.

چرا TestMace بهتر از Postman است

در مورد Postman، یک درخواست ویژگی برای استفاده مجدد از درخواست ها وجود دارد حلق آویز از سال 2015، و به نظر می رسد حتی وجود دارد برخی نکاتکه دارند روی این مشکل کار می کنند. در شکل فعلی، Postman، البته، توانایی تغییر رشته اجرا را دارد، که در تئوری احتمالاً اجرای رفتار مشابه را ممکن می‌سازد، اما این بیشتر یک هک کثیف است تا یک رویکرد واقعی.

تفاوت های دیگر

  • کنترل بیشتر بر دامنه متغیرها. کوچکترین محدوده ای که می توان در آن متغیر در Postman تعریف کرد مجموعه است. TestMace به شما اجازه می دهد تا متغیرهایی را برای هر پرس و جو یا پوشه ای تعریف کنید. در مجموعه Postman Share به شما امکان می دهد فقط مجموعه ها را صادر کنید، در حالی که در TestMace اشتراک گذاری برای هر گره ای کار می کند
  • TestMace پشتیبانی می کند سرصفحه های ارثی، که می تواند به طور پیش فرض با کوئری های فرزند جایگزین شود. پستچی در این مورد چیزی دارد: وظیفه، و حتی بسته است، اما به عنوان راه حل ارائه شده است ... از اسکریپت ها استفاده کنید. در TestMace، همه اینها از طریق رابط کاربری گرافیکی پیکربندی شده است و گزینه ای برای غیرفعال کردن اختیاری هدرهای ارثی در فرزندان خاص وجود دارد.
  • لغو/از نو نه تنها هنگام ویرایش گره ها، بلکه در هنگام جابجایی، حذف، تغییر نام و سایر عملیاتی که ساختار پروژه را تغییر می دهد نیز کار می کند.
  • فایل‌های پیوست شده به درخواست‌ها بخشی از پروژه می‌شوند و با آن ذخیره می‌شوند، در حالی که برخلاف Postman کاملاً همگام هستند. (بله، دیگر نیازی نیست که هر بار که شروع می‌کنید فایل‌ها را به صورت دستی انتخاب کرده و به همکاران در بایگانی منتقل کنید)

ویژگی هایی که در حال حاضر در راه هستند

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

توابع

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

{{$randomEmail}}

با این حال، از آنجایی که اینها متغیر هستند (البته پویا)، نمی توان از آنها به عنوان توابع استفاده کرد: آنها قابل پارامترسازی نیستند، بنابراین گرفتن هش از یک رشته امکان پذیر نخواهد بود.

ما قصد داریم توابع "صادقانه" را به TestMace اضافه کنیم. درست در داخل ${} نه تنها دسترسی به یک متغیر، بلکه فراخوانی یک تابع نیز امکان پذیر خواهد بود. آن ها اگر نیاز به ایجاد ایمیل جعلی بدنام دارید، ما به سادگی می نویسیم

${faker.internet.email()}

علاوه بر این که تابع است، متوجه خواهید شد که امکان فراخوانی متد روی یک شی وجود دارد. و به جای یک لیست مسطح بزرگ از متغیرهای پویا، مجموعه ای از اشیاء منطقی گروه بندی شده داریم.

اگر بخواهیم هش یک رشته را محاسبه کنیم چطور؟ به آسانی!

${crypto.MD5($dynamicVar.data)}

متوجه خواهید شد که حتی می توانید متغیرها را به عنوان پارامتر ارسال کنید! در این مرحله، یک خواننده کنجکاو ممکن است شک کند که چیزی اشتباه است ...

استفاده از جاوا اسکریپت در عبارات

... و دلیل خوبی دارد! زمانی که الزامات توابع در حال شکل گیری بود، ناگهان به این نتیجه رسیدیم که جاوا اسکریپت معتبر باید در عبارات نوشته شود. بنابراین اکنون شما آزاد هستید که عباراتی مانند:

${1 + '' + crypto.MD5('asdf')}

و همه اینها بدون اسکریپت، درست در فیلدهای ورودی!

در مورد Postman، در اینجا شما فقط می توانید از متغیرها استفاده کنید، و هنگامی که سعی می کنید کوچکترین عبارتی بنویسید، اعتبار دهنده فحش می دهد و از محاسبه آن امتناع می کند.

چرا TestMace بهتر از Postman است

تکمیل خودکار پیشرفته

در حال حاضر TestMace یک تکمیل خودکار استاندارد دارد که به شکل زیر است:

چرا TestMace بهتر از Postman است

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

همانطور که می بینید، نشانگرهای بصری اضافه شده است که نوع متغیر را نشان می دهد (مثلا رشته، عدد، آرایه و غیره). همچنین می‌توانید حالت‌های تکمیل خودکار را تغییر دهید (به عنوان مثال، می‌توانید تکمیل خودکار را با متغیرها یا هدرها انتخاب کنید). اما حتی این مهم ترین چیز نیست!

اول، تکمیل خودکار حتی در عبارات (در صورت امکان) کار می کند. این چیزی است که به نظر می رسد:

چرا TestMace بهتر از Postman است

و ثانیا، تکمیل خودکار در حال حاضر در اسکریپت در دسترس است. نگاهی به نحوه عملکرد آن بیندازید!

چرا TestMace بهتر از Postman است

هیچ فایده ای در مقایسه این عملکرد با Postman وجود ندارد - تکمیل خودکار فقط به لیست های ثابت متغیرها، سرصفحه ها و مقادیر آنها محدود می شود (اگر چیزی را فراموش کردم، مرا اصلاح کنید). اسکریپت ها به صورت خودکار تکمیل نمی شوند :)

نتیجه

اکتبر یک سال از شروع توسعه محصول ما بود. در این مدت کارهای زیادی انجام دادیم و از برخی جهات به رقبای خود رسیدیم. اما به هر حال، هدف ما ایجاد یک ابزار واقعا راحت برای کار با APIها است. ما هنوز کار زیادی برای انجام داریم، در اینجا یک برنامه تقریبی برای توسعه پروژه ما برای سال آینده وجود دارد: https://testmace.com/roadmap.

بازخورد شما به ما این امکان را می‌دهد که بهتر بتوانیم در میان ویژگی‌های فراوان پیمایش کنیم و حمایت شما به ما قدرت و اطمینان می‌دهد که کار درست را انجام می‌دهیم. این اتفاق می افتد که امروز یک روز مهم برای پروژه ما است - روزی که TestMace در آن منتشر شد ProductHunt. لطفا از پروژه ما حمایت کنید، برای ما بسیار مهم است. علاوه بر این، امروز یک پیشنهاد وسوسه انگیز در صفحه PH ما وجود دارد و محدود است

منبع: www.habr.com

اضافه کردن نظر