Programowanie zespołowe

Podobne dokumenty
METODY PROGRAMOWANIA

Testy automatyczne. Korzystające z junit

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

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

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

LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8

Platformy Technologiczne

Podstawy i języki programowania

Programowanie Zespołowe

Testowanie jednostkowe. Jacek Starzyński, ZETiIS PW

Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz

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

Testowanie II. Cel zajęć. Pokrycie kodu

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

Podstawy i języki programowania

Podstawy i języki programowania

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

Techniki efektywnego testowania kodu dla programistów Java (Spock

Programowanie obiektowe

Podstawy i języki programowania

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Podstawy i języki programowania

Wstęp do Programowania Lista 1

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

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

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

Michał Olejnik. 22 grudnia 2009

Aplikacje w środowisku Java

Behavior Driven Development (BDD)

Projektowanie obiektowe oprogramowania Testowanie oprogramowania Wykład 13 Wiktor Zychla 2014

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

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Podstawy i języki programowania

Programowanie poprzez testy z wykorzystaniem JUnit

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

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

Algorytmy i struktury danych

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Program szkolenia: Wzorce projektowe i ich implementacja w C# oraz testowanie automatyczne

Programowanie 3 - Funkcje, pliki i klasy

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

Programowanie zespołowe

Aplikacje w środowisku Java

Słowa kluczowe jak góry lodowe

Testowanie aplikacji Java Servlets

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Programowanie w języku C++ Agnieszka Nowak Brzezińska Laboratorium nr 2

LABORATORIUM 3 ALGORYTMY OBLICZENIOWE W ELEKTRONICE I TELEKOMUNIKACJI. Wprowadzenie do środowiska Matlab

TESTOWANIE OPROGRAMOWANIA

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

PHP revisited - odświerzenie spojrzenia na programowanie w PHP

Programowanie komputerowe. Zajęcia 4

PROGRAMOWANIE W PYTHONIE ALGORYTMY TABLICOWE A LISTY

Pętle. for, while, do... while, foreach. Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.

Technologia programowania

Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char

lekcja 8a Gry komputerowe MasterMind

Metody Metody, parametry, zwracanie wartości

Instrukcje wyboru. Tworzenie programu, Schematy blokowe, Instrukcje wyboru, Operatory logiczne

Programowanie w języku C++ Grażyna Koba

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Laboratorium Wstawianie skryptu na stroną: 2. Komentarze: 3. Deklaracja zmiennych

Inżynieria Programowania - Testowanie oprogramowania cz.2

Programowanie kontraktowe w Javie

PISANIE TESTÓW Z WYKORZYSTANIEM BIBLIOTEKI TESTNG

Programowanie w Ruby

Testowanie aplikacji. Kurs języka Ruby

Programowanie obiektowe

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

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016

Automatyczne testowanie aplikacji Android

Podstawy programowania III WYKŁAD 6

Autor: Joanna Karwowska

Programowanie - instrukcje sterujące

Instrukcje wyboru. Tworzenie programu, Schematy blokowe, Instrukcje wyboru, Operatory logiczne

Program szkolenia: JavaScript Craftsmanship

Programowanie w języku Java

Podstawy i języki programowania

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

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

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

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

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

Programowanie obiektowe - zadania

Zaawansowane aplikacje WWW - laboratorium

JUNIT. Terminologia. Organizacja testów

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

Politechnika Poznańska Wydział Budowy Maszyn i Zarządzania

Wprowadzenie do Doctrine ORM

PROLOG INNE PRZYKŁADY MACIEJ KELM

SUM Edukacja Techniczno Informatyczna Języki i Systemy Programowania. Wykład 3. dr Artur Bartoszewski - WYKŁAD: Języki i Systemy Programowania,

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

JUnit. Pragmatyczne testy jednostkowe w Javie

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: argumentami operatora dodawania + są dwa operandy 2 i 5.

Ćwiczenie 6. Transformacje skali szarości obrazów

Należy ściągnąć oprogramowanie Apache na platformę

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

Transkrypt:

Programowanie zespołowe Laboratorium 3 - podstawy testów jednostkowych mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 7 marca 2017 1 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Brak czasu na testy? https://media.licdn.com 2 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

TDD TDD (Test-driven development) jest techniką wytwarzania oprogramowania polegającą na powtarzaniu trzech kroków: 1 Napisz automatyczny test sprawdzający dodawaną funkcjonalność (aktualnie nie powinien się on udać). 2 Zaimplementuj funkcjonalność (test powinien się udać). 3 Zrefaktoryzuj kod. https://s-media-cache-ak0.pinimg.com 3 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Testy jednostkowe Testy jednostkowe Test jednostkowy (unit test) metoda testowania kodu za pomocą testów weryfikujących poprawność działania pojedynczych elementów (w OOP najczęściej metod). Sprawdzają one czy realizowane jest zamierzone działanie kodu. Zwykle są wykonywane wielokrotnie w trakcie cyklu powstawania oprogramowania, aby sprawdzić czy funkcjonalność działa pomimo zmian w kodzie. 4 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Pokrycie kodu Pokrycie kodu Pokrycie kodu (code coverage) procent linijek kodu wykonywanych podczas wszystkich testów (bez klamer, deklaracji itp.). Zakłada się, że dobrą praktyką jest pokrycie 70 85 % kodu. 5 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Jakie elementy pokryć testami jednostkowymi? Testujemy przede wszystkim logikę biznesową. Do testowania kontrolerów wykorzystujemy zazwyczaj testy integracyjne. Nie testujemy getterów i setterów. 6 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Asercja Asercja Asercja (assertion) predykat (forma zdaniowa zwracająca wartość logiczną) wskazujący, że w danym miejscu kodu powinna wystąpić wartość true, np. wyrażenie assertequals(zmienna, 2) zakłada, że zmienna ma wartość 2 (wtedy test zostanie zakończony sukcesem). 7 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Wzorzec AAA Arrange Act Assert Wzorzec AAA (Arrange Act Assert) określa strukturę testu jednostkowego, zapewniając uporządkowanie kodu. Zakłada on następujący podział testu: Arrange - dane wejściowe. Act - operacje (działanie na metodzie/funkcji/klasie, która zostaje poddana testowi). Assert - asercja (sprawdzenie czy wynik jest zgodny z oczekiwanym). 8 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Wybrane frameworki do testowania PHPUnit. JUnit. 9 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

PHPUnit Klasy testowe korzystające z PHPUnit muszą dziedziczyć po klasie PHPUnit Framework TestCase. Aby sprawdzić czy wartość zwracana przez metodę testowanego obiektu jest równa oczekiwanej stosujemy różne rodzaje asercji. 10 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przegląd najważniejszych rodzajów asercji w PHPUnit Rodzaj Opis Przykład asserttrue() Sprawdzamy czy zmienna ma wartość true $this->asserttrue(2==2); assertequals () Sprawdzamy czy oba parametry są sobie równe $this>assertequals(2,2); assertcontains () Sprawdzamy czy pierwszy parametr jest elementem tablicy (drugi parametr) $this>assertcontains(2,$tablica); assertinstanceof () Sprawdzamy czy zmienna jest obiektem danej klasy $this->assertinstanceof( DateTime, $date); 11 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przykład - plik CalculatorClass c l a s s C a l c u l a t o r C l a s s { p u b l i c f u n c t i o n c a l c u l a t e S u m ( $x, $y ) { r e t u r n $x+$y ; } } 12 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przykład - plik CalculatorClassTest r e q u i r e o n c e C a l c u l a t o r C l a s s. php ; c l a s s C a l c u l a t o r C l a s s T e s t e x t e n d s PHPUnit Framework TestCase { p u b l i c f u n c t i o n c a l c u l a t e S u m T e s t ( ) { // Arrange $ c a l c u l a t o r C l a s s = new C a l c u l a t o r C l a s s ( ) ; // Act $sum = $ c a l c u l a t o r C l a s s >c a l c u l a t e S u m ( 2, 3) ; // A s s e r t $ t h i s >a s s e r t E q u a l s ( $sum, 7) ; } } 13 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przykład w PhpStorm 14 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przykład 2 w PhpStorm 15 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przykład 3 w PhpStorm 16 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przegląd możliwych testów w JUnit Oznaczenie Opis @Test Oznaczenie metody jako test @Test(expected=Exception.class) Oznaczenie metody jako test, która powinna zwrócić wyjątek Exception @Test(timeout=200) Oznaczenie metody jako test, która powinna się wykonać w < 200 ms @Before Metoda wykonywana przed każdym testem @After Metoda wykonywana po każdym teście @BeforeClass Metoda wykonywana raz przed wszystkimi testami @AfterClass Metoda wykonywana raz po wszystkich testach 17 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przegląd najważniejszych rodzajów asercji w JUnit Rodzaj Opis Przykład fail() Zawsze zróci false fail(); asserttrue() Sprawdzamy czy parametr ma wartość true asserttrue(zmienna); assertequals() Sprawdzamy czy oba parametry są sobie równe assertequals(2,2); assertnull() Sprawdzamy czy obiekt ma wartość null assertnull(obiekt); assertsame() Sprawdzamy czy oba parametry są identyczne assertsame(2,2); 18 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Przykład w NetBeansie 19 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Zadania 1 Skonfiguruj dowolny Framework testowy dla wybranego IDE. 2 Napisz program kalkulator realizujący operacje dodawania, odejmowania, mnożenia, dzielenia, potęgowania i pierwiastkowania. Nastepnie pokryj wszystkie metody testami jednostkowymi. 3 Napisz i pokryj testami jednostkowymi następujące metody: tworzącą dwuwymiarową tablicę o losowej wielkości (z zakresu [1,10]) zawierającą rózną liczbę wierszy i kolumn, wypełniającą ją losowymi wartościami z przedziału [0,10] (za wyjątkiem elementów znajdujących się na przekątnej tablicy - mają one mieć wartość 1) oraz zwracającą największą wartość znajdującą się w tablicy. 20 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Zadania cz. 2 4 Pobierz program ze strony http://szwarc.net.pl/program.zip i napisz do niego testy jednostkowe. 21 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe

Dziękuję za uwagę 22 / 22 mgr inż. Krzysztof Szwarc Programowanie zespołowe