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…

Piszesz testy do wymagań biznesowych, czy do implementacji?

Zastanawiasz się czasem po co piszesz testy? Poza tym, że tak trzeba, albo tak każą… Piszesz testy, żeby sprawdzić, czy kod działa, czy żeby udowodnić, że działa? Czy testy opierają się o wymagania biznesowe, czy o implementację? Poza dopisywaniem testów do odziedziczonego kodu, powinniśmy się raczej kierować wymaganiami, niż naszą interpretacją, nie uważasz? I tutaj przychodzi nam z pomocą TDD. Nawet jeśli nie korzystasz na codzień z tej techniki, to ona jednak trochę układa w głowie. Pisząc testy przed kodem musisz opierać się o scenariusz biznesowy, bo implementacja jeszcze nie istnieje. W ten sposób lepiej projektujesz kod i skupiasz się Więcej…