Testowanie mutacyjne

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

Test-Driven Development

Maciej Oleksy Zenon Matuszyk

Techniki efektywnego testowania kodu dla programistów Java (Spock

Testy automatyczne. Korzystające z junit

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

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

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

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

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

Ciągłe dostarczanie oprogramowania : kompletny przewodnik / Eberhard Wolff. Gliwice, cop Spis treści

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

Architektura mikroserwisów na platformie Spring IO


Usługa: Audyt kodu źródłowego

Programowanie Zespołowe

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

Bazy i Systemy Bankowe Sp. z o.o. ul. Kasprzaka 3, Bydgoszcz

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

Bezpieczeństwo systemów komputerowych

Elektroniczna weryfikacja tożsamości klientów

Automatyczne testowanie aplikacji Android

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Programowanie zespołowe

Obróbka po realnej powierzchni o Bez siatki trójkątów o Lepsza jakość po obróbce wykańczającej o Tylko jedna tolerancja jakości powierzchni

Program szkolenia: Continuous Integration i Git

Sposób funkcjonowania

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

Migracja do PostgreSQL za pomocą narzędzi Enterprise DB

Szkolenie: Automatyzacja testowania

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

Program szkolenia: Jenkins - Continuous Integration

MonoGame. Wieloplatformowe gry w C# Mateusz Cicheński

Interaktywne testowanie mutacyjne w procesie tworzenia oprogramowania w środowisku Visual Studio

Michał Olejnik. 22 grudnia 2009

Diagnostyka pamięci RAM

PYTANIA PRÓBNE DO EGZAMINU NA CERTYFIKAT ZAAWANSOWANY REQB KLUCZ ODPOWIEDZI. Część DODATEK

Szkolenie: Podstawy automatyzacji z Selenium IDE

HP Service Anywhere Uproszczenie zarządzania usługami IT

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Usprawnienie procesu zarządzania konfiguracją. Marcin Piebiak Solution Architect Linux Polska Sp. z o.o.

Optymalizacja Automatycznych Testów Regresywnych

Usługa: Testowanie wydajności oprogramowania

Bezpieczeństwo systemów internetowych

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

Continuous Integration i jakość kodu. Michał Prajs

ZAKRĘCENI NA PUNKCIE IT DOŁĄCZ!

Automatyzacja procesu kontroli danych z lotniczego skanowania laserowego

Re_Forms 21 Często zadawane pytania (FAQ)

Programowanie Komponentowe WebAPI

!!!!!!!!!!! PORTFOLIO: Analiza zachowań użytkowników serwisów internetowych. Autorzy: Marek Zachara

Kupiliśmy SIEM (IBM QRadar) dlaczego i co dalej?

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

Testowanie oprogramowania

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

Zapewnienie bezpieczeństwa w całym cyklu życia aplikacji (czyli dlaczego lepiej zapobiegać chorobom, niż leczyć je w zaawansowanym stadium)

Plan Testów Systemu SOS

ZAKRĘCENI NA PUNKCIE IT DOŁĄCZ!

AUREA BPM Oracle. TECNA Sp. z o.o. Strona 1 z 7

Szkolenie autoryzowane. MS 6232 Wdrażanie bazy danych Microsoft SQL Server 2008 R2

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

Interaktywne ustawianie narzędzia Kątowe ustawienie narzędzia Narzędzie pod kątem w obróbce zgrubnej i pośredniej

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

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

Wzorce projektowe i refaktoryzacja

Program szkolenia: JavaScript Craftsmanship

Leszek Dziubiński Damian Joniec Elżbieta Gęborek. Computer Plus Kraków S.A.

Java Podstawy. Michał Bereta

Narzędzia CASE dla.net. Łukasz Popiel

Test-driven development na przykładzie funkcji matematycznej

DESIGNER APPLICATION. powered by

Etapy życia oprogramowania

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

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

ANGULARJS TWORZENIE APLIKACJI INTERNETOWYCH

SPINACZ.edu.pl platforma współpracy nauki z biznesem w zakresie innowacyjnych rozwiązań informatycznych

Koncepcja systemu zarządzania jakością w dużym projekcie informatycznym zgodnie z normą ISO/IEC 9001:2008

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Narzędzia programistyczne - GIT

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

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

OFERTA SZKOLEŃ DLA BIBLIOTEKARZY

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

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

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

Bezpieczeństwo aplikacji i urządzeń mobilnych w kontekście wymagań normy ISO/IEC oraz BS doświadczenia audytora

Metody przewidywania jakości produktu: szacowanie defektów w kodzie

JAK NAPISAĆ SCENARIUSZ LOKALNY?

STAŻE DLA INFORMATYKI

Testowanie oprogramowania. Piotr Ciskowski

Narzędzia podnoszące jakość procesu wytwarzania i wdrażania

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

DLACZEGO DYSTRYBUCJE NIE OBSŁUGUJĄ MOJEGO URZĄDZENIA? Marcin Juszkiewicz Software Engineer

TWORZENIE I TESTOWANIE TEST-DRIVEN DEVELOPMENT APLIKACJI Z UŻYCIEM KOD: TDD

METODY PROGRAMOWANIA

Integracja produktów Atlassian na przykładzie grupy IPFD

Michał Sierzputowski. Zautomatyzuj swoje testy automatyczne oparte o Selenium

Synchronizacja danych Centrala Oddział

Automatyczne testowanie infrastruktury pod kątem bezpieczeństwa. Leszek Miś IT Security Architect RHCA,RHCSS,Sec+ Linux Polska Sp. z o.o.

Transkrypt:

Testowanie mutacyjne Czyli jak dobre w rzeczywistości są Twoje testy? Marcin Zajączkowski m.zajaczkowski@gmail.com Warszawa, 2013-07-06

Ja technicznie Java architect TDD practitioner Team mentor Clean code developer Software Craftsmanship Evangelist FOSS developer Linux enthusiast IT Trainer Code quality freak Blogger

Plan prezentacji Czym jest i jak działa testowanie mutacyjne? Dlaczego jest nieznane i rzadko stosowane? PIT narzędzie, które działa Mutanci w akcji pokaz praktyczny Zastosowanie w Twoim projekcie

http://www.erniemort.com/

http://www.townofdarienny.com/

http://www.censusfinder.com/nebraska-historical-museums.htm

http://muratordom.pl/

http://www.oldwestlawmansforgottenmemoir.com/memoir_bringsv13.html

https://weshouldnamethissoon.wordpress.com/

http://www.rustyaccents.com/

http://www.nps.gov/fosm/historyculture/executions-at-fort-smith-1873-to-1896.htm

https://secure.flickr.com/photos/kingdafy/500117608/

Sfingowane przestępstwo https://secure.flickr.com/photos/7402220@n02/491093210/

2 - http://goo.gl/c8yfe

http://publish.illinois.edu/libraryitnews/2012/06/

Analogie Projekt Błędy w kodzie Miasto Przestępstwa Testy automatyczne Pokrycie kodu Szeryfowie Ścieżki patrolowe Mutanci w kodzie Pomysł z analogią do przestępczości, policji i jej kontrolowania zaczerpnięty od Chrisa Rimmera Prowokacje

Testowanie mutacyjne Uszkodzenie wybranej linii kodu produkcyjnego (wprowadzenie mutacji) Sprawdzenie, czy jakikolwiek test automatyczny to wykryje (czy przestanie przechodzić) Mutacje, które przetrwały (nie zostały zabite) są potencjalnymi błędami, które nie zostałyby wykryte przez testy

Problemy z narzędziami Mała liczba narzędzi dla Javy (wiele już nieutrzymywanych) Długi czas wykonywania Wymagana modyfikacja kodu produkcyjnego Nieskończone pętle Przepełnienie stosu http://bestclipartblog.com/27-tools-clip-art.html/tools-clip-art-2

PIT szybkie mutowanie Manipulacja bajtkodem Mutowanie tylko linii ze standardowym pokryciem Wykonywanie tylko powiązanych testów Zrównoleglenie wykonania Analizy przyrostowe http://carhumor.net/blast-from-the-past/

PIT wiele mutacji Conditionals Boundary Mutator Negate Conditionals Mutator Math Mutator Increments Mutator Invert Negatives Mutator Return Values Mutator (Non) Void Method Calls Mutator I nie tylko... 1 - http://blog.spoongraphics.co.uk/tutorials/create-a-cute-furry-vector-monster-in-illustrator 2 - http://blog.spoongraphics.co.uk/tutorials/create-a-cute-vector-monster-from-a-pencil-sketch

PIT bogaty ekosystem TestNG Zdjęcia - strony domowe przedstawionych projektów Spock

PIT mocne strony Szybki Z dużymi możliwościami Dobra integracja z innymi narzędziami

Alternatywy Javalanche mały ekosystem µjava ograniczony dostęp do kodu narzędzia Jester obecnie nie utrzymywany Jumple obecnie nie utrzymywany Judy obecnie nie utrzymywany, produkt z Wrocławia

Mutanci w akcji http://www.adolescentadulthood.com/2013/01/23/how-did-the-teenage-mutant-ninja-turtles-get-their-names/

Co można zyskać? Informację, jak dobre w rzeczywistości są Twoje testy Miejsca w kodzie, które nie są należycie testowane Dokładniej niż przy zwykłym pokryciu kodu Lepszą jakość kodu Mniej błędów wykrytych na produkcji Zadowolenie z pracy... (i inne korzyści z pisania testowalnego kodu)

Kiedy zastosować? Pisany od zera projekt nastawiony na jakość Wysokie pokrycie kodu, ale mimo to wciąż błędy na produkcji, które mogłyby (i powinny) być wykryte przez testy Wątpliwość w jakość testów Wymaganie w HLD 95% pokrycia kodu przy jednoczesnej realizacji przez zespół, który wcześniej nie pisał testów automatycznych Niedosyt mimo wysokiego pokrycia kodu

Dostosuj swoją aplikację Pisz testy Pisz szybkie jednostkowe testy (nie tylko wolne integracyjne) Oddzielaj szybkie testy jednostkowe od wolnych integracyjnych Bądź w stanie uruchamiać tylko wybraną grupę testów

Czy ktoś tego używa w aplikacjach enterprise? Tak :-) The Ladders Jumi Może Ty? http://www.mysciencework.com/fr/mysciencenews/10027/de-l-in-opportunite-des-open-spaces-dans-les-labos

Posumowanie korzyści Sprawdzenie skuteczności testów automatycznych Bardziej niezawodny kod Mniej problemów w pracy Więcej czasu na ciekawe rzeczy Satysfakcja z wykonywanej pracy Prezentacja jest dostępna na licencji Creative Commons Attribution-NonCommercial-ShareAlike 3.0 (w wyłączeniem fragmentów innych autorów w tym zdjęć). Wersja 1.0.2-cf.

Dziękuję za uwagę Marcin Zajączkowski m.zajaczkowski@gmail.com http://blog.solidsoft.info/