-
Data: 2015-03-28 09:40:56
Temat: Re: poprawność algorytmu
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu piątek, 27 marca 2015 16:00:39 UTC+1 użytkownik g...@g...com napisał:
> Mnie się zdaje, że to w ogólności jest "cieńka" metoda. Tym bardziej,
> że wielu ideologów pisania testów mówią, że "im więcej, tym lepiej"
> i że "testy nie muszą być elegancko napisane" -- problem jest taki,
> że testy również potrafią czynić pewne założenia, które nie są kluczowe
> z perspektywy projektu, a których zmiana w projekcie sprawi, że słita
> testowa stanie się bezużyteczna.
Tak. I na tej podstawie można też podważyć stosowanie takich artefaktów do testowania
regresji. Może być tak, że po zmianie w implementacji i wprowadzeniu do niej bugów
stary test nadal będzie przechodził, bo nie testuje nowo powstałych osobliwości.
Testów nie da się pisać na masę, chyba że ktoś chce uprawiać poprawność tzw.
statystyczną. To też ma jakąś wartość, ale trzeba wiedzieć, gdzie.
> A co jeśli ktoś napisze zły test i złą implementację? Taki sam klops.
I te rzeczy były pisane przez niezależnych wykonawców? To wtedy prawdopodobieństwo
znalezienia niezgodności jest bardzo wysokie i wiadomo, że co najmniej jedno z dwóch
jest zwalone. Tej efektywności nie ma gdy się robi jedno z drugiego (tu z pogardą
spoglądamy również na TDD).
Podobno w praktyce wychodzi 50-50, więc tym bardziej nie należy traktować jednego z
tych artefaktów jako nadrzędnego.
> Jednak artykuł w gruncie rzeczy nie opisywał tego, o czym mówił
> ten nagłówek, tylko po prostu pewną odmianę programowania
> deklaratywnego opartą o microsoftowy system.
Jasne. W takim kontekście jest to bardzo ciekawe. Szkoda tylko, że niepraktyczne.
> Tzn. generowanie testów z implementacji rzeczywiście brzmi idiotycznie.
> Jednak w drugą stronę to nie całkiem zachodzi. Jeżeli mamy system, który
> na podstawie testów potrafi wygenerować sensowną implementację, to szacun.
Szacun dla systemu. Ale nadal niepraktyczne.
Taki system zmusza autora testu do takiego sformułowania testu, żeby z jego formuły
wynikała kompletna implementacja. Tzn. albo test musi być wyczerpujący albo musi być
tak skonstruowany, żeby *nie dało się* z niego zrobić niekompletnej implementacji.
Np. napisz test, który sprawdza funkcję sort - ale napisz go tak, żeby po
wygenerowaniu implementacji z tego testu, każdy inny test też przechodził.
I jeszcze udowodnij, że tak jest.
Wysiłek intelektualny z tym związany jest porównywalny z napisaniem tej funkcji. I
udowodnienia, że jest poprawna.
To jest jak ze ściskaniem plasteliny w dłoni - po prostu wylezie z innej strony a jej
objętość się nie zmniejszy.
> Ja jednak będę trwał na stanowisku, że testy są z założenia niekompletne,
> bo obejmują pewne przypadki jednostkowe.
Mogą obejmować wszystkie klasy równoważności (albo w ogóle być wyczerpujące w sensie
przestrzeni wejść). Ale znalezienie wszystkich klas równoważności jest tak samo
trudne, jak dowód z pominięciem testów. A testy wyczerpujące to tylko dla
najprostszych funkcji logicznych można napisać przed zejściem.
> I testy jako takie mają pewną
> wartość.
Tak. Oraz cenę.
> I owszem, zgodzę się, że fajniej jest mieć dowody poprawności, kiedy
> tylko się da (choć nie wiem, czy akurat w logice Hoare'a), ale jedno
> nie wyklucza drugiego. Tak jak fajnie np. w podręczniku do matematyki
> mieć nie tylko definicje, twierdzenia i dowody, ale również przykłady.
Tak. Ale dowodem można uzasadnić zmniejszenie ilości testów. Tak jak w książce do
matematyki nie trzeba podawać wyczerpujacych przykładów, wystarczy podać te
ilustracyjne. Wtedy książka może mieć mniej kartek i może być tańsza.
--
Maciej Sobczak * http://www.msobczak.com * http://www.inspirel.com
Następne wpisy z tego wątku
- 28.03.15 09:45 g...@g...com
- 28.03.15 10:10 Maciej Sobczak
- 28.03.15 10:47 g...@g...com
- 28.03.15 10:54 M.M.
- 28.03.15 11:46 M.M.
- 28.03.15 11:54 Andrzej Jarzabek
- 28.03.15 13:08 Andrzej Jarzabek
- 28.03.15 18:22 Maciej Sobczak
- 28.03.15 19:38 Roman W
- 28.03.15 19:43 Roman W
- 28.03.15 19:50 A.L.
- 28.03.15 19:51 A.L.
- 28.03.15 21:16 Andrzej Jarzabek
- 29.03.15 00:13 Maciej Sobczak
- 29.03.15 15:21 Andrzej Jarzabek
Najnowsze wątki z tej grupy
- 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
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-01-06 Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- 2025-01-06 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-01-06 Do IO i innych elektrooszolomow, tu macie prawdziwe smrody
- 2025-01-06 Białystok => Full Stack .Net Engineer <=
- 2025-01-06 Kraków => Business Development Manager - Network and Network Security
- 2025-01-06 Katowice => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-06 Warszawa => Spedytor Międzynarodowy <=
- 2025-01-06 Lublin => Programista Delphi <=
- 2025-01-06 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-01-06 śnieg
- 2025-01-05 Żarówka do lampy z czujnikiem ruchu
- 2025-01-05 Rozkręcają się
- 2025-01-04 pozew za naprawę sprzętu na youtube
- 2025-01-04 gasik
- 2025-01-04 13. Raport Totaliztyczny: Powszechna Deklaracja Praw Człowieka Nie Chroni Przed Wyzyskiem Ani Przed Eksploatacją