Cuchnące testy Systematyka, objawy, leczenie. Bartosz Walter

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

Etap implementacji. Refaktoryzacja

Testy automatyczne. Korzystające z junit

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).

Pielęgnacja kodu: refaktoryzacja. Jacek Starzyński, ZETiIS PW

METODY PROGRAMOWANIA

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

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

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

Projektowanie Obiektowe Refactoryzacja. Wykład 11 1

Platformy Technologiczne

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

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

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

Programowanie poprzez testy z wykorzystaniem JUnit

MODELE CYKLU ŻYCIA OPROGRAMOWANIA (1) Model kaskadowy (często stosowany w praktyce do projektów o niewielkiej złożonoś

Lennard J.Davies. Dlaczego więc nie warto brać tych leków? Powód pierwszy:




Scala - programowanie obiektowo-funkcyjne

Imię:... Data urodzenia:... Zawód:... Hobby/Sport:... Diagnoza:... Fizjoterapeuta:... Data badania:... Główny problem:... Niewielkie ograniczenia 2

Medycyna rodzinna - opis przedmiotu

Programowanie zespołowe

Projektowanie oprogramowania. Wykład Weryfikacja i Zatwierdzanie Inżynieria Oprogramowania Kazimierz Michalik

Kompilator języka C na procesor 8051 RC51 implementacja

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)

Cele przedsięwzięcia

Techniki efektywnego testowania kodu dla programistów Java (Spock

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

POKAŻ REZULTATY SWOICH DZIAŁAŃ. POKAŻ, CO POTRAFISZ. ALE NAJPIERW TO ZBADAJ! V KONGRES BIBLIOTEK PUBLICZNYCH WARSZAWA PAŹDZIERNIKA 2014 ROKU

Zakażenia wywołane przez paciorkowce z grupy A. Informacje dla pacjentów

Co robię, aby nie zachorować na AIDS? Mateusz Hurko kl. III AG

Lock Manager Deadlock Źródła Jak starczy czasu. Dreadlocks. Konrad Błachnio MIMUW 19 maja 2010

Zasady sporządzania matrycy funkcji kontroli

INSTRUKCJA. Karta Mz-11. Wersja: Data wydania: Wydawca: Atende Medica Sp. z o.o. Al. Wilanowska Warszawa

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

Instrukcja laboratoryjna

Pattern Classification

Ankieta psa. Dane właściciela: Dane psa: Szczepienia:

Choroby wewnętrzne - diabetologia Kod przedmiotu

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

MODELE LINIOWE. Dr Wioleta Drobik

M1_W04 M1_W10 K_W 01 M1_W01 M1_W02 M1_W10 K_W 02 M1_W05 M1_W03 K_W 03 M1_W08 M1_W11, M1_W12 M1_W01 M1_W02 M1_W03 M1_W07 M1_W10 M1_W01 M1_W07 M1_W10

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

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

Leczenie zdrowia psychicznego zorientowane na traumę. Warszawa 2019

Testy dla kobiet w ciąży. Zakażenie HIV i AIDS u dzieci.

166 Wstęp do statystyki matematycznej

ZAKAŻENIA SZPITALNE. Michał Pytkowski Zdrowie Publiczne III rok

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

Programowanie obiektowe. Wykład 5. C++: szablony

Czynniki zniekształcające wyniki testowe

Wykład 1. Projektowanie efektywnych algorytmów przetwarzania danych w sieciowych systemach usług, rzeczy i multimediów.

ANKIETA dla osób chorych, leczących się na boreliozę oraz wyleczonych

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

Metody i narzędzia poprawy efektywności w kontroli jakości

PWSG Ćwiczenia 12. Wszystkie ukończone zadania należy wysłać na adres: lub

Sexy unit testy. czyli o kilku praktykach w testach jednostkowych

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

marketinginformacja Diagnostyka weterynaryjna Szybkie testy dla rolnictwa +++ dostępne w SalesPlusie +++

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

Jak długo pacjenci w Polsce czekają na diagnozę i leczenie onkologiczne? II edycja badania co zmieniło wejście w życie pakietu onkologicznego?

Ropniak opłucnej czy gruźliczy wysięk opłucnowy? - Rola torakoskopii

Programowanie obiektowe

ONKONAWIGATOR. Kompleksowa opieka onkologiczna dla Ciebie i Twoich bliskich

Programowanie obiektowe

Wszystkie problemy leżą w testach. ForProgress spółka z ograniczoną odpowiedzialnością sp.k.

Onkologia - opis przedmiotu

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:

Co to jest demencja (demens)?

Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.

Automatyczne testowanie aplikacji Android

Zaawansowane programowanie w C++ (PCP)

Rozdział 5: Style tekstu

Systemy kontroli wersji

Szkolenie: Podstawy automatyzacji z Selenium IDE

Pragmatyczne badania III fazy w procesie decyzyjnym projekt GET REAL. Mateusz Nikodem

Tab. 2. Charakterystyka zbadanej populacji w latach w grupach płci i wieku. Grupy wiekowe >60 r.

Testowanie aplikacji Java Servlets

Programowanie kontraktowe w Javie

Funkcja (podprogram) void

Od pomysłu do podpisania umowy. Izabela Adamska

Choroby wewnętrzne - pulmonologia Kod przedmiotu

Prelegent : Agnieszka Sowa Stanowisko: Specjalista ds. Zdrowotnych Baz Danych

Ankieta psa. Czy pies jest wysterylizowany/wykastrowany? Tak Nie *Data ostatniej cieczki: *Termin planowanej kastracji/sterylizacji:

Zadania do prezentacji

Zasady sporządzania matrycy kontroli

Państwowa Wyższa Szkoła Zawodowa w Nowym Sączu. Karta przedmiotu. obowiązuje w roku akademickim 2012/2013

Optimizing Programs with Intended Semantics

Automatyczne tworzenie operatora = Integer2& operator=(const Integer& prawy) {

PROGRAM LECZENIA W OŚRODKU PSYCHOTERAPII UZALEŻNIEŃ I WSPÓŁUZALEŻNIENIA KCTU

NIEDOBÓR ALFA-1 ANTYTRYPSYNY

Drogi zakażenia. kontakt seksualny (sperma, preejakulat, śluz szyjkowy), dot. także kontaktów oralnych,

SYLABUS x 8 x

EWALUACJA BUDŻETU OBYWATELSKIEGO LUBLIN, GRUDZIEŃ 2017

Transkrypt:

Cuchnące testy Systematyka, objawy, leczenie Bartosz Walter

Hmmm. Coś mi tu śmierdzi nie wiem dokładnie co i skąd, ale coś mi nie pasuje

Skąd te zapachy? Jeżeli coś niemiło pachnie, to warto zmienić pieluchę Popularna filozofia dotycząca pielęgnacji niemowląt

Code smells Typowe objawy wskazujące na możliwe problemy z utrzymaniem Każdy zapach jest trochę inny, choć niektóre są podobne Objawy czasem są mylące i niejednoznaczne Istnieją typowe metody usuwania zapachu

Znamy sporo code smells Rozmiar: Large Class, Long method, Złożoność: God Class, Lazy Class Dziedziczenie: Refused Bequest, Tradition Breaker Sprzężenie: Shotgun Surgery, Divergent Change Informacja: Comments Modularyzacja: Feature Envy, Schizo Class, Inappropriate Intimacy

Hmmm. Ale dlaczego mam wąchać testy?!

Code smells vs. test smells Niedosłuch Nieaktualna wiedza Przepracowanie Brak dodatkowych badań Powierzchowne badanie Kaszel szmery, Powiększone węzły chłonne Płytki, przyspieszony oddech Fot. Shutterstock

Jak powinna wygląda wizyta u prawdziwego diagnosty? Arrange przygotowanie do badania unikanie czynników zaburzających badanie separacja pacjenta Act badanie wg standardowej procedury zapobieganie niepożądanym efektom ubocznym Assert jedna hipoteza to jedno badanie badanie musi być powtarzalne i niezależne od innych badań

ale zdarzają się i tacy roztargnieni bez aktualnej wiedzy weryfikujący wszystkie możliwe choroby naraz gadżeciarze symulujący rzeczywiste badanie niezdecydowani wieczni optymiści

co w przełożeniu na testy oznacza kod jest nietestowalny test weryfikuje kilka rzeczy naraz brak asercji weryfikację banałów przez asercje nadmiar mocków zmienność wyników w zależności od kontekstu brak potwarzalności wyników stan globalny i zależności kolejnościowe

Trzy przypadki: A, B i C Fot. dreamstime.com

A: To skomplikowana sprawa Taki test: Trudno powiedzieć dokąd zmierza Coś weryfikuje, ale nie identyfikuje przyczyny Sprawdza wiele rzeczy naraz Stosuje skomplikowaną diagnostykę

A: przykład org.jfree.chart.legenditemtest.java public void testequals()

A: metody leczenia Jedno badanie jedno pytanie jeden cel Jedna weryfikacja (ale może być wiele asercji) Najprostsza ścieżka diagnostyczna Eliminacja czynników zewnętrznych

B: Wszystko będzie dobrze! Najważniejsze cechy Tylko ścieżka optymistyczna Sprawdza rzeczy oczywiste lub nieistotne Brak asercji, są banalne lub źle zdefiniowane Ukrywanie lub lekceważenie problemów

Przypadek B: przykład artofillusion.scenetest public void testsetnullrenderer()

Przypadek B: leczenie Identyfikacja nowych przypadków Każdy test musi kiedyś polec Zdrowy sceptycyzm i podejrzliwość Zgłaszanie wszystkich nietypowych zachowań

C: Nie bardzo to rozumiem, ale Test Stosuje metody niewspółmierne do przyczyn (refleksja, omijanie istniejących rozwiązań) Daje różne wyniki, w zależności od kontekstu Zmienia wynik w efekcie niewielkiej modyfikacji

C: przykład org.jfree.plot.xyplottest.java public void testsetnullrenderer()

C: leczenie Najpierw zrozum kod, który testujesz, a potem go testuj Rozpocznij od najprostszej ścieżki diagnostycznej Wyeliminuj czynniki zewnętrzne, które mogłyby wpływać na wynik (Locale, czas, środowisko)

Wnioski Problem z testami może mieć dwa źródła: testy i kod testowany Złe testy mogą kłamać na temat dobrego kodu Istnieje wiele nieświeżych zapachów w testach Z typowymi zapachami można radzić sobie w typowy sposób