TestMace - یک IDE قدرتمند برای کار با API ها

سلام به همه! امروز می خواهیم محصول خود را به عموم مردم فناوری اطلاعات ارائه کنیم - یک IDE برای کار با API ها TestMace. شاید برخی از شما قبلاً در مورد ما بدانید مقالات قبلی. با این حال، هیچ بررسی جامعی در مورد این ابزار صورت نگرفته است، بنابراین ما این نقص تاسف بار را برطرف می کنیم.

TestMace - یک IDE قدرتمند برای کار با API ها

انگیزه

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

  • ایجاد و اجرای پرس و جوها و اسکریپت ها (توالی کوئری ها)
  • نوشتن انواع تست
  • تولید تست
  • کار با توضیحات API، از جمله وارد کردن از فرمت هایی مانند Swagger، OpenAPI، WADL و غیره.
  • درخواست های تمسخر آمیز
  • پشتیبانی خوب از یک یا چند زبان برای نوشتن اسکریپت، از جمله ادغام با کتابخانه های محبوب
  • غیره

لیست را می توان با توجه به سلیقه شما گسترش داد. علاوه بر این، مهم است که نه تنها خود IDE، بلکه یک زیرساخت خاص مانند همگام سازی ابری، ابزارهای خط فرمان، سرویس نظارت آنلاین و غیره ایجاد کنید. در پایان، روندهای سال های اخیر نه تنها عملکرد قدرتمند برنامه، بلکه رابط کاربری دلپذیر آن را نیز به ما دیکته می کند.

چه کسی به چنین ابزاری نیاز دارد؟ بدیهی است که همه کسانی که حداقل به نحوی با توسعه و آزمایش API ها در ارتباط هستند، توسعه دهندگان و آزمایش کنندگان هستند =). علاوه بر این، اگر برای اولی اغلب اجرای پرس و جوهای منفرد و اسکریپت های ساده کافی است، برای آزمایش کنندگان این یکی از ابزارهای اصلی است که، از جمله موارد دیگر، باید مکانیزم قدرتمندی برای نوشتن تست ها با قابلیت اجرای آنها در CI.

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

شروع سریع

بیایید با اولین آشنایی با اپلیکیشن شروع کنیم. می توانید آن را دانلود کنید در وب سایت ما. در حال حاضر، هر 3 پلتفرم اصلی - Windows، Linux، MacOS پشتیبانی می شوند. دانلود، نصب، راه اندازی. هنگامی که آن را برای اولین بار راه اندازی می کنید، ممکن است پنجره زیر را مشاهده کنید:

TestMace - یک IDE قدرتمند برای کار با API ها

برای ایجاد اولین درخواست خود، روی علامت مثبت در بالای قسمت محتوا کلیک کنید. تب query به شکل زیر است:

TestMace - یک IDE قدرتمند برای کار با API ها

بیایید با جزئیات بیشتری به آن نگاه کنیم. رابط درخواست بسیار شبیه به رابط مشتریان استراحت محبوب است که مهاجرت از ابزارهای مشابه را آسان تر می کند. بیایید اولین درخواست را به آدرس اینترنتی ارسال کنیم https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - یک IDE قدرتمند برای کار با API ها

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

  1. بدنه پاسخ به شکل یک درخت نشان داده شده است که اولاً محتوای اطلاعاتی را اضافه می کند و در مرحله دوم به شما امکان می دهد ویژگی های جالبی را اضافه کنید که در زیر
  2. یک برگه Assertions وجود دارد که لیستی از آزمایشات را برای یک درخواست معین نمایش می دهد

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

مفاهیم و ویژگی های اساسی

گره

عملکرد TestMace به انواع مختلفی از گره ها تقسیم می شود. در مثال بالا، عملکرد گره RequestStep را نشان دادیم. با این حال، انواع گره های زیر در حال حاضر نیز در برنامه موجود هستند:

  • RequestStep. این گره ای است که از طریق آن می توانید درخواست ایجاد کنید. فقط می تواند یک گره Assertion را به عنوان عنصر فرزند داشته باشد.
  • ادعا. گره برای نوشتن تست ها استفاده می شود. فقط می تواند یک گره فرزند از گره RequestStep باشد.
  • پوشه. به شما امکان می دهد گره های Folder و RequestStep را در درون خود گروه بندی کنید.
  • پروژه. این گره ریشه است که به طور خودکار هنگام ایجاد پروژه ایجاد می شود. در غیر این صورت، عملکرد گره Folder را تکرار می کند.
  • ارتباط دادن. به گره Folder یا RequestStep پیوند دهید. به شما امکان استفاده مجدد از پرس و جوها و اسکریپت ها را می دهد.
  • غیره

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

پروژه

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

هدف اصلی این پروژه امکان ذخیره پیشرفت ها در سیستم فایل و همگام سازی بیشتر آنها از طریق سیستم های کنترل نسخه، اجرای اسکریپت ها در CI، بررسی تغییرات و غیره است.

متغیرها

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

  • $prevStep - پیوند به متغیرهای گره قبلی
  • $nextStep - پیوند به متغیرهای گره بعدی
  • $parent - همان چیزی است، اما فقط برای جد
  • $response - پاسخ از سرور
  • $env - متغیرهای محیط فعلی
  • $dynamicVar - متغیرهای پویا ایجاد شده در طول اجرای اسکریپت یا پرس و جو

$env - اینها اساساً متغیرهای سطح گره پروژه معمولی هستند، با این حال، مجموعه متغیرهای محیط بسته به محیط انتخاب شده تغییر می کند.

متغیر از طریق قابل دسترسی است ${variable_name}
مقدار یک متغیر می تواند متغیر دیگری یا حتی یک عبارت کامل باشد. به عنوان مثال، متغیر url می تواند عبارتی مانند باشد
http://${host}:${port}/${endpoint}.

به طور جداگانه، شایان ذکر است که امکان تخصیص متغیرها در طول اجرای اسکریپت وجود دارد. به عنوان مثال، اغلب نیاز به ذخیره داده های مجوز (یک نشانه یا کل هدر) وجود دارد که پس از ورود موفقیت آمیز از سرور دریافت شده است. TestMace به شما امکان می دهد چنین داده هایی را در متغیرهای پویا یکی از اجداد ذخیره کنید. برای جلوگیری از برخورد با متغیرهای "استاتیک" موجود، متغیرهای پویا در یک شی جداگانه قرار می گیرند. $dynamicVar.

سناریوها

با استفاده از تمام ویژگی های فوق، می توانید کل اسکریپت های پرس و جو را اجرا کنید. به عنوان مثال، ایجاد یک موجودیت -> پرس و جو از یک موجود -> حذف یک موجودیت. در این مورد، برای مثال، می توانید از گره Folder برای گروه بندی چندین گره RequestStep استفاده کنید.

تکمیل خودکار و برجسته سازی بیان

برای کار راحت با متغیرها (و نه تنها) تکمیل خودکار ضروری است. و البته، برجسته کردن مقدار یک عبارت برای آسان‌تر و راحت‌تر کردن توضیح اینکه یک متغیر خاص با چه چیزی برابر است. این دقیقاً زمانی است که یک بار دیدن بهتر از صد بار شنیدن است:

TestMace - یک IDE قدرتمند برای کار با API ها

شایان ذکر است که تکمیل خودکار نه تنها برای متغیرها، بلکه به عنوان مثال برای هدرها، مقادیر هدرهای خاص (به عنوان مثال، تکمیل خودکار برای هدر Content-Type)، پروتکل ها و موارد دیگر نیز اجرا می شود. لیست به طور مداوم با رشد برنامه به روز می شود.

لغو/دوباره

لغو/انجام مجدد تغییرات یک چیز بسیار راحت است، اما به دلایلی در همه جا پیاده سازی نمی شود (و ابزارهای کار با API ها از این قاعده مستثنی نیستند). اما ما یکی از آن‌ها نیستیم!) ما در کل پروژه undo/redo را پیاده‌سازی کرده‌ایم که به شما امکان می‌دهد نه تنها ویرایش یک گره خاص، بلکه ایجاد، حذف، حرکت و غیره آن را لغو کنید. حیاتی ترین عملیات نیاز به تایید دارند.

ایجاد تست

گره Assertion وظیفه ایجاد تست ها را بر عهده دارد. یکی از ویژگی های اصلی امکان ایجاد تست بدون برنامه نویسی با استفاده از ویرایشگرهای داخلی است.

یک گره Assertion از مجموعه ای از اظهارات تشکیل شده است. هر ادعایی نوع خاص خود را دارد؛ در حال حاضر چندین نوع ادعا وجود دارد

  1. مقایسه مقادیر - به سادگی 2 مقدار را مقایسه می کند. چندین عملگر مقایسه وجود دارد: مساوی، مساوی نیست، بزرگتر، بزرگتر یا مساوی، کمتر، کمتر یا مساوی.

  2. حاوی مقدار - وجود یک رشته فرعی را در یک رشته بررسی می کند.

  3. XPath - بررسی می کند که انتخابگر در XML حاوی مقدار خاصی باشد.

  4. ادعای جاوا اسکریپت یک اسکریپت جاوا اسکریپت دلخواه است که در صورت موفقیت true و در صورت شکست false را برمی گرداند.

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

TestMace - یک IDE قدرتمند برای کار با API ها

میخ روی کیک ایجاد سریع ادعاها از پاسخ ها است، فقط به آن نگاه کنید!

TestMace - یک IDE قدرتمند برای کار با API ها

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

توضیحات API

TestMace به شما امکان می دهد نه تنها از API استفاده کنید، بلکه آن را نیز مستند کنید. علاوه بر این، خود توضیحات نیز ساختاری سلسله مراتبی دارد و به طور ارگانیک با بقیه پروژه مطابقت دارد. علاوه بر این، در حال حاضر امکان وارد کردن توضیحات API از فرمت های Swagger 2.0 / OpenAPI 3.0 وجود دارد. توضیحات به خودی خود صرفاً سنگین نیست، بلکه از نزدیک با بقیه پروژه ادغام شده است، به ویژه، تکمیل خودکار URL ها، هدرهای HTTP، پارامترهای پرس و جو و غیره در دسترس است، و در آینده قصد داریم آزمایش هایی را اضافه کنیم. برای انطباق پاسخ با توضیحات API.

گره اشتراک گذاری

مورد: شما می خواهید یک درخواست مشکل دار یا حتی یک اسکریپت کامل را با یک همکار به اشتراک بگذارید یا به سادگی آن را به یک باگ متصل کنید. TestMace این مورد را نیز پوشش می دهد: برنامه به شما امکان می دهد هر گره و حتی یک زیردرخت را در یک URL سریال کنید. کپی پیست کنید و به راحتی می توانید درخواست را به ماشین یا پروژه دیگری منتقل کنید.

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

در حال حاضر، هر گره در یک فایل جداگانه با پسوند yml (مانند گره Assertion) یا در پوشه ای با نام گره و فایل index.yml در آن ذخیره می شود.
به عنوان مثال، فایل درخواستی که در بررسی بالا ایجاد کردیم به این صورت است:

index.yml

children: []
variables: {}
type: RequestStep
assignVariables: []
requestData:
  request:
    method: GET
    url: 'https://next.json-generator.com/api/json/get/NJv-NT-U8'
  headers: []
  disabledInheritedHeaders: []
  params: []
  body:
    type: Json
    jsonBody: ''
    xmlBody: ''
    textBody: ''
    formData: []
    file: ''
    formURLEncoded: []
  strictSSL: Inherit
authData:
  type: inherit
name: Scratch 1

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

سلسله مراتب پوشه ها در سیستم فایل به طور کامل سلسله مراتب گره ها را در پروژه تکرار می کند. به عنوان مثال، اسکریپتی مانند:

TestMace - یک IDE قدرتمند برای کار با API ها

سیستم فایل را به ساختار زیر نگاشت می کند (فقط سلسله مراتب پوشه نشان داده شده است، اما ماهیت آن واضح است)

TestMace - یک IDE قدرتمند برای کار با API ها

این امر روند بررسی پروژه را آسان تر می کند.

واردات از پستچی

پس از خواندن تمام موارد بالا، برخی از کاربران می خواهند (درسته؟) یک محصول جدید را امتحان کنند یا (چه جهنمی نیست!) به طور کامل از آن در پروژه خود استفاده کنند. با این حال، مهاجرت را می توان با تعداد زیادی از پیشرفت ها در همان پستچی متوقف کرد. برای چنین مواردی، TestMace از وارد کردن مجموعه ها از Postman پشتیبانی می کند. در حال حاضر از واردات بدون آزمایش حمایت می شود، اما حمایت از آن را در آینده رد نمی کنیم.

طرح

امیدوارم بسیاری از کسانی که تا این لحظه مطالعه کرده اند، محصول ما را دوست داشته باشند. با این حال، این همه چیز نیست! کار بر روی محصول به سرعت در حال انجام است و در اینجا برخی از ویژگی هایی است که قصد داریم به زودی اضافه کنیم.

Облачная همزمانی

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

CLI

همانطور که در بالا ذکر شد، محصولات در سطح IDE نمی توانند بدون همه نوع ادغام با برنامه های کاربردی یا گردش کار موجود انجام دهند. CLI دقیقاً همان چیزی است که برای ادغام تست های نوشته شده در TestMace در فرآیند یکپارچه سازی مداوم مورد نیاز است. کار بر روی CLI در حال انجام است؛ نسخه‌های اولیه پروژه را با یک گزارش کنسول ساده راه‌اندازی می‌کنند. در آینده قصد داریم خروجی گزارش را با فرمت JUnit اضافه کنیم.

سیستم پلاگین

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

گسترش دامنه انواع گره ها

این مجموعه از گره ها همه موارد مورد نیاز کاربر را پوشش نمی دهد. گره هایی که قرار است اضافه شوند:

  • گره اسکریپت - داده ها را با استفاده از js و API مربوطه تبدیل و قرار می دهد. با استفاده از این نوع گره می توانید کارهایی مانند اسکریپت های پیش درخواست و پس از درخواست را در Postman انجام دهید.
  • گره GraphQL - پشتیبانی از graphql
  • گره ادعای سفارشی - به شما امکان می دهد مجموعه ادعاهای موجود در پروژه را گسترش دهید
    طبیعتاً، این فهرست نهایی نیست، به دلیل بازخورد شما، از جمله، به طور مداوم به روز می شود.

پاسخ به برخی سوالات مهم

چه تفاوتی با پستچی دارید؟

  1. مفهوم گره ها، که به شما امکان می دهد تقریباً به طور بی پایان عملکرد پروژه را مقیاس کنید
  2. قالب پروژه قابل خواندن توسط انسان با ذخیره آن در یک سیستم فایل، که کار را با استفاده از سیستم های کنترل نسخه ساده می کند
  3. امکان ایجاد تست بدون برنامه نویسی و پشتیبانی پیشرفته تر js در ویرایشگر تست (تکمیل خودکار، تحلیلگر استاتیک)
  4. تکمیل خودکار پیشرفته و برجسته کردن مقدار فعلی متغیرها

آیا این محصول منبع باز است؟

خیر، در حال حاضر منابع بسته هستند، اما در آینده در حال بررسی امکان باز شدن منابع هستیم

با چه چیزی زندگی می کنید؟)

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

نتیجه

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

وب سایت رسمی

تلگرام

شل

فیس بوک

ردیاب مسائل

ما مشتاقانه منتظر خواسته ها و پیشنهادات شما هستیم!

منبع: www.habr.com

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