Jak ušetřit čas? Automatické uživatelské testy!

Akceptační testování

Opakovaná práce nikoho moc nebaví, o to víc to platí pro programátory. Jenže časté postupy je nutné kontrolovat a provádět opakovaně.

Funguje formulář na spodní stránce? Lze se přihlásit? Vidí uživatel to, co by měl vidět? Pokud vyplním do pole měna text, dostanu chybovou hlášku s danou informací? Neudělal někdo při refaktoringu chybu?

Odpověď je jednoduchá, vezmeme osobu a necháme ji, aby to zjistila. Další možností je být  chytrý a na dané User story si napsat test, který splňuje požadavky pro Confirmation.

Use case:

….

Confirmation:

Success:

  • Validní email a k němu příslušné heslo přihlásí uživatele.
  • Zakliknutím tlačítka „Neodhlašovat“,  nebude nutné znovu vyplňovat heslo.
  • Po přihlášení se uživatel dostane na hlavní stránku administrace.

Failure:

  • Uživatel bude informován o špatném formátu emailu.
  • Expirace účtu – „Váš účet expiroval, prosím kontaktuje naši podporu.“.

Teď si představme osobu, která testuje řádek po řádku, den za dnem…

Ano, je jasné, že pokud máme přesné zadání, jak se má aplikace chovat, můžeme to automatizovat. Pojďme si ukázat ukázku, jak se přihlásit. Ukázka je v PHP a testovacím frameworku Codeception.

$I->...
$I->amOnPage('login');
$I->waitForElement('#username', 15);
$I->fillField('#username', $username);
$I->fillField('#password', $password);
$I->click('_submit');
$I->dontSee('Invalid credentials.');
$I->...
  • Přejdeme na stránku login.
  • Počkáme, než se stránka vykresli a ověříme, že obsahuje prvek #username.
  • Vyplníme username.
  • Vyplníme password.
  • Odešleme formulář.
  • Zkontrolujeme, jestli jsme nedostali varovnou hlášku o špatném přihlášení.

A to je vše. Pokud testy automatizujeme, budeme mít jasno, že dané flow je vždy funkční a chová se dle našeho očekávání.

Debugujeme:

Často se dostaneme do situace, kdy dané flow nebude fungovat dle našich představ (prvek se nevyplní, špatně se vybere z nabídky, …). V tu chvíli by bylo vhodné podívat se, jak se daný kód chová v prohlížeči. Máme dvě možnosti. Můžeme si nastavit v Codeceptionu ukládání reportů nebo přímo v prohlížeči. My používáme Docker pro vývoj a nasazování aplikací. Pro testovací účely používáme image:

selenium/standalone-chrome-debug

Jak už název napovídá, jedná se o prohlížeč Chrome. Jeho nastavení je nutné provést v konfiguraci (tests/acceptance.suite.yml) codeceptionu v sekci WebDriver:

config:
    WebDriver:
        browser: chrome 
        url: 'http://web/app_test.php' #url aplikace
        host: chrome #název docker image

Přihlášení do prohlížeče je skrze technologii vnc, linux je to vnc://localhost:5900.

Po přihlášení na vzdálenou plochu uvidíme v našem případě černou obrazovku s logem Ubuntu:

V moment, kdy spustíme testy se ale situace mění:

codecept run tests/acceptance/Login/

 

Test case vyplní jméno, heslo, klikne na tlačítko login a ověří, zda bylo vše v pořádku.

Jedna rada na závěr. Akceptační testy se chovají stejně jako testy prováděné uživatelem. Pokud na stránce není vidět určitý element, nemůžeme ho vyplnit ani odeslat.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *