Testy są cenne. Przynajmniej nagrywają, że ktoś uważał, że powinien poświęcić czas na ich pisanie, więc prawdopodobnie mieli kiedyś dla kogoś jakąś wartość. Przy odrobinie szczęścia będą one zawierać kompletny zapis wszystkich funkcji i błędów, nad którymi zespół kiedykolwiek pracował - chociaż mogą być również sposobem na zdobycie dowolnego numeru zasięgu testu bez dokładnego przemyślenia. Dopóki na nie nie spojrzysz, nie będziesz wiedział, co jest prawdą tutaj.
Jeśli większość testów mija większość czasu, po prostu ugryź pocisk i zainwestuj czas w ustalenie, co próbowało zrobić kilka testów, które nie powiodły się, oraz poprawienie lub ulepszenie, aby zadanie było łatwiejsze następnym razem. W takim przypadku przejdź do sekcji Określenie intencji każdej sekcji testowej , aby uzyskać porady dotyczące postępowania z niewielką liczbą nieudanych testów.
Z drugiej strony możesz mieć teraz do czynienia z czerwoną wersją i setkami, a nawet tysiącami testów, które od dawna nie przeszły, a Jenkins od dawna nie był zielony. W tym momencie status kompilacji Jenkins stał się bezużyteczny, a kluczowy wskaźnik problemów z odprawą nie działa. Musisz to naprawić, ale nie możesz sobie pozwolić na zatrzymanie wszystkich postępów podczas sprzątania bałaganu w salonie.
Aby zachować zdrowie psychiczne podczas wykonywania wymaganej archeologii w celu ustalenia, jaką wartość można odzyskać po nieudanych testach, zalecam następujące kroki:
Tymczasowo wyłącz nieudane testy.
Istnieje kilka sposobów, w jaki możesz to zrobić, w zależności od środowiska, których nie opisujesz wyraźnie, więc nie mogę polecić żadnego z nich.
Niektóre platformy obsługują pojęcie oczekiwanych awarii. Jeśli tak, to świetnie, bo zobaczysz odliczanie, ile testów pozostało w tej kategorii, a nawet zostaniesz poinformowany, jeśli niektóre z nich zaczną nieoczekiwanie przejść.
Niektóre frameworki obsługują grupy testowe i pozwalają Hudsonowi na uruchomienie tylko niektórych testów lub pominięcie grupy testów. Oznacza to, że możesz czasami uruchomić grupę testową ręcznie, aby sprawdzić, czy któraś z nich teraz przechodzi.
Niektóre frameworki umożliwiają dodawanie adnotacji lub w inny sposób oznaczanie pojedynczych testów do zignorowania. W tym przypadku trudniej jest prowadzić ich jako grupę, ale powstrzymuje ich to przed rozpraszaniem.
Możesz przenieść testy do drzewa źródłowego, które zwykle nie jest zawarte w kompilacji.
W ekstremalnych przypadkach możesz usunąć kod z HEAD systemu kontroli wersji, ale utrudni to rozpoznanie po zakończeniu trzeciej fazy.
Celem jest sprawienie, aby Jenkins poszedł na zielono tak szybko, jak to możliwe, abyś mógł jak najszybciej zacząć podążać we właściwym kierunku.
Utrzymuj odpowiednie testy.
Postanowić dodać nowe testy podczas dodawania lub modyfikacji kodu i zobowiązać się do zachowania pozytywnego wyniku wszystkich testów.
Testy mogą się nie powieść z różnych powodów, w tym z faktu, że nie były to dobrze napisane testy na początek. Ale kiedy już staniesz się zielony Jenkins, utrzymanie go w ten sposób jest naprawdę ważne.
Przyzwyczaj się do pisania dobrych testów i spraw, aby było to bardzo ważne, jeśli testy zaczną się nie powieść.
Określ cel każdego testu.
Przejrzyj kolejno wyłączone testy. Zacznij od tych, które wpływają na najczęściej zmieniane moduły. Określ cel testu i przyczynę niepowodzenia.
Czy celowo testuje funkcję, która została specjalnie usunięta z kodu? Następnie prawdopodobnie możesz go usunąć.
Czy łapie błąd, którego nikt jeszcze nie zauważył? Przywróć test i napraw błąd.
Czy to się nie udaje, ponieważ przyjmował nieuzasadnione założenia (np. Zakładając, że tekst przycisku będzie zawsze w języku angielskim, ale teraz zlokalizowałeś aplikację na wiele języków)? Następnie dowiedz się, w jaki sposób skoncentrować test na jednej rzeczy i jak najlepiej oddzielić go od niezwiązanych zmian.
Czy test rozciąga się na całą aplikację i reprezentuje test systemu? Następnie usuń go z głównego zestawu testów Jenkins i dodaj do zestawu regresji, który działa rzadziej.
Czy architektura aplikacji zmieniła się nie do poznania, więc test już nic nie przydaje? Usuń to.
Czy test został dodany, aby sztucznie zwiększyć statystyki pokrycia kodu, ale w rzeczywistości nic poza potwierdzeniem, że kod poprawnie się kompiluje i nie przechodzi w nieskończoną pętlę? A może test po prostu potwierdza, że wybrana frakcja próbna zwraca wyniki, o których właśnie jej powiedziałeś? Usuń to.
W wyniku tego niektóre testy się utrzymają, niektóre zostaną zmodyfikowane, niektóre podzielone na wiele niezależnych fragmentów wielkości kęsa, a niektóre usunięte. Tak długo, jak nadal robisz postępy w zakresie nowych wymagań, musisz poświęcić trochę czasu na poradzenie sobie z technicznym zadłużeniem w ten sposób.