نقل التعليمات البرمجية الموجودة إلى اختبار مدفوعة التنمية

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

  •  03-07-2019
  •  | 
  •  

سؤال

بعد أن اكتشفت مؤخرا هذا الأسلوب من التنمية ، لذا أجد أنه لطيف بدلا المنهجية.لذا لأول المشروع ، يجب صغيرة DLL يستحق من التعليمات البرمجية (في C#.NET, ما يستحق) و أريد أن إجراء مجموعة من الاختبارات على هذا الرمز, ولكن أنا فقدت قليلا كيف و من أين تبدأ.

أنا باستخدام NUnit ، مقابل عام 2008 ، أي نصائح حول أي نوع من فصول تبدأ مع ما يكتب اختبارات و أي نصائح حول عموما كيف تتحرك رمز عبر اختبار على أساس التنمية سيكون موضع تقدير كبير.

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

المحلول

العمل بشكل فعال مع رمز تراث من جانب الريش مايكل.

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

وإعادة بيع ديون دون اختبارات وإدخال تغييرات في السلوك (أي البق). والأصوليون يقولون انها ليست حقا إعادة بيع ديون بسبب عدم وجود اختبارات للتأكد من أن لا يغير السلوك.

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

واضافة اختبارات من أسفل إلى أعلى: اختبار قليلا، والطبقات وظائف مستقلة للصحة

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

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

والتفكير في عزل تبعيات مثل قواعد البيانات والملفات، والشبكة، بحيث يمكن تبادل لمقدمي البيانات وهمية أثناء الاختبار.

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

وكذلك الأطر ساخرا التلقائية مثل Rhinomocks أو <وأ href = "HTTP: / /code.google.com/p/moq/ "يختلط =" noreferrer "> موك قد تساعد الطبقات القائمة وهمية هنا. لم أجد حقا الحاجة إليها في التعليمات البرمجية المصممة لقابلية الاختبار.

نصائح أخرى

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

وكما أنني وجدت تجارب التنمية انطلاقا من مثال و <لأ href = " https://rads.stackoverflow.com/amzn/click/com/0321146530 "يختلط =" noreferrer "> عملي وحدة اختبار: في C # مع NUnit أن تكون مقدمة لائق لاختبار وحدة في تلك البيئة

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

أنا أسميها "اختبار مدفوعة الهندسة العكسية".

بداية "في الأسفل" -- كل فئة يمكن أن يكون بشكل منفصل فحص و اختبار كتابي على ذلك.عندما تكون في شك, تخمين.

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

عندما كنت تفعل TDRE ، رمز مقدس-حتى يمكنك يثبت أن قانون طويل الأمد علة.في الحالة المعاكسة, تكتب اختبارات حول رمز التغيير والتبديل الاختبارات حتى العمل و المطالبة قانون الأعمال.

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

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

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

ورمز قابل للاختبار من السهل على الفور - قبل الاختبارات المرفقة. إذا كان هناك بعض، يجب أن تكون قابلة للاختبار. إذا لم تكن هناك - افتراض العكس. ؛)

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

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

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

وDLL الخاص يوفر نوعا من الخدمة. لكل خدمة، ما عليك القيام به قبل الحصول على هذه الخدمة، ما المعلمات يجب تمرير للحصول على هذه الخدمة، وكيف كنت أعرف أن ويتم تنفيذ الخدمة المطلوبة بشكل صحيح؟

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

وتناقش

والاختبارات توصيف أيضا في الريش M. "العمل بشكل فعال مع رمز وراثي"، والذي أوصى في الاستجابات الأخرى.

وأيضا، تأكد لكتابة اختبار الفشل قبل إضافة أي خط جديد من التعليمات البرمجية.

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