Początkowo pisanie testu jest obowiązkiem programisty, ale zauważyłem, że w wielu przypadkach / programiści e-dojrzali przypadki te nie zapewniają nawet 80% zasięgu.
Co powiesz na to, że mam osobę odpowiedzialną za kontrolę jakości, która pisze WSZYSTKIE testy dla danego projektu zamiast programisty?
Czy są jakieś wady?
development-process
tdd
Itay Moav-Malimovka
źródło
źródło
Odpowiedzi:
W rozwoju opartym na testach testy muszą być napisane przez programistę. W przeciwnym razie rozwój kieruje ktoś inny niż programista.
Gdy więc zlecisz pisanie testów nie-programistom, osoba ta zostanie programistą.
Moje doświadczenie w TDD polega na tym, że pisanie kodu testowego jest często tak samo trudne lub trudniejsze niż pisanie kodu produkcyjnego. Jeśli więc masz zasoby zdolne do napisania dobrego kodu testu jednostkowego / testu integracji, powinni oni napisać kod produkcyjny, który powoduje, że testy są udane.
źródło
Zadaniem QA jest przeprowadzenie zupełnie innego rodzaju testu (tj. Testowania użyteczności / integracji). Nie muszą tak naprawdę znać technologii zastosowanych w kodzie.
Jeśli martwisz się niskim poziomem kodu, musisz zdyscyplinować programistów. Na przykład zatrzymanie pracy nad nowymi funkcjami, aż zwiększy się zasięg kodu. Niektóre organizacje posuwają się do tego, że mają repozytorium przechwytujące przed zatwierdzeniem, które nie zezwala na rejestrowanie odkrytego kodu.
Wreszcie, w „czystym” TTD, nie powinno być w ogóle żadnego odkrytego kodu (ponieważ najpierw piszesz testy). Są jednak przypadki (choć ludzie się o to kłócą), w których akceptowalny jest mniejszy zasięg kodu. Niektórzy twierdzą na przykład, że pisanie testów dla osób pobierających / ustawiających POJO to strata czasu.
źródło
To może być problem z zarządzaniem.
Lub może to być nieistotne.
Po pierwsze, różnica między 80% a 100% pokrycia jest prawdopodobnie dużym kosztem przy bardzo niewielkich korzyściach.
„Zasięg” może znaczyć wszystko. Linie kodu, ścieżki logiczne itp. Domyślam się, że masz na myśli linie kodu (nie ścieżki logiczne).
Niektóre ścieżki logiczne są dość dobrze testowane „przez kontrolę”. Kod jest oczywisty, nie zawiera instrukcji if, ma bardzo, bardzo niską złożoność i prawdopodobnie nie wymaga dodatkowego testu.
20% więcej testów nie zawsze o 20% wyższa jakość.
Druga. To problem z zarządzaniem. Jeśli zarząd chce 100% pokrycia, musi wprowadzić system nagród, który nagradza 100% pokrycia zamiast „wystarczająco dobrego, aby uwolnić” 80% pokrycia.
Dodanie ludzi do kontroli jakości, aby napisać więcej testów, niewiele pomoże.
Dodanie programistów do napisania większej liczby testów jest wymagane, aby uzyskać 100% pokrycia testowego.
źródło
Testowanie jednostek IMHO nie jest procesem kontroli jakości. Chodzi raczej o przyspieszenie programowania (poprzez zmniejszenie pętli sprzężenia zwrotnego dla programistów). Powinno to być zrobione przez osobę piszącą komponent (aka unit), ze szczególnym uwzględnieniem użycia komponentów (przez innego programistę).
Testy funkcjonalne to proces kontroli jakości, który może i powinien zostać przeprowadzony przez zespół kontroli jakości. Może to zrobić programista, ale programista nie byłby lepszy, ponieważ programista może nie znać wszystkich sposobów korzystania z aplikacji przez użytkownika.
Oba mogą być wykonane w sposób TDD.
źródło
TDD to nie tylko testowanie, ale także projektowanie. Pisanie kodu tylko po to, aby przejść testy, zwykle prowadzi do mniejszego i łatwego do utrzymania kodu. Jeśli oddelegujesz inną osobę do napisania testów, będziesz również delegować odpowiedzialność za tworzenie dobrego kodu.
Należy również pamiętać, że zasięg nie powie ci o jakości kodu i nie powie ci, czy reguły domeny są objęte.
źródło
Jeśli potrzebujesz co najmniej 80% zasięgu, musisz zrobić kilka rzeczy:
Na koniec zrozum, że istnieje różnica między zamierzonymi ścieżkami wykonania a niezamierzonymi ścieżkami wykonania. Podczas pisania kodu sterowanego testem mogłeś udowodnić, że potrzebujesz pary niezależnych instrukcji if. W rezultacie dostępne są testy dwóch z czterech potencjalnych ścieżek wykonania. Dodaj jeszcze jedną niezależną instrukcję if, a masz potencjał ośmiu ścieżek wykonania (tzn. Rośnie wykładniczo).
Zrozum, że TDD niekoniecznie przewiduje każdą potencjalną ścieżkę wykonania, więc istnieje szereg testów, które mogą wymagać napisania w celu ukończenia, ale nie są napisane, ponieważ nie było potrzeby testowania tej ścieżki. W skrócie TDD nie gwarantują pokrycia, ale nie gwarantuje, że istnieje co najmniej jedno badanie w celu udowodnienia przyczyny d'Eter do kodu, który nie istnieje.
źródło