سؤال

وأي اقتراحات بشأن كيفية كتابة الاختبارات وحدة قابلة للتكرار لرمز التي قد تكون عرضة للالمآزق وشروط السباق؟

والآن أنا يميل نحو تخطي الاختبارات وحدة والتركيز على اختبارات التحمل. المشكلة مع ذلك هو أن تتمكن من تشغيل اختبار التحمل 5 مرات ونرى خمس نتائج مختلفة.

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

.
هل كانت مفيدة؟

المحلول

ونلقي نظرة على TypeMock المتسابق (هو في بيتا)

وتحرير: في الواقع ألفا

http://www.typemock.com/Typemock_software_development_tools.html

نصائح أخرى

ومن الممكن عادة لإجبار <م> متوقعة سباق شروط والمآزق باستخدام أشياء مثل ManualResetEvent للحصول على كل موضوع في الحالة المتوقعة قبل إطلاقه - أي الحصول على موضوع والحصول على القفل وانتظر إشارة ... الحصول على موضوع B لطلب القفل، الخ ...

ولكن - كما يحدث عادة كتابة مثل هذا الاختبار للتحقيق في الأخطاء المشتبه بهم، لإثبات عندما فهي ثابتة وأنه لا إعادة السطح. سوف تقوم بتصميم عموما حول شروط السباق (ولكن اختبار لهم قدر ما هو عملي).

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

وأنت لا تزال بحاجة إلى كتابة وحدة الاختبارات للتحقق من صحة الخوارزميات، بدلا من استراتيجية تأمين.

عند كود متعددة الخيوط لاختبار الإجهاد، وسوف تحتاج إلى اختبار في ظل ظروف حيث لديك CPU واحد لكل موضوع، حيث لديك مواضيع متعددة تقاسم وحدة المعالجة المركزية، وحيث لديك المزيد من وحدات المعالجة المركزية من المواضيع (إن أمكن).

يمكنك كتابة فئة القفل الذي يكشف المآزق المحتملة، من خلال النظر في ترتيب عمليات التأمين. ونحن نفعل ذلك من خلال وجود سياق موضوع أن جميع الأقفال تتسجل لدى عندما تم حيازتها (يمكن أن يتم خيار سوى DEBUG).

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

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

و

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

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

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

هل حاولت Corensic النحس ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top