Automated testing – Selenium #2             Peter Šimún             @petersimun
Zadefinujte si pravidlá!nedovoľte, aby sa porušovali  a váš život bude skvelý         jedine, že by nie
Pravidlo č.1: Shaolinských mníchov               Všetko neotestujete, aj              keď sa na hlavu postavíte
Pozor! Nasleduje kód!
Pravidlo č.2: Striktná a dôkladná architektúra                               Express your tests in the                    ...
Prihlásiť sa do synapsaPridať prázdnu stránkuPridať twitter komponent - @webelementPridať twitter komponent - @petersimunV...
loginSupport.login(new UsernamePasswordUser(Role.ADMIN));pageSupport.addBlankPage(newPage().randomize(seleniumSupport));Tw...
public class Twitter implements WebElement {    private String twitterAccount = "synapso";    private int twittsCounts = 5...
public class TwitterPage {    public By getTwitterSelector() {        return By.xpath("//div[contains(@class,twitterWidget...
public class UsernamePasswordLoginSupport implements LoginSupport{    @Override    public void login(UserData userData, La...
Nerobte pikoniny a nestestujte až keď horí
@petersimun         Seges s.r.o.Lombardíniho 20, 831 03 Bratislava   tel. +421 (0)2 206 333 69        office@seges.sk     ...
Upcoming SlideShare
Loading in …5
×

Selenium prezentácia pre Webelement

1,356 views

Published on

Prečo je písanie dlhodobo udržiavateľných testov dôležitejšie ako písanie udržiavateľného kódu? A ako vlastne na to? Prezentácia zľahka nadväzuje na predchádzájúcu prednášku (http://www.slideshare.net/petersimun/presentation-11002440) a popisuje odporúčané postupy a praktické ukážky toho, ako automatizovane testujeme interaktívne webové aplikácie, aké neštastia nás pritom postihli a ako sme z toho vykľučkovali.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,356
On SlideShare
0
From Embeds
0
Number of Embeds
362
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Selenium prezentácia pre Webelement

  1. 1. Automated testing – Selenium #2 Peter Šimún @petersimun
  2. 2. Zadefinujte si pravidlá!nedovoľte, aby sa porušovali a váš život bude skvelý jedine, že by nie
  3. 3. Pravidlo č.1: Shaolinských mníchov Všetko neotestujete, aj keď sa na hlavu postavíte
  4. 4. Pozor! Nasleduje kód!
  5. 5. Pravidlo č.2: Striktná a dôkladná architektúra Express your tests in the language of the end-user of the app Ubiquitous Language Domain driven design
  6. 6. Prihlásiť sa do synapsaPridať prázdnu stránkuPridať twitter komponent - @webelementPridať twitter komponent - @petersimunVycentrovať twitter komponenty na stred stránkyPresunúť druhý twitter komponent (@petersimun) pred prvý twitter komponent(@webelement)Overiť výsledok na stránke – správne poradie twitter komponentov, pozícia nastránke Express your tests in the language of the end-user of the app
  7. 7. loginSupport.login(new UsernamePasswordUser(Role.ADMIN));pageSupport.addBlankPage(newPage().randomize(seleniumSupport));Twitter twitter_ps = new Twitter("petersimun");Twitter twitter_we = new Twitter("webelement");toolbarSupport.clickAndWait(Module.COMPONENT);twitterSupport.createTwitter (twitter_we);twitterSupport.centerTwitter(twitter_we);twitterSupport.createTwitter (twitter_ps);twitterSupport.centerTwitter(twitter_ps);twitterSupport.moveTwitterToPosition(twitter_we, newPosition(0, 100));
  8. 8. public class Twitter implements WebElement { private String twitterAccount = "synapso"; private int twittsCounts = 5; public Twitter (String twitterAccount) { this.twitterAccount = twitterAccount; } public String getTwitterAccount() { return twitterAccount; } public WebElement getTwitterElement() { return twitterElement; } obyčajné POJO predstavuje vstupné podmienky testu mapuje sa a zobrazuje na UI
  9. 9. public class TwitterPage { public By getTwitterSelector() { return By.xpath("//div[contains(@class,twitterWidget) and contains(@class,floatClear)]//ul"); } public By getTweetSelector(String source) { return By.xpath("//div[contains(@class,twitterWidget floatClear) and contains(@source," + source + ")]//ul//li[position() = 1]"); } public By getTwitterInputSelector() { return By.xpath("//div[contains(@class,acris-metal- dialog)]//input[contains(@class,gwt-Text)]"); }}reprezentuje UI komponenty pomocou selectorovak sa niečo zmení na UI, zmenu treba pravdepodobne reflektovať na tomtomiesteAk nechcete skončiť v pekle, nepoužívajte selectory v testoch alebo v supporttriedach!!
  10. 10. public class UsernamePasswordLoginSupport implements LoginSupport{ @Override public void login(UserData userData, Language language) { } @Override public void login(UserData user) { } @Override public void logout() { } ...}Písaný v jazyku zrozumiteľnom pre ľudí ( developer ≠ človek )Úzko komunikuje so selenium a zaobaluje znovupoužiteľnú funkcionalitu dometód
  11. 11. Nerobte pikoniny a nestestujte až keď horí
  12. 12. @petersimun Seges s.r.o.Lombardíniho 20, 831 03 Bratislava tel. +421 (0)2 206 333 69 office@seges.sk www.seges.sk

×