Skip to Content
TestingProgramos UI testavimas

Programos UI testavimas

OpenFactory gali vykdyti daugkartinius naršyklės workflow valdomose desktop tester VM. Programą gali diegti OpenFactory arba hostinti bet kur, kur tester VM gali pasiekti.

Scenarijai sujungia semantinius veiksmus, pvz. open, click, type, key, wait ir assert, su ekrano kopijomis, naršyklės diagnostika ir įrašytu verdiktu. Jie tinka žinomam vartotojo srautui; ribotam aptikimui naudokite autonomous walker.

Sukurti ir paleisti scenarijų

Gaukite programos tester VM:

ensure_tester_vm(app="my-app", app_url="https://staging.example.com")

Tada išsaugokite scenarijų, kurio žingsniai naudoja prasmingas ekrano etiketes:

[ { "action": "open_url", "value": "${APP_URL}" }, { "action": "type", "target": "email field", "value": "${EMAIL}" }, { "action": "type", "target": "password field", "value": "${PASSWORD}" }, { "action": "click", "target": "Sign in" }, { "action": "assert_text", "expect": "Dashboard" }, { "action": "assert_no_error" } ]

Naudokite create_app_scenario, tada grąžintą scenario ID paleiskite su run_app_scenario. Pirmas paleidimas elementus išsprendžia per OmniParser. Vėlesni paleidimai gali pakartotinai naudoti sustiprintą elementų cache ir iš naujo išspręsti tik pasikeitusius žingsnius. Diagnozuodami rezultatą, peržiūrėkite, ar kiekvienas žingsnis buvo cached ar parsed.

Ką reiškia sėkmingas paleidimas

Ataskaita laikoma patvirtinimu tik kai:

  • būsena yra passed;
  • tikslas buvo numatyta aplinka ir revision;
  • staging-protection ir programos prisijungimas baigėsi; ir
  • assertions vykdėsi produkte, ne prisijungimo ar apsaugos puslapyje.

Sėkmingas scenarijus parodo tik deklaruotą srautą ir assertions. Jis neįrodo visiškos programos teisingumo, prieinamumo, saugumo ar elgsenos skirtingose naršyklėse.

Kintamieji ir secrets

Žingsniai naudoja reikšmes kaip ${VAR} ir TOTP seeds kaip ${totp:VAR}. Neslapti numatymai gali būti scenarijuje. Secrets gali būti saugomi savininko šifruotame key store kuriant scenarijų; vienkartiniai override, perduoti į run_app_scenario, sujungiami tam paleidimui ir neišsaugomi.

Neįrašykite literal slaptažodžių, token ar TOTP seeds į žingsnių tekstą, scenarijaus aprašymus, ekrano kopijas ar issue export. El. paštu siunčiamiems vienkartiniams kodams email_otp veiksmui reikia aktyvios, aiškiai prijungtos Gmail integracijos scenarijaus savininkui.

Naudingos assertions

  • assert_text tikrina tikėtiną matomą tekstą.
  • assert_no_error tikrina built-in ar pateiktas error frazes.
  • assert_visual lygina perceptual hash su saugomu baseline.
  • assert_stable imdo regiono pavyzdžius dėl netikėto flicker/disappearance.
  • assert_progress tikrina, kad streaming regionas toliau keičiasi mažiausiai nustatytą laikotarpį.
  • network gali nutraukti ir atkurti tester VM tinklą recovery testams.

Visual ir temporal assertions yra heuristikos. Derinkite slenksčius prie stabilių test data ir peržiūrėkite užfiksuotus kadrus prieš laikydami drift produkto defektu.

Tiesioginis ir įrašytas testavimas

Tiriamam darbui valdykite VM su desktop_open_url, desktop_screenshot, desktop_click, desktop_type ir susijusiais desktop įrankiais. Naudokite start_app_test, record_app_test_step ir finish_app_test, kai ta rankinė seka turi tapti tikrinama paleidimo seka.

annotate_screenshot gali pridėti pažymėtus laukus prie evidence. Anotacija paaiškina, ką tikrintojas turėtų peržiūrėti; pati ji neįrodo, kad elementas veikė.

Operacinės pastabos

  • Tester VM pernaudojamos pagal app/host. Didinkite tester pool paraleliam darbui vietoj savavališkų dublikatų kūrimo.
  • Numatytoji tester neturi papildomo persistence disko. Request persistence tik kai state turi išgyventi reboot ir sutikite su ilgesniu first boot.
  • Kliento timeout nebūtinai atšaukia backend darbą; peržiūrėkite run prieš bandydami dar kartą.
  • Laikykite reports private, nebent jų ekrano kopijos ir diagnostika peržiūrėtos dėl jautrių duomenų.

Susiję