W ciągu ostatniego roku poprowadziłem mój zespół w kierunku rozwoju wersji często wczesnej wersji (AKA: Rapid Application Development, a nie Agile). Aby uzyskać więcej informacji o sposobie, w jaki zamykamy kompilację, zobacz moją odpowiedź tutaj: Proste sposoby poprawy jakości wydania w środowisku RAD
Kiedy przyjęliśmy RAD, ludzie byli dość niezależni i najpierw wykonywali testy jednostkowe; zintegrowane testy miały miejsce znacznie później. Był to dla nich naturalny proces bez formalnego egzekwowania. Teraz sytuacja jest zupełnie inna:
Cała platforma jest dobrze zintegrowana z ustalonymi kompilacjami / wydaniami działającymi po stronie klienta bez żadnych gorących punktów.
Nadal pojawiają się nowe wymagania dotyczące funkcjonalności i stopniowo je budujemy.
Ogólna dynamika systemu jest bardzo ważna, ponieważ chociaż niezależne grupy programistyczne mogą właściwie postępować zgodnie z procesami, poważne awarie powstały z powodu skomplikowanych, nieoczywistych okoliczności.
Wiele części systemu wymaga nowych algorytmów i wkładów badawczych, więc wyzwania (a zatem i mechanizm testowania) nie zawsze są poprawnie przewidywane, jak testowanie funkcji w dobrze zdefiniowanym oprogramowaniu.
Ostatnio starałem się uzyskać lepszy ogólny obraz, aby zobaczyć, czy potrzebujemy poprawy procesu. Kiedy usiadłem ze swoim zespołem, wielu z nich dręczyło: „Nie przeprowadzamy już testów jednostkowych!” podczas gdy inni uważali, że nie powinniśmy zacząć teraz, ponieważ nigdy nie będzie skuteczny.
Czy testy jednostkowe są przydatne w stosunkowo dojrzałym systemie? Czy powinniśmy przynajmniej rozważyć ważenie zakresu testowego w zależności od dojrzałości jednostek? Czy testy jednostkowe spowolnią tempo rozwoju? Czy istnieje potrzeba oceny testów jednostkowych w inny sposób?
Jakie są najlepsze praktyki testowania dojrzałej platformy w środowisku często wydawanym na początku?