BDD vs TDD vs ATDD: Kluczowe różnice
Ten przewodnik ma na celu opisanie różnych metod lub praktyk testowania, takich jak Behavioral Driven Development (BDD), Test-Driven Development (TDD) ), Rozwój oparty na testach akceptacyjnych (TDD). Pomoże również wyjaśnić kluczowe różnice między tymi technikami. Pod koniec tego artykułu należy zrozumieć, jak działa każda metoda, kluczowe różnice i ich szczególne role w procesie rozwoju.
Najpierw zacznijmy od programowania sterowanego testami.
Co to jest programowanie sterowane testami (TDD)?
Programowanie sterowane testami to metodologia testowania lub praktyka programistyczna wdrażana z perspektywy programisty. W tej technice inżynier QA zaczyna projektować i pisać przypadki testowe dla każdej małej funkcjonalności aplikacji. Ta technika jest próbą odpowiedzi na proste pytanie – czy kod jest prawidłowy? Głównym celem tej techniki jest modyfikacja lub napisanie nowego kodu tylko wtedy, gdy test zakończy się niepowodzeniem. W związku z tym powoduje mniejsze powielanie skryptów testowych. Ta technika jest bardzo popularna w ekosystemach zwinnego rozwoju. W podejściu TDD zautomatyzowane skrypty testowe są pisane przed funkcjonalnymi fragmentami kodu. Metodologia TDD obejmuje następujące kroki:
- Na podstawie wymagań określonych w dokumentach programista pisze zautomatyzowany przypadek testowy
- Testy te są wykonywane, aw niektórych przypadkach , kończą się niepowodzeniem, ponieważ zostały opracowane przed opracowaniem rzeczywistej funkcji.
- Zespół programistów następnie ponownie analizuje kod, aby test pomyślnie przeszedł.
Ponowne uwzględnienie odnosi się do procesu modyfikowania kodu bez zmiany jego głównej funkcjonalności lub zachowania.
Korzyści z programowania sterowanego testami:
- Pomaga skrócić czas potrzebny na przeróbki
- Pomaga bardzo szybko badać błędy lub błędy
- Pomaga uzyskać szybszą informację zwrotną
- Zachęca do opracowywania czystszych i lepszych projektów
- Zwiększa produktywność programisty
- Umożliwia każdemu członkowi zespołu rozpoczęcie pracy nad kodem w przypadku nieobecności określonego członka zespołu. Zachęca to do dzielenia się wiedzą i współpracy.
- Daje programistom pewność łatwej zmiany dużej architektury aplikacji.
- Skutkuje tworzeniem obszernego kodu, który jest elastyczny i łatwy w utrzymaniu
Rozumiem teraz wszystko na temat rozwoju opartego na zachowaniu.
Co to jest rozwój oparty na zachowaniu (BDD)?
Rozwój oparty na biznesie (BDD) to podejście do testowania wywodzące się z metodologii Test-Driven Development (TDD). W BDD testy opierają się głównie na zachowaniu systemów. To podejście definiuje różne sposoby tworzenia funkcji na podstawie jej zachowania. W większości przypadków do pisania przypadków testowych używa się metody Given-When-Then. Weźmy przykład dla lepszego zrozumienia:
- Zakładając, że użytkownik wprowadził prawidłowe dane logowania
- Gdy użytkownik kliknie przycisk logowania
- Następnie wyświetl komunikat o pomyślnej walidacji
Jak pokazano powyżej, zachowanie jest zilustrowane w bardzo prostym języku angielskim, znanym również jako język współdzielony. Pomaga to wszystkim w zespole odpowiedzialnym za programowanie zrozumieć zachowanie funkcji.
Na przykład można spróbować przeprowadzić łatwy test w różnych przeglądarkach na podstawie zestawu instrukcji testowania na wielu urządzeniach, jak pokazano w wideo.
Wypróbuj bezpłatnie testowanie przeglądarki w chmurze urządzeń rzeczywistych
Najważniejsze korzyści wynikające z kierowania się zachowaniami Podejście programistyczne:
- Pomaga dotrzeć do szerszego grona odbiorców poprzez użycie nietechnicznego języka
- Koncentruje się na tym, jak system powinien zachowywać się z perspektywy klienta i programisty
- BDD to opłacalna technika
- Zmniejsza wysiłki potrzebne do zweryfikowania wszelkich błędów po wdrożeniu
Poniższy obraz przedstawia typową operację BDD:
Źródło obrazu: Tutorialspoint
W jaki sposób BDD pomaga w SDLC?
Debugowanie błędów na późniejszych etapach cyklu rozwojowego często okazuje się bardzo kosztowne ive. W większości przypadków główną przyczyną tego stanu rzeczy jest niejasność w rozumieniu wymagań. Należy upewnić się, że wszystkie wysiłki rozwojowe pozostają ukierunkowane na spełnienie z góry określonych wymagań. BDD umożliwia programistom wykonanie powyższego poprzez:
- Umożliwienie zdefiniowania wymagań w standardowym podejściu przy użyciu prostego języka angielskiego
- Zapewnienie kilku sposobów zilustrowania rzeczywistych scenariuszy zrozumienia wymagania
- Zapewnienie platformy, która umożliwia zespołom technicznym i innym zespołom współpracę i zrozumienie wymagań
Co to jest programowanie oparte na testach akceptacji?
W technice ATDD (Acceptance Test-Driven Development), pojedynczy test akceptacyjny jest napisany z perspektywy użytkownika.Koncentruje się głównie na spełnianiu funkcjonalnego zachowania systemu. Ta technika jest próbą odpowiedzi na pytanie – Czy kod działa zgodnie z oczekiwaniami?
Ta technika poprawia współpracę między programistami, użytkownikami i kontrolerami jakości ze wspólnym celem w sprawie określenia kryteriów akceptacji. Oto niektóre z kluczowych praktyk w ATDD:
- Analizowanie i omawianie rzeczywistych scenariuszy
- Decydowanie o kryteriach akceptacji dla tych scenariuszy
- Automatyzacja przypadków testów akceptacyjnych
- Skupienie się na rozwoju tych przypadków wymagań
Korzyści z ATDD
- Wymagania są bardzo jasno analizowane bez wszelkie niejasności
- Zachęca do współpracy między członkami zespołu.
- Test akceptacyjny służy jako przewodnik dla całego procesu rozwoju.
Kluczowe różnice: TDD vs BDD vs ATDD
Parametry | TDD | BDD | ATDD |
Definicja | TDD to technika programistyczna, która koncentruje się bardziej na implementacji funkcji | BDD to technika programistyczna, która koncentruje się na zachowaniu systemu | ATDD to technika podobna do BDD, skupiająca się bardziej na przechwytywaniu wymagań |
Uczestnicy | Programista | Programiści, klienci, QA | Programiści, klienci, QA |
Używany język | Napisany w języku podobnym do używanego do tworzenia funkcji (np. Java, Python itp.) | Prosty angielski, (Gherkin) | Prosty angielski, Gherkin |
Główny temat | Testy jednostkowe | Zrozumienie wymagań | Pisanie testów akceptacyjnych |
Używane narzędzia | JDave, Cucumber , JBehave, Spec Flow, BeanSpec, Gherkin Concordian, FitNesse | Gherkin, Dave, Cucumber, JBehave, Spec Flow, BeanSpec, Concordian | TestNG, FitNesse, EasyB, Spectacular, Concordian, Thucydides |
Zrozumienie działania tych metod może pomóc programistom i innym osobom zaangażowanym w oprogramowanie dowiedzieć się, która strategia najlepiej spełnia swoje zadanie. W zależności od rodzaju projektu i wyników, jakie ma on osiągnąć, można zastosować odpowiednią metodę (lub nawet połączenie metod), aby spełnić określone wymagania w najbardziej efektywny sposób.