Testy automatyczne. Korzystające z junit



Podobne dokumenty
Sukces vs porażka. Sukces. Porażka

Programowanie zespołowe

1. Robert C. Martin: Clean Code: A Handbook of Agile Software Craftsmanship (Czysty Kod: Podręcznik Dobrego Programisty)

METODY PROGRAMOWANIA

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

Testowanie oprogramowania

Wprowadzenie do testów jednostkowych. Marcin Dziedzic, Wiktor Żołnowski

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Programowanie poprzez testy z wykorzystaniem JUnit

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

JUNIT. Terminologia. Organizacja testów

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

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska

Aplikacje w środowisku Java

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

LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8

Testowanie II. Cel zajęć. Pokrycie kodu

Inżynieria Programowania - Testowanie oprogramowania cz.2

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Weryfikacja i walidacja. Metody testowania systemów informatycznych

Testowanie jednostkowe. Jacek Starzyński, ZETiIS PW

TESTOWANIE OPROGRAMOWANIA

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

Aplikacje w środowisku Java

Katalog książek cz. 3: Web Service

Wprowadzenie do Behaviordriven

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

Jak patrzymy na testy czyli Jak punkt widzenia zależy od punktu siedzenia. Click Piotr Kałuski to edit Master subtitle style

Instrukcja 10 Laboratorium 13 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Platformy Technologiczne

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Programowanie obiektowe

Testowanie aplikacji Java Servlets

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Testowanie aplikacji. Kurs języka Ruby

Automatyczne testowanie aplikacji Android

Programowanie warstwy klienta w aplikacji JavaEE

Podstawy i języki programowania

Testowanie mutacyjne

Podstawy Informatyki. Algorytmy i ich poprawność

Maciej Oleksy Zenon Matuszyk

Dlaczego testowanie jest ważne?

Specyfikacja przypadków i scenariuszy testowych

Programowanie obiektowe zastosowanie języka Java SE

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

SZKOLENIE TWORZENIE SYSTEMÓW

REFERAT PRACY DYPLOMOWEJ

Załącznik nr 19 do Umowy nr... z dnia... Plan Testów Systemu. Projekt ZEFIR 2

Utworzenie pliku. Dowiesz się:

Testowanie oprogramowania. Piotr Ciskowski

Programowanie Obiektowe Ćwiczenie 4

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Programowanie dla początkujących w 24 godziny / Greg Perry, Dean Miller. Gliwice, cop Spis treści

Metody Metody, parametry, zwracanie wartości

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

Sexy unit testy. czyli o kilku praktykach w testach jednostkowych

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

Satel Integra FIBARO

Ćwiczenie 1. Kolejki IBM Message Queue (MQ)

PRZEWODNIK PO PRZEDMIOCIE

Testowanie Testy jednostkowe

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Zmiana specyfikacji istotnych warunków zamówienia

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

PRZEWODNIK PO PRZEDMIOCIE

Programowanie w Ruby

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Laboratorium z przedmiotu: Inżynieria Oprogramowania INP002017_ Laboratorium 11 Testy akceptacyjne z wykorzystaniem narzędzia FitNesse

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Laboratorium 10 Testy jednostkowe z użyciem narzędzia JUnit

Programowanie obiektowe

PRZEWODNIK PO PRZEDMIOCIE

Program szkolenia: Receptury testowania automatycznego - problemy, strategie, taktyki, techniki, narzędzia

Szkolenie: Dobry Przypadek Testowy

Spis treści. Rozdział 1. Aplikacje konsoli w stylu ANSI C i podstawowe operacje w Visual C

Projektowanie aplikacji na platformie Android Kod przedmiotu

Podstawy programowania obiektowego

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016

Aplikacje w środowisku Java

Zaawansowane aplikacje WWW - laboratorium

PRZEWODNIK PO PRZEDMIOCIE

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Programowanie obiektowe

Git, Bitbucket, IntelliJ IDEA

Modelowanie testów. czyli po co testerowi znajomość UML

Aplikacje w środowisku Java

Podstawy modelowania programów Kod przedmiotu

Podstawy programowania III WYKŁAD 6

Testowanie oprogramowania. Wykład 1 dlaczego testowanie jest niezbędne czym jest testowanie ogólne zasady testowania

Programowanie aspektowe na przykładzie AspectJ JUG Poznań, Jacek Pospychała

Java EE produkcja oprogramowania

Programowanie Zespołowe

Programowanie obiektowe

Wykład 7. Projektowanie kodu oprogramowania

INŻYNIERIA OPROGRAMOWANIA TESTY JEDNOSTKOWE DOKUMENTACJA TECHNICZNA

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

Początki Javy. dr Anna Łazińska, WMiI UŁ Podstawy języka Java 1 / 8

Dni: 3. Opis: Adresaci szkolenia

Transkrypt:

Testy automatyczne Korzystające z junit

Cytaty Kiedy zawiesza się program konkurencji, to jest awaria. Kiedy zawiesza się własny program, to jest drobiazg. Często po awarii pojawia się komunikat typu ID 02. ID to skrót od idiotyczny drobiazg, a następująca po nim liczba wskazuje, przez ile miesięcy produkt informatyczny powinien być jeszcze testowany Guy Kawasaki, The Macintosh Way Uwielbiam ostateczne terminy. Zwłaszcza podoba mi się świst, jaki wydają kiedy nas mijają. Douglas Adams, The Hitch Hiker s Guide to the Galaxy

Bug, skąd się wziął

Sukces vs porażka Sukces Wykrycie błędów w procesie testowania Porażka Sytuacja odwrotna Analogia: pacjent z subiektywnymi objawami, wykonanie badań. Dobre wyniki laboratoryjne (testy) są porażką => nie wiadomo co pacjentowi dolega.

Błąd oprogramowania 1. Oprogramowanie nie wykonuje czegoś, co wg specyfikacji powinno 2. Oprogramowanie robi coś, czego nie powinno 3. Oprogramowanie robi coś, o czym specyfikacja nie wspomina. 4. Oprogramowanie nie robi czegoś, czego nie ma w specyfikacji, ale być powinno. 5. Oprogramowanie jest trudne do zrozumienia, trudne do użycia, powolne albo zdaniem testera nieprawidłowe

Koszty usuwania błędów

Model V

Testowanie totalne Programu nie da się przetestować całkowicie: Dane wejściowe są ogromne Dane wyjściowe jeszcze większe Ścieżki działania programu są niezliczone Test nigdy nie udowodni braku błędów

Testy jednostkowe Test jednostkowy to fragment kodu napisany przez dewelopera, który wykonuje fragment testowanej aplikacji i ewaluuje jej wynik. Dobry program to taki, którego pokrycie testami jest maksymalne (czyli procent kodu testowanego) Unit testy pokrywają mały fragment kodu (zwykle jedną metodę lub maksymalnie klasę) Testy jednostkowe zapewniają zamierzone działanie kodu. Zwykle są wykonywane wielokrotnie w trakcie powstawania aplikacji aby być pewnym, że funkcjonalność działa przez cały czas pomimo zmian w kodzie.

junit JUnit jest narzędziem służącym do tworzenia powtarzalnych testów jednostkowych oprogramowania pisanego w języku Java. Cechy JUnit: metoda najmniejszą jednostką testowania, przypadki testowe, oddzielenie testów od kodu, wiele mechanizmów uruchamiania, tworzenie raportów, integracja z różnymi środowiskami programistycznymi. http://www.vogella.com/tutorials/junit/article.html http://junit.org/

Testujemy klasę

Tworzymy testy

Możliwe testy @Test public void method() W ten sposób oznaczamy metodę do wykonania jako test @Test (expected = Exception.class) Metoda powinna zwrócić wyjątek Exception @Test(timeout=100) Metoda powinna się wykonać w mniej niż 100ms @Before public void method() @After public void method() @BeforeClass public static void method() @AfterClass public static void method() Metoda wykonywana przed każdym testem Metoda wykonywana po każdym teście Metoda wykonywana raz przed wszystkimi testami Metoda wykonywana raz po wszystkich testach

Test dla dodawania

Możliwe asercje fail() Zawsze się nie uda (zwróci test negatywny) asserttrue([message], boolean condition) Sprawdzi, czy warunek jest prawdziwy assertequals([string message], expected, actual, tolerance) Sprawdzi czy expected == actual +/- tolerance. Do tego ewentualnie wyświetli message assertnull([message], object) Czy obiekt jest nullem assertsame([string], expected, actual) Czy obiekty są takie same http://junit.sourceforge.net/javadoc/org/junit/assert.html

Wykonujemy testy

Ćwiczenia Zad 1 Napisz aplikację rozwiązującą równanie kwadratowe Dopisz do niej testy jednostkowe, wykonaj je i sprawdź działanie Zad 2 Napisz aplikację losującą 1E7 liczb i następnie je sortującą. Dopisz testy jednostkowe sprawdzające czas wykonania Zad 3 Dopisz testy jednostkowe pokrywające co najmniej 75% kodu dla wybranej aplikacji z poprzednich zajęć