الأسئلة الثلاثة داخل اختبار أداء API

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

لماذا الانحدار هو الأجدر بالأتمتة أولًا

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

مقارنة زمنية بسيطة لكل نداء مقابل خط أساس، تُنفَّذ مع كل تغيير، تلتقط الاستعلام الأبطأ عشر مرات في يوم وصوله. وهذا أثمن من تقرير سعة فصلي.

الصحّة هي الأساس

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

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

ما الذي تضيفه التغطية المولَّدة

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

هذا ليس اختبار حِمل ولا بديلًا عنه. إنه الطبقة الرخيصة التي تقع تحته.

الطرفية

npm install -g @testsprite/testsprite-cli
testsprite setup

إن كنت تفضّل ألّا تُثبّت شيئًا، فلوحة التحكّم تفعل الشيء نفسه. وكل ما عدا ذلك ممّا يستطيع سطر الأوامر فعله موجود في مستودع CLI.

الجلسات والحالة والترتيب والتنظيف مشروحة في توثيق اختبار API.

أين يكمن الانحدار عادةً

حين تصبح نقطة نهاية أبطأ بين إصدار وآخر، يكون السبب في الغالب الأعمّ واحدًا من ثلاثة، ومعرفتها تختصر البحث كثيرًا.

استعلام فقد فهرسه، أو اكتسب شرطًا لا يغطّيه الفهرس. هذا هو الأكثر شيوعًا بفارق كبير، وينتج عنه تغيير غير مرئي في فروق الشيفرة لأن SQL تبدو سليمة.

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

شيء نما. استجابة تتضمّن مجموعة كان فيها خمسة عناصر وصار فيها خمسمئة، لأن المنتج نجح. لم يتعطّل شيء، وصارت نقطة النهاية بطيئة للجميع.

الوتيرة

مساران، والاختيار بينهما يتعلّق فعليًا بمن يملك خط الإنتاج. فربط GitHub App من لوحة التحكّم لا يتطلّب أي تغيير في مستودعك إطلاقًا، لأنه يتفاعل مع عملية النشر التي يُصدرها بناؤك أصلًا. أما إضافة خطوة GitHub Actions فتضع الفحص داخل المستودع حيث يُراجَع كبقية البناء.

ما الذي يغطّيه TestSprite من الثلاثة

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

تأتي التغطية من API Discovery إلى جانب مواصفتك، بخطط تمتدّ عبر الفئات الوظيفية والمخطّطية والتفويضية ومعالجة الأخطاء والحالات الحدّية. يُبقي Auto-Authentication الجلسات حيّة طوال التشغيل، وتنقل Dynamic Variables القيم بين النداءات، وتشتقّ Dependency Chains ترتيب التنفيذ ممّا تحتاجه كل حالة وما تُنتجه، ويزيل Auto-Cleanup ما أنشأه التشغيل بالضبط.

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

هل يقيس TestSprite زمن الاستجابة؟

إنه يتحقّق من الصحّة لا من السعة. أما التوقيت والإنتاجية تحت تزامن مستمر فيحتاجان إلى أداة أداء مخصّصة.

ما خط الأساس المعقول؟

أرقامك أنت السابقة على البيئة نفسها. أما الأهداف المطلقة المستعارة من منتجات أخرى فلا تخبرك بالكثير.

هل ينبغي أن تحجب اختبارات الأداء عملية الدمج؟

الانحدار الكبير في مسار حرج، نعم. أما التباين الطفيف، فلا، وإلا أمضيت وقتك في ضبط العتبات بدل الإصدار.

لماذا تتفاوت أرقامنا إلى هذا الحد؟

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

هل تستطيع أداة واحدة تغطية الثلاثة جميعًا؟

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

باختصار

الصحّة، ثم الانحدار، ثم السعة.

اختبار أداء API ثلاثة أسئلة لها ثلاث إجابات. الانحدار هو الجدير بالأتمتة مع كل تغيير، والصحّة هي الأساس الذي يقوم عليه كل ذلك، والسعة هي المكلِفة التي يبدأ بها معظم الفرق.