W korpo, w którym robię, pojawiło się zarządzenie CTO spływające na wszystkie projekty, żeby uzyskać pokrycie 90% UT.
Moje podejście do UT było dość pragmatyczne - trzeba je pisać tam gdzie jest sens i pisanie ich w sposób dający korzyści, czyli skupienie się na pokrywaniu tego co warto pokryć i zorientowaniu na jakość testów, zamiast na ich ilość i mityczne pokrycie. Z drugiej strony CTO nie jest kretynem i chociaż w tym przypadku pomysł odbieram jako delikatnie rzecz ujmując, kontrowersyjny, to może jest to tylko mój brak doświadczenia/wiedzy. Mam w związku z tym parę pytań:
- Czy taki wymóg może mieć jakikolwiek sens i jaki?
- W jaki sposób wymóc systematyczne zwiększanie pokrycia - zastanawiam się nad dodaniem dodatkowych reguł na Sonarze wywalających buildy, jeżeli pokrycie spada, lub pokrycie dla nowego kodu jest poniżej wymaganej wartości.
- W jaki sposób zapewnić jakość unit testów - jeżeli tylko się da, wolę uniknąć z jednej strony pisania testów na metodach dostępowych, testowania prawidłowej konfiguracji mocków, co w moim przekonaniu prowadzi do stanu, w którym niby jest pokrycie, ale faktycznie testy nie dają nic, czy wręcz powodują spadek jakości, bo nawet w miejscach, gdzie są niezbędne zostaną z przyzwyczajenia zrobione na odwal.
- Czy jest możliwe zapewnienie takiego pokrycia w aplikacjach technologicznie zapóźnionych np. JavaFX, JSF.