आप जो वर्णन करते हैं, वह वास्तव में इतनी बुरी चीज नहीं हो सकती है, लेकिन आपके परीक्षणों की खोज में आने वाली समस्याओं के लिए एक सूचक है
जैसे-जैसे व्यवस्था में बदलाव होता है हम टूटे हुए परीक्षणों को ठीक करने में अधिक समय लगाते हैं। हमारे पास इकाई, एकीकरण और कार्यात्मक परीक्षण हैं।
यदि आप अपना कोड बदल सकते हैं, और आपके परीक्षण नहीं टूटेंगे, तो यह मेरे लिए संदेहास्पद होगा। एक वैध परिवर्तन और एक बग के बीच का अंतर केवल यह तथ्य है कि यह अनुरोध किया गया है, जो अनुरोध किया गया है वह (TDD मान लिया गया) आपके परीक्षणों द्वारा परिभाषित किया गया है।
डेटा को हार्ड कोडित किया गया है।
परीक्षणों में हार्ड कोडित डेटा एक अच्छी बात है। परीक्षण मिथ्याकरण के रूप में काम करते हैं, सबूत के रूप में नहीं। यदि बहुत अधिक गणना है, तो आपके परीक्षण तनातनी हो सकते हैं। उदाहरण के लिए:
assert sum([1,2,3]) == 6
assert sum([1,2,3]) == 1 + 2 + 3
assert sum([1,2,3]) == reduce(operator.add, [1,2,3])
अमूर्तता जितनी अधिक होगी, आप एल्गोरिथ्म के जितने करीब पहुंचेंगे, और उसके अनुसार, अपने आप में एक्यूट कार्यान्वयन की तुलना करने के लिए उतना ही करीब होगा।
कोड का बहुत कम पुन: उपयोग
परीक्षणों में कोड का सबसे अच्छा पुन: उपयोग imho 'Checks' है, जैसा कि jUnits में है assertThat
, क्योंकि वे परीक्षणों को सरल रखते हैं। इसके अलावा, यदि परीक्षणों को कोड साझा करने के लिए फिर से शुरू किया जा सकता है , तो परीक्षण किया गया वास्तविक कोड भी होने की संभावना हो सकती है , इस प्रकार परीक्षण को हटाए गए आधार का परीक्षण करने वालों को कम कर सकता है ।