Pracnost pokrytí legacy kódu unit testy testy rubrika: Programování: Jiné
Zdravím vespolek,
zvažujeme jak u nás vyrobit testy k existujícímu kódu. Uvažuji, jak to může být pracné. Máte někdo zkušenosti s projektem tohoto typu?
Uvítám jakékoli zkušenosti, nemusí se týkat rozsahu níže popsaného projektu.
Vím, že by to chtělo kód zároveň i refaktorovat, ale aktuálně je business cílem vytvořit unit testy. (Ostatní typy testů nejsou na závadu) Takže refactoring v míře nutné pro nasazení
testů. (každopádně je to i doporučený postup z Working Effectively with Legacy Code. Vím že tvořit testy k existujícímu starému kódu není snadné. Dejme tomu, že někdo z týmu v tom má alespoň minimum praxe.
Parametry projektu:
-
Rozsah: Desítky let práce menšího týmu. Poslední léta se více upravuje než tvoří nový kód.
-
Velikost kódu - stovky adresářů, vyšší tisíce souborů, nižší milióny řádků kódu.
-
Zapeklitost: Někdy byl kód psán s ohledem na čitelnost, jinde ne. Oficiálně se koukalo pouze na to, zda/jak daná věc funguje. Často se stane, že najdete
"optimalizace" snižující čitelnost. Existují části kódu které lze přepisem zkrátit i 10 krát. -
Správa verzí (SVN) obsahuje jen část historie za několik posledních let.
-
Použitý jazyk: Většinou C++, C. (Jen zlomek je v C++ 11 resp. C++ 14).
-
Realizační tým značnou část toho kódu zná.
- Porůznu existuje, často bohužel zastaralá, dokumentace. Kde není lze v rámci projektu prohlásit současné chování za správné.
Pokud to chcete kvůli sobě (nemáte to ve smlouvě se zákazníkem), tak bych asi taky unit testy v první fázi vzdal.
Většinou už se to takhle dodatečně bez velkého refactoringu dopsat nedá. Ale jakýkoliv automatizovaný test je lepší než žádný,
takže už testování velkých celků může být překvapivě užitečné. Imho hlavní užitečnost unit testů je v tom, že člověka nutí psát jinak. Více SRP.
Ale pokud vám vedení řeklo: Že unit testy musí být za každou cenu, čeká vás dlouhá cesta a refactoring v míře nutné pro nasazení unit testů taky může v některých případech znamenat kompletní přepsání.
Komentáře
- harrison314 : Suhlasim, sam som sa stretol s legaci projektami, co bolo staticke peklo, to sa testovat (unit testami) nedalo, nejake testy su fajn, ale tu by som skor siel tym, ze sa bude testovat to co sa da (Ui testy, integracne testy,...). — 17.5.2018
- Občan : Souhlas. Raději i pracuji na kódu, který je na první pohled krásně testovatelný a bez testů. Než na nějakém balastu, co má nicneříkající testy převážně o tom, že metoda je definovaná a při jedné sadě vstupu něco vrací. Ale pochopitelně live unit testy, které při každém uložení vypíšou počet úspěšných testů jsou prostě paráda, ale hold ne vždy to jde. — 18.5.2018
Pro zobrazení všech 9 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře