مطابقة أدوات اختبار أداء API بالأسئلة الثلاثة
السعة → مولّدات الحِمل
مجموعات الخيوط، والتصاعد التدريجي للحِمل، والعُمّال الموزّعون.
تُشغَّل قبل الإصدارات وبعد تغييرات البنية. ومكلفة إن شُغّلت باستمرار.
التراجع → مقارنة التوقيتات
تحتاج إلى خط أساس وفارقٍ للمقارنة، لا إلى تزامن عالٍ.
وهي أرخص الثلاث وأكثرها غيابًا.
الصحّة → التحقق الوظيفي
تأكيدات على أجسام الاستجابات، بما في ذلك عند المدخلات الشاذّة.
وهي الأرضية التي يقوم عليها النوعان الآخران.
الفئة التي تفتقدها معظم الفرق
كل فريق تقريبًا يقول إنه يجري اختبارات أداء لديه مولّد حِمل. وقليل جدًا منها لديه ما يراقب التراجع عند كل تغيير. وهذا ترتيب مقلوب من حيث التكلفة والعائد معًا.
نادرًا ما تتغير السعة بين إصدار وآخر، ولذلك لا يخبرك اختبارها المستمر بالكثير. أما تراجع الأداء فيأتي عبر طلب سحب واحد في كل مرة، وحين يلتقطه تشغيل سعة ربع سنوي تكون أمام ستة أشهر من الـ commits دون أن تعرف أيها أضاف الاستعلام غير المفهرس.
ما الذي تبحث عنه في كل فئة
مولّدات الحِمل: هل يمكنك التحقق من أجسام الاستجابات، ولو على عيّنة منها. معظمها يتيح ذلك وقليل من الفرق يفعّله، وهكذا يخرج اختبار الحِمل بنتيجة نظيفة بينما كل استجابة فارغة.
أدوات رصد التراجع: هل تقارن بسجلّك التاريخي أنت لا بعتبة مطلقة. فالأهداف المستعارة لا تخبرك بشيء عن منتجك.
التحقق الوظيفي: هل يشمل الحالات الحدّية. فالاستعلام الذي يتدهور أداؤه مع حجم صفحة كبير مشكلة بنيوية ستجدها هنا قبل أن يكشفها اختبار السعة بوقت طويل.
قراءة المئين بأمانة
تُبلِغ أدوات الأداء عن المئينات، وكثيرًا ما تُقرأ قراءة خاطئة تُخفي المشكلة نفسها التي تبحث عنها.
المئين p50 الذي يبدو جيدًا يخبرك عن الطلب الوسيط ولا يقول شيئًا عن تجربة من لم يحالفه الحظ. وp99 الذي يبدو جيدًا على endpoint يُستدعى ألف مرة في الساعة يعني مع ذلك عشرة طلبات بطيئة في الساعة، أي عشرة مستخدمين مستائين. أما المتوسط عبر جميع الـ endpoints فيكاد يكون بلا معنى، لأنه يخلط فحص السلامة بتوليد تقرير.
عادتان تُصلحان معظم ذلك. انظر إلى المئينات لكل endpoint لا مجمّعة، وانظر إلى p95 وp99 لا إلى المتوسط. والـ endpoints المهمة ستكون عادةً قائمة قصيرة، ومتابعة تلك الأرقام الأربعة عبر الزمن أنفع من أي لوحة معلومات تعرض كل شيء دفعة واحدة.
الترتيب الذي يوفّر المال
الصحّة، ثم التراجع، ثم السعة. فاختبار حِمل على endpoint يعيد نتيجة خاطئة ينتج رقمًا واثقًا لا يدل على شيء، وهذه أشيع طريقة يهدر بها برنامج الأداء ربعه الأول.
الطرفية
npm install -g @testsprite/testsprite-cli
testsprite setup
الإعداد نفسه متاح في لوحة تحكم TestSprite إن كنت تفضّل عدم تثبيت أي شيء محليًا. وبقية واجهة CLI موجودة في مستودع CLI.
الجلسات والقيم الملتقَطة والترتيب والتنظيف مشروحة في توثيق اختبار API.
مساران، والاختيار بينهما يتعلق حقًا بمن يملك خط الإنتاج. فربط GitHub App من لوحة التحكم لا يتطلب أي تغيير في مستودعك على الإطلاق، لأنه يتفاعل مع النشر الذي يُصدره بناؤك أصلًا. أما إضافة خطوة GitHub Actions فتضع الفحص داخل المستودع حيث يُراجَع كسائر عمليات البناء.
ما الذي يضيفه TestSprite
عمود الصحّة، وهو الأرضية التي يقوم عليها العمودان الآخران. فهو يتحقق من أجسام الاستجابات لا من رموز الحالة، ويغطي الحالات الحدّية التي تكشف البطء البنيوي، ويعمل مع كل طلب سحب.
تُولَّد التغطية من جولة اكتشاف إضافةً إلى مواصفاتك. تُبقي Auto-Authentication الجلسات حيّة طوال التشغيل، وتنقل Dynamic Variables القيم بين الاستدعاءات، وتستنتج Dependency Chains ترتيب التنفيذ، ويزيل Auto-Cleanup ما أنشأه التشغيل بالضبط.
والقيمة في ذلك أن أرقام السعة لديك تبدأ في وصف خدمة تعمل فعلًا. فالاستعلام الذي يتدهور مع حجم صفحة كبير يظهر هنا بجزء يسير من تكلفة اكتشافه في تشغيل حِمل، وendpoint يعيد نتائج فارغة بصمت يتوقف عن تسجيل نتائج جيدة في الإنتاجية.
هل ينتمي TestSprite إلى هذه الفئة؟
في عمود الصحّة. فهو يتحقق من السلوك بما في ذلك الحالات الحدّية، ولا يولّد حِملًا متواصلًا.
هل يمكن لأداة واحدة أن تغطي الثلاثة؟
بعضها يدّعي ذلك. وعمليًا يتجاذب توليد الحِمل والتحقق العميق من أجسام الاستجابات، لأن التأكيدات تكلّف المولّد جزءًا من إنتاجيته.
ما العتبة المعقولة للتراجع؟
حدّدها من تباينك أنت. فإن كانت أرقامك تتحرك بنسبة عشرة بالمئة بين تشغيل وآخر في بيئة هادئة، فعتبة خمسة بالمئة ليست إلا ضجيجًا.
هل نحتاج إلى توليد حِمل موزّع؟
فقط حين يصبح مولّد واحد عنق الزجاجة. كثير من الفرق تشتري سعة موزّعة لا تُشبِعها أبدًا.
أين يُشغَّل كل منها؟
الصحّة والتراجع مع كل طلب سحب. والسعة قبل الإصدارات وبعد تغييرات البنية.
ثلاثة أسئلة، وثلاث أدوات.
تنقسم أدوات اختبار أداء API إلى مولّدات حِمل، ومقارنة التراجع، والتحقق الوظيفي. ومعظم الفرق لديها الأولى وتفتقر إلى الثانية، والصحّة هي الأرضية التي يقوم عليها النوعان.