ما هو اختبار التزامن في اختبار البرمجيات؟
⚡ ملخص ذكي
يكشف اختبار التزامن عن العيوب التي تظهر فقط عندما يتصرف العديد من المستخدمين على نفس التطبيق في نفس اللحظة، مما يكشف عن حالات الجمود، وفقدان التحديثات، ومشاكل القفل التي لا تكشف عنها عمليات التحقق الوظيفية المتسلسلة أبدًا.
ما هو اختبار التزامن؟
اختبار التزامن هي تقنية اختبار تُستخدم للكشف عن العيوب في التطبيق عند تسجيل دخول عدة مستخدمين. بعبارة أخرى، تراقب هذه التقنية التأثير أثناء قيام عدة مستخدمين بتنفيذ نفس الإجراء في نفس الوقت.
يُشار إلى اختبار التزامن أيضًا باسم اختبار متعدد المستخدمين. اختبار برنامج متزامن أكثر صعوبة من اختبار برنامج تسلسلي، بسبب عدم الحتمية ومشاكل التزامن: يمكن أن ينجح الاختبار نفسه في تشغيل واحد ويفشل في التشغيل التالي دون تغيير سطر واحد من التعليمات البرمجية.
يوضح الرسم البياني أدناه الفكرة - يصل العديد من المستخدمين إلى نفس مورد التطبيق في نفس اللحظة، ويراقب الاختبار ما يفعله التطبيق مع التداخل.
لماذا اختبار التزامن؟
هناك سؤالان يبرران هذا الجهد، وكلاهما غير مرئي لعمليات التشغيل الوظيفية التي يقوم بها مستخدم واحد.
- يحدد هذا النظام آثار الوصول إلى نفس سجلات قاعدة البيانات أو الوحدات النمطية أو رمز التطبيق في نفس الوقت.
- يحدد ويقيس مستوى حالات الجمود، والقفل، واستخدام التعليمات البرمجية أحادية الخيوط، والوصول المقيد إلى الموارد المشتركة.
قد تكون إحدى الميزات صحيحة تمامًا لمستخدم واحد، ومع ذلك تفقد البيانات للمستخدم الثاني الذي يصل بعد جزء من الثانية، ولهذا السبب تُستخدم هذه التقنية جنبًا إلى جنب مع اختبار أداء بدلاً من داخل الاختبارات الوظيفية.
كيفية إجراء اختبار التزامن
يتبع اختبار التزامن تسلسلًا قابلًا للتكرار. الخطوات التالية تنتقل من scoping إلى حل.
- الخطوة 1) تحديد التدفقات المعرضة للتزامن. ابحث عن حالة مشتركة: عمليات تسجيل الدخول المتزامنة، وحجز المقاعد أو الأسهم، وتحديثات الرصيد، ووظائف الدفعات التي تكتب نفس الجدول وأي مكون أحادي الخيوط في المسار.
- الخطوة 2) تحديد هدف التزامن. حدد عدد المستخدمين الذين يجب أن يتصرفوا في نفس اللحظة، بناءً على ذروة الاستخدام الحقيقية بدلاً من رقم تقريبي.
- الخطوة 3) تصميم حالات الاختبار. كل حالة اختبار يربط بين الموارد المشتركة والإجراءات المتنافسة والحالة النهائية المتوقعة - على سبيل المثال، يجب ألا تنجح جلستان تسحبان من حساب واحد في كلتيهما.
- الخطوة الرابعة) كتابة البرنامج النصي واختيار الأداة. يلزم وجود مولد تحميل يقوم بإنشاء مستخدمين افتراضيين قابلين للتكوين؛ JMeter وهو الخيار الشائع مفتوح المصدر، وتتوافق إعدادات مجموعة الخيوط الخاصة به بشكل مباشر مع سيناريوهات التزامن.
- الخطوة 5) Ramp تدريجيا. زيادة عدد المستخدمين المتزامنين على مراحل بدلاً من القفزة الواحدةping إلى الهدف، بحيث يكون المستوى الذي يبدأ عنده التنافس مرئيًا.
- الخطوة السادسة) المراقبة والتحليل. راقب فترات انتظار القفل، وانتشار وقت الاستجابة، ومعدلات الخطأ، وحظر قاعدة البيانات معًا - غالبًا ما يظهر عيب التزامن على أنه شذوذ زمني قبل أن يظهر كخطأ.
- الخطوة 7) قم بحل المشكلة وأعد تشغيلها. قم بإصلاح سبب التزامن أو الفهرسة أو القفل، ثم كرر نفس التشغيل للتأكد من أن السلوك قد تغير بدلاً من أن يتم نقله.
عيوب التزامن الشائعة
تندرج عيوب التزامن ضمن عدد قليل من الفئات التي يمكن التعرف عليها، وعادة ما يؤدي تسمية الفئة بشكل صحيح إلى تحديد الحل مباشرة.
| خلل | ما يحدث | الأعراض النموذجية |
| حالة السباق | تعتمد النتيجة على الجلسة التي انتهت أولاً | النتائج صحيحة في بعض الجولات، وخاطئة في جولات أخرى |
| مأزق | كل جلسة تحتوي على قفل يحتاجه الآخر | تتوقف المعاملات بدلاً من إرجاع خطأ |
| التحديث المفقود | تؤدي عملية الكتابة الثانية إلى استبدال الأولى دون قراءتها. | يختفي التغيير المحفوظ بصمت |
| تلف البيانات | لا تُكتب البنية المشتركة إلا جزئياً | السجلات في حالة لا يمكن لأي معاملة صالحة إنشاؤها |
| الموت جوعا | لا تحصل جلسة واحدة على المورد الذي تنتظره | مسار مستخدم واحد ينتهي وقته بينما يبدو النظام سليمًا |
نظراً لأن هذه الأعطال متقطعة، فإن كل عملية تشغيل تتطلب تسجيل السجلات والطوابع الزمنية؛ وإلا فلن يكون من الممكن الإبلاغ عن العيب بشكل موثوق من خلال عملية إدارة العيوب.
مثال على اختبار التزامن
لنفترض أن متجرًا إلكترونيًا يعرض آخر وحدة متوفرة من منتج ما. يقوم متسوقان بفتح المنتج في نفس اللحظة ويضغطان كلاهما على زر الشراء. للبيع.
- السيناريو: جلستان تقرأان قيمة المخزون = 1، وكلاهما تجتازان فحص التوافر، وكلاهما تكتبان قيمة المخزون = 0.
- نتيجة متوقعة: يتم تأكيد طلب واحد، ويتلقى الطلب الآخر رسالة تفيد بنفاد المخزون، ولا ينخفض المخزون أبدًا إلى ما دون الصفر.
- مؤشر العيب: يتم تأكيد كلا الطلبين، أو يصل المخزون إلى -1، مما يدل على أن فحص التوافر والتخفيض لا يتم تنفيذهما كخطوة واحدة ذرية.
- خيارات تستحق التجربة: نفس الجلستين لتعديل سجل ملف تعريف واحد، وموافقتين على نفس الطلب، ومهمة دفعية لتحديث الجدول أثناء قيام المستخدم بالحفظ.
ينطبق النمط نفسه بشكل عام: العثور على مورد واحد، وكاتبين، وعدم وجود ضمان للترتيب. تشغيل السيناريو أثناء اختبار النظام، قبل إضافة الحمل، يحافظ على نظافة التشخيص.
مزايا اختبار التزامن
- يقلل هذا الأسلوب نسبياً من مقدار الجهد المطلوب لاختبار تطبيق ما عن طريق تقييد نطاق التفاعلات المتزامنة إلى عدد قليل من المكونات المستخدمة على نطاق واسع والتي تم اختبارها جيداً.
- تتيح عملية التغليف تحليل سلوك جزء من البرنامج دون الحاجة إلى مراجعة قاعدة التعليمات البرمجية بأكملها.
- يساعد ذلك على تحسين موثوقية وقوة البرامج المتزامنة.
- يكشف ذلك عن حدود الإغلاق والحظر مبكراً، لذا فإن قرارات السعة تعتمد على التنافس المقاس بدلاً من التقديرات.
عيوب اختبار التزامن
العيوب التالية هي من بين العيوب التي يواجهها المختبرون عادةً أثناء إجراء اختبارات التزامن.
- يجب اختبار التطبيق على منصات متعددة.
- تتطلب سيناريوهات التزامن اختبارات أكثر كثافة من سيناريوهات التسلسل.
- لا تقوم الدوال بإرجاع نتائجها إلى المستدعي على الفور؛ بدلاً من ذلك، يمكن تسليم النتيجة لاحقًا من خلال الإشعارات أو الكتل أو وظائف الاستدعاء أو آليات مماثلة، مما يجعل الاختبار أكثر صعوبة.
- لا ينعكس تدفق المعلومات أو البرنامج في مكدس الاستدعاءات.
- يمكن أن يكون عدد مسارات التنفيذ في النظام كبيرًا للغاية، نظرًا لأن العمليات في النظام المتزامن تتفاعل مع بعضها البعض أثناء تنفيذها.
- تتميز البرامج المتزامنة بنسبة فشل أعلى من البرامج المتسلسلة.
- يُعد تصحيح أخطاء البرامج المتزامنة أمرًا صعبًا، لأن إرفاق مصحح الأخطاء يغير التوقيت الذي تسبب في الفشل.

