tdd vs bdd analyze differences with examples
Tento výukový program vysvetľuje príklady rozdielov medzi TDD a BDD:
TDD alebo Test Driven Development a BDD alebo Behavior Driven Development sú dve techniky vývoja softvéru.
Predtým, ako sa ponoríme hlbšie do rozdielu medzi týmito dvoma, najskôr si uvedomme, čo znamenajú jednotlivo a ako sa používajú?
Začnime!!
Čo sa dozviete:
ako otvoriť súbor .jar
Čo je TDD?
TDD znamená Test Driven Development. V tejto technike vývoja softvéru najskôr vytvoríme testovacie prípady a potom napíšeme kód, ktorý je základom týchto testovacích prípadov. TDD je síce vývojová technika, ale dá sa použiť aj na vývoj testovania automatizácie.
Tímy, ktoré implementujú TDD, trvajú s vývojom viac času, majú však tendenciu nájsť veľmi málo defektov. Výsledkom TDD je vylepšená kvalita kódu a kód, ktorý je opakovane použiteľný a flexibilnejší.
TDD tiež pomáha pri dosahovaní vysokej hodnoty pokrytie testom asi 90-100%. Najnáročnejšia vec pre vývojárov, ktorí sledujú TDD, je napísať svoje testovacie prípady pred napísaním kódu.
Navrhované čítanie => Sprievodca písaním vynikajúcich testovacích prípadov
Proces TDD
Metodika TDD sleduje veľmi jednoduchý 6 krokový proces:
1) Napíšte testovací prípad: Na základe požiadaviek napíšte automatizovaný testovací prípad.
2) Spustite všetky testovacie prípady: Spustite tieto automatizované testovacie prípady na aktuálne vyvinutom kóde.
3) Vytvorte kód pre dané testovacie prípady: Ak testovací prípad zlyhá, napíšte kód, aby testovací prípad fungoval podľa očakávaní.
4) Znova spustite testovacie prípady: Znova spustite testovacie prípady a skontrolujte, či sú implementované všetky doteraz vyvinuté testovacie prípady.
5) Refaktorujte svoj kód: Toto je voliteľný krok. Je však dôležité preformátovať váš kód tak, aby bol čitateľnejší a znovu použiteľný.
6) Opakujte kroky 1 - 5 pre nové testovacie prípady: Opakujte cyklus pre ďalšie testovacie prípady, kým nebudú implementované všetky testovacie prípady.
Príklad implementácie testovacieho prípadu v TDD
Predpokladajme, že máme požiadavku na vývoj funkčnosti prihlásenia pre aplikáciu, ktorá má polia užívateľské meno a heslo a tlačidlo na odoslanie.
Krok 1: Vytvorte testovací prípad.
@Test Public void checkLogin(){ LoginPage.enterUserName('UserName'); LoginPage.enterPassword('Password'); HomePage homePage = LoginPage.submit(); Assert.assertNotNull(homePage); }
Krok 2: Spustite tento testovací prípad a zobrazí sa chyba, ktorá hovorí, že prihlasovacia stránka nie je definovaná a neexistujú žiadne metódy s názvami enterUserName, enterPassword a submit.
Krok 3: Vypracujte kód pre daný testovací prípad. Poďme napísať podkladový kód, ktorý zadá užívateľské meno a heslo a získame objekt domovskej stránky, keď sú správne.
public class LoginPage{ String username; String password; //store username public void enterUserName(String username){ this.username = username; } //store password public void enterPassword(String password){ this.password = password; } //match username and passowrd in db and return home page public HomePage submit(){ if(username.existsInDB()){ String dbPassword = getPasswordFromDB(username); if(dbPassword.equals(password){ Return new HomePage(); } } }
Krok 4: Znova spustite testovací prípad a dostaneme inštanciu domovskej stránky.
Krok 5: Opätovným preformátovaním kódu poskytneme správne chybové správy, ak podmienky if v metóde odoslania nie sú pravdivé.
//match username and passowrd in db and return home page public HomePage submit(){ if(username.existsInDB()){ String dbPassword = getPasswordFromDB(username); if(dbPassword.equals(password){ Return new HomePage(); } else{ System.out.println('Please provide correct password'); return; } } else{ System.out.println('Please provide correct username'); }
Krok 6: Teraz napíšeme nový testovací prípad s prázdnym používateľským menom a heslom.
@Test Public void checkLogin(){ LoginPage.enterUserName(''); LoginPage.enterPassword(''); HomePage homePage = LoginPage.submit(); Assert.assertNotNull(homePage); }
Ak sa pokúsite spustiť tento testovací prípad, zlyhá. Zopakujte kroky 1 až 5 pre tento testovací prípad a potom pridajte funkciu na spracovanie prázdnych reťazcov používateľského mena a hesla.
čo je používateľské meno a heslo pre smerovač
Čo je BDD?
BDD znamená Behavior Driven Development. BDD je rozšírením TDD, kde namiesto písania testovacích prípadov začneme písaním správania. Neskôr vyvinieme kód, ktorý je potrebný na to, aby sa naša aplikácia chovala.
Scenár definovaný v prístupe BDD uľahčuje spoluprácu vývojárom, testerom a podnikovým používateľom.
BDD sa považuje za najlepší postup, pokiaľ ide o automatizované testovanie pretože sa zameriava na chovanie aplikácie a nie na premýšľanie o implementácii kódu.
Správanie aplikácie je v centre pozornosti BDD a núti vývojárov a testerov, aby vchádzali do obuvi zákazníka.
Proces BDD
Proces zahrnutý do metodiky BDD tiež pozostáva zo 6 krokov a je veľmi podobný procesu TDD.
1) Napíšte chovanie aplikácie: Správanie aplikácie je písané jednoduchou angličtinou, ako je jazyk, vlastníkom produktu alebo obchodnými analytikmi alebo QA.
2) Napíšte automatizované skripty: Tento jednoduchý anglický jazyk sa potom prevedie na programovacie testy.
3) Implementujte funkčný kód: Potom sa implementuje funkčný kód, ktorý je základom správania.
4) Skontrolujte, či je správanie úspešné: Spustite správanie a skontrolujte, či je úspešné. Ak je úspešný, prejdite na ďalšie správanie, inak opravte chyby vo funkčnom kóde, aby ste dosiahli správanie aplikácie.
5) Refaktor alebo organizačný kód: Refaktorujte alebo usporiadajte svoj kód tak, aby bol čitateľnejší a znovu použiteľný.
6) Zopakujte kroky 1 - 5 pre nové správanie: Zopakujte tieto kroky, aby ste vo svojej aplikácii implementovali viac správania.
Prečítajte si tiež => Ako sú testéri zapojení do techník TDD, BDD a ATDD
Príklad implementácie správania v BDD
Predpokladajme, že máme požiadavku na vývoj funkčnosti prihlásenia pre aplikáciu, ktorá má polia užívateľské meno a heslo a tlačidlo na odoslanie.
Krok 1: Napíšte správanie aplikácie pri zadávaní používateľského mena a hesla.
Scenario: Login check Given I am on the login page When I enter 'username' username And I enter 'Password' password And I click on the 'Login' button Then I am able to login successfully.
Krok 2: Napíšte skript automatického testovania tohto správania, ako je uvedené nižšie.
@RunWith(Cucumber.class) public class MyStepDefinitions { @Steps LoginPage loginPage; @Steps HomePage hp; @Given('^I am on the login page $') public void i_am_on_the_login_page(){ loginPage.gotoLoginPage(); } @When('^I enter '((^')*)' username$') public void i_enter_something_username(String username) { loginPage.enterUserName(username); } @When('^I enter '((^')*)' password$') public void i_enter_something_password(String password) { loginPage.enterPassword(password); } @When('^I click on the '((^')*)' button$') public void i_click_on_the_submit_button(String strArg1) { hp = loginPage.submit(); } @Then('^I am able to login successfully.$') public void i_am_able_to_login_successfully() { Assert.assertNotNull(hp); } }
Krok 3: Implementujte funkčný kód (Je to podobné ako funkčný kód v kroku 3 príkladu TDD).
public class LoginPage{ String username = ''; String password = ''; //store username public void enterUserName(String username){ this.username = username; } //store password public void enterPassword(String password){ this.password = password; } //match username and passowrd in db and return home page public HomePage submit(){ if(username.existsInDB()){ String dbPassword = getPasswordFromDB(username); if(dbPassword.equals(password){ Return new HomePage(); } } }
Krok 4: Spustite toto správanie a skontrolujte, či je úspešné. Ak je úspešný, prejdite na krok 5, inak odlaďte funkčnú implementáciu a potom ju znova spustite.
Krok 5: Refaktoring implementácie je voliteľný krok a v tomto prípade môžeme refaktorovať kód v metóde odoslania, aby sme vytlačili chybové správy, ako je uvedené v kroku 5 pre príklad TDD.
//match username and passowrd in db and return home page public HomePage submit(){ if(username.existsInDB()){ String dbPassword = getPasswordFromDB(username); if(dbPassword.equals(password){ Return new HomePage(); } else{ System.out.println('Please provide correct password'); return; } } else{ System.out.println('Please provide correct username'); }
Krok 6: Napíšte iné správanie a postupujte podľa krokov 1 až 5 pre toto nové správanie.
sieťové rozhovory, otázky a odpovede pdf
Môžeme napísať nové správanie a skontrolovať, či sa pri zadávaní používateľského mena vyskytne chyba, ako je uvedené nižšie:
Scenario: Login check Given I am on the login page And I click on the 'Login' button Then I get an error to enter username.
TDD Vs BDD - kľúčové rozdiely
TDD | BDD |
---|---|
Môže to byť lepší prístup k projektom, ktoré zahŕňajú API a nástroje tretích strán. | Môže to byť lepší prístup k projektom, ktoré sú riadené činnosťou používateľov. Napríklad: webová stránka elektronického obchodu, aplikačný systém atď. |
Stojany pre vývoj zameraný na skúšky. | Znamená vývojom riadený vývoj. |
Proces sa začína napísaním testovacieho prípadu. | Proces začína napísaním scenára podľa očakávaného správania. |
TDD sa zameriava na to, ako je funkčnosť implementovaná. | BDD sa zameriava na správanie aplikácie pre koncového používateľa. |
Testovacie prípady sú napísané v programovacom jazyku. | Scenáre sú v porovnaní s TDD čitateľnejšie, pretože sú písané v jednoduchom anglickom formáte. |
Zmeny vo funkcii aplikácie majú veľký vplyv na testovacie prípady v TDD. | Scenáre BDD nie sú zmenami funkčnosti veľmi ovplyvnené. |
Spolupráca sa vyžaduje iba medzi vývojármi. | Vyžaduje sa spolupráca medzi všetkými zainteresovanými stranami. |
Niektoré z nástrojov podporujúcich TDD sú: JUnit, TestNG, NUnit atď. | Niektoré z nástrojov, ktoré podporujú BDD, sú SpecFlow, Cucumber, MSpec atď. |
Testy v TDD môžu pochopiť iba ľudia so znalosťami programovania, | Testom v BDD rozumie každá osoba vrátane testov bez akýchkoľvek znalostí programovania. |
TDD znižuje pravdepodobnosť výskytu chýb vo vašich testoch. | Chyby v testoch sa dajú v porovnaní s TDD ťažko sledovať. |
Záver
Výber medzi TDD vs. BDD môže byť veľmi zložitý. Niekto môže namietať, že BDD je lepšie na hľadanie chýb, zatiaľ čo iní môžu povedať, že TDD poskytuje vyššie pokrytie kódom.
Ani jedna metodika nie je lepšia ako druhá. Závisí od osoby a projektového tímu, aby sa rozhodli, ktorú metodiku použijú.
Dúfame, že tento článok objasnil vaše pochybnosti o TDD vs BDD !!
Odporúčané čítanie
- 180+ príkladov testovania webových aplikácií, testovacie prípady (vzorový kontrolný zoznam)
- Ako previesť manuálne testovacie prípady do automatizačných skriptov? - Podrobný sprievodca s príkladom
- Testovacie prípady Dotaz na rozhovor: Napíšte testovacie prípady na základe scenára
- Ako sa testeri podieľajú na technikách TDD, BDD a ATDD
- Testovanie pokrytia pri testovaní softvéru (Tipy na maximalizáciu pokrytia testovania)
- 8 vývojových nástrojov a testovacích rámcov pre najlepší vývoj založený na správaní (BDD)
- Výukový program Specflow: Najdôležitejší sprievodca nástrojom BDD
- Ako písať testovacie prípady: Najdôležitejší sprievodca s príkladmi