ݺߣ

ݺߣShare a Scribd company logo
122.05.2014
Testy automatyczne aplikacji
webowych oparte o Selenium -
- dobre praktyki
Michał Sierzputowski
Testowanie Aplikacji
http://www.shapia.com/images/software-testing.jpg
Automatyzacja Testów
3
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
Dobre testy automatyczne?
4
• 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
Selenium
5
Prosty skrypt testowy
WebDriver 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();
6
Oddzielenie biznesu od techniki
Page Objects
7
typeUsername(Strin
g)
typePassword(Strin
g)
clickLogin()
LoginPageC
f
m
HomePage
SEARCH_BOX
SEARCH_BUTTO
N
LOGIN_BUTTON
USER_LINK
typeSearch(String)
tclickSearch(String
)
USER_NAME
PASSWORD
LOGIN_BUTTON
Skrypt z Page Object’ami
LoginTest
homePage.clickLoginLink();
loginPage.typeUsername("Jan_Kowalski");
loginPage.typePassword("TajneHaslo1");
loginPage.clickLogin();
assertThat(
homePage.getUser().equals("JanKowalski”),
is(true));
8
homePage.clickLoginLink();
loginPage.typeUsername("Jan_Kowalski");
.typePassword("TajneHaslo1");
.clickLogin();
assertThat(
homePage.getUser().equals("JanKowalski”),
is(true));
Delegaty
LoginDelegate
9
loginAs(username, password)
typeUsername(user)
typePassword(password)
clickLogin()
Zależności
10
LogingDelegate
HomePage Search ResultsPage
WebDriver
LoginPage
SearchDelegate
TestClass
Wstrzykiwanie zależności
Dependecy Injection
• Bardziej czytelne testy
• Łatwiejsze do zarządzania
• Szybsze i prostsze do tworzenia
11https://elearning.industriallogic.com/gh/albums/wrappersAndWalkers/injector/images/big-tomatoes.gif
Logowanie informacji
Logowanie w testach
12
Test
Test
Test
Logowanie
Programowanie aspektowe - AOP
13
Page Object
Page Object
Page Object
Page Object
Page Object
Page Object
Logowanie
Tracing
Aspect
Logowanie informacji
14
Pytania ?Dzięki!
m.sierzputowski@kainos.com
kainos.pl
michalsierzputowski

More Related Content

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

Editor's Notes

  1. Błedy w oporgramowaniu mogą skończyć się dużymi stratami finansowym czy nawet ludzkimi. W testowanie inwestuje się bardzo duże środki - wymagają czasu I wykwalifikowanych ludzi odpowiednich narzędzi.