Michał Sierzputowski -...
-
Upload
hoangtuyen -
Category
Documents
-
view
215 -
download
0
Transcript of Michał Sierzputowski -...
Automatyzacja Testów - wprowadzenie
2http://www.mpa-rm.pl/images/Industrial-Automation.jpg
Dostarczanie szybkiej informacji zwrotnej
Zapewnianie możliwości wprowadzaniabezpiecznych zmian
Automatyzacja testów to proces ciągły
Podstawy testówautomatycznych
3
http://loewy.com/wp-content/uploads/2012/09/mainfeature-waterlogic.jpg
Ustalenie standardów kodowania
Dbanie o czysty kod (clean code)
Stosowanie wzorców projektowych
Inspekcje kodu (code review)
Wersjonowanie kodu
Prosty skrypt testowy
WebDriver driver = new FirefoxDriver();
driver.get("http://www.aukcje.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();
5
Oddzielenie biznesu od techniki
Page Objects
6
typeUsername(Strin
g)
typePassword(Strin
g)
clickLogin()
LoginPageC
f
m
HomePage
SEARCH_BOX
SEARCH_BUTTO
N
LOGIN_BUTTON
USER_LINK
typeSearch(String)
clickSearch(String)
clickLogin()
getUser()
USER_NAME
PASSWORD
LOGIN_BUTTON
By LOGIN_BUTTON= By.id(”login");
public void clickLogin(){driver.findElement(LOGIN_BUTTON).click();
}
Skrypt z Page Object’ami
LoginTest
homePage.clickLoginLink();
loginPage.typeUsername("Jan_Kowalski");
loginPage.typePassword("TajneHaslo1");
loginPage.clickLogin();
assertThat(homePage.getUser(),is("JanKowalski”));
7
homePage.clickLoginLink();
loginPage.typeUsername("Jan_Kowalski”)
.typePassword("TajneHaslo1”)
.clickLogin();
Delegaty
LoginDelegate
loginAs(username, password)
8
typeUsername(user)typePassword(password)clickLogin()
Wstrzykiwanie zależności
Dependecy Injection
10
https://elearning.industriallogic.com/gh/albums/wrappersAndWalkers/injector/images/big-tomatoes.gif
private LoginPage loginPage;
private WebDriver driver;
private DriverFactory driverFactory;
this.driverFactory = new DriverFactory();
this.driver = driverFactory.getDriver();
this.loginPage = new LoginPage(driver);
@Inject
LoginPage loginPage
Zarządzanie testami
Biblioteka dla testów jednostkowych
• Zarządzanie strukturą zestawu testów
• Definicja grupy testów
• Zależności między testami
• Priorytety
• Data Driven Testing
• Dodatkowe opisy testów
• Uruchamianie testów równolegle
• ...
12
http://www.robotshop.com/media/files/images/fischertechnik-super-cranes-large.jpg
@BeforeClass
@BeforeMethod
@Test
@AfterMethod
@AfterClass(alwaysRun=true)@Test(groups = {QUARANTINE, READ_ONLY,
DISABLED_ON_IE8} )
@Test(dependsOnMethods= “testCreateNewShoppingBasket”)
public void testDeleteItemFromBasket()
@Test(dataProvider = "provideNumbers”)
DataProvider(name = "provideNumbers")
…
{ 2, 5 },
{ 10, 110 },
{ -200, 210 }
<suite name="main" parallel="classes" thread-count="30" …>
@Test(priority=2)
@Test(description="Navigates to the admin page")
Przygotowanie środowiska
• Niezależne testy• Elastyczne i skalowalne rozwiązanie
• Wykorzystanie wewnętrznych serwisów testowanejaplikacji (SOAP, REST, ….)
• Baza danych
13
http://i.wp.pl/a/f/jpeg/30250/07-sprezyna-zabawka-600x513.jpeg
@BeforeClass
public void
prepareEnvironment(){
createTestOrganisation();
createTestWorker();
assignPermissionsToWorker(
);
}
@AfterClass
public void tearDown(){
deactivateOrganization();
}
Logowanie informacji
Programowanie aspektowe - AOP
15
Page Object
Page Object
Page Object
Page Object
Page Object
Page Object
Logowanie
Tracing Aspect
Podsumowanie
16
• Traktowanie projektu testowego jako projektu aplikacji
• Page Objects
• Delegaty
• Wstrzykiwanie zależności
• Generator kodu
• Zarządzanie testami
• Przygotowanie środowiska
• Logowanie
http://bigbackground.com/wp-content/uploads/2013/07/summer-nature-images1-1024x640.jpg