Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Podobne dokumenty
Automatyzacja wykonywania testów. BłaŜej Pietrzak.

Testowanie oprogramowania. Testowanie oprogramowania 1/34

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

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Programowanie poprzez testy z wykorzystaniem JUnit

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

REFERAT PRACY DYPLOMOWEJ

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Tester oprogramowania 2014/15 Tematy prac dyplomowych

TESTOWANIE OPROGRAMOWANIA

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

Testowanie oprogramowania

Dlaczego testowanie jest ważne?

Automatyzacja bez nadmiernego bólu. Piotr Januszek

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

UWAGA!!! Przed przystąpieniem do zamknięcia roku proszę zrobić kopie bezpieczeństwa

Grzegorz Ruciński. Warszawska Wyższa Szkoła Informatyki Promotor dr inż. Paweł Figat

METODY PROGRAMOWANIA

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

WinUcz procedura uprzedniego wywozu

Techniki efektywnego testowania kodu dla programistów Java (Spock

Testowanie i walidacja oprogramowania

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Lokalizacja Oprogramowania

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Usługa: Testowanie wydajności oprogramowania

Michał Olejnik. 22 grudnia 2009

Przewodnik użytkownika (instrukcja) AutoMagicTest

Budżetowanie by CTI Instrukcja

Automatyzacja Testowania w WEB 2.0

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Testowanie oprogramowania. Piotr Ciskowski

Weryfikacja i walidacja. Metody testowania systemów informatycznych

Overlord - Plan testów

IO - Plan testów. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Kurs Projektowanie i programowanie z Distributed Safety. Spis treści. Dzień 1. I Bezpieczeństwo funkcjonalne - wprowadzenie (wersja 1212)

Zasady organizacji projektów informatycznych

Integracja przykładowej hurtowni z serwisem aukcyjnym Allegro.

WYDAWANIE CZYTNIKAMI BY CTI Instrukcja

6. Formularze tabelaryczne, obiekty nawigacji - rozgałęzienia

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Strategia testów mająca doprowadzić do osiągnięcia pożądanych celów

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Testujemy dedykowanymi zasobami (ang. agile testers)

Generatory pomocy multimedialnych

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Dokument Detaliczny Projektu

Tworzenie przypadków testowych

Wstęp do testowania : Szymon Ramczykowski

Praca z systemem POL-on. Zaznaczanie toków do eksportu.

Wzorce projektowe i refaktoryzacja

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Bilans otwarcia zabezpieczenia w WinSkład (od wersji 20.00)

Opis podstawowych modułów

Zadanie nr 3: Sprawdzanie testu z arytmetyki

Techniki (automatyzacji) projektowania testów. Adam Roman WarszawQA, 24 II 2016

Testy automatyczne. Korzystające z junit

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Programowanie w Ruby

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Forex PitCalculator INSTRUKCJA UŻYTKOWNIKA

Maciej Oleksy Zenon Matuszyk

Zawód tester, czyli na czym polega testowanie. Katarzyna Łabinska Justyna Sacha - Gawlik

Bilans otwarcia zabezpieczenia w WinUcz (od wersji 20.10)

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

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0

Opracował: Jan Front

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Microsoft Test Manager

PROE wykład 2 operacje na wskaźnikach. dr inż. Jacek Naruniec

Automatyczne generowanie kodu. 4Developers, 26 marca 2010

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

Waterfall model. (iteracyjny model kaskadowy) Marcin Wilk

Kurier DPD by CTI. Instrukcja

Zad. 5: Układ równań liniowych liczb zespolonych

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

emszmal 3: Automatyczne księgowanie przelewów w programie Sello (plugin dostępny w wersji ecommerce)

AKTUALNA OFERTA ORAZ MOŻLIWOŚĆ ZAKUPU LICENCJI:

TDD w Django South Sorl Haystack + Whoosh Małe, a cieszy Deployment Koniec. Wspomagacze Django. Jan Filipowski. 25 maja 2010

Projektowanie Graficznych Interfejsów Użytkownika Robert Szmurło

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

emszmal 3: Automatyczne księgowanie przelewów w menadżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

Modelowanie i Programowanie Obiektowe

Podstawy programowania III WYKŁAD 4

BAZY DANYCH Panel sterujący

Programowanie obiektowe

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wydawanie czytnikami by CTI. Instrukcja

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

A Zasady współpracy. Ocena rozwiązań punktów punktów punktów punktów punktów

Ćwiczenie ZINTEGROWANE SYSTEMY CYFROWE. Pakiet edukacyjny DefSim Personal. Analiza prądowa IDDQ

Transkrypt:

Automatyzacja testowania oprogramowania Automatyzacja testowania oprogramowania 1/36

Automatyzacja testowania oprogramowania 2/36 Potrzeba szybkich rozwiązań Testowanie oprogramowania powinno być: efektywne wydajne Testowanie to 30% 40% (dla systemów krytycznych 80%) całkowitej pracochłonności Przetestowane programy zawierają błędy

Automatyzacja testowania oprogramowania 3/36 Obietnice automatyzacji testowania Zwiększenie testowania (przypadki testowe uruchamiane w minutach) Zmniejszenie kosztu testowania aż do 80 % wysiłku ręcznego testowania Lepszej jakości oprogramowanie wyprodukowane szybciej

Ocena jakości wariantu testu Automatyzacja testowania oprogramowania 4/36

Ocena jakości wariantu testu cd. Automatyzacja testowania oprogramowania 5/36

Automatyzacja testowania oprogramowania 6/36 Kto automatyzuje Test automator: Tester Programista

Automatyzacja testowania oprogramowania 7/36 Zalety Testy regresyjne Więcej testów częściej Wykonanie testów trudnych do wykonania ręcznie Lepsze użycie zasobów Spójność i powtarzalność testów Reużywalność testów Szybciej na rynek Zwiększona pewność Testowanie może odbywać się w nocy

Automatyzacja testowania oprogramowania 8/36 Ograniczenia automatyzacji Zautomatyzowane testy znajdują tylko 15% błędów. Ręczne testowanie znajduje 85% Bach, 1997 Automatyzacja testów nie poprawia ich efektywności Automatyzacja chaosu daje tylko szybszy chaos Automatyzacja testów może ograniczyć wytwarzanie oprogramowania (względy ekonomiczne) Duży koszt wytworzenia automatycznego testu 2 10x (max 30x) wysiłek związany z ręcznym wykonywaniem testów Automatyczne testy nie mają wyobraźni

Automatyzacja testowania oprogramowania 9/36 Kiedy testować ręcznie Testy są wykonywane rzadko Testowany program często ulega zmianom Wyniki są łatwe do sprawdzenia przez człowieka i trudne do zautomatyzowania (np. audio, schemat kolorów, układ kontrolek na formatce) Test wymaga fizycznej interakcji ze strony użytkownika

Automatyzacja testowania oprogramowania 10/36 Czynności w ramach testowania 1. Identyfikacja warunków testu 2. Zaprojektowanie przypadków testowych 3. Zbudowanie przypadków testowych 4. Uruchomienie przypadków testowych 5. Porównanie uzyskanych wyników z oczekiwanymi

Automatyzacja testowania oprogramowania 11/36 Czynności w ramach testowania 1. Identyfikacja warunków testu Warunek 1: przelew < 0 Warunek 2: użytkownik posiada konto

Automatyzacja testowania oprogramowania 12/36 Czynności w ramach testowania 2. Zaprojektowanie przypadków testowych Stan systemu: Zalogowany do systemu Baza danych posiada dane testowe Krok Wejście Oczekiwane wyjście Warunki testu 1. Wprowadź dane Komunikat pytający kwota = -1, przelewu o potwierdzenie nr konta = XXX 2. Potwierdź Informacja o błędnych danych kwota = -1, nr konta = XXX

Automatyzacja testowania oprogramowania 13/36 Czynności w ramach testowania 3. Zbudowanie przypadków testowych Przygotowanie procedur testowych Procedura testowa dla testu wprowadzenia ujemnej wartości kwoty przelewu: 1. Wciśnij przycisk Tab. 2. Wprowadź -1. 3. Wciśnij przycisk Tab. 4. Wprowadź nr konta = XXX 5. Wciśnij Tab. 6. Po podświetleniu się przycisku Submit wciśnij ENTER.

Automatyzacja testowania oprogramowania 14/36 Czynności w ramach testowania 3. Zbudowanie przypadków testowych cd. Przygotowanie danych wejściowych. Przygotowanie oczekiwanego wyjścia. Procedura testowa dla testu wprowadzenia ujemnej wartości kwoty przelewu:... 7. Sprawdź czy system pyta o potwierdzenie wykonania operacji. Jeśli nie to oznacza to błąd systemu. Wtedy wykonaj......

Automatyzacja testowania oprogramowania 15/36 Czynności w ramach testowania Kandydaci do automatyzacji: 4. Uruchomienie przypadków testowych 5. Porównanie uzyskanych wyników z oczekiwanymi

Automatyzacja testowania oprogramowania 16/36 Automatyzacja projektowania wariantów testu Na ogół są to generatory danych wejściowych Generują dużą liczbę testów Nie zidentyfikują brakujących wymagań

Automatyzacja testowania oprogramowania 17/36 Automaty oparte na kodzie aplikacji i f ( a > 0)... e l s e... Wygenerowane dane wejściowe dla a: 0, 1, 1000, -2 Własności: Generuje dane wejściowe Nie wygeneruje oczekiwanego wyjścia Nie zidentyfikuje brakujących wymagań

Automatyzacja testowania oprogramowania 18/36 Automaty oparte na interfejsie użytkownika Sprawdź czy dla każdej kontrolki istnieje funkcja pomocy Sprawdź czy można edytować pola tylko do odczytu Sprawdź wszystkie linki na stronie www Własności: Generuje dane wejściowe Oczekiwane wyjście jest częściowo generowane

Automatyzacja testowania oprogramowania 19/36 Automaty oparte na specyfikacji / @pre arg!= 0 / void show ( i n t arg1, double arg2 ) ; Własności: Specyfikacja musi być w formie możliwej do analizy przez automat Generuje dane wejściowe Czasem generuje oczekiwane wyjście

Automatyzacja testowania oprogramowania 20/36 Automatyzacja porównywania wyników Przewidź oczekiwane wyjście Testowanie referencyjne (ang. Reference testing) Oczekiwanym wyjściem jest wyjście zaobserwowane przy pierwszym wykonaniu testu Co powinno być porównywane? Zautomatyzowane porównanie może ukryć błąd (jeśli jest błąd w oczekiwanym wyjściu)

Automatyzacja testowania oprogramowania 21/36 Proste porównania Oczekiwane wyjście = faktyczne wyjście

Automatyzacja testowania oprogramowania 22/36 Filtry do porównań Rysunek: Filtry do porównań

Filtry do porównań cd. Automatyzacja testowania oprogramowania 23/36

Automatyzacja testowania oprogramowania 24/36 Filtry do porównań zalety i wady Zalety: Reużywalność filtrów Praca tylko nad wybranymi fragmentami wyjścia Łatwiejsza implementacja testu Możliwość stosowania prostych porównań Wady: Wymaga umiejętności programistycznych Wymagana jest pielęgnacja filtrów Konieczność stworzenia dokumentacji

Automatyzacja testowania oprogramowania 25/36 Automatyzacja pre-/post-processing Pre-processing: Ustawia stan systemu niezbędny do wykonania wariantu testu Wiele wariantów ma ustawia ten sam stan Warto zautomatyzować i reużywać Post-processing: Sprząta po wykonaniu wariantu testu Wiele wariantów sprząta w ten sam sposób Warto zautomatyzować i reużywać

Automatyzacja testowania oprogramowania 26/36 Automatyzacja wykonywanie testów Biblioteka CppUnit: wykonuje testy automatycznie pokazuje przebieg wykonania testów proste porównania wsparcie dla pre-/post-processingu

Automatyzacja testowania oprogramowania 27/36 Architektura CppUnit Rysunek: Diagram dziedziczenia

TestCase idea działania Automatyzacja testowania oprogramowania 28/36

Automatyzacja testowania oprogramowania 29/36 Proste porównania w klasie TestCase CPPUNIT ASSERT EQUAL ( oczekiwane, f a k t y c z n e ) CPPUNIT ASSERT DOUBLES EQUAL ( ocz, f a k t, t o l ) CPPUNIT ASSERT ( warunek ) CPPUNIT ASSERT THROW ( f u n k c j a, w y j ą t e k )

Automatyzacja testowania oprogramowania 30/36 TestCase przykład #i n c l u d e <s t d e x c e p t > c l a s s P i e n i a d z e { p r i v a t e : i n t kwota ; p u b l i c : P i e n i a d z e ( i n t k ) { i f ( k < 0) throw s t d : : r a n g e e r r o r ( " kwota mniejsza od 0" ) ; kwota = k ; } b o o l o p e r a t o r==(c o n s t P i e n i a d z e& o b j ) c o n s t { r e t u r n o b j. kwota == kwota ; } P i e n i a d z e d o d a j ( c o n s t P i e n i a d z e& p ) c o n s t { r e t u r n P i e n i a d z e ( kwota + p. kwota ) ; } P i e n i a d z e o d e j m i j ( c o n s t P i e n i a d z e& p ) c o n s t { r e t u r n P i e n i a d z e ( kwota p. kwota ) ; } } ;

Automatyzacja testowania oprogramowania 31/36 TestCase przyklad #i n c l u d e <c p p u n i t / T e s t F i x t u r e. h> #i n c l u d e <c p p u n i t / e x t e n s i o n s / HelperMacros. h> #i n c l u d e " Pieniadze.h" c l a s s P i e n i a d z e T e s t : p u b l i c CppUnit : : T e s t F i x t u r e { p r i v a t e : P i e n i a d z e p i e n i a d z e ; p r o t e c t e d : v o i d t e s t D o d a j ( ) ; v o i d t e s t O d e j m i j ( ) ; p u b l i c : P i e n i a d z e T e s t ( ) { } v o i d setup ( ) ; v o i d teardown ( ) ; } ;

Automatyzacja testowania oprogramowania 32/36 TestCase przyklad #i n c l u d e " PieniadzeTest.h" v o i d P i e n i a d z e T e s t : : t e s t D o d a j ( ) { CPPUNIT ASSERT ( p i e n i a d z e >d o d a j ( 8 ) == P i e n i a d z e ( 1 2 ) ) ; } v o i d P i e n i a d z e T e s t : : t e s t O d e j m i j ( ) { CPPUNIT ASSERT ( p i e n i a d z e >o d e j m i j ( 3 ) == P i e n i a d z e ( 1 ) ) ; } v o i d P i e n i a d z e T e s t : : setup ( ) { p i e n i a d z e = new P i e n i a d z e ( 4 ) ; } v o i d P i e n i a d z e T e s t : : teardown ( ) { d e l e t e p i e n i a d z e ; }

TestCase przyklad Automatyzacja testowania oprogramowania 33/36

Automatyzacja testowania oprogramowania 34/36 Tworzenie zbiorów przypadków testowych #i n c l u d e <c p p u n i t / e x t e n s i o n s / HelperMacros. h> #i n c l u d e <c p p u n i t / u i / t e x t / TestRunner. h> c l a s s P i e n i a d z e T e s t : p u b l i c CppUnit : : T e s t F i x t u r e { CPPUNIT TEST SUITE ( P i e n i a d z e T e s t ) ; CPPUNIT TEST( t e s t D o d a j ) ; CPPUNIT TEST( t e s t O d e j m i j ) ; CPPUNIT TEST SUITE END ( ) ; //... } ; i n t main ( i n t argc, char a r g v ) { CppUnit : : TextUi : : TestRunner r u n n e r ; r u n n e r. addtest ( P i e n i a d z e T e s t : : s u i t e ( ) ) ; r u n n e r. run ( ) ; r e t u r n 0 ; }

Automatyzacja testowania oprogramowania 35/36 CppUnit dobre praktyki programistyczne konstruktor() vs setup() unikać wpisywania na sztywno ścieżek dostępu do zasobów uniezależnić testy od czasu, lokalizacji itd. obsługa wyjątków zakładaj, że przypadki testowe są wykonywane w dowolnej kolejności unikaj pisania przypadków testowych z efektami ubocznymi testowanie prywatnych metod

Automatyzacja testowania oprogramowania 36/36 W wykładzie wykorzystano materiały Automatyzacja wykonywania testów, Błażej Pietrzak, http://wazniak.mimuw.edu.pl/index.php?title=io-11-wyk-toc