Jak mierzyć jakość testów? Line coverage, branch coverage i testy mutacyjne

Do mierzenia jakości kodu stosujemy różne metryki, od złożoności (cyclomatic complexity), przez ilość błędów na produkcji, po dług techniczny (technical dept). Wiele zespołów dodało do tego również miarę pokrycia kodu testami (code coverage). Z tym podejście wiąże się jednak ryzyko, że testy będą pisane głównie po to, żeby pokrywały więcej linijek kodu, a nie żeby dobrze chroniły przed regresją. To może oznaczać to samo, ale wcale nie musi. Mówi się, że rośnie to, co mierzymy. Jeśli mierzymy procent linijek kodu, dla których istnieje kod testowy, który je wywołuje, to urośnie nam liczba testów. To niekoniecznie musi iść w parze z jakością Więcej…

Co jest nie tak z tym testem?

Testy podobnie jak kod produkcyjny ewoluują. Zmieniają się w czasie. Czasem to dobra zmiana, a czasem niekoniecznie. Wtedy nabierają złego zapachu. Phoebe z Friends’ów śpiewała kiedyś Smelly Cat, Smelly Cat, it’s not your fault, równie dobrze mogłaby zaśpiewać Smelly Test, Smelly Test, it’s not your fault. To nie wina testu, że coś się z nim dzieje, tylko ignorancji zespołu projektowego, który przechodzi obojętnie udając, że wszystko jest ok. Postanowiłam wziąć na warsztat testy, które nie pachną dobrze, żeby pokazać jak małymi krokami można dojść do całkiem niezłych efektów. Weźmy na przykład taki test: @Test void shouldReturnOne() {     int Więcej…

Jak możesz odpicować swoje testy?

Pewnie masz w swoim projekcie takie testy, które niby działają, ale nie są najpiękniejsze? Albo takie, które zostały napisane dawno temu i nie wiadomo do końca co sprawdzają? Jest kilka małych kroków, które możesz przejść, żeby małym wkładem pracy nieco odpicować Twoje testy.   1. Zmień nazwy Raport testowy powinien być dobrą dokumentacją tego co robi system. Jeśli testy nazywają się testGrossPrice albo co gorsza test2112, to średnio wiadomo co w nim się dzieje, prawda? Wystarczy zastanowić się co ten test tak naprawdę sprawdza, jakie są okoliczności i oczekiwany wynik. Nie musisz od razu orać wszystkich testów, ale sukcesywnie upiększać Więcej…

Jak mogłyby wyglądać testy w mBanku?

Sierpień był dość pechowy dla mBanku. Najpierw testy powiadomień push na produkcji, o których już pisałam. Potem znacznie gorsza wpadka, która mocno podważyła wiarygodność oprogramowania tej firmy. Zamiast szukać winnych zastanówmy się co jako rzemieślnicy oprogramowania możemy wynieść z tej lekcji. Co zawiodło? Jak można było temu zapobiec? Jakie testy zwiększą pewność w podobnych przypadkach? Co się w ogóle stało? Ktoś na Facebooku napisał, że dostał SMSa o tym, że jego dane zostały zmienione. Po zalogowaniu się do systemu okazało się, że widnieją tam dane innej osoby. Próba interwencji na infolinii zakończyła się porażką, ponieważ dane klienta nie zostały zweryfikowane Więcej…

ęśąćż 🔥 nie regulujcie odbiorników, to tylko testy na produkcji

Pewnie już znasz historię o tym jak mBank testował powiadomienia push na produkcji. Jeśli jesteś na wakacjach, albo żyjesz pod kamieniem, to pisał o tym na przykład Niebezpiecznik i Jerzy Wickowski. Poza tym, że bank przeprosił swoich klientów i świetnie wykorzystał sprawę marketingowo, to do końca nie wiadomo co się stało.     Kaskada zdarzeń Mogło to być zagranie celowe, osoba na stażu mogła nieumyślnie testować na produkcji, albo to był atak. Może doczekamy się jakiegoś podsumowania w stylu lesson learned, a może nie. Najgorsze jednak nie jest to, że wysłali swoim klientom testowe powiadomienia (według danych bankier.pl w 2019 Więcej…

Czy jakość kodu jest równoważna jakości projektu?

Pewnie lubisz pisać dobry kod? Zakładam, że skoro czytasz tego bloga, to temat jakości jest Ci bliski. Bardzo mnie to cieszy! Jakość projektu to nasza wspólna sprawa.  Tylko czy my zawsze mówimy o tym samym? Czy wysoka jakość dla programistów, testerów, managerów to to samo, co dla klienta? Jeśli tak myślisz, to trochę Cię rozczaruję. Jako programistka lubię dbać o jakość kodu. Lubię kiedy mój kod jest czytelny, wykorzystuje wzorce projektowe, no i ma testy. Czuję się wtedy jak skaut, który powinien dostać order z ziemniaka za dobrze wykonaną pracę. A potem przychodzi ktoś i mi ten order depcze, bo Więcej…