infoShare 2014: Michał Sierzputowski, Testy automatyczne aplikacji webowych oparte o Selenium - dobre praktyki.4. 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
6. 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
7. 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
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));
8
homePage.clickLoginLink();
loginPage.typeUsername("Jan_Kowalski");
.typePassword("TajneHaslo1");
.clickLogin();
assertThat(
homePage.getUser().equals("JanKowalski”),
is(true));
11. 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
13. Programowanie aspektowe - AOP
13
Page Object
Page Object
Page Object
Page Object
Page Object
Page Object
Logowanie
Tracing
Aspect
Logowanie informacji
Editor's Notes 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.