Automatyzacja testów aplikacji webowych w Selenium podstawy Natalia Krawczyk
Automatyzacja testów UI...... czyli symulacja operacji wykonywanych przez użytkownika na interfejsie aplikacji webowej
Kiedy automatyzować? Przy częstych zmianach w aplikacji testy regresji Kiedy chcemy skrócić czas testowania aplikacji Przy dużej ilości danych testowych
Zalety automatyzacji testów Powtarzalność Analiza wyników automatycznie generowane raporty i logi Przyśpieszenie testów Możliwość przetestowania wielu danych wejściowych (DDT) Źródło: http://bilibworld.blogspot.com/2013/06/zmien-swojewady-w-zalety.html
Wady automatyzacji testów Utrzymanie Dodatkowe koszty (zakup narzędzi, szkolenia itp.) Automat to nie człowiek... Źródło: http://bilibworld.blogspot.com/2013/06/zmien-swojewady-w-zalety.html
Automatyzacja = scenariusze (przypadki) testowe + podstawowa wiedza programistyczna + narzędzia
Powtórka z programowania
Klasy, metody, zmienne...
Narzędzia Źródło: http://www.zabawki-fisherprice.pl/files/product/450/134.jpg
Selenium framework do automatyzacji testów aplikacji webowych Selenium IDE record/play Selenium RC Selenium WebDriver
NUnit framework do tworzenia testów jednostkowych dla środowiska.net
[TestFixture] [Test] [TestCase] [TestFixtureSetup] [SetUp] [TearDown] [TestFixtureTearDown] Nunit - atrybuty
Przykładowy test Nazwa testu Element na stronie Driver (nasza przeglądarka) Selektor Asercja, czyli sprawdzenie wyniku testu
Konfiguracja projektu w Visual Studio Utwórz projekt typu ClassLibrary (C#) Kliknij PPM na References Wybierz Manage NuGet Packages... Wyszukuj i zainstaluj: Nunit, Selenium WebDriver, Selenium WebDriver Support Classes, WebDriver-backed Selenium
Podstawowe komendy i atrybuty WebDriver IWebDriver.Navigate().GoToUrl(string url) IWebDriver.Close() IWebDriver.Url IWebDriver.Title IWebDriver.Navigate().Refresh() IWebDriver.Navigate().Back() IWebDriver.Navigate().Forward() IWebDriver.Manage().Window.Maximize()
Ćwiczenie: 1. Utwórz klasę Tests 2. Dodaj pierwszy test 3. W teście zainicjuj drivera 4. Otwórz stronę WrotQA 5. Zamknij przeglądarkę
Elementy na stronie IWebElement - odpowiada jednemu elementowi na stronie wskazanego przez selektor Do znajdywana elementów na stronie służy: FindElement() oraz FindElements()
Selektory By.ID By.TagName By.ClassName By.Name By.Xpath By.CSSPath Źródło: http://jenniferbarnett.edublogs.org/files/2012/06/find-your-way-nuepft.jpg
Przykład 1: www.youtube.com 3 1,2
Przykład 2 www.youtube.com
Ćwiczenie Znajdź elementy na stronie WrotQA: - navigation menu - pole tekstowe Szukaj - przycisk Szukaj - link do notatki o dzisiejszym spotkaniu
Operacje na elementach SendKeys() Click() Clear() FindElement() Submit() GetAttribute()
Atrybuty elementów Text Displayed Enabled Location Selected TagName
Ćwiczenie Wykonaj następujące na znalezionych w poprzednim ćwiczeniu elementach: - click - send keys - get attribute - submit - clear
Asercje Sprawdzenie statusu/stanu aplikacji lub elementu Jeśli wynik negatywny test zostaje przerwany Klasa Asserts (NUnit) http://www.modernanalyst.com/portals/0/public%20uploads%202/t rue_or_false_fotolia_15918310_xs.jpg
Asercje AreEqual pozwala na porównanie wartości zmiennej IsFalse oraz IsTrue porównywanie wartości logicznych IsNull oraz IsNotNull - pozwalają sprawdzić czy referencja jest lub nie jest null
Ćwiczenie: Napisz test sprawdzający wyszukiwarkę na stronie WrotQA
Akcje Klasa Actions umożliwia symulację bardziej skomplikowanych akcji na elementach Akcje musimy zainicjować: Actions action = new Actions(driver); Akcje wymagają zbudowania : action.build().perform(); Akcje można łączyć w łańcuch: action.movetoelement(element).doubleclick().buil d().perform();
Akcje ContextClick(IWebElement element) DoubleClick(IWebElement element) MoveToElement(IWebElement toelement) KeyDown(Keys thekey) KeyUp(Keys thekey) DragAndDrop(IWebElement source, IWebElement target)
Ćwiczenie: Napisz test który: 1. Otworzy stronę Testing Cup 2. Najedzie kursorem na O testing cup 3. Z menu wybierz Projekt 4. Sprawdź czy strona o Projekcie została otworzona (ustaw rozmiar przeglądarki na maximum)
Źródło: http://dilbert.com/dyn/str_strip/000000000/00000000/0000000/000000/00000/1000/600/1672/1672.strip.gif
Jaki powinien być dobrze napisany test? Selektory oraz metody pomocnicze powinne być odseparowane od testu Czytelny (DSL) Przystosowany do zmian Hierarchia przy wyborze selektora: id > name > css > xpath Nazwa testu powinna mówić o przedmiocie testu i jego spodziewanym wyniku
Dobre praktyki w tworzeniu automatycznych testów UI Page Object Pattern Page Factory Domain Specific Language Bot Style Tests Data Driven Testing Behavior Driven Development Źródło: http://sd.keepcalm-o-matic.co.uk/i/share-ideas-and-goodpractice.png
Ćwiczenie: 1. Utwórz metody wykonujące pojedyncze operacje w teście np. wpisywanie do pola wyszukiwania 2. Zamień w teście wszystkie wykonywane operacje na wywołanie metod utworzonych w punkcie 1
FINITO! Dziękuję ;)