Muszę się wyspowiadać: sformalizowane automatyczne testy nigdy nie były częścią mojego zaplecza programistycznego. Teraz praca w bardzo dużej firmie z wielu deweloperów (większość internetowych twórców czy innego rodzaju), i to jest oczywiste, że większość z nich nie zrobić test * albo. (* Nie zamierzam powtarzać formalnie ; proszę wywnioskować.)
Jeśli zaczekam na wsparcie mojej organizacji, aby rozpocząć testowanie, nigdy się nie wydarzy. Jeśli spróbuję „zmienić rzeczy od środka”, pchając testy w zarządzie, zabraknie mi pary, zanim nastąpi zmiana. Muszę teraz zacząć testowanie.
Ale z TDD i podobnymi rzeczami skończę z dużą ilością kodu testowego wraz z kodem produkcyjnym. Nasze systemy kontroli wersji (wszystkie scentralizowane) nie są zorganizowane do przechowywania kodu testowego. Będę musiał znaleźć miejsce na to wszystko na mojej stacji roboczej.
Czy można rozpocząć osobistą praktykę testowania oprogramowania w kulturze, która nie docenia ani nie zapewnia narzędzi do tego? Jakich technik i narzędzi używasz do testowania, gdy oficjalne narzędzia i organizacja nie mają miejsca na testy, struktury i automatyzację?
src
katalog kodu produkcyjnego, można by również dodaćtest
katalog - czy z jakiegoś powodu jest to wyraźnie zabronione?src
katalogu, mamy katalog główny. Aby sprawdzić mój kod w centralnym VCS, sprawdzałbym go w katalogu głównym.Odpowiedzi:
Zrobiłem to osobiście ze znacznym sukcesem. Kluczowe czynniki sukcesu:
źródło
Bez wsparcia zarządzania jesteś martwy w wodzie. Kierownictwo będzie twierdzić, że nie wykonujesz wartościowej pracy, zostaniesz ukarany w swoich opiniach, a na końcu zwolniony. Istnieją sposoby, aby kierownictwo przekonało się, że wczesne testy kosztują je mniej i to wszystko. Można zmienić kulturę, ale kładziesz szyję na bloku do krojenia.
Sugerowałbym przeczytanie rozdziału Księcia Machiavellego, w jaki sposób wprowadzić zmiany przed zrobieniem czegokolwiek.
źródło
Z mojego doświadczenia wynika, że jeśli kultura jest anty-testowa, nie można rozsądnie jej wprowadzić. Albo testy będą postrzegane jako strata czasu i otrzymają reprymendę za „marnowanie czasu” lub „zabranie zbyt długo”, albo kod się pojawiał od lat, gdy nie pisano go w sposób testowalny (np. Brak interfejsów, wszystko ściśle powiązane) i będziesz musiał spędzić dużo czasu na refaktoryzacji i / lub przepisywaniu kodu (w ten sposób ryzykując „zbyt długo” i „marnowanie czasu”), aby był on testowalny, dzięki czemu możesz pisać testy w pierwszej kolejności .
Możesz mieć szansę, jeśli robisz rzeczy od podstaw, które muszą tylko wchodzić w interakcje z istniejącymi rzeczami (stworzyć ładne opakowanie wokół złych miejsc) lub jeśli możesz to zrobić w małych ilościach, w których nie spowoduje to problemów lub nie będziesz musiał „praca nad zadaniami nieprzypisanymi do ciebie”, które mogą umieścić cię w niełasce.
źródło
Nie sądzę, abyś zaszedł daleko, dopóki nie będziesz w stanie wystarczająco dobrze uzasadnić, że istnieje problem (który może nie być obecnie rozpoznawany), który może rozwiązać automatyczne testowanie.
Jeśli istnieje kultura ręcznego testowania w oparciu o zdefiniowane skrypty, wiąże się to z kosztami wykonania tych skryptów, co wiąże się z ryzykiem niepełnych lub niedokładnych wyników. Może istnieć historia (udokumentowana lub w formie „opowieści wojennej”). Zaproponuj projekt pilotażowy, aby zautomatyzować niektóre z tych testów ręcznych w celu zapewnienia długoterminowej oszczędności kosztów.
Jeśli nie ma nawet funkcji ręcznego testowania, sugerowałbym, że firma nie dostrzega, że jakiekolwiek formalne testowanie, zautomatyzowane lub w inny sposób, ma wartość. W takim przypadku uważam, że droga przed nami jest długa i stromo pod górę, ale znowu może potrzebować wyraźnego wykazania, że firma może skorzystać z mniej swobodnego podejścia do jakości oprogramowania. Jeśli nie możesz tego zrobić, to trudno zrozumieć, w jaki sposób można uzyskać wsparcie dla tego pomysłu z przyczyn komercyjnych.
źródło
Jednym z pomysłów jest napisanie testu, który udowodni, że kod napisany przez kogoś innego jest wadliwy. Powinien sprzedać koncepcję.
źródło