Lekcja 3 – Pierwszy test automatyczny

automatyzacja testów - pierwszy test automatyczny Spis treści

W poprzednich dwóch lekcjach przedstawione zostały najważniejsze zagadnienia teoretyczne. Od tej części kursu większy nacisk położony będzie na zadania praktyczne związane z automatyzacją.

Pierwszy test automatyczny powinien być jak możliwie prosty, jego zadaniem jest demonstracja działania i sprawdzenie czy wszystko działa poprawnie, a nie przeprowadzanie skomplikowanych operacji. Przed rozpoczęciem pisania kodu należy wybrać i zainstalować podstawowe oprogramowanie niezbędne do uruchamiania testów.

Oprogramowanie potrzebne do tworzenia i uruchamiania testów

W pierwszej kolejności musimy zainstalować pakiet narzędzi niezbędnych do programowania w języku Java, czyli JDK. W tym kursie wykorzystywana będzie najnowsza obecnie wersja oferującą wydłużony okres wsparcia, czyli Java 11.

Kod testów automatycznych najwygodniej pisze się w zintegrowanym środowisku programistycznym (IDE) przeznaczonym dla danego języka. Ponieważ przykłady w tym kursie będą tworzone w Javie to naturalnym wyborem będzie Intellij IDEA - jeśli nie mamy dostępu do pełnej wersji, to ta darmowa (Community) jest jak najbardziej wystarczająca. Zarządzanie niezbędnymi zależnościami ułatwi Apache Maven (nie trzeba go instalować osobno, IDEA posiada wersję wbudowaną).

Tworzenie nowego projektu w Intellij IDEA

Aby utworzyć nowy projekt należy wykonać kilka prostych kroków:

  1. Z menu głównego wybrać kolejno File -> New -> Project…

  2. W lewej kolumnie wybrać Maven, ustawić Project SDK na wersję 11 i przejść dalej:

    Tworzenie nowego projektu - Maven, Java

    Tworzenie nowego projektu - Maven, Java

  3. Uzupełnić GroupId i ArtifactId:

    pl.modern7.tutorials
    test-automation-tutorial
    Tworzenie nowego projektu - GroupId, ArtifactId

    Tworzenie nowego projektu - GroupId, ArtifactId

  4. Zmienić nazwę projektu na bardziej czytelną na przykład test-automation-tutorial i zakończyć tworzenie projektu przyciskiem “Finish”:

    Tworzenie nowego projektu - nazwa projektu

    Tworzenie nowego projektu - nazwa projektu

Kod pierwszego testu automatycznego

Zanim przejdziemy do kodu odpowiedzialnego za sam test najpierw musimy skonfigurować zależności w Mavenie. W tym celu należy edytować plik pom.xml tak, żeby jego zawartość wyglądała następująco:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pl.modern7.tutorials</groupId>
    <artifactId>test-automation-tutorial</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>7.0.0</version>
        </dependency>
        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>3.6.2</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>3.141.59</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.28</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

Kolejnym krokiem jest utworzenie klasy „FirstTest” w ścieżce test-automation-tutorial\src\main\java\FirstTest.java:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;

import static org.openqa.selenium.support.ui.ExpectedConditions.presenceOfElementLocated;

public class FirstTest {

    private static final long TIME_OUT_IN_SECONDS = 10;

    private WebDriver driver;

    private WebDriverWait wait;

    @BeforeClass
    public void setUpBeforeClass() {
        WebDriverManager.chromedriver().setup();
    }

    @BeforeMethod
    public void setUpBeforeMethod() {
        driver = new ChromeDriver();
        driver.manage().window().maximize();
        wait = new WebDriverWait(driver, TIME_OUT_IN_SECONDS);
    }

    @AfterMethod
    public void tearDownAfterMethod() {
        driver.quit();
    }

    @Test
    public void googleTest() {
        driver.get("https://www.google.pl");
        WebElement searchField = driver.findElement(By.name("q"));
        searchField.sendKeys("modern7 automatyzacja testów");
        searchField.sendKeys(Keys.RETURN);
        wait.until(presenceOfElementLocated(By.partialLinkText("modern7.pl")));
    }

}

Uruchomienie i analiza wyników

Aby uruchomić test wystarczy kliknąć prawym przyciskiem myszy w obrębie testu (linie 40 - 47) i wybrać „Run googleTest()”

Po chwili powinna otworzyć się przeglądarka Chrome i zaczną wykonywać się kolejne kroki testu. Jeśli wszystko przebiegło pomyślnie zobaczymy pozytywny wynik testu:

Wynik testu

Wynik testu

Podsumowanie

Utworzenie prostego testu korzystając z Selenium Webdriver wymaga napisania pewnej ilości kodu z którego jednak większość stanowi konfiguracja, której nie trzeba powtarzać przy tworzeniu kolejnych testów automatycznych.


Udostępnij

comments powered by Disqus