Czas porozmawiać o ATDD! Chcesz dowiedzieć się czegoś o ATDD albo odświeżyć sobie tę koncepcję? Nie martw się! W tym artykule wyjaśnimy, czym dokładnie jest ATDD i jaki ma związek z BDD oraz TDD. Omówimy również najlepsze praktyki i krok po kroku przedstawimy całą metodologię!
W niniejszym przewodniku po ATDD
Czym jest ATDD
ATDD to praktyka oparta na metodologii ATDD. Podejście programistyczne ATDD to framework obejmujący praktyki ATDD i BDD. Skrót ATDD oznacza programowanie sterowane testami akceptacyjnymi.
ATDD to unikalne podejście do procesu tworzenia oprogramowania, które pomaga w opracowywaniu kodu automatyzującego poprzez najpierw napisanie scenariuszy testów akceptacyjnych, a następnie wdrożenie kodu we współpracy z osobami nieposiadającymi wiedzy technicznej. ATDD łączy osoby nieposiadające wiedzy technicznej, testerów i programistów w jednym środowisku, aby wspólnie pracowali nad tym samym produktem. Narzędzie ATDD nie jest przeznaczone do testowania, ale wspiera praktyki ATDD.
BDD a TDD
BDD opiera się na przykładach, w przeciwieństwie do ATDD, które opiera się na testach akceptacyjnych. TDD koncentruje się na testach jednostkowych, natomiast BDD skupia się zarówno na testach jednostkowych, jak i akceptacyjnych. ATDD wymaga, aby ekspert biznesowy współpracował z programistami przez cały czas trwania projektu, zapewniając wyjaśnienia i współdziałanie w zakresie tego, co należy stworzyć.
Jako programista możesz zadać sobie pytanie: co dokładnie oznaczają skróty ATTD i ATDD? ATTD to skrót od „acceptance test-driven development” (programowanie sterowane testami akceptacyjnymi). ATDD oznacza połączenie programowania sterowanego testami akceptacyjnymi (ATTD) oraz BDD w jedną praktykę. ATDD jest podobne do TDD (programowania sterowanego testami), ale wymaga dodatkowo napisania testów akceptacyjnych przed rozpoczęciem kodowania.
Agile a TDD
Metodologia Agile obejmuje praktyki ATDD, TDD i BDD. ATTD stanowi podzbiór ATDD. Można uznać ATTD za wcześniejszą formę ATDD. W ramach metodologii Agile podejście programistyczne ATTD znane jest jako ATTD oraz ATBD (programowanie sterowane testami akceptacyjnymi) w XP (Extreme Programming). ATBD zakłada współpracę ekspertów biznesowych z programistami w zakresie ustalania zakresu prac.
W metodologii Scrum testy akceptacyjne są tworzone przez zespół programistów, który współpracuje z ekspertem biznesowym reprezentującym użytkowników/klientów w celu ustalenia, co należy zrealizować w ramach konkretnej funkcji lub opisu użytkownika. Testy akceptacyjne powstają w oparciu o ogólne wymagania lub opisy użytkownika, które określają kryteria akceptacji. Testy akceptacyjne określają, w jaki sposób ustalić, czy kryteria akceptacji zostały spełnione. ATDD zostało zdefiniowane przez Dana Northa w 2003 roku. ATDD jest procesem bardzo podobnym do ATBD (Acceptance Test-Driven Development). ATBD różni się od ATDD tym, że ATBD określa również szczegóły implementacji, podczas gdy ATDD nie próbuje określać szczegółów implementacji – celem ATDD jest jedynie sprawdzenie, czy implementacja spełnia specyfikację wymagań.
Korzyści płynące z ATDD
ATDD ma wiele zalet. Należą do nich: większa satysfakcja klientów, lepsza jakość, niższe koszty, większa szybkość realizacji oraz wyższa wydajność. Zasady ATDD są zgodne zarówno z metodą kaskadową, jak i zwinnymi metodami. ATDD sprzyja również ściślejszej współpracy między użytkownikami biznesowymi a programistami poprzez przełamywanie barier, eliminowanie niejasności oraz usprawnianie komunikacji w całym cyklu życia projektu.
ATDD wymaga od wszystkich zainteresowanych stron współpracy na każdym etapie procesu tworzenia oprogramowania. ATDD skraca czas potrzebny do stworzenia wysokiej jakości oprogramowania. ATDD ogranicza również marnotrawstwo poprzez zmniejszenie liczby poprawek i wcześniejsze usuwanie błędów w cyklu rozwoju. Prawidłowo wdrożone ATDD zwiększy Twoje szanse na sukces na każdym etapie cyklu życia projektu!
Zaletą podejścia ATDD jest to, że pozwala ono ograniczyć liczbę błędów w kodzie produkcyjnym, a jednocześnie oszczędza czas i wysiłek związany z testowaniem ręcznym. Ponadto zwiększa wydajność pracy programistów o 50%. Kluczem do sukcesu w przypadku ATDD jest rozpoczęcie od testów akceptacyjnych, a następnie przejście do testów integracyjnych, zanim przystąpi się do testów jednostkowych.
Etapy procesu ATDD
Niezależnie od tego, czy stosuje się metodę ATDD, testy akceptacyjne obejmują 5 etapów:
1) Pierwszym krokiem jest zrozumienie potrzeb biznesowych
2) Drugim krokiem jest sporządzenie opisu wymagań użytkownika
3) Trzecim krokiem jest przygotowanie przypadków testowych
4) Czwarty krok to analiza wad
5) Ostatnim krokiem jest uruchomienie przypadków testowych za pomocą frameworka ATDD
Co oznacza skrót ATDD?
Pełna nazwa ATDD to ATTD, które stanowi podzbiór ATDD. ATTD to programowanie sterowane testami akceptacyjnymi, natomiast ATDD obejmuje zarówno ATTD, jak i ATBD (programowanie sterowane testami akceptacyjnymi). ATBD obejmuje praktyki ATTD, ATDD oraz BDD. ATBD różni się od ATDD tym, że ATBD określa również szczegóły implementacji, podczas gdy ATDD nie próbuje określać szczegółów implementacji – celem procesu ATDD jest jedynie sprawdzenie, czy implementacja spełnia specyfikację wymagań.
Etapy testów akceptacyjnych:
1) zrozumienie potrzeb biznesowych;
2) tworzenie opisu funkcji;
3) przygotowywanie przypadków testowych;
4) analiza wad, a na koniec,
5) wykonywanie przypadków testowych za pomocą wprowadzonego frameworka.
Wskazówki dotyczące prawidłowego stosowania ATDD
Wiedza o tym, czym jest ATDD, to jedno, ale wdrożenie tej metodologii i procesu to zupełnie inna sprawa. Z własnego doświadczenia wiem, że poniższe wskazówki są niezwykle pomocne:
- ATDD należy stosować na wczesnym etapie. ATDD nie powinno zastępować testów jednostkowych. ATDD to technika projektowania testów. ATDD wymaga współpracy. ATDD sprawdza się najlepiej, gdy dysponuje się dobrze sformułowanymi opisemami użytkownika. Wspólne sesje ATDD z udziałem programistów i testerów mogą być czasochłonne, ale taka współpraca pozwala uzyskać lepszy produkt końcowy. ATDD sprawdza się najlepiej, gdy wymagania są jasno sformułowane. W ramach ATBD/ATDD potrzebne są dobre przykłady, które pomagają w jasnym zrozumieniu wymagań.
- Kolejną świetną wskazówką dotyczącą skutecznego testowania akceptacyjnego jest korzystanie z narzędzi ATDD, takich jak Cucumber, JBehave czy Concordion. Frameworki ATDD zostały stworzone specjalnie po to, by uporządkować scenariusze testowe ATDD i zmniejszyć złożoność ich wdrażania.
Końcowe przemyślenia na temat ATDD
ATDD to technika projektowania testów, która niesie ze sobą wiele korzyści, w tym większą satysfakcję klientów, wyższą jakość, niższe koszty oraz większą szybkość i wydajność. ATDD wymaga współpracy wszystkich zainteresowanych stron na każdym etapie procesu rozwoju, co pozwala ograniczyć marnotrawstwo poprzez zmniejszenie liczby poprawek i usuwanie błędów na wcześniejszych etapach cyklu rozwoju.
ATDD zwiększa również wydajność pracy programistów o 50%. ATTD i ATBD są podzbiorami ATDD, przy czym ATTD oznacza programowanie sterowane testami akceptacyjnymi, natomiast ATBD obejmuje zarówno praktyki związane z testami akceptacyjnymi, jak i zasady BDD.
Kluczem do sukcesu w przypadku stosowania frameworka ATDD jest wczesne rozpoczęcie prac, nie zastępowanie testów jednostkowych, opracowanie dobrych opisu wymagań w formie historii użytkownika oraz korzystanie z narzędzi takich jak Cucumber lub JBehave, jeśli są dostępne, a także wspólna praca nad doprecyzowaniem wymagań podczas sesji przed



