Hlavní navigace

Názor k článku Testování webových aplikací – návrhový vzor PageObject od Zdeněk Jonáš - Zdravím Vás pane Heroute. Čirou náhodou se můj profesní...

  • Článek je starý, nové názory již nelze přidávat.
  • 3. 10. 2019 10:07

    Zdeněk Jonáš

    Zdravím Vás pane Heroute.
    Čirou náhodou se můj profesní život motá kolem testování už od roku 2007. Trošku si dovolím nějaké útržkovité podměty a zkušenosti.

    PageObject návrhový vzor fungoval dobře před pár lety. S rozvojem single page aplikací začínají tyto objekty pomalu narůstat do velikostí, kdy už prakticky nejsou přehledné.

    Jeden framework, co se snaží poněkud zjednodušit práci s elementy je https://selenide.org/ a jeden pattern, který se mi osvědčil je zde: https://www.automatetheplanet.com/advanced-page-object-pattern/ akorát pro C#, nic méně, na pochopení myšlenky to stačí.

    Vždy říkám lidem, co píšou testy, ať přemýšlí tak, že pokud píší PageObject, píší defakto api k té stránce, ať píší ty metody tak, že odpovídají akcím prováděným na této stránce. Zkrátka, aby se daly tyto metody znovu dobře použít. Single Responsibility princip je základem.

    Zpravidla si napíšu vždy nějakého abstraktního předka pro PageObject, který za mě řeší získání objektu, automatické skrolování k místě, kde je zobrazený atd. S rozvojem klientsky renderovaných aplikací, Ajaxu a podobně, je čím dál častěji potřeba na dotyčné elementy čekat, synchronizovat se atd. To vše jde do této abstraktní třídy.

    Skutečná sranda začíná i tehdy, kdy jsme měli ve firmě Shop, který byl lokalizován do 10 jazyků a ještě do několika brendů. Napsat Testy tak, aby dokázaly běžet na všech shopech, člověk dokázal definovat, který test je pro který shop relevantní, případně napsat test, který například pro Švédsko provede finální test trošku jinak, byla docela výzva. Nakonec kombinace následujích frameworků vyřešila vše:

    Cucumber - testy napsané tak, aby jim rozumněli všichni. (Slovy) https://cucumber.io/
    Spring - Dependency Injection, Profile a konfigurační framework pro jednotlivé shopy
    Selenide - Výrazné zjednodušení práce s elementy.
    Selenium
    Selenium Server

    Díky této kombinaci jsme měli dvakrát denně otestované všechny obchody a to v různých rozlišeních a různých prohlížečích. Byl to boj, hlavně udržet ty testy stabilní, (protože testovací prostředí zrovna moc stabilní není). I tak trvalo relativně dlouho, než programátoři začali výsledkům těchto testů věřit. Ale výsledek za to stál.

    Hodně štěstí a chuti dál.
    S pozdravem
    Zdeněk Jonáš (Dione)