Logické chyby

binarydna.jpgNení nic nebezpečnějšího pro jakoukoliv aplikaci než logická chyba. Většinou se zdá že vše funguje. Nic na ní neupozorňuje. Pak postupem času přidáváte další a další věci a najednou zjistíte, že něco vybočuje z normálu. Ačkoliv nebylo porušeno jediné pravidlo prostě se dostavují výsledky, které jsou na první pohled nemožné a jediné co vás napadne je podvod nebo že vám někdo hacknul váš projekt. Bohužel řešení je daleko jednodušší prostě jste to nedomysleli do konce a důsledkem logické chyby je nesprávné fungování aplikace.

Před nějakými 12 dny jsem začal na facebooku hrát hru mafia wars. Celý koncept se mi velice líbil. Prvních 7 dní jsem hrál vždy když byla volná chvilka, takže pro mě nebyl problém nabrat nějakých 50 levlů. Už si přesně nepamatuju kolik to bylo. Pomocí listu hráčů jsem si vybudoval mafii o cca 300 lidech a vše bylo v pohodě. Před třemi dny, kdy jsem si pročítal jednotlivé novinky mě napadlo, že to možná postupem času přehnaly. Začal jsem si u jednotlivých questů (jobů) počítat koeficienty účinnosti. Podobně koeficientu jsem došel k závěru, že pokud seženu 2 lidi na dostatečném levlu a dám si je jako Mastermind (11% do expu) a Wheelman (-11% energie na questy), tak některé questy mají vyšší koeficient (expy/energie) než je potřeba další level (expy/energie). Pak stačilo vždy level zakončit nějakým masitým questem (při přestupu přebývající expy se připíšou a energie se dá na maximum, takže je potřeba méně expů na přestup). Dále jsem u někoho si zajistil, že jsem jeho Mastermins (cca 10% šance na získání 50% víc expů z questu). Když se tohle všechno dalo do pohybu tak jsem byl schopný udělat cca 110 – 120% expů potřebných na level. Takže jsem zbývající energii používal na dokončování lehkých questů za což se mi zvedala maximální eneregie. No než mě to přestalo bavit tak jsem měl 8 miliard cash a lvl cca 150. V současnosti jsem lvl 192 a už se to seklo. Koeficient na přestup je přes 2,05 a nejlepsi quest ma 2,028 takže se dá přestoupit jen když procne mastermind. To už ale není taková sranda.

Kámoši co to hrají se mě ptali jsetli jsem cheater nebo sem jim to hacknul. Ne jen jsem si to prostě spočítál. Jedná se o logickou chybu v důsledku přidávaných změn a vylepšení. Tvůrcům by stačlo kdyby jsem si nemohl jako Mastermind a Wheelman dát hráče s levlem větším jak můj levlel + 50 a celý tento trik by nešel provést.

Logické chyby jsou ukryté v mnoha aplikacích, které se vylepšují a špatně se hledají. Některé se objeví až postupem času, jiné vzniknou přidáním novinek. Velice špatně se hledají, protože se ve své podstatě nejedná o chybu, ale o určitý postup, který když někdo objeví tak jej může zneužít. Myslím si že u nás (ČR/SR) se velice podceňuje beta testování. Většinou se rozjede beta testování, kde ale nikdo není placený za to, aby hledal chyby. Chce to opravdové odborníky, kteří rozumí jak programování tak mají zkušenosti s hledaním chyb. Spousta systémů by si mohlo ušetřit mnoho starostí. Bouhžel situace u nás je taková, že se něco nechá naprogramovat za co nejméně. Vypustí se to a pak se začně něco dělat až když se chyby objevují jak na běžícím pásu. Takhle lze ale postupovat u věcí, kde nejsou ve hře reálné peníze. Nikoliv ale projekty kde o peníze jde především. Testování u nás je velice podceňováno.

Share Button
(0)(0)

Jak bude reklama vypadat?
-
Nechceš zde reklamu napořád jen za 121 Kč?
Zobrazit formulář pro nákup

6 komentářů

  1. Dreadd napsal:

    Dobrej clanek. Souhlasim s tim ze testovani se (nejen) v Cechach podcenuje, hlavne u her je to videt. V poslednich letech se vetsina her prodava v podstate nedodelanych, hlavne aby z toho byl prijem co nejdrive... To ze bugy spoustu lidi odradi od hrani je zrejme mensi riziko nez to ze si koupi radsi koupi konkurencni hru, ktera vyjde drive :(

    (0)
  2. Jar-da napsal:

    Ano, testovani a debugging se dost podcenuje, hlavne u mensich projektu s malym rozpoctem, a nejde jenom o hry. Bohuzel to muze odstrelit cely projekt, jakkoliv je za nim dobry napad.

    Je to vecny boj mezi naklady na projekt a za kolik se pak da prodat - testovani cely projekt prodrazuje a zdrzuje. Paradoxne pak uzivatele koupi (at uz primo nebo neprimo) neco levnejsiho, nejsou s tim spokojeni a nadavaji, ale zaplatit vice za dobre udelany projekt se jim nechce. Na tohle je nas trh dost zkazeny, hodne lidi si porad jeste predstavuje, ze vse ma byt zadarmo, a kdyz neni, tak se hleda zpusob jak to ukrast (misto toho jak vydelat dost penez na to aby se to koupilo). Doplaceji na to vsichni.

    O dokumentaci plati to same co o testovani :-)

    Nektere firmy to resi tak, ze si vybuduji skupinu beta-testeru, kterym nabizi urcite vyhody jako protihodnotu. No a nektere velke firmy typu Mega$oft si naopak nechavaji sve beta-produkty testovat od svych zakazniku tak, ze jim je nejdrive prodaji nehotove, a pak jim posilaji ruzne service packy. :-((

    (0)
  3. Vembl napsal:

    Problém testování projektů souvisí s potenciálem toho projektu vydělat peníze. Udělat aplikaci v angličtině pro globální trh je dnes stejně drahé jako udělat aplikaci v češtině pro lokální trh. Potenciál z hlediska ziskovosti je ale úplně někde jinde. Proto se projekty moc netestují - náklady by pak přesáhly možné výdělky. Na jednu stranu je to sice škoda, ale na druhou stranu je to pochopitelné. Je fakt, že já jsem třeba DG tak nějak moc netestoval a hledat v něm chyby je v této fázi docela těžký úkol. Jenomže si nedovedu představit, že bych to třeba za dalších 50 tisíc nechal profesionálně otestovat. To by ty náklady převážily možný zisk. Podle mě není špatné projekt tak nějak udělat a zkusit rozjet a až to vydělá nějaké peníze tak je investovat třeba do předělání webu. Pokud bychom ke všemu přistupovali profesionálně, spousta projektů by dnes neexistovala.

    (0)
  4. dadmtb napsal:

    Veľmi pekný článok. Takisto hrávam Mafia Wars a toto ma teda nenapadlo :D

    (0)
  5. Martin napsal:

    Článek je předpokládám o DG? :)

    Vembl: jen potvrzuješ, že jsi se pustil do věci, které nerozumíš. Takový projekt musí mít automatické testy, jinak oprava jedné chyby zavleče dvě nové. A nikdy se z toho nevyhrabeš.

    Obecně platí, že pokud někdo rozděluje vývoj a testování, je to amatér a bastlíř. Testování je nedílnou součástí vývoje. A kecy o tom, že je to drahé a složité, to jsou jen kecy amatérů. Profesionál díky testům ušetří čas i peníze!

    Podstata problému je jinde. Do náročných aplikací se pouštějí i PHP zoufalci, kteří o programování nevědí nic a znalostně na to nemají. Když to špatně dopadne, tak se vymlouvají, že na testování nezbyly peníze. A lidi jim to žerou, protože profesionální programátor je ohrožený druh.

    (0)
  6. admin napsal:

    Martin: spíš jsem psal o Mafia Wars. Upřimně ale neznám větší projekt, kde by se postupně neobjevovaly logické chyby v důsledků různých addonů, pluginu a dodělátek, které si zadavatel domyslí na poslední chvíli.

    (0)