لماذا TestMace أفضل من Postman

لماذا TestMace أفضل من Postman

مرحبا بالجميع، هنا تذهب TestMace! ربما يعرف الكثير من الناس عنا لنا السابق مقالات. بالنسبة لأولئك الذين انضموا للتو: نقوم بتطوير IDE للعمل مع TestMace API. السؤال الأكثر شيوعًا عند مقارنة TestMace بالمنتجات المنافسة هو "كيف تختلف عن Postman؟" قررنا أن الوقت قد حان لتقديم إجابة مفصلة على هذا السؤال. أدناه حددنا مزايانا ساعي البريد.

الانقسام إلى العقد

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

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

شكل مشروع قابل للقراءة من قبل الإنسان

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

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

ماذا يعطي هذا للمستخدم؟ يتيح لك ذلك تغيير سير عمل الفريق بمرونة شديدة، باستخدام أساليب مألوفة. على سبيل المثال، يمكن للمطورين تخزين مشروع في نفس المستودع مثل الواجهة الخلفية. في الفروع، بالإضافة إلى تغيير قاعدة التعليمات البرمجية نفسها، يمكن للمطور تصحيح البرامج النصية والاختبارات الخاصة بالاستعلام الحالي. بعد إجراء التغييرات على المستودع (git، svn، mercurial - كل ما تفضله)، 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، هذا هو JavaScript). يتمتع هذا النهج بالعديد من المزايا - مرونة غير محدودة تقريبًا، وتوافر الحلول الجاهزة، وما إلى ذلك.

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

لماذا TestMace أفضل من Postman

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

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

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

لماذا TestMace أفضل من Postman

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

اختلافات أخرى

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

الميزات الموجودة بالفعل في الطريق

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

وظائف

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

{{$randomEmail}}

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

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

${faker.internet.email()}

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

ماذا لو أردنا حساب تجزئة السلسلة؟ بسهولة!

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

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

استخدام جافا سكريبت في التعبيرات

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

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

وكل هذا بدون نصوص، مباشرة في حقول الإدخال!

أما ساعي البريد، هنا يمكنك استخدام المتغيرات فقط، وعندما تحاول كتابة أدنى تعبير، يلعن المدقق ويرفض حسابه.

لماذا TestMace أفضل من Postman

الإكمال التلقائي المتقدم

يحتوي TestMace حاليًا على إكمال تلقائي قياسي يبدو كما يلي:

لماذا TestMace أفضل من Postman

هنا، بالإضافة إلى سطر الإكمال التلقائي، يشار إلى ما ينتمي إليه هذا السطر. تعمل هذه الآلية فقط في التعبيرات المحاطة بين قوسين ${}.

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

أولاً، يعمل الإكمال التلقائي حتى في التعبيرات (حيثما أمكن ذلك). هذا هو ما يبدو:

لماذا TestMace أفضل من Postman

وثانيًا، أصبح الإكمال التلقائي متاحًا الآن في البرامج النصية. نلقي نظرة على كيف يعمل!

لماذا TestMace أفضل من Postman

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

اختتام

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

ستسمح لنا تعليقاتك بالتنقل بشكل أفضل بين وفرة الميزات، ويمنحنا دعمك القوة والثقة بأننا نفعل الشيء الصحيح. لقد حدث أن اليوم هو يوم مهم لمشروعنا - وهو اليوم الذي تم فيه نشر TestMace ProductHunt. يرجى دعم مشروعنا، فهو مهم جدًا بالنسبة لنا. علاوة على ذلك، هناك عرض مغري على صفحتنا PH اليوم، وهو محدود

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

إضافة تعليق