سؤال

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

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

المحلول

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

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

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

تحديث:

هناك مساعدة محتملة أخرى سيكون شيئا مثل NDBUNIT. أنا لم أستخدمها على نطاق واسع حتى الآن، لكنها تبدو واعدة: http://code.google.com/p/ndbunit/

نصائح أخرى

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

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

لكنني أعتقد أن هناك طريقة لمساعدتك. نحن نستخدم Teamcity ولديها قدرة جميلة على عمل وكلاء بناء متعدد. ما يمكن القيام به هو تقسيم مشروع الاختبار الخاص بك إلى المشاريع الفرعية مع كل فرعي يحتوي على عدد فقط من الاختبارات. يمكنك استخدام فئات JNUNIT / NUNIT لفصلها. ثم تقوم بتكوين العلاقة الجماعية بحيث يقوم كل وكيل ببناء نوع واحد فقط من المشروع الفرعي. بهذه الطريقة، ستحصل على تنفيذ موازي الاختبارات. مع عدد قليل من الوكلاء (تحصل على 3 مجانا)، يجب أن تكون قادرا على الوصول إلى 20 دقيقة، والتي قد تكون مقبولة. إذا وضعت كل وكيل في VM، فقد لا تتطلب حتى آلات إضافية، تحتاج فقط إلى الكثير من ذاكرة الوصول العشوائي.

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