TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

أهلاً بكم! نريد اليوم أن نقدم منتجنا لعامة تكنولوجيا المعلومات - وهو بيئة تطوير متكاملة (IDE) للعمل مع واجهات برمجة التطبيقات (APIs). TestMace. ربما البعض منكم يعرف بالفعل عنا من المقالات السابقة. ومع ذلك، لم تكن هناك مراجعة شاملة للأداة، لذلك قمنا بمعالجة هذا العيب المؤسف.

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

حافز

أود أن أبدأ بكيفية وصولنا إلى هذه الحياة وقررنا إنشاء أداتنا الخاصة للعمل المتقدم باستخدام واجهة برمجة التطبيقات (API). لنبدأ بقائمة الوظائف التي يجب أن يتمتع بها المنتج، والتي، في رأينا، يمكننا أن نقول أنها "IDE للعمل مع واجهات برمجة التطبيقات":

  • إنشاء وتنفيذ الاستعلامات والبرامج النصية (تسلسل الاستعلامات)
  • كتابة الاختبارات بأنواعها
  • جيل الاختبار
  • العمل مع أوصاف واجهة برمجة التطبيقات، بما في ذلك الاستيراد من تنسيقات مثل Swagger وOpenAPI وWADL وما إلى ذلك.
  • طلبات ساخرة
  • دعم جيد للغة واحدة أو أكثر لكتابة النصوص البرمجية، بما في ذلك التكامل مع المكتبات الشعبية
  • إلخ

يمكن توسيع القائمة لتناسب ذوقك. علاوة على ذلك، من المهم إنشاء ليس فقط IDE نفسه، ولكن أيضًا إنشاء بنية تحتية معينة، مثل المزامنة السحابية، وأدوات سطر الأوامر، وخدمة المراقبة عبر الإنترنت، وما إلى ذلك. في النهاية، فإن اتجاهات السنوات الأخيرة تملي علينا ليس فقط وظائف التطبيق القوية، ولكن أيضًا واجهته الممتعة.

من يحتاج إلى مثل هذه الأداة؟ من الواضح أن كل أولئك الذين يرتبطون بطريقة أو بأخرى بتطوير واجهات برمجة التطبيقات واختبارها هم مطورون ومختبرون =). علاوة على ذلك، إذا كان الأمر في كثير من الأحيان يكفي لتنفيذ استعلامات فردية ونصوص بسيطة، فبالنسبة للمختبرين، تعد هذه إحدى الأدوات الرئيسية، والتي، من بين أمور أخرى، يجب أن تتضمن آلية قوية لكتابة الاختبارات مع القدرة على تشغيلها سي آي.

لذلك، باتباع هذه الإرشادات، بدأنا في إنشاء منتجنا. دعونا نرى ما حققناه في هذه المرحلة.

بداية سريعة

لنبدأ بالتعرف الأول على التطبيق. يمكنك تنزيله على موقعنا على الانترنت. في الوقت الحالي، يتم دعم جميع الأنظمة الأساسية الثلاثة الرئيسية - Windows وLinux وMacOS. تحميل، تثبيت، إطلاق. عند تشغيله لأول مرة، قد تظهر لك النافذة التالية:

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

انقر فوق علامة الزائد الموجودة أعلى منطقة المحتوى لإنشاء طلبك الأول. تبدو علامة تبويب الاستعلام كما يلي:

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

دعونا ننظر إليها بمزيد من التفصيل. واجهة الطلب تشبه إلى حد كبير واجهة عملاء الراحة المشهورين، مما يجعل الترحيل من الأدوات المماثلة أسهل. لنقم بتقديم الطلب الأول إلى عنوان url https://next.json-generator.com/api/json/get/NJv-NT-U8

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

بشكل عام، للوهلة الأولى، لا تثير لوحة الاستجابة أيضًا أي مفاجآت. لكن أود أن ألفت انتباهكم إلى بعض النقاط:

  1. يتم تقديم نص الاستجابة على شكل شجرة، والتي تضيف أولاً محتوى معلومات وتسمح لك ثانيًا بإضافة بعض الميزات المثيرة للاهتمام والتي سنوضحها أدناه
  2. توجد علامة تبويب التأكيدات، والتي تعرض قائمة الاختبارات لطلب معين

كما ترون، يمكن استخدام أداتنا كعميل مريح للراحة. إلا أننا لن نكون هنا لو اقتصرت إمكانياته على إرسال الطلبات فقط. بعد ذلك، سألخص المفاهيم والوظائف الأساسية لـ TestMace.

المفاهيم والميزات الأساسية

العقدة

تنقسم وظيفة TestMace إلى أنواع مختلفة من العقد. في المثال أعلاه، أظهرنا تشغيل عقدة RequestStep. ومع ذلك، تتوفر الآن أيضًا أنواع العقد التالية في التطبيق:

  • خطوة الطلب. هذه هي العقدة التي يمكنك من خلالها إنشاء طلب. يمكن أن تحتوي على عقدة تأكيد واحدة فقط كعنصر فرعي.
  • التأكيد. يتم استخدام العقدة لكتابة الاختبارات. يمكن أن تكون فقط عقدة فرعية لعقدة RequestStep.
  • مجلد. يسمح لك بتجميع عقد المجلد وRequestStep داخل نفسها.
  • مشروع. هذه هي العقدة الجذرية، التي يتم إنشاؤها تلقائيًا عند إنشاء المشروع. وإلا فإنه يكرر وظيفة عقدة المجلد.
  • وصلة. قم بالارتباط بالمجلد أو عقدة RequestStep. يسمح لك بإعادة استخدام الاستعلامات والبرامج النصية.
  • إلخ

توجد العقد في الخدوش (اللوحة الموجودة في أسفل اليسار، والتي تُستخدم لإنشاء استعلامات "لمرة واحدة" بسرعة) وفي المشاريع (اللوحة في أعلى اليسار)، والتي سنتناولها بمزيد من التفصيل.

مشروع

عند تشغيل التطبيق، قد تلاحظ وجود سطر مشروع وحيد في الزاوية اليسرى العليا. هذا هو جذر شجرة المشروع. عند بدء مشروع، يتم إنشاء مشروع مؤقت، ويعتمد المسار إليه على نظام التشغيل الخاص بك. يمكنك في أي وقت نقل المشروع إلى مكان مناسب لك.

الغرض الرئيسي من المشروع هو القدرة على حفظ التطورات في نظام الملفات ومزامنتها بشكل أكبر من خلال أنظمة التحكم في الإصدار، وتشغيل البرامج النصية في CI، ومراجعة التغييرات، وما إلى ذلك.

المتغيرات

المتغيرات هي إحدى الآليات الرئيسية للتطبيق. أولئك منكم الذين يعملون باستخدام أدوات مثل TestMace ربما يكون لديهم بالفعل فكرة عما نتحدث عنه. لذلك، تعد المتغيرات وسيلة لتخزين البيانات المشتركة والتواصل بين العقد. التناظرية، على سبيل المثال، هي متغيرات البيئة في Postman أو Insomnia. لكننا ذهبنا إلى أبعد من ذلك وقمنا بتطوير الموضوع. في TestMace، يمكن تعيين المتغيرات على مستوى العقدة. أي. هناك أيضًا آلية لوراثة المتغيرات من الأسلاف والمتغيرات المتداخلة في الأحفاد. بالإضافة إلى ذلك هناك عدد من المتغيرات المضمنة، تبدأ أسماء المتغيرات المضمنة بها $. هنا بعض منهم:

  • $prevStep - الارتباط بمتغيرات العقدة السابقة
  • $nextStep - الارتباط بمتغيرات العقدة التالية
  • $parent - نفس الشيء ولكن للسلف فقط
  • $response - استجابة من الخادم
  • $env - متغيرات البيئة الحالية
  • $dynamicVar - المتغيرات الديناميكية التي تم إنشاؤها أثناء تنفيذ البرنامج النصي أو الاستعلام

$env - هذه هي في الأساس متغيرات عادية على مستوى عقدة المشروع، ومع ذلك، تتغير مجموعة متغيرات البيئة وفقًا للبيئة المحددة.

يتم الوصول إلى المتغير عبر ${variable_name}
يمكن أن تكون قيمة المتغير متغيرًا آخر، أو حتى تعبيرًا كاملاً. على سبيل المثال، يمكن أن يكون متغير URL تعبيرًا مثل
http://${host}:${port}/${endpoint}.

بشكل منفصل، تجدر الإشارة إلى إمكانية تعيين المتغيرات أثناء تنفيذ البرنامج النصي. على سبيل المثال، غالبًا ما تكون هناك حاجة لحفظ بيانات التفويض (رمز مميز أو الرأس بأكمله) التي جاءت من الخادم بعد تسجيل الدخول الناجح. يتيح لك TestMace حفظ هذه البيانات في متغيرات ديناميكية لأحد الأسلاف. من أجل تجنب الاصطدامات مع المتغيرات "الثابتة" الموجودة بالفعل، يتم وضع المتغيرات الديناميكية في كائن منفصل $dynamicVar.

السيناريوهات

باستخدام كافة الميزات المذكورة أعلاه، يمكنك تشغيل البرامج النصية للاستعلام بأكمله. على سبيل المثال، إنشاء كيان -> الاستعلام عن كيان -> حذف كيان. في هذه الحالة، على سبيل المثال، يمكنك استخدام عقدة المجلد لتجميع عدة عقد RequestStep.

الإكمال التلقائي وتسليط الضوء على التعبير

للعمل المريح مع المتغيرات (وليس فقط) يعد الإكمال التلقائي ضروريًا. وبالطبع، تسليط الضوء على قيمة التعبير لتسهيل توضيح ما يساويه متغير معين. هذا هو الحال بالضبط عندما يكون من الأفضل أن ترى مرة واحدة بدلاً من أن تسمع مائة مرة:

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

تجدر الإشارة إلى أن الإكمال التلقائي لا يتم تنفيذه للمتغيرات فحسب، بل أيضًا، على سبيل المثال، للرؤوس وقيم رؤوس معينة (على سبيل المثال، الإكمال التلقائي لرأس نوع المحتوى) والبروتوكولات وغير ذلك الكثير. يتم تحديث القائمة باستمرار مع نمو التطبيق.

التراجع عن إعادته

يعد التراجع/إعادة التغييرات أمرًا مريحًا للغاية، ولكن لسبب ما لا يتم تنفيذه في كل مكان (وأدوات العمل مع واجهات برمجة التطبيقات ليست استثناءً). لكننا لسنا واحدًا من هؤلاء!) لقد قمنا بتنفيذ التراجع/الإعادة طوال المشروع بأكمله، مما يسمح لك ليس فقط بالتراجع عن تحرير عقدة معينة، ولكن أيضًا إنشائها وحذفها ونقلها وما إلى ذلك. تتطلب العمليات الأكثر أهمية التأكيد.

إنشاء الاختبارات

عقدة التأكيد مسؤولة عن إنشاء الاختبارات. إحدى الميزات الرئيسية هي القدرة على إنشاء اختبارات بدون برمجة باستخدام المحررين المدمجين.

تتكون عقدة التأكيد من مجموعة من التأكيدات. كل تأكيد له نوعه الخاص، في الوقت الحالي هناك عدة أنواع من التأكيدات

  1. مقارنة القيم - ببساطة قم بمقارنة قيمتين. هناك العديد من عوامل المقارنة: يساوي، لا يساوي، أكبر من، أكبر من أو يساوي، أقل من، أقل من أو يساوي.

  2. يحتوي على قيمة - يتحقق من وجود سلسلة فرعية في سلسلة.

  3. XPath - يتحقق من أن المحدد في XML يحتوي على قيمة معينة.

  4. تأكيد JavaScript هو نص جافا سكريبت عشوائي يُرجع صحيحًا عند النجاح وخطأ عند الفشل.

ألاحظ أن التأكيد الأخير فقط يتطلب مهارات برمجية من المستخدم، بينما يتم إنشاء التأكيدات الثلاثة الأخرى باستخدام واجهة رسومية. هنا، على سبيل المثال، هو الشكل الذي يبدو عليه مربع الحوار لإنشاء تأكيد مقارنة القيم:

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

إن الزينة على الكعكة هي الإنشاء السريع للتأكيدات من الردود، فقط انظر إليها!

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

ومع ذلك، فإن مثل هذه التأكيدات لها حدود واضحة، والتي قد ترغب في استخدام تأكيد جافا سكريبت للتغلب عليها. وهنا يوفر TestMace أيضًا بيئة مريحة مع الإكمال التلقائي وإبراز بناء الجملة وحتى محللًا ثابتًا.

وصف واجهة برمجة التطبيقات

لا يسمح لك TestMace باستخدام واجهة برمجة التطبيقات (API) فحسب، بل يسمح لك أيضًا بتوثيقها. علاوة على ذلك، فإن الوصف نفسه له أيضًا هيكل هرمي ويتناسب بشكل عضوي مع بقية المشروع. بالإضافة إلى ذلك، من الممكن حاليًا استيراد أوصاف واجهة برمجة التطبيقات (API) من تنسيقات Swagger 2.0 / OpenAPI 3.0. الوصف نفسه لا يقتصر فقط على الوزن الزائد، ولكنه متكامل بشكل وثيق مع بقية المشروع، على وجه الخصوص، الإكمال التلقائي لعناوين URL، ورؤوس HTTP، ومعلمات الاستعلام، وما إلى ذلك متاح، وفي المستقبل نخطط لإضافة اختبارات من أجل امتثال الاستجابة لوصف واجهة برمجة التطبيقات (API).

عقدة المشاركة

الحالة: ترغب في مشاركة طلب به مشكلة أو حتى نص كامل مع زميل أو ببساطة إرفاقه بخلل. يغطي TestMace هذه الحالة أيضًا: يتيح لك التطبيق إجراء تسلسل لأي عقدة وحتى شجرة فرعية في عنوان URL. انسخ والصق ويمكنك بسهولة نقل الطلب إلى جهاز أو مشروع آخر.

تنسيق تخزين المشروع الذي يمكن قراءته بواسطة الإنسان

في الوقت الحالي، يتم تخزين كل عقدة في ملف منفصل بامتداد yml (كما هو الحال مع عقدة التأكيد)، أو في مجلد باسم العقدة وملف 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) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

تعيين نظام الملفات إلى البنية التالية (يتم عرض التسلسل الهرمي للمجلدات فقط، ولكن الجوهر واضح)

TestMace - بيئة تطوير متكاملة (IDE) قوية للعمل مع واجهات برمجة التطبيقات (APIs).

وهذا يجعل عملية مراجعة المشروع أسهل.

استيراد من ساعي البريد

بعد قراءة كل ما سبق، سيرغب بعض المستخدمين في تجربة (أليس كذلك؟) منتجًا جديدًا أو (ما لا يمزح بحق الجحيم!) استخدامه بالكامل في مشروعهم. ومع ذلك، يمكن إيقاف الهجرة من خلال عدد كبير من التطورات في نفس ساعي البريد. في مثل هذه الحالات، يدعم TestMace استيراد المجموعات من Postman. في الوقت الحالي يتم دعم الواردات بدون اختبارات، ولكن لا نستبعد دعمها مستقبلا.

خطط

آمل أن يكون العديد من أولئك الذين قرأوا حتى هذه اللحظة قد أعجبوا بمنتجنا. ومع ذلك، هذا ليس كل شيء! يجري العمل على المنتج على قدم وساق، وإليك بعض الميزات التي نخطط لإضافتها قريبًا.

المزامنة السحابية

واحدة من الميزات الأكثر طلبا. في الوقت الحالي، نقترح استخدام أنظمة التحكم في الإصدار للمزامنة، والتي من أجلها نجعل التنسيق أكثر ملاءمة لهذا النوع من التخزين. ومع ذلك، فإن سير العمل هذا ليس مناسبًا للجميع، لذلك نخطط لإضافة آلية مزامنة مألوفة للكثيرين من خلال خوادمنا.

CLI

كما ذكرنا أعلاه، لا يمكن للمنتجات على مستوى IDE الاستغناء عن كافة أنواع التكامل مع التطبيقات أو مسارات العمل الموجودة. إن واجهة سطر الأوامر (CLI) هي بالضبط ما هو مطلوب لدمج الاختبارات المكتوبة في TestMace في عملية التكامل المستمر. يجري العمل على واجهة سطر الأوامر (CLI) على قدم وساق، وستطلق الإصدارات المبكرة المشروع بتقرير بسيط لوحدة التحكم. نخطط في المستقبل لإضافة مخرجات التقرير بتنسيق JUnit.

نظام البرنامج المساعد

على الرغم من قوة أداتنا، فإن مجموعة الحالات التي تتطلب حلولاً لا حدود لها. بعد كل شيء، هناك مهام خاصة بمشروع معين. ولهذا السبب نخطط في المستقبل لإضافة SDK لتطوير المكونات الإضافية وسيتمكن كل مطور من إضافة وظائف حسب رغبته.

توسيع نطاق أنواع العقد

لا تغطي مجموعة العقد هذه جميع الحالات التي يطلبها المستخدم. العقد التي من المقرر إضافتها:

  • عقدة البرنامج النصي - تقوم بتحويل البيانات ووضعها باستخدام js وواجهة برمجة التطبيقات المقابلة. باستخدام هذا النوع من العقد، يمكنك القيام بأشياء مثل البرامج النصية للطلب المسبق والطلب اللاحق في Postman.
  • عقدة GraphQL - دعم graphql
  • عقدة التأكيد المخصصة - ستسمح لك بتوسيع مجموعة التأكيدات الموجودة في المشروع
    وبطبيعة الحال، هذه ليست قائمة نهائية، بل سيتم تحديثها باستمرار بسبب تعليقاتك، من بين أمور أخرى.

الأسئلة الشائعة

كيف تختلف عن ساعي البريد؟

  1. مفهوم العقد الذي يسمح لك بتوسيع نطاق وظائف المشروع إلى ما لا نهاية تقريبًا
  2. تنسيق المشروع الذي يمكن قراءته بواسطة الإنسان مع حفظه في نظام الملفات، مما يبسط العمل باستخدام أنظمة التحكم في الإصدار
  3. القدرة على إنشاء اختبارات بدون برمجة ودعم JS أكثر تقدمًا في محرر الاختبار (الإكمال التلقائي، محلل ثابت)
  4. الإكمال التلقائي المتقدم وإبراز القيمة الحالية للمتغيرات

هل هذا منتج مفتوح المصدر؟

لا، في الوقت الحالي المصادر مغلقة، لكن مستقبلاً ندرس إمكانية فتح المصادر

ماذا تعيش منه؟)

إلى جانب النسخة المجانية، نخطط لإصدار نسخة مدفوعة من المنتج. وسيشمل في المقام الأول الأشياء التي تتطلب جانب الخادم، على سبيل المثال، المزامنة.

اختتام

مشروعنا يتحرك بسرعة فائقة نحو إصدار مستقر. ومع ذلك، يمكن استخدام المنتج بالفعل، والتعليقات الإيجابية من مستخدمينا الأوائل دليل على ذلك. نحن نجمع التعليقات بنشاط، لأنه بدون التعاون الوثيق مع المجتمع، سيكون من المستحيل بناء أداة جيدة. تستطيع ان تجدنا هنا:

الموقع الرسمي

تیلیجرام

فترة ركود

فيسبوك

تعقب القضايا

ونحن نتطلع إلى رغباتكم واقتراحاتكم!

المصدر: www.habr.com

إضافة تعليق