Jeśli jesteś zaznajomiony z TDD to ATDD jest w pewnym sensie TDD z wyższym poziomem testowania i z większą liczbą zaangażowanych interesariuszy, innymi słowy jest to bardziej testowanie akceptacyjne niż jednostkowe. Jeśli chcesz dowiedzieć się więcej o TDD to sprawdź następujący post:
Acceptance test-driven development (ATDD) jest metodologią rozwoju opartą na komunikacji pomiędzy klientami biznesowymi, programistami i testerami. ATDD obejmuje wiele z tych samych praktyk jak specyfikacja przez przykład, rozwój sterowany zachowaniem (BDD), rozwój sterowany przykładem (EDD) i rozwój sterowany wsparciem, zwany również rozwojem sterowanym testami historii (SDD). Wszystkie te procesy pomagają programistom i testerom w zrozumieniu potrzeb klienta przed implementacją i pozwalają klientom na konwersację w ich własnym języku domeny.
Powszechnie stosowane w zespołach Agile, ATDD jest praktyką, w której analitycy biznesowi, programiści, testerzy i użytkownicy pracują razem, aby zdefiniować kryteria akceptacji każdej historii (lub funkcji) we wczesnej fazie procesu rozwoju (przed rozpoczęciem kodowania). Takie podejście pozwala wszystkim interesariuszom mieć i utrzymywać ten sam poziom oczekiwanych rezultatów zanim jakikolwiek programista zacznie kodować.
Wiem, że wszyscy słyszeliśmy ten stereotyp „Deweloperzy nie dbają o specyfikację, a testerzy nie chcą robić automatyzacji”, ale z ATDD zaoszczędzi to wiele zmarnowanego czasu i pieniędzy poprzez zapewnienie, że deweloperzy są bardziej zaangażowani we wczesne etapy specyfikacji, a testerzy automatyzują testy akceptacyjne.
Jak ATDD jest zaimplementowane w „prawdziwym życiu”?
Czy używasz SCRUM? Jeśli tak, to już wykonujesz większość pracy w ATDD. Jeśli nie, to poniższy przykład musi zaspokoić Twoją ciekawość :
Przykład
Załóżmy, że właściciel produktu lub klient zażądał następującej funkcji w naszej aplikacji mobilnej: „Jako użytkownik chcę ominąć ekran logowania, dzięki czemu będę mógł korzystać z aplikacji anonimowo” Po przejrzeniu tego żądania z całym zespołem (Analityk biznesowy, Programiści, Testerzy…) i z większą ilością szczegółów dodanych do historii lub cechy, będziemy mieli kilka testów „akceptacyjnych” lub „funkcjonalnych” podobnych do tego (Proszę zwrócić uwagę, że jest to tylko przykład, brakuje wielu testów akceptacyjnych dla tej cechy):
- Kryteria akceptacji 1: Aplikacja opcjonalnie akceptuje login/hasło do logowania
- Kryteria akceptacji 2: Przycisk bypass pozwala użytkownikowi na przeglądanie w obrębie aplikacji bez logowania.
- Kryteria akceptacji 3: Po wybraniu obejścia przycisku aplikacja nie przechowuje ani nie wyświetla żadnych informacji specyficznych dla użytkownika.
- Kryteria akceptacji 4: Kiedy login/hasło są używane, GUI aplikacji musi być dostosowane do ustawień użytkownika.
Korzyści
1- Dopasowanie klient-sprzedawca : Mając powyższe kryteria akceptacji jako informacje wejściowe, my (każdy członek zespołu) jesteśmy teraz pewni, że aplikacja zachowa swoją funkcjonalność logowania/hasła i doda jedynie przycisk pozwalający użytkownikowi ominąć ekran logowania.
2- Jakość i efektywność kosztowa: Powyższe testy można łatwo zautomatyzować jeszcze przed rozpoczęciem kodowania przez programistów.
3- Time to Market: Po wdrożeniu testów programiści mogą zatwierdzić swoje wymagane zadania przed ogłoszeniem, że skończyli.
ATDD nie wymaga żadnych specyficznych narzędzi. Ważne jest, aby wiedzieć, że NIE wszystkie testy akceptacyjne muszą być zautomatyzowane. Automatyzacja testów zależy od wielu aspektów, takich jak: wyzwania techniczne, termin i koszt.
Jakieś zalecane narzędzia?
ATDD nie wymaga żadnych specyficznych narzędzi. Ważne jest, aby wiedzieć, że NIE wszystkie testy akceptacyjne muszą być zautomatyzowane. Automatyzacja testów zależy od wielu aspektów, takich jak: wyzwania techniczne, terminy i koszty.
W tej sekcji przedstawię tylko przegląd najczęściej używanych narzędzi do automatyzacji ATDD:
FitNess: W pełni zintegrowany samodzielny framework wiki i testów akceptacyjnych
Robot framework: generyczny framework automatyzacji testów dla testów akceptacyjnych i acceptance test-driven development (ATDD)
Calabash: Automated acceptance testing for mobile apps – Be aware that this framework may not support latest OS version (above Android O )
.