eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › pl. usenet o agile
Ilość wypowiedzi w tym wątku: 143

  • 131. Data: 2013-07-23 11:40:29
    Temat: Re: pl. usenet o agile
    Od: Edek <e...@g...com>

    Szarym od mżawki świtem Mon, 22 Jul 2013 23:13:20 -0700, Adam Klobukowski
    wyrzucił pustą ćwiartkę i oznajmił:

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

    Pretensjonalny jesteś.

    > Yhm. Dla takiego trywialnego przypadku jest to proste. Wyobraź sobie że
    > masz obliczenia gdzie możesz mieć sporo danych wejściowych, ok. 60
    > parametrów konfiguracyjnych obliczeń a klient zwraca uwagę na 12 cyfrę po
    > przecinku. Udokumentować to możesz, ale ta dokumentacja nie sprawdzi Ci
    > poprawności obliczeń dla wszystkich przypadków. Unit testy, jak są dobrze
    > napisane, maja taką szansę.

    Nie trzeba szukać tak daleko. Roman W podał przykład z numeryki, który
    jest znacznie bliżej codziennej rzeczywistości niż dokumentowanie
    co robi "parseDouble".

    Nie twierdzę, że unit testy nie mają szansy dokumentowania kodu,
    w jakimś stopniu dokumentują (i to ja mylę testy z dokumentacją?).
    Natomiast znacznie łatwiej jest opisać słowami co robi dany kod
    i uzyskać pełny opis. Dla przykładu, testowany kod ze 100% pokryciem
    linii kodu testem:

    int parseDouble(const std::string& _txt) {
    if (_txt == "7.63") {
    return 7.63;
    }
    }

    Jak wyobrazimy sobie test, okaże się że pokrycie 100% linii kodu
    jakby nie do końca sprawdza, czy funkcja działa. Z punktu widzenia
    metryk, testy nie pokrywają 100% branchy ani 100% funkcjonalności.
    Ale przysłowiowy "inteligentny AJ" będzie miał pokryte 100% linii.

    --
    Edek


  • 132. Data: 2013-07-23 11:41:59
    Temat: Re: pl. usenet o agile
    Od: Andrzej Jarzabek <a...@g...com>

    On Tuesday, 23 July 2013 09:30:21 UTC+1, Adam Klobukowski wrote:
    > On Tuesday, 23 July 2013 09:26:06 UTC+2, Andrzej Jarzabek wrote:
    >
    > > Owszem, ale też zasygnalizują ci, że funkcja z 60 parametrami czy klasa
    > > z 60 setterami to prawdopodobnie nienajlepszy pomysł i powinieneś rozbić
    > > problem na składowe zagadnienia, które będą realizowane przez osobne
    > > jednostki kodu (funkcje, klasy), które będą miały swoje unit testy,
    > > przez co nie ma potrzeby sprawdzania testami kombinacji warunków
    > > brzegowych itp. dla 60 parametrów.
    >
    >
    >
    > Podzielone to owszem jest, testy też, ale i tak istotne jest to co jest
    > finalnie na wyjściu. Po prostu unit testy nie dają gwarancji że jeśli
    > każde 10% ze 100% działa ok, to całe 100% będzie działać ok.

    Tak. Nie. Znaczy:

    Mówiliśmy o dokumentacyjnej, nie weryfikacyjnej roli testów. Dokumentacja nie
    jest od dawania gwarancji, jest od udzielania informacji, w tym przypadku jak
    dana funkja czy klasa działa.

    Testy tak w ogóle (nie tylko unit testy) nie dają 100% gwarancji że coś
    działa, wykrywają że nie działa z pewnym prawdopodobieństwem (redukują
    ryzyko niedziałania).

    Jeśli masz dobry projekt, sensowne testy i konsekwentnie trzymasz się
    dyscypliny TDD, to unit testy redukują ryzyko niedziałania całości w bardzo
    sensownym stopniu. Jeśli ma się powody przypuszczać, że testy mają luki w
    sprawdzaniu czy testowane jednostki faktycznie działają razem żeby uzyskać
    pożądaną funkcjonalność końcową, to warto pomyśleć o dopisaniu unit testów
    które to sprawdzają. Jeśli projekt kodu (klas) jest taki, że trudno to zrobić,
    warto pomyśleć o zrewidowaniu projektu. Kluczowe hasła tutaj: dependency
    injection, mock objects.

    Unit testy nie zabezpieczają przed sabotażem, bądź w postaci celowego zepsucia
    kodu, bądź działania bezmyślnego, łamania dyscyplin itd.

    Tak, owszem, opócz unit testów dobrze/nalezy mieć testy wyższego poziomu:
    smoke/system/acceptance/functional/integration tests. Dlatego, że testują
    rzeczy, których unit testy nie magą wyłapać (lub nie jest to praktyczne), ale
    też dlatego, że moga pełnić funkcję dokumentacyjną innego rodzaju niż unit
    testy. Unit testy dokumentują projekt kodu - co robią i jak się używa
    poszczególnych klas, funkcji itd. Inne testy mogą dokumentowac funkcjonalność
    biznesową, architekturę systemu, protokoły zewnętrznych interfejsów,
    zachowania, co tam jeszcze.


  • 133. Data: 2013-07-23 12:28:12
    Temat: Re: pl. usenet o agile
    Od: "slawek" <h...@s...pl>

    Użytkownik "Edek" napisał w wiadomości grup
    dyskusyjnych:ksk7qs$d3h$...@n...news.atman.pl...

    >Myślę, że nie rozpatrujesz Agile z punktu widzenia teorii gier.

    No to może ja spróbuję ;)

    Jestem klientem, mam w kieszeni (aktywa, pasywa, portfel itd.) 1000 euro na
    bardzo prosty program w ECMA-skrypcie, bo potrzebuję.

    Szukam wykonawcy - znajduję takiego od Agile. Moje pierwsze pytanie: "da się
    zrobić za 200 euro"? Odpowiedź: "nie". Na to ja: "a za 500 euro"? Odpowiedź:
    "nie, łącznie to będzie trochę mniej, a może trochę więcej niż 800, może 900
    euro". Ok, jest dobrze. To co mam starczy na zapłacenie za program (więcej
    nie mam, bo po prostu nie mam).

    Przychodzi do szczegółów... "my stosujemy Agile". Wow! Pytam się co to jest.
    Dowiaduję się, że cena nie będzie fixed, ale że zapłacę za robociznę i
    materiały. Ok. Ale upewniam się, że nie więcej niż 900 euro. Ba! Mogę być
    zupełnie szczery - i po prostu powiedzieć, że te 1000 euro to dostałem po
    dziadkach, a ogólnie poza tym nie mam ani grosza.

    I teraz wchodzimy z teorią gier.

    Wykonawca wie, że jak nakręci cenę (przez koszt materiałów, koszt robocizny
    i marżę/zarobek) powyżej 1000 euro, to ja mu nie zapłacę, bo zwyczajnie nie
    mam z czego. Nawet jeżeli będzie próbował - sąd, komornik, windykacja
    jakaś - to prędzej zbankrutuję, niż zapłacę.

    Z drugiej strony, jeżeli jego rzeczywiste koszty - choć tego nie wiedział w
    chwili dojścia do porozumienia - wyniosą zaledwie 10 euro (np. okaże się, że
    już taki program miał napisany) - to jaki ma interes w tym, aby nie chcieć
    zarobić tych 890 euro, a może 990 euro więcej? Przecież on wie, że ja mogę
    tyle dać. A ja wiem że on może tyle chcieć i jakoś to już zaakceptowałem. A
    on wie że ja wiem. Itd.

    Wynik: 1000 euro.


  • 134. Data: 2013-07-23 13:14:40
    Temat: Re: pl. usenet o agile
    Od: "slawek" <h...@s...pl>

    Użytkownik "Andrzej Jarzabek" napisał w wiadomości grup
    dyskusyjnych:kskic9$o0a$...@s...invalid...

    >ale stwierdziłem że dla higieny ogólnej lepiej przestać czytać i
    >odpowiadać.

    Cóż, zawsze twierdziłem, że znaczna część ludzi w głębi duszy to jednak
    analfabeci.

    Swego czasu zainteresowałem się nieco metodykami zwinnymi, czyli także
    Agile. Niezbyt dogłębnie, ale wystarczając, aby wiedzieć "dlaczego NIE będę
    używac Agile". Oczywiście - to że mi akurat Agile się nie przyda - to nie
    oznacza, że Agile jest do niczego nie przydatne... mogę sobie wyobrazić, że
    dla niektórych będzie po prostu dobrym wyborem. Może, cyt. "baza danych
    szlauchów i kaloszy" (czy to AL pierwszy użył kiedyś tego określenia?) to
    jest właściwe miejsce dla stosowania Agile? Może programy używane przez
    banki? Nie wiem. Będę kiedyś musiał zajmować się szlauchami to być może
    "wrócę do" Agile.

    Co takiego jest dziwacznego w Agile? To, że jest to parareligijna
    fascynacja. Coś z Amwaya czy innego takiego. Agilicy czują się dobrze we
    własnym gronie, mają dość ograniczony zasób argumentów (wyuczone na pamięć z
    paru książek napisanych przez innych Agilików), nigdy nie podają jakie sami
    projekty realizowali i ogólnie wydają się być dość daleko od "prawdziwego
    przemysłu" (jakim go rozumie np. AL). Gotowi są do "nawracania" każdego na
    Agilizm... a to trochę dziwne, bo gdybym miał cudowny "klucz do sukcesu", to
    raczej sam bym go używał - a nie dzielił nim z konkurencją za friko.

    Jest jeszcze jedna sprawa: my tu sobie tak z nudów dyskutujemy. Ale mam
    podejrzenie, graniczące z pewnością, że kozactwo tutejsze - gdyby rozmawiało
    z autentycznym prezesem o zleceniu wartym ćwierć miliona euro - to nie
    zaczynałoby negocjacji od stwierdzeń "pan prezes jest idiotą", "za tyle to
    mi się nie chce", "pan źle zarządza firmą". A gdyby jednak, to rozmowy
    musiałby się szybko zakończyć - żaden prezes nie pozwoli sobie na takie
    rzeczy, zwłaszcza jeżeli słuchają jego podwładni.


  • 135. Data: 2013-07-23 13:16:31
    Temat: Re: pl. usenet o agile
    Od: Edek <e...@g...com>

    Szarym od mżawki świtem Tue, 23 Jul 2013 12:28:12 +0200, slawek wyrzucił
    pustą ćwiartkę i oznajmił:

    > Użytkownik "Edek" napisał w wiadomości grup
    > dyskusyjnych:ksk7qs$d3h$...@n...news.atman.pl...
    >
    >>Myślę, że nie rozpatrujesz Agile z punktu widzenia teorii gier.
    >
    > No to może ja spróbuję ;)
    [...]
    > I teraz wchodzimy z teorią gier.
    >
    > Wykonawca wie, że jak nakręci cenę (przez koszt materiałów, koszt robocizny
    > i marżę/zarobek) powyżej 1000 euro, to ja mu nie zapłacę, bo zwyczajnie nie
    > mam z czego. Nawet jeżeli będzie próbował - sąd, komornik, windykacja
    > jakaś - to prędzej zbankrutuję, niż zapłacę.
    >
    > Z drugiej strony, jeżeli jego rzeczywiste koszty - choć tego nie wiedział w
    > chwili dojścia do porozumienia - wyniosą zaledwie 10 euro (np. okaże się, że
    > już taki program miał napisany) - to jaki ma interes w tym, aby nie chcieć
    > zarobić tych 890 euro, a może 990 euro więcej? Przecież on wie, że ja mogę
    > tyle dać. A ja wiem że on może tyle chcieć i jakoś to już zaakceptowałem. A
    > on wie że ja wiem. Itd.
    >
    > Wynik: 1000 euro.

    Dobre. Skoro już jesteśmy ordynarni, wprowadzę małe elementy kulturalne,
    mam na myśli kulturę niską albo - skoro miało być ordynarnie - zwykłe
    chamskie kompleksy i szerszy obraz.

    Jeżeli wykonawca ma już taki program napisany, może zaproponować cenę 400-500
    euro. Z tym że w swojej branży tanich szczurków takie zachowanie uchodzi za
    naiwność, straciłby szacunek i nie mógłby się chwalić kolegom, jak to kogoś
    wydymał. Więc będzie stawał na rzęsach żeby dymać, za 500 euro.

    No ale powiedzmy, że wykonawca jest jednak na poziomie, co zrobi zamawiający?
    Ano zakompleksiony zamawiający się oburzy. Jak to, mam płacić za coś co on ma
    i nic go nie koszutje 500 euro? Znowu, szacunek, kto kogo wydyma, itd. .
    Woli poszukać "innego wykonawcy niż takiego gnoja", nawet jeżeli będzie
    musiał zapłacić 500 euro więcej - płaci bo może, jest panem świata.

    I tym sposobem ogólna kultura i panujące zwyczaje potrafią zatruwać wszystkim
    życie. Czy się przykryje sprawę gładką gadką o TDD w Agile czy nie. Jak
    widać na przykładzie, nie wystarczy 50% ludzi na poziomie, potrzeba 75%
    (50% że zamawiający jest rozsądny, z tych 50% 50% że drugi jest rozsądny).
    Natomiast jeżeli obaj są rozsądni i taka postawa jest szanowana, obaj
    będą się polecali na przyszłość innym, pytanie tylko, jakie jest
    prawdopodobieństwo ich spotkania i co myślą inni w tej grze.

    --
    Edek


  • 136. Data: 2013-07-23 14:35:52
    Temat: Re: pl. usenet o agile
    Od: Andrzej Jarzabek <a...@g...com>

    On Tuesday, 23 July 2013 10:40:29 UTC+1, Edek wrote:
    > Szarym od mżawki świtem Mon, 22 Jul 2013 23:13:20 -0700, Adam Klobukowski
    > wyrzucił pustą ćwiartkę i oznajmił:
    >
    [...]
    > Pretensjonalny jesteś.

    Myślałem, że mnie wrzuciłeś do bezterminowego killfajla.

    > Nie trzeba szukać tak daleko. Roman W podał przykład z numeryki, który
    > jest znacznie bliżej codziennej rzeczywistości niż dokumentowanie
    > co robi "parseDouble".

    Zauwazyłem przykład który wydawało mi się, że demonstrował, że unit testy
    wcale nie muszą czegokolwiek dokumentować. Jeśli to był przykład z numeryki,
    to może czegos nie zrozumiałem - nie zajmuję się numeryką.

    Przykład był nieco odrealniony własnie dlatego, żeby był prosty i zrozumiały
    dla każdego a nie wymagał znajomości specjalistycznej wiedzy bądź wprowadzenia
    długim i nudnym wykładem.

    OTOH aż taki bardzo odrealniony nie jest, bo kiedyś zdarzyło mi się pisac
    moduł parsowania i formatowania liczb rzeczywistych, nie typu double ale
    specjalnego typu dziesiętnego z biblioteki third party - sama biblioteka nie
    dostarczała odpowiedniego poziomu kontroli (przecinek zamiast kropki
    dziesiętnej, blokowanie scientific notation itp.), a licencja nie pozwalała na
    modyfikowanie kodu, więc trzeba to było wyrzeźbić od zera. nie pisałem wtedy
    unit testów bo nie znałem jeszcze tej techniki, ale z całą pewnością w moim
    developer testing parsowanie zapisu liczby całkwitej było jednym z test
    case'ów.

    > Nie twierdzę, że unit testy nie mają szansy dokumentowania kodu,
    > w jakimś stopniu dokumentują (i to ja mylę testy z dokumentacją?).
    > Natomiast znacznie łatwiej jest opisać słowami co robi dany kod
    > i uzyskać pełny opis.

    Niekiedy łatwiej opisać słowami. Ale często niedużo łatwiej - warto podjąć
    niewielki dodatkowy wysiłek żeby mieć tani i skuteczny (co nie znaczy
    stuprocentowo skuteczny) mechanizm utrzymania zgodności dokumentacji z kodem.

    > Dla przykładu, testowany kod ze 100% pokryciem
    > linii kodu testem:
    >
    > int parseDouble(const std::string& _txt) {
    >
    > if (_txt == "7.63") {
    > return 7.63;
    > }
    > }

    To jest przykład na to, że łatiwje opisac słowami co robi kod? I co z tymi
    słowami? Co konkretnie łatwiej opisać słowami? Że dla wartości argumentu
    innych niż "7.63" jest UB to owszem, łatwiej opisać słowami, ale poza tym?

    Akurat że dla "7.63" wartość wynosi 7.63 nie jest trudno udokumentować unit
    testem, fakt, że jest to jedyna dopuszczalna wartość argumentu też nie powinno
    nastręczać problemu:

    test that parseDouble works for the only legal argument value {
    std::string onlyLegalArgumentValue = "7.63";
    int onlyPossibleReturnValue = 7.63;
    assert that parseDouble(onlyLegalArgumentValue) equals
    onlyPossibleReturnValue;
    }

    Natomiast właśnie próba udokumentowania funkcji przy pomocy unit testów
    eksponuje problem projektowy: nawet jeśli jedynym dopuszczalnym argumentem
    funkcji jest "7.63", to prawdopodobnie UB w pozostałych przypadkach nie jest
    najlepszym pomysłem tak czy inaczej. Możemy więc rozważyć modyfikację projektu
    kodu tak, żeby np. zamiast UB rzucał std::invalid_argument.

    > Jak wyobrazimy sobie test, okaże się że pokrycie 100% linii kodu
    > jakby nie do końca sprawdza, czy funkcja działa.

    A kto twierdził, że do końca sprawdza?

    > Ale przysłowiowy "inteligentny AJ" będzie miał pokryte 100% linii.

    Inteligentny AJ wie, że dokumentacyjna rola unit testów ma mało wspólnego ze
    sprawdzaniem, czy funkcja działa.

    Pomiar pokrycia testami z drugiej strony wnosi coś do tematu dokumentacji
    przez unit test, bo naświetla problem, że część funkcjonalności kodu nie jest
    w testach udokumentowana (pomijając już samą weryfikację) - np. twoje testy
    nie dokumentują co się dzieje, jeśli podasz funkcji nieprawidłowy argument
    wejściowy.


  • 137. Data: 2013-07-23 21:21:30
    Temat: Re: pl. usenet o agile
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2013-07-23 00:09, Edek wrote:
    > Obawiam się, że nie zrozumiałęś przykładu. Unit testy tylko pokazują,
    > że dla *tych wybranych przypadków* działa.

    Dokładnie to twierdzę. Ale twierdzę też że w duzym kodzie funkcja
    dokumentowania jest wazniejsza niż weryfikacji.

    > I nie, unit testy w praktyce ani nie są pewne ani też praktycznie
    > nigdy nie pokrywają wszystkich przypadków.

    *Żadne* tgesty nie pokrywają *wszystkich* przypadków i nikt tak nie
    twierdzi.

    > górną granicą, a często nawet nie. Unit testy pisze się głównie
    > dla szybkiego wyłapania oczywistych regresji.

    Unit testy pisze się z bardzo wielu powodów. Pomoc przy refaktoringu
    jest ważna, ale mam wrażenie że im większy kod tym więcej jest zastosowań.


  • 138. Data: 2013-07-23 21:23:01
    Temat: Re: pl. usenet o agile
    Od: Sebastian Biały <h...@p...onet.pl>

    On 2013-07-23 07:33, Roman W wrote:
    > Unit testy to jest forma dokumentacji, ale bardzo niskopoziomowa i
    > uzyteczna wyłącznie dla programistów.

    Komantarze w kodzie to jest forma dokumentacji, ale bardzo
    niskopoziomowa i użyteczna wyłacznie dla programistów. Oh wait ...


  • 139. Data: 2013-07-23 22:22:55
    Temat: Re: pl. usenet o agile
    Od: Edek <e...@g...com>

    Szarym od mżawki świtem Tue, 23 Jul 2013 21:23:01 +0200, Sebastian Biały
    wyrzucił pustą ćwiartkę i oznajmił:

    > On 2013-07-23 07:33, Roman W wrote:
    >> Unit testy to jest forma dokumentacji, ale bardzo niskopoziomowa i
    >> uzyteczna wyłącznie dla programistów.
    >
    > Komantarze w kodzie to jest forma dokumentacji, ale bardzo
    > niskopoziomowa i użyteczna wyłacznie dla programistów. Oh wait ...

    Niektórzy mówili tu o unitach jako dokumentacji technicznej będącej
    wymaganiem kontraktu. Czego ja nie jestem wielkim zwolennikiem,
    ale może jak ktoś coś takiego chce mieć w kontrakcie to żyjemy
    w wolnym kraju. Raczej spotkałem się z acceptance tests, a to
    zdecydowanie nie są unity.

    --
    Edek


  • 140. Data: 2013-07-24 10:36:33
    Temat: Re: pl. usenet o agile
    Od: "slawek" <h...@s...pl>

    Użytkownik "Edek" napisał w wiadomości grup
    dyskusyjnych:kslomf$kj2$...@n...news.atman.pl...

    >Natomiast jeżeli obaj są rozsądni i taka postawa jest szanowana, obaj
    >będą się polecali na przyszłość innym, pytanie tylko, jakie jest

    Oczywiście, można "w promocji". Tzn. zamiast wydać na reklamę x PLN można
    liczyć na reklamę szeptaną gdy obniżymy cenę do y-u PLN, co się opłaci
    jeżeli x > u. Można liczyć na to, że dając coś za cenę poniesionych kosztów,
    lub nawet niżej (freeware!), zyskuje się wizerunkowo lub jakieś korzyści
    niematerialne (np. dobre samopoczucie, czy jakąś formę aureoli nad głową).

strony : 1 ... 13 . [ 14 ] . 15


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: