اختبار الذروة المفاجئة

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

مثال: يرسل متجر إلكتروني إشعاراً فورياً (Push Notification) عن تخفيضات خاطفة في الساعة ⁦20:00⁩، وخلال دقيقة واحدة تقفز الحركة على واجهة الدفع البرمجية (Checkout API) من ⁦100⁩ إلى ⁦600⁩ طلب في الثانية. يعيد اختبار الذروة المفاجئة إنتاج هذه القفزة في بيئة بحجم بيئة الإنتاج، ويجيب عن ثلاثة أسئلة: ماذا يرى المستخدمون في الدقائق الأولى؟ وما سرعة وصول السعة الإضافية؟ وكم يستغرق التعافي؟

لماذا يهم

اختبار الإجهاد، كما في الدرس السابق، يدفع الحمل إلى ما بعد الذروة المتوقعة ليجد الحد الأقصى. أما اختبار الذروة المفاجئة فيسأل سؤالاً آخر: قد تكون الذروة ضمن ما يتحمله النظام بعد أن يتوسع، لكنها تصل أسرع مما يستطيع النظام أن يتفاعل. فالمثيلات (Instances) الجديدة تحتاج دقائق لتبدأ، وذاكرة التخزين المؤقت باردة، ومجمّعات الاتصالات (Connection Pools) مُعدّة للحركة المعتادة، وكل طلب لا يمكن خدمته بعد ينتظر في قائمة انتظار (Queue) أو يفشل.

هكذا تتعطل الأنظمة في أكثر أيامها ازدحاماً، في التخفيضات أو طرح التذاكر أو آخر موعد للتسجيل، حين تكون خسارة الطلبات والمدفوعات المكررة بسبب إعادة المحاولة في أعلى كلفتها. وبالنسبة إلى المختبِر، يحوّل هذا الاختبار عبارة «لدينا توسع تلقائي» إلى دليل: كم يطول تأخر التوسع، وماذا يرى المستخدمون خلاله، وهل يعود النظام فعلاً إلى وضعه الطبيعي.

شكل ملف الذروة المفاجئة

لملف الذروة (Spike Profile) خمس مراحل: خط أساس عند الحمل المعتاد، ثم صعود يُقاس بالثواني لا بالدقائق، ثم ثبات قصير عند مستوى الذروة، ثم هبوط سريع، ثم فترة تعافٍ عند خط الأساس. وفترة التعافي جزء من الاختبار، لأنها تكشف هل يعود النظام إلى وضعه الطبيعي. وخذ مستوى الذروة ومدتها من الحدث الحقيقي، مثل الجمهور المتوقع لحملة أو تخفيضات العام الماضي، لا من رقم مستدير. ويرسم دليل أنواع الاختبار في Grafana k6 الذروة دون ثبات أو بثبات قصير جداً؛ فإذا كان الاندفاع الحقيقي يدوم دقائق، كما في التخفيضات الخاطفة، فأبقِ الذروة طوال تلك المدة.

قُد الحمل بمعدل الوصول (Arrival Rate)، لا بعدد ثابت من المستخدمين الافتراضيين (Virtual Users). ففي هذا النموذج المغلق ينتظر كل مستخدم افتراضي استجابته قبل أن يرسل الطلب التالي، فإذا تباطأ النظام أرسلت الأداة طلبات أقل وأخفت الاندفاع نفسه الذي تريد اختباره. ويستخدم السكربت أدناه منفّذاً (Executor) يعتمد معدل الوصول؛ وإذا نفد من k6 المستخدمون الافتراضيون اللازمون للحفاظ على المعدل أبلغ عن dropped_iterations، أي أن الأداة هي التي قصّرت لا النظام.

import http from 'k6/http';

export const options = {
  scenarios: {
    flash_sale_spike: {
      executor: 'ramping-arrival-rate',
      startRate: 100,          // requests per second (one request per iteration)
      timeUnit: '1s',
      preAllocatedVUs: 500,
      maxVUs: 6000,            // enough to keep the rate when responses slow down
      stages: [
        { duration: '5m', target: 100 },   // 1 baseline
        { duration: '30s', target: 600 },  // 2 spike up
        { duration: '5m', target: 600 },   // 3 hold
        { duration: '30s', target: 100 },  // 4 drop
        { duration: '10m', target: 100 },  // 5 recovery
      ],
    },
  },
};

export default function () {
  http.get('https://staging.example.com/api/checkout/summary');
}

جرّبها: مولّد بيانات اختبار الأداء جرّبها: مولّد اختبارات الطلبات المتزامنة

التوسع التلقائي وتأخر التوسع

يضيف التوسع التلقائي (Autoscaling) مثيلات عندما يتجاوز مقياسٌ ما عتبة محددة، وكل خطوة في ذلك تستغرق وقتاً: يُحسب متوسط المقياس على نافذة زمنية، وتُقيَّم القاعدة وفق جدول زمني، ثم يجب أن يُقلع المثيل الجديد ويُهيّأ ويجتاز فحص السلامة (Health Check) قبل أن يرسل إليه موازن الحمل (Load Balancer) أي حركة. مجموع ذلك هو تأخر التوسع (Scaling Lag)، وحتى ينتهي تحمل المثيلات الموجودة الاندفاع كله. لذلك يقيس اختبار الذروة المفاجئة سلسلة التوسع كاملة، لا عدد المثيلات النهائي فقط:

  • الزمن من بداية الذروة إلى قرار التوسع، ومن القرار إلى بدء المثيلات الجديدة في خدمة الحركة.
  • الحد الأقصى لعدد المثيلات، وهل تبلغه الذروة.
  • ما لا يتوسع مع التطبيق: اتصالات قاعدة البيانات (فكل مثيل جديد يفتح مجمّعه الخاص)، وحدود معدل الطلبات لدى الأطراف الخارجية، وخادم تخزين مؤقت وحيد.
  • التقليص (Scale-in) بعد ذلك: مدة فترة التهدئة (Cooldown)، وهل يتذبذب عدد المثيلات صعوداً وهبوطاً حين يحوم الحمل قرب العتبة.

قوائم الانتظار والحمل الزائد والتعافي

حين تصل الطلبات أسرع مما تُخدم، ينتظر الفرق في قائمة انتظار: في موازن الحمل أو خادم الويب أو مجمّع الاتصالات أو وسيط الرسائل (Message Broker). فعند ⁦600⁩ طلب في الثانية مقابل سعة ⁦400⁩، تزيد الطلبات المتراكمة (Backlog) بمقدار ⁦200⁩ كل ثانية؛ وبعد ⁦30⁩ ثانية ينتظر ⁦6,000⁩ طلب، وينتظر كل طلب جديد نحو ⁦15⁩ ثانية خلفها. وحين ينتهي الاندفاع لا تُصرَّف الطلبات المتراكمة إلا بقدر السعة الفائضة، وزمن التصريف هذا جزء من التعافي.

النظام الذي يتعامل جيداً مع الحمل الزائد يُبقي قوائم انتظاره قصيرة ويرفض ما لا يستطيع خدمته في الوقت المناسب، بالرمز 503 Service Unavailable الذي يعرّفه RFC 9110 لحالة الحمل الزائد المؤقت ويمكن أن يرافقه الترويسة Retry-After، أو بالرمز 429 Too Many Requests (المعرَّف في RFC 6585) عند تجاوز حدّ عميل بعينه، بدلاً من ترك الطلبات تنتظر حتى تنتهي مهلة العملاء. وإعادة المحاولة تزيد الذروة سوءاً: فالعملاء الذين يعيدون المحاولة فوراً يضاعفون الحمل، لذا تأكد من أنهم يستخدمون التراجع الأسي مع تأخير عشوائي (Exponential Backoff with Jitter)، وحاكِ هذا السلوك في السكربت.

  • في كل دقيقة من الذروة: معدل الأخطاء ونوعها (فالرمز 503 السريع استجابة مصممة، أما مهلات 504 وأخطاء 500 فلا)، وزمن الاستجابة عند p95 وp99، وهل يظل الدفع يعمل بينما تُرفض الطلبات الأقل أهمية.
  • قوائم الرسائل: أقصى عمق وزمن التصريف، دون فقدان أي رسالة أو معالجتها مرتين، ودون طلبات شراء مكررة حين يعيد عميل إرسال طلب كان قد نجح فعلاً.
  • التعافي: الزمن حتى يعود زمن الاستجابة والأخطاء وعمق قوائم الانتظار وعدد المثيلات إلى خط الأساس، دون أن يبقى شيء عالقاً.

جرّبها: محاكي رموز حالة API جرّبها: مرجع رموز حالة HTTP

مثال تطبيقي: تخفيضات خاطفة في الساعة ⁦20:00⁩

بيئة ما قبل الإنتاج (Staging) مماثلة لبيئة الإنتاج في الحجم: ⁦4⁩ مثيلات يخدم كل منها نحو ⁦100⁩ طلب في الثانية، خلف بوابة (Gateway) تنهي مهلة الطلب بعد ⁦10⁩ ثوانٍ. وفي كل دقيقة تفحص أداة التوسع التلقائي (Autoscaler) متوسط استهلاك المعالج (CPU) في الدقيقة الأخيرة؛ فإذا تجاوز ⁦70%⁩ أضافت ⁦4⁩ مثيلات، بحد أقصى ⁦8⁩ مثيلات، تحتاج نحو دقيقتين لتجهز، ثم تزيلها بعد ⁦5⁩ دقائق تحت ⁦30%⁩. ولكل مثيل ⁦20⁩ اتصالاً بقاعدة البيانات، وقاعدة البيانات تقبل ⁦150⁩ اتصالاً. يشغّل المختبِر ملف الحمل من السكربت أعلاه عبر رحلة الدفع التي تُنشئ طلبات شراء تجريبية، بـ⁦5,000⁩ مستخدم اختبار مختلف، ويلخّص النتائج المقيسة دقيقة بدقيقة حسب المراحل:

اختبار ذروة التخفيضات الخاطفة: يقفز معدل الوصول من ⁦100⁩ إلى ⁦600⁩ طلب في الثانية خلال ⁦30⁩ ثانية، لكن المثيلات الأربعة الأساسية تخدم نحو ⁦400⁩ فقط، ولا تصل المثيلات الأربعة المضافة إلا عند الدقيقة ⁦8⁩، بعد ثلاث دقائق من بدء الذروة.
  1. معدل الوصول: ملف الذروةما ترسله أداة الحمل، على خمس مراحل.

    الخط المرجعي:ما تخدمه المثيلات الأربعة الأساسية: نحو ⁦400⁩

    1. 1خط الأساس 0–5 min⁦100⁩ طلب في الثانية
    2. 2صعود الذروة 5–5.5 minإلى ⁦600⁩ خلال ⁦30⁩ ثانية
    3. 3الثبات 5.5–10.5 min⁦600⁩ طلب في الثانية
    4. 4الهبوط 10.5–11 minالعودة إلى ⁦100⁩
    5. 5التعافي 11–21 minمراقبة زمن الاستجابة وقوائم الانتظار والتقليص
  2. السعة المتاحة: التوسع التلقائينحو ⁦100⁩ طلب في الثانية لكل مثيل في الخدمة.

    الخط المرجعي:معدل الوصول في الذروة: ⁦600⁩

    حدّ قاعدة البيانات: ⁦8 × 20 = 160⁩ اتصالاً، والمسموح ⁦150⁩

    1. 1⁦4⁩ مثيلات 0–5 minخط الأساس
    2. 2تأخر التوسع 5–8 minالقرار عند الدقيقة ⁦6⁩ والجاهزية عند الدقيقة ⁦8⁩
    3. 3⁦8⁩ مثيلات، الحد الأقصى 8–16 minتُزال بعد ⁦5⁩ دقائق تحت ⁦30%⁩ من المعالج
    4. 4العودة إلى ⁦4⁩ مثيلات 16–21 min

السعة اسمية، نحو ⁦100⁩ طلب في الثانية لكل مثيل؛ وعند ⁦8⁩ مثيلات منع حدّ اتصالات قاعدة البيانات الخدمة من بلوغها.

  • تأخر التوسع: بدأت الذروة عند ⁦05:00⁩ ولم تخدم المثيلات الجديدة الحركة إلا عند ⁦08:00⁩. وفي هذه الأثناء كان يصل نحو ⁦600⁩ طلب في الثانية مقابل سعة ⁦400⁩: فتراكمت الطلبات حتى بلغت مهلة البوابة البالغة ⁦10⁩ ثوانٍ، واستقر p95 عند ⁦10⁩ ثوانٍ، ومنذ ⁦06:00⁩ فشل ثلث الطلبات. وموعد التخفيضات معروف مسبقاً، فيستطيع الفريق التوسع قبل أن تبدأ.
  • حدّ خفي: ⁦8 × 20 = 160⁩ اتصالاً، لكن قاعدة البيانات تقبل ⁦150⁩، فأحدث التوسع أخطاء جديدة. سجّله عيباً مع هذا الحساب.
  • لا رفض للحمل الزائد (Load Shedding): انتظرت الطلبات حتى مهلة البوابة البالغة ⁦10⁩ ثوانٍ بدلاً من أن تُرفض فوراً بالرمز 503 مع Retry-After. فمع وصول ⁦600⁩ طلب وخدمة ⁦400⁩ لم يكن ممكناً خدمة الثلث في الحالتين، ورفضه فوراً كان سيُبقي قائمة الانتظار قصيرة والثلثين الآخرين سريعين.
  • التعافي: صُرّفت الطلبات المتراكمة بعد نحو ⁦30⁩ ثانية من وصول المثيلات الجديدة، وعاد زمن الاستجابة إلى خط الأساس فور هبوط الحمل، لكن قائمة رسائل البريد التي تؤكد الطلبات، والتي لا يتوسع عمّالها، بلغت ذروتها عند ⁦9,000⁩ رسالة ولم تفرغ إلا عند ⁦17:00⁩، بعد ست دقائق من الهبوط. اسأل هل هذا التأخير مقبول، وأعد تشغيل الملف نفسه بعد كل إصلاح.
Spike test, run 1 (staging sized like production)

time   arrival     instances  p95     errors  observation
00-05  100/s       4          220 ms  0%      baseline
05-06  up to 600   4          10 s    5%      CPU 100%, backlog builds, first 504 at 05:54
06:00                                         scale-out triggered: +4 instances
06-08  600/s       4          10 s    33%     504 from the gateway (10 s timeout)
08:00                                         4 new instances in service (maximum 8)
08-09  600/s       8          8.9 s   6%      backlog drains in about 30 s
09-11  600 to 100  8          450 ms  5%      DB: too many connections (160 > 150)
11-16  100/s       8          210 ms  0%      API at baseline; email queue peaks at 9,000
16-21  100/s       4          230 ms  0%      scale-in 16:00; email queue empty at 17:00

جرّبها: مولّد بيانات اختبار التحميل

أخطاء شائعة

  • الصعود على مدى عدة دقائق وتسميته ذروة مفاجئة: فالتوسع التلقائي يواكب الصعود البطيء، ولا يُختبر تأخر التوسع أبداً.
  • قيادة الذروة بعدد ثابت من المستخدمين الافتراضيين، فتتباطأ الأداة مع النظام ولا يصل الاندفاع كاملاً.
  • الحكم على التشغيل من ملخصه الإجمالي: ذروة مدتها ⁦5⁩ دقائق داخل تشغيل مدته ⁦20⁩ دقيقة تختفي في المجاميع. اقرأ النتائج دقيقة بدقيقة لكل مرحلة.
  • إيقاف الاختبار عند انتهاء الذروة، فلا تُرى مرحلة التعافي ولا تصريف قوائم الانتظار ولا التقليص.
  • البدء بذاكرة تخزين مؤقت دافئة ومثيلات ما زالت موسّعة من التشغيل السابق، مما يخفي البدء البارد الذي سيواجهه المستخدمون الحقيقيون.
  • توجيه الذروة إلى بيئة مشتركة أو إلى واجهة برمجية لطرف خارجي دون إبلاغ أصحابها. اتفق على الموعد مع فريق العمليات، ولا تختبر إلا أنظمة تملكها أو لديك إذن مكتوب باختبارها.

من منظور ضمان الجودة

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

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

تمرين عملي

خطّط لاختبار ذروة مفاجئة لطرح تذاكر

المطلوب

تُطرح تذاكر حفل للبيع في الساعة ⁦10:00⁩. تستقبل واجهة الحجز البرمجية عادةً ⁦20⁩ طلباً في الثانية، ويتوقع المنظّم ⁦900⁩ طلب في الثانية خلال الدقيقة الأولى لمدة نحو ⁦10⁩ دقائق، ثم ⁦150⁩ طلباً في الثانية.

تعمل المنصة على ⁦3⁩ مثيلات يخدم كل منها نحو ⁦150⁩ طلباً في الثانية، ويمكن أن تتوسع إلى ⁦8⁩؛ وتبدأ المثيلات الإضافية في خدمة الحركة نحو الساعة ⁦10:03⁩. وطلب واحد من كل ثلاثة طلبات هو حجز يُرسل إلى قائمة رسائل يعالج عمّالها ⁦200⁩ حجز في الثانية ولا يتوسعون.

الخطوات
  1. اكتب ملف الذروة على شكل مراحل بمددها ومعدلاتها المستهدفة.
  2. احسب السعة قبل التوسع، وعدد الطلبات التي تتجاوزها بين ⁦10:00⁩ و⁦10:03⁩.
  3. احسب سرعة نمو قائمة الحجوزات بدءاً من ⁦10:03⁩، وحجمها عند ⁦10:10⁩، والزمن اللازم لتصريفها.
  4. اكتب ما ستقيسه، والأسئلة التي يجب حسمها مع الفريق قبل التشغيل.
إظهار الإجابة النموذجية
الإجابة النموذجية

ملف الحمل، بقيادة معدل الوصول: ⁦20⁩ طلباً في الثانية لمدة ⁦5⁩ دقائق؛ ثم صعود إلى ⁦900⁩ في نحو ⁦30⁩ ثانية؛ ثم ثبات ⁦10⁩ دقائق؛ ثم هبوط إلى ⁦150⁩؛ ثم تعافٍ عند ⁦150⁩ لمدة ⁦15⁩ دقيقة على الأقل لرؤية تصريف قائمة الانتظار والتقليص.

السعة قبل التوسع: ⁦3 × 150 = 450⁩ طلباً في الثانية. العجز: ⁦900 − 450 = 450⁩ طلباً في الثانية لمدة نحو ⁦180⁩ ثانية، أي قرابة ⁦81,000⁩ طلب لا يمكن خدمتها في وقتها؛ ويكشف الاختبار هل تنتظر أم تنتهي مهلتها أم تُرفض. وتحتاج الذروة إلى ⁦900 ÷ 150 = 6⁩ مثيلات، ضمن الحد الأقصى البالغ ⁦8⁩.

قائمة الانتظار: قبل ⁦10:03⁩ تمرر الواجهة ⁦450 ÷ 3 = 150⁩ حجزاً في الثانية على الأكثر، وهذا ما يستوعبه العمّال. ومن ⁦10:03⁩ تخدم الواجهة المعدل الكامل البالغ ⁦900⁩ طلب في الثانية، فتصل الحجوزات بمعدل ⁦300⁩ في الثانية مقابل ⁦200⁩ تُعالج، وتنمو القائمة بمقدار ⁦100⁩ في الثانية: نحو ⁦42,000⁩ حجز بعد ⁦420⁩ ثانية، وأكثر إذا أعاد العملاء إرسال الطلبات التي رُفضت قبل ذلك. وبعدها تصل الحجوزات بمعدل ⁦50⁩ في الثانية، فتُصرَّف القائمة بمعدل ⁦150⁩ في الثانية: ⁦42,000 ÷ 150 = 280⁩ ثانية، أي نحو ⁦4⁩ دقائق و⁦40⁩ ثانية.

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

الأسئلة: هل الرفض مقبول في الدقائق الثلاث الأولى، وبأي شكل: غرفة انتظار أم 503 مع Retry-After؟ هل يمكن للمنصة التوسع قبل ⁦10:00⁩؟ ماذا يرى العميل بينما ينتظر حجزه في القائمة؟ كيف يعيد التطبيق والموقع المحاولة؟ هل تستطيع قاعدة البيانات خدمة اتصالات ⁦6⁩ مثيلات؟

أسئلة شائعة

ما الفرق بين اختبار الذروة المفاجئة واختبار الإجهاد؟

اختبار الإجهاد يرفع الحمل إلى ما بعد الذروة المتوقعة، عادةً على مراحل، ليجد الحد الأقصى ويرى كيف يُخفق النظام. أما اختبار الذروة المفاجئة فيُعرَّف بمدى فجائية وصول الحمل، وقد تكون ذروته ضمن ما يتحمله النظام بعد التوسع. إنه يختبر رد الفعل (التوسع وقوائم الانتظار وذاكرة التخزين المؤقت الباردة) والتعافي بعد ذلك.

هل يمكنني تشغيل اختبار ذروة مفاجئة في بيئة الإنتاج؟

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

كم يجب أن تطول الذروة وفترة التعافي؟

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

المراجع

  • Certified Tester Performance Testing (CT-PT)ISTQB · 2018منهج ISTQB التخصصي لاختبار الأداء: المفاهيم الأساسية وقياسات الأداء وأنشطة الاختبار ومهامه والأدوات.
  • Load test types — Grafana k6 documentationGrafana Labsتعريفات أنواع اختبار الحمل الشائعة — الاختبار الدخاني والحمل المتوسط والإجهاد والتحمّل الطويل (Soak) والذروة المفاجئة (Spike) ونقطة الانكسار — وما يُراد من كلٍّ منها كشفه.
  • Site Reliability Engineering: How Google Runs Production SystemsGoogle / O'Reilly Media · 2016أهداف مستوى الخدمة وميزانيات الخطأ ومراقبة «الإشارات الذهبية الأربع» والتعامل مع الحمل الزائد — الجانب التشغيلي للمرونة.
  • RFC 9110: HTTP SemanticsIETF · 2022معاني أساليب HTTP وحقول الترويسات ورموز الحالة والتفاوض على المحتوى، بغضّ النظر عن إصدار البروتوكول.

تدرّب بأدوات متقن

ولّد مدخلات اختبار الأداء بتوزيعات واقعية: أزمنة التفكير، ومزيج الطلبات، وأحجام الحمولات، ومنحنيات التدرّج.

الأداء

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

اختبار واجهات API

ابحث عن أي رمز حالة HTTP لمعرفة معناه ومرجعه في RFC ومتى يُستخدم.

الويب

للتعمّق أكثر

تقدّمك في هذا الموضوع

جزء من مسار تعلم ضمان الجودة