infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium -...

14
1 22.05.2014 Testy automatyczne aplikacji webowych oparte o Selenium - - dobre praktyki Michał Sierzputowski

Transcript of infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium -...

Page 1: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

122.05.2014

Testy automatyczne aplikacji webowych oparte o Selenium -

- dobre praktyki

Michał Sierzputowski

Page 2: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

Testowanie Aplikacji

http://www.shapia.com/images/software-testing.jpg

Page 3: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

3

Automatyzacja Testów

http://www.mpa-rm.pl/images/Industrial-Automation.jpg

Dostarczenie szybkiej informacji zwrotnej

Zapewnienie możliwości wprowadzania bezpiecznych zmian

Automatyzacja testów to proces ciągły

Page 4: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

4

Dobre testy automatyczne?

• Ustalenie stnadardów kodowania

• Dabanie o “czysty kod” – clean code

• Stosowanie wzorców projektowych

• Inspekcje kodu – code review

• Wersjonowanie kodu

http://loewy.com/wp-content/uploads/2012/09/mainfeature-waterlogic.jpg

Page 5: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

5

Selenium

Page 6: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

6

Prosty skrypt testowyWebDriver driver = new FirefoxDriver();

driver.get("http://www.allagro.pl");

WebElement login_link = driver.findElement(By.linkText("zaloguj"));

login_link.click();

WebElement user_name = driver.findElement(By.id("userForm_login"));

user_name.sendKeys("Jan_Kowalski");

WebElement password = driver.findElement(By.id("userForm_password"));

password.sendKeys("TajneHaslo1");

WebElement login_button =  driver.findElement(By.id("login”]));

login_button.click();

WebElement user_link = driver.findElement(By.linkText("Jan Kowalski"));

assertThat(user_link.isDisplayed(),is(true));

driver.quit();

Page 7: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

7

Oddzielenie biznesu od techniki

Page Objects

typeUsername(String) typePassword(String)clickLogin()

LoginPageC

f

m

HomePageSEARCH_BOXSEARCH_BUTTONLOGIN_BUTTONUSER_LINK  typeSearch(String) tclickSearch(String)clickLogin()getUser()

USER_NAME PASSWORD LOGIN_BUTTON

Page 8: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

8

Skrypt z Page Object’ami

LoginTest

homePage.clickLoginLink(); loginPage.typeUsername("Jan_Kowalski");loginPage.typePassword("TajneHaslo1");loginPage.clickLogin();

assertThat(homePage.getUser().equals("JanKowalski”),is(true));

homePage.clickLoginLink(); loginPage.typeUsername("Jan_Kowalski");

.typePassword("TajneHaslo1");

.clickLogin();

assertThat(homePage.getUser().equals("JanKowalski”),is(true));

Page 9: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

9

Delegaty

LoginDelegate

loginAs(username, password)

typeUsername(user)typePassword(password)clickLogin()

Page 10: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

10

Zależności

LogingDelegate

HomePage Search ResultsPage

WebDriver

LoginPage

SearchDelegate

TestClass

Page 11: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

11

Wstrzykiwanie zależności

Dependecy Injection

• Bardziej czytelne testy

• Łatwiejsze do zarządzania

• Szybsze i prostsze do tworzenia

https://elearning.industriallogic.com/gh/albums/wrappersAndWalkers/injector/images/big-tomatoes.gif

Page 12: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

12

Logowanie informacji

Logowanie w testach

Test

Test

Test Logowanie

Page 13: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

13

Programowanie aspektowe - AOP

Page Object

Page Object

Page Object

Page Object

Page Object

Page Object

Logowanie

Tracing Aspect

Logowanie informacji

Page 14: infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.

14

Pytania ?Dzięki!

[email protected]

michalsierzputowski