كيفية القيام بذلك "على أساس الأداء" (المؤشر) اختبار وحدة في بيثون

StackOverflow https://stackoverflow.com/questions/671503

سؤال

ودعونا نقول أن حصلت على قاعدة قانون بلدي لتصل درجة وحدة اختبار التغطية كما المنطقي. (ما وراء نقطة معينة، وزيادة التغطية لايوجد ROI جيد).

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

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

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

المحلول

وأنت تريد أن تفعل اختبار الأداء على مستوى النظام إذا أمكن - اختبار التطبيق الخاص بك ككل، في السياق، مع البيانات وسلوك أقرب إلى استخدام الإنتاج ممكن

.

وهذا ليس سهلا، وسيكون أكثر صعوبة لأتمتة والحصول على نتائج متسقة.

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

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

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

نصائح أخرى

وحين أوافق على اختبار الأداء على مستوى النظام هو أكثر أهمية في نهاية المطاف، إذا كنت ترغب في القيام به على غرار UnitTest اختبار الحمل لبيثون، FunkLoad <لأ href = "http://funkload.nuxeo.org/" يختلط = "noreferrer"> http://funkload.nuxeo.org/ تفعل ذلك تماما.

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

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

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

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

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

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

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