-
Data: 2013-07-23 02:16:02
Temat: Re: pl. usenet o agile
Od: Andrzej Jarzabek <a...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On 22/07/2013 23:09, Edek wrote:
> Szarym od mżawki świtem Sat, 20 Jul 2013 10:53:26 +0200, Sebastian Biały
> wyrzucił pustą ćwiartkę i oznajmił:
>
>> Ale już taki test:
>>
>> assert( parseDouble( "1.0" == 1.0 ) );
>> assert( parseDouble( "1E0" == 1.0 ) );
>> expect_throw( parseDouble( "1e0" ) );
>> expect_throw( parseDouble( "1,0" ) );
>>
>> ... ślicznie dokumentuje.
>
> Obawiam się, że nie zrozumiałęś przykładu. Unit testy tylko pokazują,
> że dla *tych wybranych przypadków* działa. Jest wiele przypadków
> kodu gdzie to wystarcza, ale jest też wiele przypadków, gdzie
> albo nie ma skończonej liczby przypadków (czyli też unitów), albo
> nic się w ten sposób nie dokumentuje - bo to trochę tak jakby zamiast
> książki z przykładami mieć same przykłady.
Edek myli weryfikację z dokumentacją. Test, owszem, weryfikuje
szczególne przypadki, ale dobrze napisany dokumentować może ogólne
reguły które te przypadki reprezentują.
Dokumentacyjną rolę w testach pełni przede wszystkim nazwa testu, ale
też cały jej zapis:
test parseDouble parses decimal integer representation {
int integer = 83;
string representation = "83";
assert that parseDouble(representation) equals (double)integer;
}
Chcąc się dowiedzieć co robi parseDouble i dla jakich przypadków daje
jakie wyniki, i korzystając z unit testów jako dokumentacji, jełop
wyczyta z powyższego tylko informację, że dla wejścia "83" daje liczbę
równą (double)83, ale inteligentny czytelnik wyczyta więcej.
I zanim się ktoś czepnie - jeszcze raz, owszem, ten test nie _dowodzi_,
że funkcja parsuje reprezentacjee jakichkolwiek liczb całkowitych innych
niż 83, ale to dokumentuje. Komentarz w kodzie, dokument w Wordzie czy
schemat w Enterprise Architect w ogóle nie dowodzą czegokolwiek jeśli
chodzi o dokumentowany kod, a dokumentować mogą.
> I nie, unit testy w praktyce ani nie są pewne ani też praktycznie
> nigdy nie pokrywają wszystkich przypadków. Pokrycie 100% linii bywa
> górną granicą,
Raczej ciężko, żeby unit testy pokrywały więcej niż 100% linii.
> a często nawet nie. Unit testy pisze się głównie
> dla szybkiego wyłapania oczywistych regresji.
Jest to jeden z powodów. Rola dokumentacyjna jest również istotna. Co
prawda tę samą treść możnazapisać w komentarzu czy w Wordzie, ale zaleta
dokumentacji w unit testach jest taka, że komentarze czy dokumenty mogą
z czasem rozjechać się z rzeczywistością - nie tylko z powodu regresji,
ale mogą przede wszystkim stać się nieaktualne. Sensownei dobrane unit
testy z wysokim prawdopodobieństwem zaczną w danej sytuacji failować, co
zasygnalizuje problem i pozwoli programiście stwierdzić czy ma do
czynienia z regresją czy z dezaktualizacją - i w zależności od przypadku
poprawić testowany kod lub test.
W reżimie TDD unit testy pełnią też dodatkowe role - choćby pomagają
utrzymać wysoką jakość kodu. Na przykład fakt, że do jakiegoś kawałka
kodu ciężko napisać unit test często sygnalizuje problemy z projektem -
np. zawierająca ten kod funkcja próbuje robić kilka różnych rzeczy, ma
niejawne zależności itd.
Następne wpisy z tego wątku
- 23.07.13 02:22 Andrzej Jarzabek
- 23.07.13 07:33 Roman W
- 23.07.13 07:39 Andrzej Jarzabek
- 23.07.13 07:40 Paweł Kierski
- 23.07.13 07:57 Paweł Kierski
- 23.07.13 08:13 Adam Klobukowski
- 23.07.13 09:26 Andrzej Jarzabek
- 23.07.13 10:30 Adam Klobukowski
- 23.07.13 11:40 Edek
- 23.07.13 11:41 Andrzej Jarzabek
- 23.07.13 12:28 slawek
- 23.07.13 13:14 slawek
- 23.07.13 13:16 Edek
- 23.07.13 14:35 Andrzej Jarzabek
- 23.07.13 21:21 Sebastian Biały
Najnowsze wątki z tej grupy
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
Najnowsze wątki
- 2025-03-20 Re: Dlaczego tak odstają od Tesli?
- 2025-03-20 Greenpeace została zobowiązana do zapłaty niemal 667 mln dolarów [USA,wyrok sądu]
- 2025-03-20 Re: Dlaczego tak odstają od Tesli?
- 2025-03-19 Brak ograniczeń dla chińskiego kapitału - wam nie do rządu, tylko na zmywak do chińskiej knajpy!!!
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 szal-Unia == federacja policyjna
- 2025-03-19 Polsza == państwo policyjne
- 2025-03-19 Grzegorz Płaczek o programie szczepień dzieci. ,,Stworzono eldorado dla firm farmaceutycznych"
- 2025-03-19 Wietnam wykłada 500M$ i chce zbudować fabrykę za 50G$
- 2025-03-19 Gemini
- 2025-03-19 Mokry sen Zenka :)
- 2025-03-19 Re: Dlaczego tak odstają od Tesli?
- 2025-03-19 Czy grupa p.s.prawo przetrwa najbliższe wybory (prezydenta)?
- 2025-03-19 Warszawa => Frontend Developer (obszar Angular13+) <=
- 2025-03-19 Czy "niedopuszczony pełnomocnik" jest w prawie się na to skarżyć jak "świadek" zmarła bez zostawienia mu takiej instrukcji?