Teraz wiem, że ludzie mogliby uważać to pytanie za powtarzające się lub zadawane wielokrotnie, w takim przypadku byłbym wdzięczny za link do odpowiednich pytań z odpowiedzią na moje pytanie.
Ostatnio nie zgadzam się z niektórymi ludźmi na temat pokrycia kodu. Mam grupę osób, które chcą, aby nasz zespół zrezygnował z patrzenia na pokrycie kodu w całości na podstawie argumentu, że 100% pokrycie nie oznacza testów dobrej jakości, a zatem kodu dobrej jakości.
Udało mi się odepchnąć, sprzedając argument, że zakres kodu mówi mi o tym, co na pewno nie zostało przetestowane i pomaga nam skoncentrować się na tych obszarach.
(Powyższe zostało omówione w podobny sposób w innych SO pytania, takie jak to - /programming/695811/pitfalls-of-code-coverage )
Argumentem tych ludzi jest - wtedy zespół zareagowałby, szybko tworząc testy niskiej jakości, a tym samym marnując czas, nie dodając żadnej znaczącej jakości.
Rozumiem ich punkt widzenia, ale szukam sposobu na solidniejsze uzasadnienie pokrycia kodu poprzez wprowadzenie bardziej niezawodnych narzędzi / ram, które zajmą się większymi kryteriami pokrycia (Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)
.
To, czego szukam, to propozycja połączenia takich narzędzi do pokrycia kodu i praktyk / procesów, które mogłyby im towarzyszyć, co może pomóc mi w odparciu takich argumentów, jednocześnie czując się swobodnie z moją rekomendacją.
Z zadowoleniem przyjmuję również wszelkie towarzyszące komentarze / sugestie oparte na twoim doświadczeniu / wiedzy na temat przeciwdziałania takim argumentom, ponieważ chociaż subiektywne, zakres kodu pomógł mojemu zespołowi być bardziej świadomym jakości kodu i wartości testowania.
Edycja: Aby zmniejszyć zamieszanie związane z moim rozumieniem słabości typowego pokrycia kodu, chcę zauważyć, że nie mam na myśli narzędzi Statement Coverage
(lub wierszy kodu wykonywanych) (jest ich mnóstwo). W rzeczywistości jest to dobry artykuł na temat wszystkiego, co jest z nim nie tak: http://www.bullseye.com/statementCoverage.html
Szukałem czegoś więcej niż tylko oświadczenia lub pokrycia linii, wchodząc bardziej w wiele kryteriów i poziomów pokrycia.
Zobacz: http://en.wikipedia.org/wiki/Code_coverage#Coverage_criteria
Chodzi o to, że jeśli narzędzie może powiedzieć nam o naszym zasięgu w oparciu o wiele kryteriów, staje się to rozsądną automatyczną oceną jakości testu. W żadnym wypadku nie próbuję powiedzieć, że zasięg linii jest dobrą oceną. W rzeczywistości taka jest przesłanka mojego pytania.
Edycja:
Ok, może to trochę za bardzo wyświetliłem, ale rozumiesz. Problem polega na ustaleniu procesów / zasad ogólnie we wszystkich zespołach w sposób jednorodny / konsekwentny. Obawa jest ogólna: jak zapewnić jakość testów, jak przydzielić gwarantowany czas bez żadnych środków. Dlatego lubię mierzalną funkcję, która przy wsparciu odpowiednich procesów i odpowiednich narzędzi pozwoliłaby nam poprawić jakość kodu, jednocześnie wiedząc, że nie marnuje się czasu na marnotrawstwo procesów.
EDYCJA: Jak dotąd mam odpowiedzi:
- Przeglądy kodu powinny obejmować testy w celu zapewnienia jakości testów
- Pierwsza strategia pomaga uniknąć testów napisanych po fakcie, aby po prostu zwiększyć zasięg
- Badanie alternatywnych narzędzi, które obejmują kryteria testowe inne niż po prostu Instrukcja / Linia
- Analiza kodu / liczby znalezionych błędów pomogłaby docenić znaczenie pokrycia i stanowi lepszy przypadek
- Co najważniejsze, ufaj wkładowi Zespołu, aby postępować właściwie i walczyć o swoje przekonania
- Bloki objęte / Liczba testów - dyskusyjne, ale mają pewną wartość
Dzięki za niesamowite odpowiedzi do tej pory. Naprawdę to doceniam. Ten wątek jest lepszy niż godziny burzy mózgów z mocami, które są.