ما هو اختبار التزامن في اختبار البرمجيات؟

⚡ ملخص ذكي

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

  • 👥 وتسمى أيضا: اختبار المستخدمين المتعددين، لأن المحفز هو الوصول المتزامن وليس الحجم الكبير وحده.
  • 🎯 ما يستهدفه: سجلات قاعدة البيانات المشتركة، والوحدات النمطية المشتركة، وشفرة التطبيق المشتركة التي تم الوصول إليها من خلال أكثر من جلسة واحدة.
  • 🔒 ما يقيسه: مستويات من حالات الجمود، والقفل، والتعليمات البرمجية أحادية الخيوط، والوصول المقيد إلى الموارد المشتركة.
  • 🧭 كيف يتم تشغيله: حدد التدفقات المعرضة للتزامن، وحدد هدفًا للتزامن، واكتب سيناريوهات للإجراءات الحقيقية، ثم قم بزيادة عدد المستخدمين تدريجيًا.
  • 🐞 فئات العيوب: حالات التزامن، والتعطل، وفقدان التحديثات، وتلف البيانات، ونقص الموارد.
  • ⚠️ حدود الصدق: إن عدم الحتمية، وردود الاتصال غير المتزامنة، ومكدس الاستدعاءات غير المعلوماتي تجعل من الصعب إعادة إنتاج حالات الفشل.

ما هو اختبار التزامن في اختبار البرمجيات مع وجود عدة مستخدمين متزامنين؟

ما هو اختبار التزامن؟

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

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

يوضح الرسم البياني أدناه الفكرة - يصل العديد من المستخدمين إلى نفس مورد التطبيق في نفس اللحظة، ويراقب الاختبار ما يفعله التطبيق مع التداخل.

مخطط اختبار التزامن يوضح وصول عدة مستخدمين إلى نفس مورد التطبيق في وقت واحد

لماذا اختبار التزامن؟

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

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

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

كيفية إجراء اختبار التزامن

يتبع اختبار التزامن تسلسلًا قابلًا للتكرار. الخطوات التالية تنتقل من scoping إلى حل.

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

عيوب التزامن الشائعة

تندرج عيوب التزامن ضمن عدد قليل من الفئات التي يمكن التعرف عليها، وعادة ما يؤدي تسمية الفئة بشكل صحيح إلى تحديد الحل مباشرة.

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

نظراً لأن هذه الأعطال متقطعة، فإن كل عملية تشغيل تتطلب تسجيل السجلات والطوابع الزمنية؛ وإلا فلن يكون من الممكن الإبلاغ عن العيب بشكل موثوق من خلال عملية إدارة العيوب.

مثال على اختبار التزامن

لنفترض أن متجرًا إلكترونيًا يعرض آخر وحدة متوفرة من منتج ما. يقوم متسوقان بفتح المنتج في نفس اللحظة ويضغطان كلاهما على زر الشراء. للبيع.

  • السيناريو: جلستان تقرأان قيمة المخزون = 1، وكلاهما تجتازان فحص التوافر، وكلاهما تكتبان قيمة المخزون = 0.
  • نتيجة متوقعة: يتم تأكيد طلب واحد، ويتلقى الطلب الآخر رسالة تفيد بنفاد المخزون، ولا ينخفض ​​المخزون أبدًا إلى ما دون الصفر.
  • مؤشر العيب: يتم تأكيد كلا الطلبين، أو يصل المخزون إلى -1، مما يدل على أن فحص التوافر والتخفيض لا يتم تنفيذهما كخطوة واحدة ذرية.
  • خيارات تستحق التجربة: نفس الجلستين لتعديل سجل ملف تعريف واحد، وموافقتين على نفس الطلب، ومهمة دفعية لتحديث الجدول أثناء قيام المستخدم بالحفظ.

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

مزايا اختبار التزامن

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

عيوب اختبار التزامن

العيوب التالية هي من بين العيوب التي يواجهها المختبرون عادةً أثناء إجراء اختبارات التزامن.

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

الأسئلة الشائعة

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

النصف متعدد الخيوط من اختبار الخيوط يتداخل معها. يسأل اختبار الخيوط عما إذا كان مسار عمل واحد سيستمر بعد التكامل؛ ويسأل اختبار التزامن عما يفعله الوصول المتزامن بمجرد أن يعمل هذا المسار بالفعل.

استنتج الرقم من ذروة الاستخدام المرصودة، وليس من رقم تقريبي. ابدأ بجلساتين لإثبات أن المنطق ذري، ثم زد تدريجيًا نحو الذروة المقاسة وتجاوزها بهامش.

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

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

يؤثر مستوى العزل، ومهلة القفل، وحجم مجمع الاتصالات، والفهرسة، جميعها على كيفية ظهور التنازع. سجّل هذه العوامل مع كل تشغيل، لأن النتيجة التي تم الحصول عليها في ظل مستوى عزل معين لا تدل على مستوى عزل آخر.

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

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

تلخيص هذه التدوينة بـ: