W swojej karierze programisty Androida widziałem już wiele projektów.
Ale naprawdę mało projektów z dobrymi, wartościowymi i DZIAŁAJĄCYMI testami.
Prawda jest brutalna: testy to dodatkowy koszt!
Każdy test trzeba napisać, aktualizować i poprawiać. To oznacza czas, a czas to pieniądz.
Osobiście jestem wielki fanem pisania testów, bo już kilka razy uratowały mnie przed wypuszczeniem kodu z błędem albo regresją. Rozumiem jednak osoby, które odpowiadają za budżet i nie widzą tej wartości.
Niektóre projekty nie potrzebują testów. Mam na myśli te niewielkie, jednorazowe apki, których cykl życia liczy się w tygodniach, albo powstają jako MVP jakiegoś produktu.
Jeśli jednak wiesz, że projekt nad którym pracujesz będzie utrzymywany i rozwijany, to proszę, zrób to dla siebie albo tego następnego dewelopera.
Jak to powiedział Martin Golding:
“Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live.”
Udało Ci się przekonać product ownera i kolegów z zespołu, że testy warto pisać? Nadeszła pora, aby napisać testy, ale możesz poświęcić tylko 10% czasu na testy?
Pora odpowiedzieć na tytułowe pytanie.
Od jakiego testu warto zacząć, aby uzyskać jak najlepszy zwrot z inwestycji?
Moja odpowiedź brzmi: test UI przechodzący przez jakąś ważną ścieżkę w aplikacji. Najlepiej wybrać kluczowy flow, albo coś co użytkownicy często wykorzystują.
Przykładowo: mam aplikacje do rezerwacji biletów do kina.
Jeśli miałbym napisać jeden test, to stworzyłbym taki, który:
- wybiera kino,
- wybiera film,
- wybiera seans,
- wypiera siedzenia,
- płaci,
- i sprawdza czy wyświetla się potwierdzenie.
Ten jeden test daje mi pewność, że moje zmiany nie zepsuły najważniejszej ścieżki w aplikacji. Tej która generuje pieniądze.
Naturalnie taki test ma wiele wad. Trudno od razu zdiagnozować dlaczego stał się czerwony, a jego czytelność jest przeciętna.
Ale mając ograniczony czas na testy trzeba się nauczyć wybierać. Taka siatka bezpieczeństwa to dobry wybór na sam początek.
Gdy będziesz miał więcej czasu lub doświadczenia, możesz dodawać lepsze testy. Mniejsze, bardziej czytelne i przemyślane.