0. Słuchaj swoich programistów.
Jeśli nie przeprowadzają testów, oznacza to, że postrzegają koszt (oczekiwanie na uruchomienie testów, radzenie sobie z fałszywymi awariami) na wartość wyższą niż wartość (natychmiastowe wykrywanie błędów). Zmniejsz koszty, zwiększ wartość, a ludzie będą przeprowadzać testy przez cały czas.
1. Sprawdź, czy testy są w 100% wiarygodne.
Jeśli kiedykolwiek zdarzy Ci się test, który zakończy się niepowodzeniem z fałszywymi negatywami, zrób to natychmiast. Napraw je, zmień, wyeliminuj, bez względu na wszystko, aby zagwarantować 100% niezawodności. (Można mieć zestaw niewiarygodnych, ale wciąż przydatnych testów, które można uruchomić osobno, ale główny zestaw testów musi być niezawodny).
2. Zmień swoje systemy, aby zagwarantować, że wszystkie testy przebiegną cały czas.
Użyj systemów ciągłej integracji, aby upewnić się, że tylko zatwierdzające przekazywanie zostaną włączone do głównej / oficjalnej / wydania / dowolnej gałęzi.
3. Zmień swoją kulturę na wartość 100% pozytywnych testów.
Naucz lekcji, że zadanie nie jest „wykonane”, dopóki nie przejdzie 100% testów i zostanie ono włączone do głównej / oficjalnej / wydania / dowolnej gałęzi.
4. Wykonaj testy szybko.
Pracowałem nad projektami, w których testy trwają sekundę, oraz nad projektami, w których trwają cały dzień. Istnieje silna korelacja między czasem potrzebnym do uruchomienia testów a moją produktywnością.
Im dłużej trwają testy, tym rzadziej będziesz je uruchamiać. Oznacza to, że dłużej będziesz otrzymywać informacje zwrotne o wprowadzanych zmianach. Oznacza to również, że będziesz przechodził dłużej między zatwierdzeniami. Częste zatwierdzanie oznacza mniejsze kroki, które łatwiej jest scalić; łatwiej jest śledzić historię zatwierdzeń; łatwiej znaleźć błąd w historii; cofanie jest również łatwiejsze.
Wyobraź sobie testy, które działają tak szybko, że nie przeszkadza ci automatyczne uruchamianie ich za każdym razem, gdy kompilujesz.
Szybkie przeprowadzanie testów może być trudne (o to poprosił OP, prawda!). Oddzielenie jest kluczem. Fałszywe / fałszywe są w porządku, ale myślę, że możesz to zrobić lepiej, dokonując refaktoryzacji w celu uczynienia fałszywych / fałszywych fałszywymi. Zobacz blog Arlo Belshee, zaczynając od http://arlobelshee.com/post/the-no-mocks-book .
5. Spraw, aby testy były przydatne.
Jeśli testy nie zawiodą, kiedy spieprzysz, to po co? Naucz się pisać testy, które wychwycą błędy, które prawdopodobnie stworzysz. Jest to umiejętność sama w sobie i będzie wymagała dużej uwagi.