Nasza baza kodów rośnie od 20 lat. Mamy około 10 deweloperów + sqa pracujących z 500kloc. Jakiś czas temu mały zespół z nas (2 deweloperów, jeden z sqa) rozpoczął pracę nad automatycznym programem testowym. Obecnie jedno uruchomienie zajmuje 11 godzin i jest niejako testem integracyjnym. Pracujemy nad tym, aby zmniejszyć ten poziom i zmniejszyć liczbę fałszywych trafień, i robimy w tym zakresie znaczne postępy. Ale szczegóły nie powinny mieć znaczenia.
Działa dobrze i wciąż go ulepszamy. My (mały zespół) bardzo to lubimy. Jeśli coś zepsujemy, zauważymy dzień później, a nie 2 miesiące później, kiedy przyjrzy się sqa. Również naszym menedżerom (dev + sqa) podoba się ten pomysł. Ale inni ludzie w zespole po prostu ignorują wyniki testu. Ich zdaniem, jeśli testy nie kończą się powodzeniem, to jest to problem testu, a nie zmiany kodu i to tylko nasz projekt zabawki. Kilka razy rozmawialiśmy, czy nieudany test jest prawdziwym błędem. Najczęściej tak jest.
Nie możemy i nie chcemy czegoś wymuszać. Jak możemy pokazać, że zautomatyzowane testowanie jest rzeczą?
źródło
Odpowiedzi:
Zrzeczenie się
Chociaż mogę brzmieć jak menedżer, napisałem to jako programista, który również musiał zostać przekonany, że testy automatyczne są dobre.
Musisz zrozumieć podstawową psychologię programistów. Jest to zakorzeniona potrzeba programistów do zatwierdzania kodu. Wszystko, co im to uniemożliwia, jest bardzo, bardzo złą rzeczą. Nieudany test jest zdecydowanie czymś, co im to uniemożliwia, ergo, to zła rzecz. Stąd opór.
Należy zauważyć, że podczas gdy automatyczne testy spowalniają je w krótkim okresie, na dłuższą metę zaoszczędzi im wiele żalu i faktycznie je przyspieszy, ponieważ będą mogli bardziej skoncentrować się na rozwoju nowe rzeczy i stracisz mniej czasu, robiąc inne rzeczy, których programiści nienawidzą: naprawianie błędów.
I tak, musisz to egzekwować. Musisz uzyskać bezwarunkowe wsparcie od kierownictwa i uczynić pisanie testów automatycznych obowiązkowymi i niepodlegającymi negocjacjom. Z czasem programiści przyzwyczają się do nich. Pomoże ci to, jeśli uda ci się opracować pewne wskaźniki, które pokażą, o ile więcej nowych prac zostało dokonanych i o ile liczba błędów została zmniejszona od czasu wprowadzenia automatycznych testów. Słowa są niestabilne. Liczby są stałe. A liczby są czymś, co przeciętny programista rozumie lepiej niż słowa. Jeśli możesz udowodnić, używając liczb stałych, że testy automatyczne są dobre, nie uzyskasz od nich odporności na żadną lub wcale.
źródło
To twój problem. Jeśli twoje testy są niestabilne (nawet jeśli są wiarygodne „przez większość czasu”), ludzie będą ignorować wyniki. Twój zespół ds. Automatyzacji powinien skoncentrować się na eliminowaniu fałszywych negatywów. Tylko wtedy reszta zespołu zyska wystarczającą wiarę w wyniki, aby faktycznie im zaufać.
źródło
Zdecydowanie powinieneś go egzekwować! Jeśli ktoś wypchnie nowy kod i testy zakończą się niepowodzeniem, kod należy odrzucić! Jest to jedyny sposób na niezawodne utrzymanie większego projektu oprogramowania.
źródło