سؤال

لقد رأيت العديد من الأسئلة يسأل "كيفية" وحدة اختبار في لغة معينة ، ولكن أي سؤال 'ماذا', 'لماذا' و 'عندما'.

  • ما هو ؟
  • ماذا يفعل من أجلي ؟
  • لماذا يجب علي استخدامه ؟
  • متى يجب استخدامه (أيضا عندما لا) ؟
  • ما هي بعض الأخطاء الشائعة والمفاهيم الخاطئة
هل كانت مفيدة؟

المحلول

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

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

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

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

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

إذا كنت لا تفعل الآن اختبار وحدة, أنصحك تبدأ على ذلك.الحصول على كتاب جيد ، عمليا أي xUnit-الكتاب سوف تفعل لأن المفاهيم كثيرا للتحويل بينهما.

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


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

نصائح أخرى

أنا لا أختلف مع دان (على الرغم من أن الخيار الأفضل قد يكون مجرد عدم الإجابة)...ولكن...

اختبار الوحدة هي عملية كتابة الكود لاختبار السلوك وظائف النظام الخاص بك.

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

  1. تجعل من السهل تغيير التنفيذ التقني حين التأكد من أنك لا تغيير السلوك (إعادة بيع ديون).صحيح وحدة اختبار التعليمات البرمجية يمكن أن يكون بقوة بتعميل الترميز/تنظيف مع فرصة ضئيلة كسر أي شيء دون أن يلاحظ ذلك.
  2. تعطي المطورين الثقة عند إضافة سلوك أو إجراء إصلاحات.
  3. وثيقة التعليمات البرمجية الخاصة بك
  4. تشير المناطق من التعليمات البرمجية التي تقترن بإحكام.من الصعب اختبار الوحدة البرمجية التي بإحكام إلى جانب
  5. توفير وسيلة لاستخدام API الخاص بك والبحث عن الصعوبات في وقت مبكر
  6. يشير إلى أساليب الفئات التي ليست متماسكة جدا

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

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

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

أعظم الاعتقاد الخاطئ هو أن المبرمجين لا اختبار.فقط سيئة أو كسول المبرمجين يعتقدون أن.أن الرجل بناء سقف الخاص بك لا اختبار ذلك ؟ أن الطبيب استبدال صمام القلب لا اختبار جديد صمام ؟ فقط يمكن للمبرمج الاختبار الذي رمز له ما كان ينوي أن يفعل (QA يمكن اختبار حافة الحالات - كيف رمز يتصرف عندما قال أن تفعل أشياء مبرمج أكن أنوي العميل يمكن أن تفعل اختبار القبول - أن المدونة لا تفعل ما ما يدفع العميل أن يفعل)

والفرق الرئيسي من اختبار وحدة بدلا من "مجرد فتح مشروع جديد و اختبار هذا رمز معين" هو أنه الآلي, وهكذا للتكرار.

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

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

هذه هي الميزة الرئيسية من وحدة الاختبارات على جهة الاختبار.ولكن انتظر هناك المزيد:

  • وحدة الاختبارات تقصير التنمية الفعل بشكل كبير:مع منفصلة قسم الاختبارات قد يستغرق أسابيع بالنسبة لك أن تعرف أن هناك خطأ في التعليمات البرمجية الخاصة بك ، وبحلول ذلك الوقت كنت قد نسيت بالفعل الكثير من السياق ، وبالتالي قد يستغرق منك ساعات للعثور على إصلاح الخلل;OTOH مع وحدة الاختبارات, ردود الفعل دورة يقاس بالثواني ، bug fix العملية عادة على غرار "أوه sh*t, لقد نسيت أن تحقق هذا الشرط هنا" :-)
  • وحدة الاختبارات بشكل فعال الوثيقة (فهمك) سلوك التعليمات البرمجية الخاصة بك
  • اختبار وحدة يجبرك على إعادة تقييم الخيارات التصميم الخاص بك ، مما يؤدي أبسط تصميم الأنظف

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

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

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

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

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

التقطيع على فلسفية إيجابيات اختبار وحدة و TDD هنا هي عدد قليل من أنها مفتاح "المصباح" الملاحظات التي ضربت لي على بلدي مؤقت الخطوات الأولى على الطريق إلى TDD التنوير (أيا الأصلي أو بالضرورة الأخبار)...

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

  2. TDD يساعدك على تحقيق متى تتوقف الترميز!الاختبارات الخاصة بك تعطيك الثقة التي كنت قد فعلت ما يكفي الآن أن تتوقف عن التغيير والتبديل والانتقال إلى الشيء.

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

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

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

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

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

هذا العرض هو مقدمة ممتازة كل الخير لذيذ اختبار يستتبع.

وأود أن يوصي xUnit اختبار أنماط كتاب جيرارد Meszaros.انها كبيرة ولكن هو كبير من الموارد على وحدة اختبار.هنا هو ارتباط إلى موقع ويب حيث يناقش أساسيات اختبار وحدة. http://xunitpatterns.com/XUnitBasics.html

يمكنني استخدام وحدة الاختبارات لتوفير الوقت.

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

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

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

وهو أسرع بكثير بالنسبة لي لاكتشاف بلدي قانون جديد يكسر شيئا في وحدة الاختبارات ثم إلى تحقق في التعليمات البرمجية وبعض front-end developer تجد مشكلة.

من أجل الوصول إلى بيانات الاختبار وأنا أحاول أن أكتب الاختبارات إما أن يكون أي تغيير أو تنظيف بعد نفسها.

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

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

إنها أكثر فعالية عند كل وحدة الاختبارات يمكن تشغيل تلقائيا.

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

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

بعض الفرق الكتابة السنانير من التخريب مستودع حيث أن وحدة الاختبارات يتم تشغيلها تلقائيا عند تنفيذ التغييرات.

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

المكتبات مثل NUnit, xUnit أو JUnit هي فقط إلزامي إذا كنت ترغب في تطوير المشاريع الخاصة بك باستخدام TDD نهج شعبية من قبل كينت بيك:

يمكنك قراءة مقدمة في اختبار مدفوعة التنمية (TDD) أو كينت بيك الكتاب اختبار مدفوعة التنمية:على سبيل المثال.

ثم, إذا كنت تريد أن تتأكد من الاختبارات الخاصة بك غطاء "جيد" جزء من التعليمات البرمجية الخاصة بك, يمكنك استخدام برامج مثل NCover, JCover, PartCover أو أيا كان.وأنها سوف اقول لكم تغطية نسبة من التعليمات البرمجية الخاصة بك.اعتمادا على كم كنت بارعة في TDD, عليك أن تعرف إذا كنت قد تدربت جيدا بما فيه الكفاية :)

وحدة اختبار هو اختبار الوحدة البرمجية (مثلوظيفة واحدة) دون الحاجة إلى البنية التحتية أن وحدة من التعليمات البرمجية يعتمد على.أياختبار في العزلة.

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

حتى وحدة اختبار ممارسة وظائف المغلقة في "وظيفة" أنت الاختبار من دون آثار جانبية من تحديث قاعدة البيانات.

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

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

اختبار وحدة هو عن كتابة التعليمات البرمجية التي الاختبارات رمز التطبيق الخاص بك.

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

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

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

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

أعتقد أن النقطة التي لا أفهمه هو أن اختبار وحدة أطر مثل NUnit (وما شابه) سوف تساعدك في أتمتة صغيرة إلى متوسطة الحجم الاختبارات.عادة يمكنك تشغيل الاختبارات في واجهة المستخدم الرسومية (هذا هو الحال مع NUnit, على سبيل المثال) ببساطة عن طريق النقر على زر ثم - نأمل أن نرى شريط التقدم البقاء الأخضر.إذا كان أحمرا الإطار يظهر لك الذي فشل اختبار و ما هو بالضبط الخطأ.في وحدة طبيعية الاختبار ، غالبا ما تستخدم التأكيدات ، على سبيل المثال Assert.AreEqual(expectedValue, actualValue, "some description") - إذا كان اثنين من القيم غير متساوية سترى رسالة خطأ تقول "بعض وصف:من المتوقع <expectedValue> ولكن كان <actualValue>".

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

استخدام Testivus.كل ما تحتاج إلى معرفته هو هناك :)

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

xUnit, NUnit, mbUnit, ، وما إلى ذلك.هي الأدوات التي تساعدك في كتابة الاختبارات.

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

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

يمكنك ثم نقل ما يصل إلى دمج أو نظام الاختبار قبل الاختبار كيف جميع المكونات العمل معا.

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

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

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

أنا لم أصل إلى النهاية ، لأنني في حاجة غير الروتينية-الآن-اللعنة, ولكن كان من الجيد ممارسة الرياضة.

ماذا تفعل إذا كان يتم منحك كومة من الهراء يبدو وكأنه كنت عالقة في حالة دائمة من تنظيف بعد أن تعرف مع إضافة أي ميزة جديدة أو رمز يمكن كسر المجموعة الحالية لأن البرنامج الحالي هو مثل بيت من الورق ؟

كيف يمكننا أن نفعل اختبار وحدة عندها ؟

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

نحن الآن تصل إلى أكثر من 40% ، لقد تمكنت من التقاط قبالة معظم منخفضة شنقا الفاكهة.

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

هذه إجابات لماذا يجب عليك أن تفعل اختبار وحدة.


3 فيديوهات تحت غطاء وحدة اختبار في جافا سكريبت ولكن المبادئ العامة التي تنطبق في معظم اللغات.

اختبار وحدة:دقيقة الآن سيوفر ساعات - إريك مان - https://www.youtube.com/watch?v=_UmmaPe8Bzc

شبيبة الوحدة اختبار (جيد جدا) - https://www.youtube.com/watch?v=-IYqgx8JxlU

الكتابة قابلة للاختبار جافا سكريبت https://www.youtube.com/watch?v=OzjogCFO4Zo


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

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


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

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


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

كما لا يجب أن وحدة اختبار التعليمات البرمجية الخاصة بك إذا كنت لا تريد أن يدفع المشروع الخاص/القانون الأساسي يبدأ تنمو أكبر فرص إدخال الخلل يزيد.

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

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