Test-driven development na przykładzie funkcji matematycznej

Podobne dokumenty
Programowanie Zespołowe

Michał Olejnik. 22 grudnia 2009

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Test-Driven Development

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

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

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

Wykład 9: Polimorfizm i klasy wirtualne

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Wzorce projektowe i refaktoryzacja

Dobre wdrożenia IT cz. I Business Case.

Techniki efektywnego testowania kodu dla programistów Java (Spock

METODY PROGRAMOWANIA

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Testowanie mutacyjne

Programowanie zespołowe

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego
























Feature Driven Development

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

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

Średni. Mały. Zakres Dół Środek Góra

REFERAT PRACY DYPLOMOWEJ

Szacowanie optymalnego systemu Bonus-Malus przy pomocy Pseudo-MLE. Joanna Sawicka

Jak stworzyć system oparty o mikroserwisy Karol Buler


Optymalizacja ciągła

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

Open Source w służbie developerom

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

Projekt grupowy - opis przedmiotu

Rok akademicki: 2017/2018 Kod: IIN s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Szkolenia SAS Cennik i kalendarz 2017


Excel - użycie dodatku Solver

Testowanie według modelu (MBT) Stowarzyszenie Inżynierii Wymagań wymagania.org.pl

Programowanie komputerów

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

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

System Edukacji Młodych Informatyków

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

Dobry start do profesjonalnego programowania w C++ dla. początkujących programistów

Testowanie oprogramowania w środowisku IBM Rational Software Architect

Akademia ADB Wykład I Praca w grupie i jakość kodu

Opis. Wymagania wstępne (tzw. sekwencyjny system zajęć i egzaminów) Liczba godzin zajęć dydaktycznych z podziałem na formy prowadzenia zajęć

Wprowadzenie do Behaviordriven

Arytmetyka stało i zmiennoprzecinkowa

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

10 kluczowych zasad efektywnego uczenia się tradingu

Tytuł szkolenia: Angular 4 - budowanie nowoczesnych i wydajnych aplikacji przeglądarkowych

WIELKA SGH-OWA POWTÓRKA ZE STATYSTYKI REGRESJA LINIOWA

Kryptografia na procesorach wielordzeniowych

KAMIL SABATOWSKI. Najczęstsze błędy junior devów i jak ich uniknąć?

I. WSTĘP. Przykład 1. Przykład 2. Programowanie czyli tworzenie programów komputerowych (aplikacji komputerowych)

3.

WYKONANIE APLIKACJI WERYFIKUJĄCEJ PIONOWOŚĆ OBIEKTÓW WYSMUKŁYCH Z WYKORZYSTANIEM JĘZYKA C++ 1. Wstęp

Program szkolenia: Zaawansowane programowanie w C++

Funkcje charakterystyczne zmiennych losowych, linie regresji 1-go i 2-go rodzaju

1 TEMAT LEKCJI: 2 CELE: 3 METODY NAUCZANIA 4 ŚRODKI DYDAKTYCZNE. Scenariusz lekcji. 2.1 Wiadomości: 2.2 Umiejętności: Scenariusz lekcji

Web 3.0 Sieć Pełna Znaczeń (Semantic Web) Perspektywy dla branży motoryzacyjnej i finansowej. Przyjęcie branżowe EurotaxGlass s Polska 10 luty 2012

Systemy ekspertowe i sztuczna inteligencja. dr Agnieszka Nowak Brzezioska

Optymalizacja Automatycznych Testów Regresywnych

Studentom zostaną dostarczone wzory lub materiały opisujące. Zachęcamy do wykonania projektów programistycznych w postaci apletów.

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Obliczenia inspirowane Naturą

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

OpenAI Gym. Adam Szczepaniak, Kamil Walkowiak

Przegląd metod optymalizacji wielowymiarowej. Funkcja testowa. Funkcja testowa. Notes. Notes. Notes. Notes. Tomasz M. Gwizdałła

Optimizing Programs with Intended Semantics

KARTA PRZEDMIOTU. Tworzenie bezpiecznego kodu D1_13

Artur Wielogórski.

Session Based Testing Czyli eksploracyjne testowanie w sesjach. Karolina Bilewska PapryQArz

X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ

Instrukcja laboratoryjna cz.0

Testowanie i walidacja oprogramowania

MODELOWANIE RZECZYWISTOŚCI

MATLAB Compiler. jak tworzyć aplikacje ze skryptów. LABORKA Piotr Ciskowski

Transkrypt:

PW, WEiTI, ZBiUM, 2018.10.29 Test-driven development na przykładzie funkcji matematycznej dr inż. Bartosz Papis

Spis treści 1. Po pisze się testy? 2. Czemu nie pisze się testów? 3. Czym jest Test-Driven Development? 4. Boat kata 5. Podsumowanie Październik, 2018 Page 2

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi. Październik, 2018 Page 3

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi. Najłatwiejszy sposób na uruchomienie kodu Październik, 2018 Page 4

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi. Najłatwiejszy sposób na uruchomienie kodu Najłatwiejszy sposób na weryfikację przypadków brzegowych Październik, 2018 Page 5

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi. Najłatwiejszy sposób na uruchomienie kodu Najłatwiejszy sposób na weryfikację przypadków brzegowych Najłatwiejszy sposób na odtworzenie błędu Październik, 2018 Page 6

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi. Najłatwiejszy* sposób na uruchomienie kodu Najłatwiejszy* sposób na weryfikację przypadków brzegowych Najłatwiejszy* sposób na odtworzenie błędu (*) zakładając, że kod jest testowalny Październik, 2018 Page 7

Po co pisze się testy? By minimalizować regresje. Październik, 2018 Page 8

Po co pisze się testy? By minimalizować regresje. Nie da się wprowadzić drugi raz tego samego błędu Październik, 2018 Page 9

Po co pisze się testy? By minimalizować regresje. Nie da się* wprowadzić drugi raz tego samego błędu (*) zakładając, że testy są uruchamiane i traktowane poważnie Październik, 2018 Page 10

Po co pisze się testy? By zagwarantować dobrą strukturę kodu. Październik, 2018 Page 11

Po co pisze się testy? By zagwarantować dobrą strukturę kodu. Brak ukrytych zależności Październik, 2018 Page 12

Po co pisze się testy? By zagwarantować dobrą strukturę kodu. Brak ukrytych zależności Spełnienie Single Responsibility Principle Październik, 2018 Page 13

Po co pisze się testy? By zagwarantować dobrą strukturę kodu. Brak ukrytych zależności Spełnienie Single Responsibility Principle ( ) Październik, 2018 Page 14

Po co pisze się testy? By zagwarantować dobrą strukturę kodu. Brak* ukrytych zależności Spełnienie* Single Responsibility Principle ( )* (*) chyba, że ktoś się bardzo napracuje by stworzyć testy do kodu bez tych cech Październik, 2018 Page 15

Po co pisze się testy? By stworzyć zawsze aktualną dokumentację. Październik, 2018 Page 16

Po co pisze się testy? By stworzyć zawsze aktualną dokumentację. Testy się nie przedawniają Październik, 2018 Page 17

Po co pisze się testy? By stworzyć zawsze aktualną dokumentację. Testy się nie* przedawniają (*) chyba że nie są uruchamiane albo są ignorowane Październik, 2018 Page 18

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi. By minimalizować regresje. By zagwarantować dobrą strukturę kodu. By stworzyć zawsze aktualną dokumentację. Październik, 2018 Page 19

Po co pisze się testy? By się upewnić, że kod robi to, co się wydaje, że robi.* By minimalizować regresje. By zagwarantować dobrą strukturę kodu.*** By stworzyć zawsze aktualną dokumentację. (*) Bissi et al., The effects of test driven development on internal quality, external quality and productivity: A systematic review, 2016 Elsevier (***) Madeyski, Test-Driven Development: An Empirical Evaluation of Agile Practice, 2010 Springer-Verlag Październik, 2018 Page 20

Po co pisze się testy? (2) By sprzyjać odtwarzalności wyników. Z poczucia odpowiedzialności.* (*) "Uncle" Bob Martin - "The Future of Programming" Październik, 2018 Page 21

Czemu nie pisze się testów? - Postrzegane jako strata czasu. Październik, 2018 Page 22

Czemu nie pisze się testów? - Postrzegane jako strata czasu. - Trudne. Październik, 2018 Page 23

Czym jest Test-driven development? Kent Beck, 2003 r. 1. Failing test 3. Refactor 2. Just enough code to make the test pass Październik, 2018 Page 24

Czemu nie stosuje się Test-driven development? - Postrzegane jako strata czasu. - Jeszcze trudniejsze niż pisanie testów. - Źle rozumiane. Październik, 2018 Page 25

Boat Kata Kata created by Jarosław Karczmarczyk: https://github.com/karczmarczykj/boat-kata https://en.wikipedia.org/wiki/file:boat_-_little_belt_-_02.jpeg (CC 3.0) Październik, 2018 Page 26

Boat Kata Mając daną listę punktów, obliczyć kierunek, w którym płynie łódka względem pozycji początkowej (x 5, y 5 ) (x 3, y 3 ) (x 2, y 2 ) (x 4, y 4 ) (x 1, y 1 ) Październik, 2018 Page 27

Boat Kata Kierunek to Prawo wtedy i tylko wtedy gdy α + β γ + > 0 wpp. Lewo β (x 5, y 5 ) α (x 2, y 2 ) (x 3, y 3 ) (x 4, y 4 ) γ (x 1, y 1 ) Październik, 2018 Page 28

Boat Kata Zły sposób - Kilka godzin na odświeżenie trygonometrii - Kilka godzin obliczeń na kartce - Kilka godzin implementacji β (x 5, y 5 ) α (x 2, y 2 ) (x 3, y 3 ) (x 4, y 4 ) γ (x 1, y 1 ) Październik, 2018 Page 29

Boat Kata Niezły sposób - Kilka godzin na odświeżenie trygonometrii - Kilka godzin obliczeń na kartce - Kilka godzin implementacji - Kilka godzin pisania testów β (x 5, y 5 ) α (x 2, y 2 ) (x 3, y 3 ) (x 4, y 4 ) γ (x 1, y 1 ) Październik, 2018 Page 30

Boat Kata Dobry sposób - Rozwiązywanie problemu małymi, weryfikowalnymi krokami β (x 5, y 5 ) α (x 2, y 2 ) (x 3, y 3 ) (x 4, y 4 ) γ (x 1, y 1 ) Październik, 2018 Page 31

Boat Kata Dobry sposób - Rozwiązywanie problemu małymi, weryfikowalnymi krokami Prezentacja w Visual Studio Październik, 2018 Page 32

Boat Kata Dobry sposób Październik, 2018 Page 33

Boat Kata Dobry sposób Październik, 2018 Page 34

Boat Kata Dobry sposób Październik, 2018 Page 35

Boat Kata Dobry sposób Październik, 2018 Page 36

Boat Kata Dobry sposób May 24, 2018 Page 37

Boat Kata Dobry sposób May 24, 2018 Page 38

Boat Kata Dobry sposób Październik, 2018 Page 39

Boat Kata Dobry sposób Październik, 2018 Page 40

Test-driven development - Metoda naukowa w programowaniu* (*) Mugridge,Test Driven Development and the Scientific Method, 2003 IEEE (Agile Development Conference) Październik, 2018 Page 41

Test-driven development - Metoda naukowa w programowaniu* - Narzędzie pomocne przy trudnych problemach (*) Mugridge,Test Driven Development and the Scientific Method, 2003 IEEE (Agile Development Conference) Październik, 2018 Page 42

Test-driven development - Metoda naukowa w programowaniu* - Narzędzie pomocne przy trudnych problemach - którego można używać efektywnie** (*) Mugridge,Test Driven Development and the Scientific Method, 2003 IEEE (Agile Development Conference) (**) Beck,Test Driven Development: By Example, 2000 Addison-Wesley Professional Październik, 2018 Page 43

Test-driven development - Metoda naukowa w programowaniu* - Narzędzie pomocne przy trudnych problemach - którego można używać efektywnie** - gwarantujące wysokie pokrycie kodu testami (*) Mugridge,Test Driven Development and the Scientific Method, 2003 IEEE (Agile Development Conference) (**) Beck,Test Driven Development: By Example, 2000 Addison-Wesley Professional Październik, 2018 Page 44

Test-driven development Dziękuję za uwagę Październik, 2018 Page 45