Netbeans - základy ladění v Javě

javaman ((

Re:Netbeans - základy ladění v Javě
« Odpověď #30 kdy: 23. 10. 2016, 12:20:39 »
Tady něco smrdí. TDD je fajn nápad, ale v praxi nerealizovatelný plně. Takže buď Kit nic nedělá a jen tady píše teorii a nebo si z nás dělá srandu. Testy jsou super, o tom žádná, ale pokud mám desítky tisíc a více řádků kódu, tak testů bude minimálně trojnásobek, což je trochu problematické. Hlavně se se špatně vysvětluje, když ladíš dva týdny testy, abys pak mohl začít implementovat :D

Testy tvořím zároveň s vývojem modulu. Chvilku píši test, chvíli implementaci a střídá se to podle toho, zda ten test projde či nikoli. Je to mnohem praktičtější a je to i podle pravidel TDD. Když mám hotovo, jdu na další modul.

OK, to zní dobře. Sice to nejde u všeho, ale lepší než mít nejdřív test a až pak implementaci. Jen to pomalu sklouzává k tomu, že naimplementuju a pak k tomu dodělám test. Takže jsi jen posunul požadavky na testy na velmi vysokou úroveň. Testy by musely být dokonalé, abych zapomněl na debugger. Reálně budou nejen nedokonalé, ale budou i chybět. Takže jsem zase tam, kde jsme byli.


Re:Netbeans - základy ladění v Javě
« Odpověď #31 kdy: 23. 10. 2016, 12:36:02 »
Od toho mám přece ten test, aby mi odhalil, v čem je chyba.
Pořád z toho vašeho popisu nechápu, jak pomocí testů odhalíte a pochopíte princip chyby v cizí knihovně nebo obecně v nějaké externí komponentě, na které váš program závisí. Abych uvedl konkrétní příklad – jak pomocí testů odhalíte, že se nedaří HTTPS spojení navázat proto, že v dané konkrétní situaci je průnik algoritmů použitelných pro šifrování na klientovi a na serveru prázdný. Klient ani server není můj kód, pouze přes API volám služby klienta. Rád bych to uměl jednoduše zjistit pomocí testů, protože debugovat SSL komunikaci není úplně snadné.

Kit

Re:Netbeans - základy ladění v Javě
« Odpověď #32 kdy: 23. 10. 2016, 12:49:21 »
Od toho mám přece ten test, aby mi odhalil, v čem je chyba.
Pořád z toho vašeho popisu nechápu, jak pomocí testů odhalíte a pochopíte princip chyby v cizí knihovně nebo obecně v nějaké externí komponentě, na které váš program závisí. Abych uvedl konkrétní příklad – jak pomocí testů odhalíte, že se nedaří HTTPS spojení navázat proto, že v dané konkrétní situaci je průnik algoritmů použitelných pro šifrování na klientovi a na serveru prázdný. Klient ani server není můj kód, pouze přes API volám služby klienta. Rád bych to uměl jednoduše zjistit pomocí testů, protože debugovat SSL komunikaci není úplně snadné.

A já si zase nedovedu představit, jak bych to dělal debugováním. Kromě toho nepopisuješ jednotkový, ale systémový test. Když ten selže, je nutné udělat dva integrační testy. Jeden na klienta, druhý na server.

Re:Netbeans - základy ladění v Javě
« Odpověď #33 kdy: 23. 10. 2016, 13:08:05 »
A já si zase nedovedu představit, jak bych to dělal debugováním.
Podívám se na seznam algoritmů, které poslal server, na seznam algoritmů, které podporuje klient, a zjistím, že mají prázdný průnik.

Kromě toho nepopisuješ jednotkový, ale systémový test.
Psal jste, že na chyby v programech přicházíte pomocí testů. O tom, zda jsou jednotkové, integrační nebo systémové nebyla řeč. A já jsem na typ testu také žádný požadavek nekladl, ptal jsem se jen, jak to zjistíte pomocí testů – jaký typ testu si vyberete nechávám na vás.

Když ten selže, je nutné udělat dva integrační testy. Jeden na klienta, druhý na server.
To jako že napíšu třeba na Ministerstvo financí, aby doplnili do serverové části EET integrační test?

kimec

Re:Netbeans - základy ladění v Javě
« Odpověď #34 kdy: 23. 10. 2016, 13:17:38 »
To bys mohl vědět.

Dakujem za ponaucenie.


atarist

Re:Netbeans - základy ladění v Javě
« Odpověď #35 kdy: 23. 10. 2016, 13:25:06 »
Jasne. A kolegove taky nikdy neudelaji chybu. A nikdy neni chyba v knihovne, co pouzivas.

Pro nas ostatni je tu http://debuggingrules.com/

Hlavně nemusím řešit takové ptákoviny jako tazatel, neboť TDD mě od skrytých závislostí odnaučilo vcelku rychle.

Cizí knihovny mám samozřejmě také pokryty vlastními testy.

Mas to nekde hozene napriklad na GitHubu, abychom se mohli dozvedet, jak se to ma delat?

dustin

Re:Netbeans - základy ladění v Javě
« Odpověď #36 kdy: 23. 10. 2016, 13:26:46 »
Kit dle svých slov žádné větší projekty v javě nedělá https://forum.root.cz/index.php?topic=13943.msg180498;topicseen#msg180498 . Diskutovat s ním debugování javy, navíc ve vimu, nedává smysl.

kimec

Re:Netbeans - základy ladění v Javě
« Odpověď #37 kdy: 23. 10. 2016, 13:32:26 »
Kit dle svých slov žádné větší projekty v javě nedělá https://forum.root.cz/index.php?topic=13943.msg180498;topicseen#msg180498 . Diskutovat s ním debugování javy, navíc ve vimu, nedává smysl.
Veru sa mi zdalo, ze asi nevidel codebase, ktoru pisalo viac ako 6 ludi po dobu 3 rokov a v TDD nemali tak jasno ako on.

Kit

Re:Netbeans - základy ladění v Javě
« Odpověď #38 kdy: 23. 10. 2016, 13:33:01 »
A já si zase nedovedu představit, jak bych to dělal debugováním.
Podívám se na seznam algoritmů, které poslal server, na seznam algoritmů, které podporuje klient, a zjistím, že mají prázdný průnik.

To je přece také test, pokud to zařadíš do výbavy vývoje aplikace, aby to bylo možné kdykoli spustit.

Když ten selže, je nutné udělat dva integrační testy. Jeden na klienta, druhý na server.
To jako že napíšu třeba na Ministerstvo financí, aby doplnili do serverové části EET integrační test?

Ten integrační test si napíši u sebe, viz výše. Není to debugování, protože nehledám chyby na serveru.

Re:Netbeans - základy ladění v Javě
« Odpověď #39 kdy: 23. 10. 2016, 13:41:15 »
A já si zase nedovedu představit, jak bych to dělal debugováním.
Podívám se na seznam algoritmů, které poslal server, na seznam algoritmů, které podporuje klient, a zjistím, že mají prázdný průnik.

To je přece také test, pokud to zařadíš do výbavy vývoje aplikace, aby to bylo možné kdykoli spustit.

Když ten selže, je nutné udělat dva integrační testy. Jeden na klienta, druhý na server.
To jako že napíšu třeba na Ministerstvo financí, aby doplnili do serverové části EET integrační test?

Ten integrační test si napíši u sebe, viz výše. Není to debugování, protože nehledám chyby na serveru.

- nikdo neříká, že nemůžeš napsat test i po té, co jinak (debugger, kouknutí do logu, intuice...) najdeš chybu
- máš o debuggování omezené představy. Zdaleka to není jenom používání debuggeru ale daleko obecnější projekt
- a co kolegové? Máš?

Re:Netbeans - základy ladění v Javě
« Odpověď #40 kdy: 23. 10. 2016, 14:05:52 »
s/projekt/proces/

Pardon.

javaman ((

Re:Netbeans - základy ladění v Javě
« Odpověď #41 kdy: 23. 10. 2016, 14:24:51 »
- a co kolegové? Máš?

Zbytečná otázka :D

Re:Netbeans - základy ladění v Javě
« Odpověď #42 kdy: 23. 10. 2016, 14:29:22 »
To je přece také test, pokud to zařadíš do výbavy vývoje aplikace, aby to bylo možné kdykoli spustit.
Jenže před tím, než bych z toho mohl test udělat, musel bych přijít na to, že problém je zrovna v tomhle. A já se ptám, pomocí jakého testu na to přijdu.

A do výbavy vývoje aplikace to nezařadím, protože zautomatizovat zachytávání a analýzu komunikace Wiresharkem by bylo  neúměrně pracné vzhledem k výslednému efektu.

Ten integrační test si napíši u sebe, viz výše. Není to debugování, protože nehledám chyby na serveru.
Ona to klidně i může být chyba na serveru. A na začátku debugování už vůbec nevím, kde je chyba – kdybych to věděl, nepotřeboval bych to debugovat.

Což je ostatně rozdíl mezi psaním testů a debugováním. Testy se píšou na známé chyby, debugují se neznámé chyby. Samozřejmě to není nějaká pevná hranice, když budu nějakou chybu předpokládat, stane se z neznámé chyby chyba známá a pokud to bude rozumné, napíšu na ni test. Jenže skutečnost, že v programech jsou chyby, svědčí o tom, že programátoři nedokážou předvídat všechny chyby – a že tedy existují i chyby neznámé, které je potřeba teprve objevit. A k tomu docela často pomáhá debugování.

Kit

Re:Netbeans - základy ladění v Javě
« Odpověď #43 kdy: 23. 10. 2016, 14:46:51 »
Ten integrační test si napíši u sebe, viz výše. Není to debugování, protože nehledám chyby na serveru.
Ona to klidně i může být chyba na serveru. A na začátku debugování už vůbec nevím, kde je chyba – kdybych to věděl, nepotřeboval bych to debugovat.

Nehledám chybu na serveru, ale pomocí testu ověřuji funkčnost, kterou od něj požaduji.

Což je ostatně rozdíl mezi psaním testů a debugováním. Testy se píšou na známé chyby, debugují se neznámé chyby. Samozřejmě to není nějaká pevná hranice, když budu nějakou chybu předpokládat, stane se z neznámé chyby chyba známá a pokud to bude rozumné, napíšu na ni test. Jenže skutečnost, že v programech jsou chyby, svědčí o tom, že programátoři nedokážou předvídat všechny chyby – a že tedy existují i chyby neznámé, které je potřeba teprve objevit. A k tomu docela často pomáhá debugování.

Testy se nepíší na chyby, ale na funkčnost - včetně limitních hodnot a nadlimitních hodnot. Testy předpokládají, že se implementace chová přesně jak se od ní očekává. Výsledky se kontrolují buď automaticky, anebo vizuálně (např. pohledem na vygenerované PDF)

Re:Netbeans - základy ladění v Javě
« Odpověď #44 kdy: 23. 10. 2016, 14:55:40 »
Testy se nepíší na chyby, ale na funkčnost - včetně limitních hodnot a nadlimitních hodnot. Testy předpokládají, že se implementace chová přesně jak se od ní očekává. Výsledky se kontrolují buď automaticky, anebo vizuálně (např. pohledem na vygenerované PDF)

Po odhaleni chyby je dobrym zvykem napsat test, ktery tu situaci pokryva.

Ale jeste jednou, at to zvladnes i ty:
Prisla ti chyba. Od QA nebo z produkce od zakaznika. Pochopitelne je to chyba razeni "to se nemuze stat".
Co udelas? Napises test? Nebo udelas neco pred tim?