ما هو اختبار قابلية التوسع؟ تعلم مع المثال
⚡ ملخص ذكي
يقيس اختبار قابلية التوسع كيفية تصرف التطبيق عندما يرتفع أو ينخفض حمل المستخدم أو حجم البيانات أو معدل المعاملات، ويكشف عن النقطة الدقيقة التي يتوقف عندها الأداء عن التوسع ويحدد عنق الزجاجة المسؤول.
ما هو اختبار قابلية التوسع؟
اختبار قابلية التوسع اختبار قابلية التوسع هو أسلوب اختبار غير وظيفي يقيس أداء النظام أو الشبكة عند زيادة أو تقليل عدد طلبات المستخدمين. يهدف هذا الاختبار إلى ضمان قدرة النظام على التعامل مع الزيادة المتوقعة في حركة مرور المستخدمين، وحجم البيانات، وتواتر المعاملات. كما يختبر قدرة النظام على تلبية الطلب المتزايد.
اختبار قابلية التوسع هو نوع فرعي من اختبار أداءلذا فهو يركز على سلوك التطبيق عند نشره على نظام أكبر أو عند تشغيله تحت ضغط زائد. هندسة البرمجياتيقيس اختبار قابلية التوسع النقطة التي يتوقف عندها التطبيق عن التوسع ويحدد السبب وراء ذلك.
لماذا يتم إجراء اختبارات قابلية التوسع؟
نادرًا ما تظهر مشاكل السعة أثناء الاختبارات الوظيفية. بل تظهر في أكثر أيام التداول ازدحامًا في السنة، أو عند إطلاق حملة تسويقية، أو عندما تتسبب مجموعة بيانات نمت بهدوء لمدة عامين في إبطاء جميع الاستعلامات. يكشف اختبار قابلية التوسع عن هذه القيود في بيئة مُحكمة أولًا. وبشكلٍ أدق، فهو يساعدك على:
- حدد كيف يتوسع التطبيق مع زيادة عبء العمل، وأين يصبح هذا المنحنى مسطحًا.
- حدد الحد الأقصى لعدد المستخدمين المتزامنين لتطبيق الويب قبل أن تصبح أوقات الاستجابة غير مقبولة.
- تحديد التدهور من جانب العميل وتجربة المستخدم النهائي تحت الضغط، مثل بطء عرض الشاشة.
- تحديد مدى متانة وتدهور جانب الخادم، بما في ذلك تشبع وحدة المعالجة المركزية، وتسرب الذاكرة، واستنفاد مجموعة الاتصالات.
يسهل تصور العلاقة على شكل منحنى: يرتفع معدل النقل بالتوازي مع زيادة الحمل حتى يصل المورد إلى حد التشبع، وبعد ذلك يؤدي المستخدمون الإضافيون فقط إلى إطالة قائمة الانتظار.
أنواع اختبار قابلية التوسع
لا تُعدّ قابلية التوسع خاصيةً واحدة، لذا عادةً ما تشمل خطة الاختبار أكثر من بُعد. الأنواع الأربعة المذكورة أدناه هي التي تقيسها معظم الفرق، ويُحدّد النوعان الأولان شكل بيئة الاختبار نفسها.
| النوع | ما الذي يتم قياسه؟ | ما يثبته الاختبار |
|---|---|---|
| قابلية التوسع العمودي (توسيع النطاق) | تمت إضافة وحدة المعالجة المركزية أو الذاكرة أو وحدة التخزين إلى خادم واحد | مقدار الحمل الإضافي الذي يتحمله جهاز واحد مُطوَّر، وأين يقع الحد الأقصى للعقدة الواحدة. |
| قابلية التوسع الأفقي (توسيع النطاق) | خوادم أو حاويات أو عُقد إضافية خلف مُوازن الأحمال | سواء ارتفعت الإنتاجية بشكل متناسب تقريبًا مع عدد العقد المضافة، أو ما إذا كانت الموارد المشتركة تحد منها |
| قابلية التوسع الوظيفي | ميزات أو وحدات أو خدمات جديدة | هل يمكن استيعاب الوظائف الإضافية دون الإضرار بالمعاملات الحالية؟ |
| قابلية التوسع الإداري | المستخدمون أو المستأجرون أو الفرق أو البيئات المراد إدارتها | هل ستظل عمليات الإعداد والصلاحيات والمراقبة قابلة للتطبيق مع نمو المؤسسة؟ |
يُعد التوسع الرأسي أبسط لأن البنية نادراً ما تتغير، لكن لكل جهاز حد أقصى. أما التوسع الأفقي فيزيل هذا الحد ويُحسّن تحمل الأعطال، على حساب زمن استجابة الشبكة، واتساق البيانات، وعبء التنسيق - وكلها أمور يجب على الاختبار قياسها بدلاً من افتراضها.
ما الذي يجب اختباره في اختبار قابلية التوسع؟
يُقاس مدى قابلية التوسع بالقياسات، لا بالانطباعات. سجّل السمات التالية في كل خطوة تحميل حتى يكون الاتجاه واضحًا، وليس الرقم النهائي فقط.
| السمة | ماذا يخبرك |
|---|---|
| زمن الاستجابة | الوقت بين طلب المستخدم ورد النظام؛ ينبغي أن يظل ثابتًا مع ازدياد التزامن. |
| انتقال الشاشة | مدى سرعة انتقال صفحة أو عرض إلى الصفحة أو العرض التالي تحت الضغط |
| الإنتاجية | حجم الطلبات التي تتم معالجتها لكل وحدة زمنية؛ يشير مستوى ثابت إلى حد قابلية التوسع |
| قياسات الوقت | وقت الجلسة، ووقت إعادة التشغيل، ووقت الطباعة، ووقت المعاملة، ووقت تنفيذ المهمة |
| الأداء مقابل عدد المستخدمين | كيف تتغير كل مقياس مع إضافة المستخدمين المتزامنين على دفعات |
| أسعار الطلب | عدد الطلبات في الثانية، وعدد المعاملات في الثانية، وعدد مرات الوصول في الثانية |
| استخدام الشبكة | عرض النطاق الترددي المستهلك وزمن استجابة الحزم بين الطبقات |
| استخدام وحدة المعالجة المركزية والذاكرة | تكلفة الموارد لكل معاملة؛ يشير الرقم المتزايد باستمرار غالبًا إلى وجود تسريب. |
| عدادات خادم الويب | الطلبات والاستجابات في الثانية، وعمق قائمة الانتظار، والاتصالات المرفوضة |
| الأداء تحت الحمل | السلوك المشترك عند قراءة جميع المقاييس معًا في ذروة |
استراتيجية اختبار قابلية التوسع
تختلف استراتيجية اختبار قابلية التوسع باختلاف نوع التطبيق الذي يتم اختباره. إذا كان التطبيق يصل إلى قاعدة بيانات، ستتضمن معايير الاختبار حجم قاعدة البيانات بالنسبة لعدد المستخدمين، وما إلى ذلك.
المتطلبات الأساسية لاختبار قابلية التوسع
- القدرة على توزيع التحميل — تحقق مما إذا كانت أداة اختبار الحمل تسمح بتوليد الحمل من عدة آلات والتحكم فيه من نقطة مركزية.
- نظام التشغيل — تحقق مما يلي أنظمة التشغيل يتم تشغيل عوامل توليد الأحمال وجهاز اختبار الأحمال الرئيسي تحتها.
- المعالج — تحقق من نوع وحدة المعالجة المركزية المطلوبة لوكيل المستخدم الافتراضي وجهاز اختبار التحميل الرئيسي.
- ذاكرة — تحقق من مقدار الذاكرة الكافية لوكيل المستخدم الافتراضي وجهاز اختبار التحميل الرئيسي.
- اختبار البيئة — تأكد من أن بيئة الاختبار يعكس الإنتاج بدقة كافية لنقل النتائج.
كيفية القيام باختبار قابلية التوسع
- حدد عملية قابلة للتكرار لتنفيذ اختبارات قابلية التوسع طوال دورة حياة التطبيق
- تحديد معايير قابلية التوسع
- قم بوضع قائمة مختصرة بأدوات البرامج المطلوبة لتشغيل اختبار التحميل
- قم بتعيين بيئة الاختبار وتكوين الأجهزة المطلوبة لتنفيذ اختبارات قابلية التوسع
- خطط لسيناريوهات الاختبار بالإضافة إلى اختبارات قابلية التوسع
- قم بإنشاء برنامج المستخدم الافتراضي والتحقق منه
- إنشاء سيناريوهات اختبار التحميل والتحقق منها
- تنفيذ الاختبارات
- قيم النتائج
- قم بإعداد التقارير المطلوبة
خطة اختبار قابلية التوسع
قبل البدء فعلياً في إنشاء الاختبارات، ضع خطة اختبار مفصلة. إنها خطوة مهمة لضمان توافق الاختبار مع متطلبات التطبيق.
فيما يلي السمات اللازمة لإنشاء مخطط محدد جيدًا خطة اختبار لاختبار قابلية التوسع.
- خطوات البرامج النصيةينبغي أن يتضمن نص الاختبار خطوات مفصلة تحدد الإجراءات الدقيقة التي سيقوم بها المستخدم.
- بيانات وقت التشغيلينبغي أن تحدد خطة الاختبار أي بيانات وقت التشغيل المطلوبة للتفاعل مع التطبيق.
- الاختبارات المعتمدة على البياناتإذا كانت البرامج النصية تحتاج إلى بيانات متغيرة في وقت التشغيل، فأنت بحاجة إلى فهم جميع الحقول التي تتطلب هذه البيانات.
مثال على اختبار قابلية التوسع
لنفترض متجرًا إلكترونيًا يتوقع 2,000 متسوق متزامن خلال موسم التخفيضات. يتفق الفريق أولًا على معيار أساسي: يجب أن تتم عملية الدفع في أقل من ثلاث ثوانٍ لـ 95% من المستخدمين، مع معدل خطأ أقل من 1%.
ثم يُجري الاختبار نفس البرنامج النصي للتصفح والبحث وإضافة المنتجات إلى سلة التسوق وإتمام عملية الشراء مع 250 و500 و1,000 و1,500 و2,000 مستخدم افتراضي. يظل زمن الاستجابة ثابتًا عند حوالي ثانيتين حتى 1,000 مستخدم، ثم ينخفض إلى 2.8 ثانية عند 1,500 مستخدم، ويصل إلى تسع ثوانٍ عند 2,000 مستخدم، بينما يبلغ استهلاك وحدة المعالجة المركزية لقاعدة البيانات 98%. وبالتالي، فإن الحد الأقصى لقابلية التوسع هو 1,500 مستخدم تقريبًا، وتكمن المشكلة في طبقة قاعدة البيانات، وليس في خوادم التطبيقات التي كان الفريق يخطط لإضافتها.
أدوات اختبار قابلية التوسع
يتطلب اختبار قابلية التوسع أداة قادرة على توليد أحمال من عدة أجهزة في وقت واحد، وتقديم النتائج مركزياً. وعادةً ما يعتمد اختيار الأداة على لغة البرمجة الأساسية للفريق والبروتوكولات قيد الاختبار.
| أداة | البرمجة | أفضل مناسب لـ |
|---|---|---|
| Apache JMeter | خطط اختبار واجهة المستخدم الرسومية بالإضافة إلى XML، Java على أساس | تغطية واسعة للبروتوكولات تشمل JDBC وJMS وLDAP وSOAP |
| جرافانا ك6 | Javaالبرنامج النصي أو TypeScript | اختبارات واجهة برمجة التطبيقات والخدمات المصغرة المدمجة في مسار التكامل المستمر/التسليم المستمر |
| جاتلينج | Javaلغة برمجة Kotlin أو Scala DSL | عدد كبير من المستخدمين الافتراضيين لكل مُحقن مع تقارير HTML مفصلة |
| جراد | ساده Python | Python الفرق التي تحتاج إلى توسيع نطاق العميل إلى ما يتجاوز بروتوكول HTTP |
| بي. | تم تسجيل النصوص الشبيهة بلغة C في VuGen | مجمعات مؤسسية كبيرة تضم تطبيقات قديمة وتطبيقات جاهزة. |
برامج تشغيل مستضافة على السحابة مثل BlazeMeterتعتمد كل من LoadView وGatling Enterprise على العديد من هذه المحركات، وتستحقان الدراسة عند الحاجة إلى عشرات الآلاف من المستخدمين الافتراضيين أو حركة مرور من مناطق جغرافية متعددة لإجراء اختبار. يتوفر استعراض أوسع لهذه الفئة في الدليل الخاص بـ أدوات اختبار الأداء.
التحديات وأفضل الممارسات في اختبار قابلية التوسع
نتائج قابلية التوسع مخيبة للآمال للغاية tracلنعد إلى إعداد الاختبار بدلاً من التطبيق. هذه هي المشاكل التي تتكرر، وهذه هي العادات التي تمنعها.
التحديات المشتركة
- بيئات صغيرة الحجم — جهاز اختبار بنصف ذاكرة الإنتاج يُبلغ عن وجود اختناق غير موجود في الإنتاج.
- نماذج عبء العمل غير الواقعية — البرامج النصية التي لا تحتوي على وقت تفكير أو تباين في البيانات تصل إلى ذاكرات التخزين المؤقت التي قد يغفل عنها المستخدمون الحقيقيون.
- نتائج صاخبة — يؤدي التوسع التلقائي وجمع البيانات المهملة وأجهزة الحوسبة السحابية المشتركة إلى اختلاف نتائج تشغيلين متطابقين.
- قابلية الملاحظة الرقيقة — بدون مقاييس من جانب الخادم، تُظهر النتيجة البطيئة أن شيئًا ما قد تعطل، ولكن ليس ما هو.
- التكلفة — يتطلب توليد التزامن العالي جداً أسطولاً خاصاً به من مولدات الأحمال، وهو أمر يسهل التقليل من ميزانيته.
أفضل الممارسات
- اتفق على معايير النجاح، مثل النسبة المئوية لوقت الاستجابة والحد الأقصى لمعدل الخطأ، قبل التشغيل الأول.
- قم بزيادة الحمل على مراحل مخططة، واحرص على تثبيت كل مرحلة لفترة كافية حتى يستقر النظام.
- قم بتغيير بيانات الاختبار لكل مستخدم افتراضي حتى لا يؤدي التخزين المؤقت إلى تحسين النتائج.
- قم بجمع مقاييس التطبيق وقاعدة البيانات والبنية التحتية إلى جانب أرقام جانب العميل.
- قم بتخزين نصوص الاختبار في نظام التحكم في الإصدارات وقم بتشغيل فحص قابلية التوسع القصير على كل إصدار، ثم قم بتشغيل كامل قبل الإصدار.
- قارن الاتجاهات عبر الإصدارات المختلفة بدلاً من الحكم على تقرير واحد بمعزل عن غيره.
اختبار قابلية التوسع مقابل اختبار التحميل
كثيرًا ما يُخلط بينهما لأن كليهما يُطبّق الحمل. يكمن الاختلاف في السؤال الذي يُجيب عنه كل منهما: اختبار قابلية التوسع يسأل عن مدى قدرة النظام على النمو، بينما اختبار الحمل يتساءل عما إذا كان النظام قادراً على التعامل مع الحمل المتوقع بالفعل.
| قاعدة | اختبار قابلية التوسع | اختبار الحمل |
|---|---|---|
| التركيز على | يركز هذا على أداء مواقع الويب والبرامج والأجهزة والتطبيقات عند إجراء تغييرات على حجم أو سعة النظام لتلبية حاجة متزايدة. | يركز اختبار التحميل على اختبار تطبيق تحت أحمال ثقيلة، لتحديد النقطة التي يفشل عندها وقت استجابة النظام. |
| نمط التحميل | يتم رفع الحمل على مراحل، ويمكن إضافة الموارد بين المراحل. | يتم تثبيت الحمل عند ذروته المتوقعة لفترة زمنية محددة |
| تمت الإجابة على السؤال | إلى أي مدى يمكن أن ينمو هذا النظام، وما الذي يحدّ من نموه؟ | هل يحقق هذا النظام أهدافه المتفق عليها اليوم؟ |
| الناتج النموذجي | حد قابلية التوسع، ونقطة اختناق، وخطة القدرة الاستيعابية | النجاح أو الفشل بناءً على أهداف وقت الاستجابة والإنتاجية |
كلاهما يجلسان تحت الاختبارات غير الوظيفية مظلة بجانبها اختبار الإجهاد, اختبار النبضات, اختبار التحمل و اختبار الحجموعادةً ما تقوم استراتيجية الأداء الناضجة بتشغيل العديد منها مقابل نفس البرامج النصية.

