Michał Olejnik. 22 grudnia 2009

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

Programowanie Zespołowe

Techniki efektywnego testowania kodu dla programistów Java (Spock

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

Zaawansowane programowanie w języku C++

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

Tworzenie oprogramowania

Podstawy modelowania programów Kod przedmiotu

Maciej Oleksy Zenon Matuszyk

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

Wprowadzenie do Behaviordriven

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

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

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

Wzorce projektowe i refaktoryzacja

PRZEWODNIK PO PRZEDMIOCIE

REFERAT PRACY DYPLOMOWEJ

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

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

Program szkolenia: Continuous Integration i Git

Wykład V. Rzut okiem na języki programowania. Studia Podyplomowe INFORMATYKA Podstawy Informatyki

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

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016

Egzamin / zaliczenie na ocenę*

Wprowadzenie do Algo tradingu czyli zaawansowane funkcje platformy MT4. Robert Gawron, , Warszawa

Wprowadzenie do narzędzia MAVEN

Krótka Historia. Co to jest NetBeans? Historia. NetBeans Platform NetBeans IDE NetBeans Mobility Pack Zintegrowane moduły. Paczki do NetBeans.

Oferta szkoleń firmy Code Sprinters

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Rubik s Manager - Plan testów

Behavior Driven Development (BDD)

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

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

Programowanie kontraktowe w Javie

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Programowanie zespołowe

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

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

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

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

Utworzenie pliku. Dowiesz się:

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA Bieżący sylabus w semestrze zimowym roku 2016/17

Komputer nie myśli. On tylko wykonuje nasze polecenia. Nauczmy się więc wydawać mu rozkazy

KARTA PRZEDMIOTU. Projekt zespołowy D1_10

NAZWA PRZEDMIOTU/MODUŁU KSZTAŁCENIA:

Optymalizacja Automatycznych Testów Regresywnych

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

INŻYNIERIA OPROGRAMOWANIA

Projektowanie oprogramowania. Termin zajęć: poniedziałek, a podstawie materiału ze strony.

TESTOWANIE OPROGRAMOWANIA

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

KARTA PRZEDMIOTU. 1. Informacje ogólne. 2. Ogólna charakterystyka przedmiotu. Projekt zespołowy D1_10

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Feature Driven Development

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Zagadnienia. Inżynieria Oprogramowania

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

Test-driven development na przykładzie funkcji matematycznej

System zarządzający grami programistycznymi Meridius

Załącznik 1 instrukcje instalacji

Hoare Advanced Homework Assistant

Opis realizacji dla czterech zespołów (4 przypadki użycia)

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Zagadnienia. Inżynieria Oprogramowania

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

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

Web frameworks do budowy aplikacji zgodnych z J2EE

Szablony funkcji i szablony klas

Mariusz Trzaska Modelowanie i implementacja systemów informatycznych

Automatyczne testowanie aplikacji Android

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

KARTA PRZEDMIOTU. 1. NAZWA PRZEDMIOTU: Zespołowy projekt informatyczny. 2. KIERUNEK: Matematyka. 3. POZIOM STUDIÓW: I stopnia

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Dokumentacja kompilacji źródeł aplikacji 1.0

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

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

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

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

Agile Project Management

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Tematy seminariów wg Roger S. Pressman, Praktyczne podejście do oprogramowania, WNT, Zofia Kruczkiewicz

SYLABUS DOTYCZY CYKLU KSZTAŁCENIA realizacja w roku akademickim 2016/17

Testowanie aplikacji mobilnych z ukierunkowaniem na system Android

Praktyczne zastosowanie bibliotek Boost oraz nowego standardu C++11

Metodyki programowania. Tomasz Kaszuba 2015

FASTER IT DRIVES BETTER BUSINESS. Daniel Spica, CEO

Dokumentacja projektu QUAIKE Architektura oprogramowania

METODY PROGRAMOWANIA

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

Szczegółowy opis przedmiotu zamówienia

Podstawy Programowania 2

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Lokalizacja Oprogramowania

Informatyzacja przedsiębiorstw WYKŁAD

Rozdział 5: Zarządzanie testowaniem. Pytanie 1

PRACA DYPLOMOWA INŻYNIERSKA. Mobilny system wspomagający pracę. terminala kontenerowego

Programowanie poprzez testy z wykorzystaniem JUnit

RAPORT Z POLSKIEGO BADANIA PROJEKTÓW IT 2010

Transkrypt:

Continuous TDD Politechnika Wrocławska Informatyka 22 grudnia 2009

Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5

Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5

Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5

Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5

Agenda Wprowadzenie 1 Wprowadzenie 2 3 4 5

Tradycyjne podejście Continuous compilation W klasycznych językach kompilowanych (takich jak Pascal, C, C++ czy Java) moment budowy programu jest w pełni uzależniony od decyzji programisty. Pierwsze środowiska programistyczne wspierały właśnie taki model programowanie - nie były w stanie poinformować programisty o występujących w kodzie błędach leksykalnych, do chwili, gdy on sam nie zdecydował się na przeprowadzenie weryfikacji. Podejście to było uzasadnione w czasach, kiedy kompilacja nawet prostych programów była zadaniem wymagającym dużych zasobów i mogła trwać dość długo.

Tradycyjne podejście Continuous compilation W klasycznych językach kompilowanych (takich jak Pascal, C, C++ czy Java) moment budowy programu jest w pełni uzależniony od decyzji programisty. Pierwsze środowiska programistyczne wspierały właśnie taki model programowanie - nie były w stanie poinformować programisty o występujących w kodzie błędach leksykalnych, do chwili, gdy on sam nie zdecydował się na przeprowadzenie weryfikacji. Podejście to było uzasadnione w czasach, kiedy kompilacja nawet prostych programów była zadaniem wymagającym dużych zasobów i mogła trwać dość długo.

Tradycyjne podejście Continuous compilation W klasycznych językach kompilowanych (takich jak Pascal, C, C++ czy Java) moment budowy programu jest w pełni uzależniony od decyzji programisty. Pierwsze środowiska programistyczne wspierały właśnie taki model programowanie - nie były w stanie poinformować programisty o występujących w kodzie błędach leksykalnych, do chwili, gdy on sam nie zdecydował się na przeprowadzenie weryfikacji. Podejście to było uzasadnione w czasach, kiedy kompilacja nawet prostych programów była zadaniem wymagającym dużych zasobów i mogła trwać dość długo.

Continuous compilation Continuous compilation Wzrost mocy obliczeniowych komputerów sprawił, że główny powód stosowania tradycyjnego podejścia do kompilacji stał się nieaktualny. Dlatego we współczesnych środowiskach programistycznych stosowana jest ciągła kompilacja (continuous compilation). Ciągła kompilacja oznacza, że IDE automatycznie kompiluje modyfikowane przez programistę klasy i dzięki temu jest w stanie niemal natychmiastowo wykryć wprowadzenie do kodu błędu składniowego i poinformować o nim użytkownika.

Continuous compilation to zaliczana do metodyk Agile technika wytwarzania oprogramowania. Polega ona na wielokrotnym powtarzaniu następującej sekwencji kroków: 1 Dodanie nowego testu dla nowej funkcjonalności 2 Uruchomienie testów i zobaczenie, że nowy nie udaje się 3 Implementacja nowej funkcjonalności 4 Uruchomienie testów i zobaczenie, że kończą się powodzeniem 5 Refaktoryzacja kodu

Continuous compilation to zaliczana do metodyk Agile technika wytwarzania oprogramowania. Polega ona na wielokrotnym powtarzaniu następującej sekwencji kroków: 1 Dodanie nowego testu dla nowej funkcjonalności 2 Uruchomienie testów i zobaczenie, że nowy nie udaje się 3 Implementacja nowej funkcjonalności 4 Uruchomienie testów i zobaczenie, że kończą się powodzeniem 5 Refaktoryzacja kodu

Continuous compilation to zaliczana do metodyk Agile technika wytwarzania oprogramowania. Polega ona na wielokrotnym powtarzaniu następującej sekwencji kroków: 1 Dodanie nowego testu dla nowej funkcjonalności 2 Uruchomienie testów i zobaczenie, że nowy nie udaje się 3 Implementacja nowej funkcjonalności 4 Uruchomienie testów i zobaczenie, że kończą się powodzeniem 5 Refaktoryzacja kodu

Continuous compilation to zaliczana do metodyk Agile technika wytwarzania oprogramowania. Polega ona na wielokrotnym powtarzaniu następującej sekwencji kroków: 1 Dodanie nowego testu dla nowej funkcjonalności 2 Uruchomienie testów i zobaczenie, że nowy nie udaje się 3 Implementacja nowej funkcjonalności 4 Uruchomienie testów i zobaczenie, że kończą się powodzeniem 5 Refaktoryzacja kodu

Continuous compilation to zaliczana do metodyk Agile technika wytwarzania oprogramowania. Polega ona na wielokrotnym powtarzaniu następującej sekwencji kroków: 1 Dodanie nowego testu dla nowej funkcjonalności 2 Uruchomienie testów i zobaczenie, że nowy nie udaje się 3 Implementacja nowej funkcjonalności 4 Uruchomienie testów i zobaczenie, że kończą się powodzeniem 5 Refaktoryzacja kodu

Continuous compilation Cykl w TDD [7]

Continuous TDD Continuous TDD Continuous TDD jest wersją rozwojową tradycyjnego TDD analogiczną do usprawnienia, jakim była ciągła kompilacja w stosunku do kompilacji na żądanie. Praktyka ta polega na automatycznym uruchamianiu testów jednostkowych po każdej zmianie wprowadzonej przez programistę. Termin Continuous TDD został po raz pierwszy użyty przez Program Analysis Group na uniwersytecie MIT w roku 2004. Przeprowadzone przez nich badania wskazały, że praktyka ta ma pozytywny efekt na efektywność i zdoloność realizacji zadań u stosujących ją programistów. [1]

Zalety Continuous TDD Continuous TDD Do najważniejszych zalet Continuous TDD zalicza się [3]: Uwolnienie programisty od konieczności ręcznego uruchamiania testów Zwiększenie efektywności testów regresywnych poprzez zmniejszenie czasu między wprowadzeniem błędu, a jego wykryciem Promowanie dobrych nawyków TDD oraz pisania szybkich testów

Zalety Continuous TDD Continuous TDD Do najważniejszych zalet Continuous TDD zalicza się [3]: Uwolnienie programisty od konieczności ręcznego uruchamiania testów Zwiększenie efektywności testów regresywnych poprzez zmniejszenie czasu między wprowadzeniem błędu, a jego wykryciem Promowanie dobrych nawyków TDD oraz pisania szybkich testów

Zalety Continuous TDD Continuous TDD Do najważniejszych zalet Continuous TDD zalicza się [3]: Uwolnienie programisty od konieczności ręcznego uruchamiania testów Zwiększenie efektywności testów regresywnych poprzez zmniejszenie czasu między wprowadzeniem błędu, a jego wykryciem Promowanie dobrych nawyków TDD oraz pisania szybkich testów

Zalety Continuous TDD Continuous TDD Do najważniejszych zalet Continuous TDD zalicza się [3]: Uwolnienie programisty od konieczności ręcznego uruchamiania testów Zwiększenie efektywności testów regresywnych poprzez zmniejszenie czasu między wprowadzeniem błędu, a jego wykryciem Promowanie dobrych nawyków TDD oraz pisania szybkich testów

Obecnie nie ma środowiska programistycznego, które oferowałoby natywne wsparcie praktyki Continuous TDD. Istnieją jednakże wtyczki, które umożliwiają jej stosowanie. Wśród nich możemy wymienić: Continuous Testing Plugin - plugin stworzony przez Davida Saffa z MIT. Obecnie nierozwjiany, działa tylko w środowisku Eclipse 3.1. Infinitest [4] JUnit Max [5] - plugin nierozwijany ConTester [6]

Wprowadzenie Bibliografia Continuous TDD jest techniką godną uwagi, ponieważ: zachowuje wszystkie zalety TDD wzbogaca TDD o kilka bardzo interesujących i przydatnych cech istnieje wiele narzędzi wspierających tę praktykę promuje wyrabianie dobrych nawyków w pisaniu testów

Bibliografia Wprowadzenie Bibliografia David Saff, Michael D. Ernst: Continuous testing in Eclipse http://groups.csail.mit.edu/pag/continuoustesting/ http://blog.objectmentor.com/articles/2007/09/20/ http://www.infinitest.org http://www.threeriversinstitute.org/junitmax/subscribe.html http://www.e-informatyka.pl/sens/ http://en.wikipedia.org/wiki/test-driven development