تعطى ، متى ، التأكيدات والثقة في التنفيذ

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

ما هو الفرق بين معين ومتى وكيف يرتبط هذا التأكيدات؟

الفكرة الكامنة وراء هذا بسيطة - نحن نريد للحد من عدد من التأكيدات.

النظر في مثال صغير.

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

ليس من الضروري أن أكتب رمزًا قبل الاختبار ، لذلك سنفترض أن هذا فقط لنقل الصورة الكبيرة.

public User enrichUser(User validUser){ user.setDetails(enrichmentService.getUserDetails(validUser.getId())); return user; } 


نحن لسنا مهتمين بصيغ ValidUser. إنه ليس خاليًا ، إنه دائمًا ما يكون له معرّف ، فهو صالح. هذا هو الشرط المسبق ، أي معين.

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

كيف نميز واحدة عن الأخرى؟ نظرا لا يتطلب التحقق من الحالات الأخرى ، عندما - يتطلب. أي whenValidUser يتطلب whenInvalidUser ، و givenValidUser لا.

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

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

سؤال آخر - ولكن ، بالمعنى الدقيق للكلمة ، عن طريق الصدفة أو عن قصد ، طريقة يمكن أن تدمر مستخدم لنا؟ لا ينبغي لنا التحقق من ذلك؟

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

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

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

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

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

هذا سبب وجيه لإعادة هيكلة المواصفات وإعادة التصميم.

Source: https://habr.com/ru/post/ar475612/


All Articles