7 komentářů k článku Testování v PHP: testy integrace s databází:

  1. lordiceman

    navrh databazy

    ak je spravne navrhnuta databaza a je vybrany spravny db software, ziadne testovanie db by nemalo byt potrebne, konzistencia databazy by mala byt zarucena samotnymi databazovymi pravidlami

    nechcem tym nijak znevazovat tento clanok ani pouzitie dbUnit, chcem tym len povedat, ze keby sa tolko neznasilnovali databazy na to na co nie su urcene, nebol by problem

    1. j

      Re: navrh databazy

      Vetsina databazi je navrzena spatne (dokonce by se dalo rict ze vsechny … ;D). Maly priklad – prakticky kazda aplikace si resi prihlasovani uzivatelu … do nejaky svoji tabulky a na zaklade toho si pak resi i nejakej „svuj“ system prav … kterej v 99,9999% pripadu jednoduse nefunguje. Kdyby misto toho nechal tvurce probublat login az do databaze, tak ma k dispozici otestovany a velmi mocny system prav (minimalne na urovni dat jako takovych).

      Jinak testovat na nejakym predem nadefinovanym pocatecnim stavu je podle me naopak spatne – respektive testovat pouze na nem. V takovym pripade mam vetsinou nadefinovanej nejakej stav kterej „Ja“ predpokladam a splnuje to, co ocekavam ze by tam byt melo, nikoli to, co tam byt pripadne muze.

      Nadto by se aplikace mela nejak netrivialne (= nezhrouti se) vyporadat i s nekonzistentni databazi.

      1. jos

        Re: navrh databazy

        ad přihlašování – a co v případě že máš stovky tisíc (a víc) uživatelů? nijak to nezpochybňuju, jen se ptam

      2. Hane

        Re: navrh databazy

        Vlož sem prosím tě odkazy na aplikace, kde jsi systém takto vybudoval. Budu rád, když už se nebudu muset prokousávat těma formulářema a celým webem, ale budu se moct připojit do db přes konzoli/nějakého managera.

        Vidím v tom řešení hned několik problémů
        – počet uživatelů byl zmíněn
        – co když se autentizace řeší přes jiný systém (facebook, ldap apod.)
        – stačí jeden uživatel, který prolomí db a může přidat oprávnění úplně všem a je to v …
        – jak ošetřit, když je nějaká „sdílená“ tabulka a každý uživatel v ní má své řádky (nepočítám Oracle, který má možnost podmínek do where podle uživatelů)
        – který uživatel bude připojen do DB, když se zaregistruje nový uživatel? ten musí mít určitě nějaká oprávnění, která bych nikdy veřejně nepoužíval
        – bezpečností riziko nehrozí jen ze samotné aplikace, ale z všech míst, odkud se lze připojit do db

        Databáze má sice mocný systém práv, ale pro aplikace je většině případů nedostačující, protože různí uživatelů mohou mít různá oprávnění nad různými řádky v tabulce a ty ostatní řádky třeba ani nemají právo vidět.
        A že 99.9% procent to řeší špatně je taky zajímavý názor. Nevím kolik z těch tvých procent jsou weby s databází na webhostingu, kde si můžou nechat zdát o procedurách, občas i triggerech a views. Myslím, že budou mít oprávnění vytvářet uživatele v databázi? Tenhle systém přihlašování bych možná tak použil v aplikacích, kde má každý uživatel svoje tabulky a existují systémové tabulky pro systém mimo uživatele. Ale takových určitě není 99.9% na světě.

        Že je problém, kam umístit určitou funkcionalitu, zda přímo do DB anebo to nechat v aplikační vrstvě, je známá věc. Vyplatí se přitom používat zdravý rozum než dodržovat nějaké poučky. Ale bezhlavému umisťování loginů přes DB bych se ve většině případů osobně raději vyhnul.

        1. j

          Re: navrh databazy

          Pocet uzivatelu prece nehraje roli, v databazich je to taky nejaka tabulka ktera muze mit klidne miliony zaznamu.

          Autentizace pres ldap … by taky nemela byt zasadni problem, vetsina databazi prece umi autentizovat uzivatele pres LDAP – napr u zakaznika pouzivam M$ a mam tam pridany domenovy acc a k nemu pridelena prava.

          Pokud ziska uzivatel pristup k DB na urovni admina, tak je uplne uprdele jestli pouzivam nejaky svoje prava nebo prava na urovni DB, ne? Naopak, pokud pouziju klasiku – aplikace pouziva jeden svuj acc, tak staci ziskat ten, coz je o dost jednodussi (dost casto se pouziva minimalne uhodnutelny login).

          Dost databazi umi prava i na urovni zaznamu => v principu lze nastavit prava ke kazdy bunce extra.


          Pro priklad, adminuju jeden erp, kterej pouzival login do DB, coz melo vyhody v tom, ze pokud jsem chtel nekomu znemoznit videt nejaka data, tak sem to udelal v DB a at zkousel co zkousel, k tem datum se nedostal.

          Navic nekteri uzivatele pouzivali moznost pripojit si primo data do excelu, kde opet mohli to, co jim DB prava umozila (samo RO).

          Nove verze bohuzel presly prave na system jednoho usera => pripojeni do excelu padlo zcela (respektive musi kvuli tomu mit dalsi extra acc), a vzhledem k neschopnosti dodavatele nejsem schopen osetrit prava – jednoduse to ze nekde zakazu neco, neznamena, ze to nebude videt kdyz se vleze nekam jinam

          Priklad – nacionale zamestnancu – sice zakazu uzivatelum pristup do seznamu zanestnancu, ale protoze je na kazdym dokladu „pachatel“ a toho kazdy videt potrebuje a zaroven si to muze rokliknout na detail … kdybych mel moznost nastavit ta prava v DB, tak krom par vyvolenych jednoduse dovolim zobrazovat pouze pole jmeno + prijmeni…. samo, nejak sem to osefoval (odmazal policka z vizualu), ale to neznamena, ze si je user pri trose snahy nemuze zobrazit (system napr umoznuje si udelat uzivatelsky formular, kde si muze vizuelne sestavit i vlastni SQL query …)

          BTW: Tenhle uzasnej system mimo jiny generuje logy rychlejs, nez je schopen je mazat …


          Jinak samo neberu jen prava – videl sem uz par (stovek) ruznych databazi, a prakticky v kazdy byly zasadni navrhovy chyby. Kuprikaldu takova zhuverilost jako duplikovani poli (trebas vic poli ICO). Mno a to sebou samo nese to, ze ta data nejsou konzistentni.

          1. to_je_jedno

            Re: navrh databazy

            helios orange? (jestli tohle zmenili tak to je teda humáč, naposled jsem to videl kdyz vysla cerstve UTF-8 verze)

            Ono je rozdil mezi ERP kde to lze resit 1 firma = 1 DB a users v DB serveru protoze ten server ma admin VZDY pod kontrolou a neco jinyho je to u webu ktery maji byt schopny bezet na relativne kazdem webhostingu…

      3. povinná přezdívka

        Re: navrh databazy

        a co když aplikace nekomunikuje jen s jednou databází ale s více, třeba i na jiných strojích?

        co když aplikace volá cizí webservice a přístup k nim chce omezit jen na některé uživatele?

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3740