Data-Driven Testing z Selenium



Podobne dokumenty
Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

Aplikacje Internetowe

Programowanie w Ruby

BearingNet - AutoUpload

Katalog książek cz. 3: Web Service

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Wstęp do testowania : Szymon Ramczykowski

Poradnik obsługi systemu zarządzania treścią (CMS) Concrete5. Informacje podstawowe

Testowanie aplikacji. Kurs języka Ruby

Instrukcja instalacji elektronicznego systemu obiegu dokumentów administracyjnych - esoda.

Process Automation Toolkit (PAT)

QualitySpy moduł reports

REFERAT PRACY DYPLOMOWEJ

Wykaz zmian w programie WinAdmin Replikator

Za 0 zł ułatwisz bieżącą pracę szkoły

OpenSta OpenSource dla Web Load, HTTP Stress & Performance testing

Program szkolenia PODSTAWY VBA (VISUAL BASIC FOR APPLICATIONS) I FORMULARZE.

SAP automatyzacja testów z wykorzystaniem narzędzia Mercury QuickTestPro

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Aplikacje Internetowe

Korespondencja seryjna

Wersja 2.0 SERWISOWO. Instrukcja obsługi systemu. Autor: Piotr Koblak. Instrukcja obsługi sytemu SERWIS wersja 2.0 Kontakt do autora:

Integracja programów LeftHand z systemem Skanuj.to

Podstawy JavaScript ćwiczenia

1. Szukanie Klasyfikacja Bailey Szybkie szukanie Wynik szukania Lampy do projektorów Pomoc...

Opis konfiguracji ST do współpracy z kolektorem DENSO BHT 8000

LOGOWANIE DO SUBKONTA

instrukcja INSTALACJI APi_proxy

System Wniosków DWZ AGH

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

Zestaw pytao pozwalających na przygotowanie oferty wdrożenia Systemu Zarządzania Nieruchomościami

Instalacja systemu zarządzania treścią (CMS): Joomla

Kurs Wizualizacja z WinCC SCADA - Zaawansowany. Spis treści. Dzień 1. I VBS w WinCC podstawy programowania (zmienne, instrukcje, pętle) (wersja 1410)

Automatyzacja Testowania w WEB 2.0

Lokalna kopia bioinformatycznego serwera obliczeniowego jako wysokowydajne środowisko obliczeniowe

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PODSTAWOWY.

Słowa kluczowe jak góry lodowe

Podręcznik Użytkownika LSI WRPO

Pakiet Sokrates Instrukcja instalacji

WYMAGANIA EDUKACYJNE. Programowanie Aplikacji Internetowych klasa III

Migracja bazy danych Microsoft Access *.mdb do Microsoft SQL 2008 Server R2 SP1 dla oprogramowania Płatnik

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

System magazynowy małego sklepu.

Przypadek testowy. Teoria i praktyka

Bazy Danych i Usługi Sieciowe

INSTRUKCJA OBSŁUGI PROGRAMU IRF DLA BIURA RACHUNKOWEGO. Program Symfonia. Strona0

Instrukcja użytkownika

SSI Web 8. (badania.kozminski.edu.pl) Instrukcja logowania i uruchamiania ankiety

Platforma e-learningowa

PRZEWODNIK PO PRZEDMIOCIE

Asystent To WebMobile7 wersja

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT CEIDG MONITOR

Instrukcja obsługi Modułu Payu dla Moodle 2.x

Uruchomienie aplikacji elektronicznych na platformie epuap

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

INSTRUKCJA INSTALACJI I KONFIGURACJI APLIKACJI WEBSOFT SITE ANALYZER 2.7.1

Integracja sklepu internetowego z serwisem aukcyjnym Swistak.pl

Program szkolenia VBA (VISUAL BASIC FOR APPLICATIONS) W EXCELU PRZEKROJOWY.

Instrukcja administratora systemu. Automat do tankowania MicroMat.

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Instrukcja obsługi. Helpdesk. Styczeń 2018

Elektroniczna Książka Pocztowa z Obiegiem Dokumentów by CTI Instrukcja

Instrukcja obsługi dla studenta

Microsoft Office 365

Funkcje i instrukcje języka JavaScript

Instrukcja stosowania platformy internetowej "Szkoła praktycznej ekonomii - młodzieżowe miniprzedsiębiorstwo" - zakładka Nauczyciel

Wykaz zmian w programie WinAdmin Replikator

Instrukcja procedowania pracy dyplomowej w systemie APD dla Promotora.

Szkolenie: Automatyzacja testowania

1. Ze strony pobieramy plik instalacyjny.

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym PrestaShop (plugin dostępny w wersji ecommerce)

Archiwizacja baz MSSQL /BKP_SQL/ opis oprogramowania

Rys Należy zalogować się do systemu poprzez podanie otrzymanego od OKE Loginu i Hasła.

Dokumentacja techniczna - PBL

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

LeftHand Sp. z o. o.

Szkolenie: Podstawy automatyzacji z Selenium IDE

Istota rozwiązania. EasyInput First Steps 2

PODRĘCZNIK UŻYTKOWNIKA SYSTEMU MaxeBiznes MODUŁ KANCELARIA-Elektroniczny obieg faktury

Makropolecenia w Excelu

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Tom 6 Opis oprogramowania Część 8 Narzędzie do kontroli danych elementarnych, danych wynikowych oraz kontroli obmiaru do celów fakturowania

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA

Baza danych do przechowywania użytkowników

SUBIEKT GT IMPORT XLS Dokumenty

5-6. Struktura dokumentu html. 2 Określenie charakteru i tematyki strony. Rodzaje witryn. Projekt graficzny witryny. Opracowanie skryptów

Poradnik zetula.pl. Jak założyć konto na zetula.pl. i zabezpieczyć dane na swoim komputerze?

Instrukcja instalacji programu lojalnościowego LOYAL BASIC 1-st. (wersja demo) bez połączenia z Subiektem GT

Instrukcja obsługi dla studenta

PRZEWODNIK PO PRZEDMIOCIE

Instytut Fizyki Politechniki Łódzkiej Laboratorium Metod Analizy Danych Doświadczalnych Ćwiczenie 3 Generator liczb losowych o rozkładzie Rayleigha.

Institution data management

Aplikacja kliencka na Tablety z systemem Android. Instrukcja instalacji

Transkrypt:

Magazine Data-Driven Testing z Selenium Autor: Jacek Okrojek O autorze: absolwent Wydziału Fizyki Technicznej, Informatyki i Matematyki Stosowanej Politechniki Łódzkie, specjalizacja Sieci i Systemy Teleinformatyczne, tester, test leader, freelance developer, od ponad 6 lat zajmuje się testowaniem i tworzeniem oprogramowania w kraju i za granicą w firmie Ericpol Telecom i jako niezależny konsultant, uczestniczył i nadzorował testy na poziomie podstawowym, funkcyjnym, integracyjnym i systemowym, prowadził szkolenia z zakresu testowania oprogramowania, kontakt: jacek.okrojek@gmail.com Basic Level 4 Magazine Number Testowanie oprogramowania Section in the magazine Wprowadzenie W poprzednim numerze wykorzystaliśmy Selenium do automatycznego raportowania błędów. Tym razem wykorzystamy je w typowy sposób, czyli do usprawnia testowania aplikacji web. Przedstawione rozwiązanie pozwoli przybliżyd koncepcję Data-Driven Testing (DDT).

Automatyzacja testów a Data-Driven Testing Wyobraźmy sobie aplikację, do której dostęp wymaga podania nazwy użytkownika i hasła. Użytkownikom przypisane są określone role a wraz z nimi zestaw dostępnych funkcji. Naszym zadaniem będzie przetestowanie modułu uwierzytelniającego użytkowników. Selenium IDE pozwoli nagrywad wprowadzanie danych przez użytkownika i w ten sposób przygotowad szkic scenariusza testowego. Test możemy wyeksportowad do jednego z obsługiwanych języków programowania. Korzystając z techniki Copy/Paste powielimy go odpowiednią ilośd razy. Modyfikując dane w kolejnych kopiach pokryjemy interesujące nas przypadki. Dodając asercje będziemy mogli sprawdzid, czy użytkownik dysponuje odpowiednimi funkcjami. Taką kolekcję testów będziemy mogli uruchamiad korzystając z Selenium RC. W tym momencie możemy pochwalid się już pewną automatyzacją testów. Oprócz mało prawdopodobnego uznania kolegów jest tylko jedna korzyśd z takiego rozwiązania - przyspieszenie pracy, gdy przyjdzie nam testy powtórzyd. Co stanie się, gdy pojawi się nowa grupa użytkowników lub powiększy zestaw dostępnych funkcji? Zmuszeni będziemy uaktualnid nasze testy. Wymagad to będzie odnalezienia odpowiednich fragmentów kodu i wprowadzenia potrzebnych zmian lub dodania nowych testów. Nasza praca byłaby prostsza, gdybyśmy dane testowe przechowywali w jednym miejscu. Scenariusz testu jest zawsze ten sam, więc sensowne wydaje się opracowanie jednej sparametryzowanej procedury i wykonywanie jej dla różnych zadanych danych. Taki model przeprowadzania testów nosi nazwę Data- Driven Testing (DDT). Główną cechą DDT jest odseparowanie danych oraz wyników testów od aplikacji/systemu przeprowadzającego testy. Aplikacja przeprowadzająca testy powinna byd jak najbardziej uniwersalna i pozwalad się łatwo dostosowywad do aktualnych wymagao. Sposób przechowywania danych do testów jest dowolny. Może to byd plik CSV, arkusz kalkulacyjny lub baza danych. Oprócz zalet, jakimi są przyspieszenie implementacji testów i łatwiejsze ich utrzymanie, logiczne odseparowanie danych od scenariusza testu pozwala na to, by dane mogły byd przygotowane przez odrębnych ekspertów. Ma to olbrzymie znaczenie, kiedy przygotowanie danych wymaga specjalistycznej wiedzy. Tester może zająd się w tym czasie tym, co lubi najbardziej. Uogólnienie problemu Z punktu widzenia testerów aplikacji web, interesują nas przede wszystkim formularze. To dzięki nim użytkownik ma możliwośd wprowadzania danych. W ogólnym przypadku testowanie przebiega według schematu: - Otworzenie wybranej strony - Wypełnienie pól formularza danymi i zaakceptowanie go - Odpowiedź prezentowana w odpowiednich elementach strony porównywana jest z oczekiwanym rezultatem Ponieważ chcemy, by rozwiązanie było jak najbardziej uniwersalne, postaramy się wiernie zaimplementowad ten ogólny schemat. Jako źródło danych posłuży nam arkusz kalkulacyjny. Dane proponuję zorganizowad jak w tabeli 1.

ID Tytuł Url Uid Hasło Action Result 1 Udane logowanie - administrator /auth admin admin submit Witaj admin;dodaj użytkownika 2 Udane logowanie - księgowi /auth ks ks submit Witaj ks;wyświetl faktury 3 Udane logowanie - sprzedawcy /auth sp sp submit Witaj sp;wyświetl kontrahentów 4 Nieudane logowanie /auth ks sp submit Nieprawidłowe hasło Tabela 1 Przykładowa organizacja danych Dwie pierwsze kolumny mają charakter informacyjny i można z nich zrezygnowad. Kolejna kolumna to adres strony, którą będziemy testowad. Ważne jest, by ostatnia kolumna zawierała oczekiwany wynik, a przedostatnia akcje użytkownika. Kolumny pomiędzy adresem strony a akcją użytkownika zawierają dane wprowadzane do formularza na testowanej stronie. Nagłówek kolumny pozwoli na identyfikację pola formularza, do którego będą wpisywane dane. Przez dodanie lub usunięcie kolumny w arkuszu będziemy dostosowywali nasze rozwiązanie do formularzy z inną ilością pól. Usunięcie wszystkich kolumn pomiędzy URL i Action będziemy rozumieli jako stronę bez formularza, tylko z linkami do kolejnych stron. Za szkielet naszej procedury testowej posłuży kod zamieszczony w przykładzie 1. sel = selenium(seleniumhost, seleniumport, browserstartcommand, browserurl) sel.start() sel.open(...) for k, v in actions.iteritems(): sel.type(k, v) sel.click(...) sel.wait_for_page_to_load(timeout) results = result.split( ; ) for r in results: assert sel.is_text_present(...) == true sel.stop() Przykład 1. Szkielet procedury testowej Po wystartowaniu przeglądarki przechodzimy na stronę określoną adresem w kolumnie URL arkusza. Następnie w pętli wpisujemy dane do kolejnych pól formularzy metodą type (locator, value). Wartości zmiennej locator będą pochodzid z nagłówków kolumn. Zmienna value będzie odpowiadającą jej wartością testową. Następnie zatwierdzamy formularz metodą click (locator) i czekamy na załadowanie się odpowiedzi. Ostatnią akcją jest sprawdzenie, czy na stronie występują teksty z kolumny Result. Teksty, których obecnośd chcemy sprawdzid separujemy znakiem ;. Pobieranie danych Dane proponuję pobierad z arkuszy kalkulacyjnych. Przewagą tego rozwiązania nad CSV jest przede wszystkim możliwośd czytelnej prezentacji i organizacji danych. W kolejnych zakładkach arkusza możemy umieszczad dane dla testów kolejnych stron. Pozwoli to zachowad względny porządek, o który z biegiem czsu może byd trudno. Dodatkowo będziemy mogli wykorzystad arkusz do wykonania prostych obliczeo przy testowaniu bardziej złożonych aplikacji. Pobieranie danych z arkusza Excel zrealizujemy przy pomocy biblioteki xlrd. Poniżej znajduje się fragment skryptu odpowiadający za pobieranie danych. Po otwarciu wybranego pliku i wybraniu arkusza iteracyjnie odczytujemy dane z wszystkich wypełnionych komórek. Do oddzielnych list wpisujemy nagłówki kolumn i odpowiadające im dane.

headers = [] book = open_workbook(xlfilename) sheet = book.sheet_by_index(xlsheetindex) cols, rows = sheet.ncols, sheet.nrows data = [[None] * cols for i in range(rows-1)] for row_index in range(rows): for col_index in range(cols): if row_index == 0: headers.append(sheet.cell(row_index,col_index).value) else: data[row_index-1][col_index] = sheet.cell(row_index,col_index).value Parametryzacja testów Procedura testowa powinna byd wykonywana dla kolejnych zestawów danych. Wykorzystanie biblioteki unittest i pętli ma jednak pewną poważną wadę. Pierwszy nieoczekiwany wynik przerwie cały proces testowania. Dopiero po analizie i poprawieniu błędu będziemy mogli wykonad dalsze przypadki. Biblioteką, która pozwoli nam ominąd ten mankament i w prosty sposób sparametryzowad testy, jest py.test. Pakiet instalacyjny i jego dokumentacje można pobrad z *2+. Wszystkie funkcje, których nazwa rozpoczyna się od test_ są traktowane przez py.test jako procedury testowe i automatycznie uruchamiane. Proponuję zatem, aby szkielet z listingu 1. umieścid w funkcji test_actions. Przygotowanie danych do testów standardowo następuje w funkcji pytest_generate_tests. W pierwszej jej części pobierzemy dane z arkusza jak na Listingu 2. Dalej połączymy każdy rząd danych z odpowiadającymi im nagłówkami w słownik (ang. dictionary). Wywołując dla każdego tak stworzonego słownika funkcję metafunc.addcall(funcargs=dict(actions=d))dodamy kolejny przypadek testowy. Przekazane dane będą dostępne w funkcji test_actions pod nazwą actions. def pytest_generate_tests(metafunc):... for r in range(rows-1): d = {} n = 2 for i in headers[2:]: d[i] = data[r][n] n = n + 1 metafunc.addcall(funcargs=dict(actions=d)) def test_actions(actions):... Podsumowanie Pod adresem http://coremag.eu/ można znaleźd kompletny, gotowy do wykorzystania skrypt. Dołączyłem do niego kod prostego formularza, na którym od razu możemy przeprowadzid testy. Wykorzystanie prezentowanego rozwiązania niesie ze sobą kilka ograniczeo dlatego zachęcam do modyfikacji i wprowadzania własnych poprawek. Celem skryptu jest przede wszystkim zaznajomienie czytelnika z techniką DDT oraz możliwościami Selenium. W kolejnym odcinku pokażę, w jaki sposób

dokładniej badad i analizowad wyniki zwracane przez serwer www i testowad bardziej skomplikowane aplikacje. Czekam również na Paostwa sugestie i komentarze. Referencje [1] Xlrd http://www.python-excel.org/ [2] Py.test http://codespeak.net/py/dist/test/index.html