Kitengo 4 / 11

Uendeshaji wa Jaribio la UI: Inazalisha Selenium, Playwright na Msimbo wa Cypress kwa AI

Faida:

  • Uwezo wa kutoa msimbo thabiti wa jaribio la UI na akili ya bandia, ikijumuisha data-testid, kusubiri bila malipo, na madai ambayo huthibitisha matokeo halisi ya mtumiaji.
  • Uwezo wa kuzuia majaribio dhaifu (kiteuzi kibaya, kungoja kwa upofu) na kufanya majaribio kuwa rahisi kudumisha katika muundo wa Mfano wa Kitu cha Ukurasa.
  • Uwezo wa kujaribu kila jaribio la UI linalozalishwa kwa kuvunja msimbo na kugundua na kurekebisha majaribio yaliyopitishwa na bandia

Kila mbofyo, kila kujaza fomu, kila mpito wa ukurasa anaofanya mtumiaji kwenye kivinjari hauwezi kujaribiwa tena na tena kwa mkono - ndiyo maana majaribio ya kiotomatiki ya UI (kiolesura cha mtumiaji; majaribio haya yanaiga tabia ya mtumiaji kwa kuendesha kivinjari halisi kiprogramu) kuwepo. Selenium, Playwright na Cypress ndizo zana za kawaida za kazi hii. Akili Bandia (AI) ina ustadi mkubwa wa kuandika msimbo wa zana hizi: unaelezea kesi ya jaribio, AI inakupa rasimu ya hati ya otomatiki inayoweza kutekelezeka. Lakini hapa onyo kuu la moduli hii linatumika tena: Nambari ya jaribio la UI ambayo AI inazalisha mara nyingi inaweza kuwa majaribio dhaifu ambayo "huwasha kijani kibichi lakini kuthibitisha kitu kibaya" au kupeperusha upepo. Kazi yako si kuendesha msimbo huu, lakini ni kuhakikisha kuwa inathibitisha jambo sahihi.

Katika kitengo hiki, tunalenga kuzalisha majaribio thabiti, yanayoweza kudumishwa na yanayoidhinisha kihalisi UI kwa kutumia AI; Utajifunza kuepuka vipimo tete.

Nguzo tatu za majaribio thabiti ya UI

1. Kitafuta kipengele sahihi. Jaribio hutumia kiteuzi kupata kipengele kwenye ukurasa. AI mara nyingi hutoa wateuzi dhaifu: njia ndefu za XPath (anwani hutegemea sana muundo wa ukurasa), wateuzi kulingana na majina ya darasa la CSS (mapumziko wakati muundo unabadilika). Njia thabiti ni sifa thabiti kama data-testid ambazo msanidi aliongeza kwa majaribio. Weka wazi hili kwa AI.

2. Kusubiri kwa uwazi. Chanzo kikuu cha uwezekano wa kuathiriwa katika majaribio ya kiolesura ni kuweka muda. Usingizi wa mara kwa mara(3) (kungoja kipofu) ni mazoea mabaya: wakati mwingine haitoshi, wakati mwingine hupoteza muda. Njia sahihi ni kutumia kungojea wazi, ambayo inasema "subiri hadi kipengee hiki kionekane". Mwandishi wa tamthilia hufanya hivi kwa kiasi kikubwa kiotomatiki; Katika Selenium lazima uiombe kwa uwazi.

3. Madai yenye maana. Jaribio linapaswa kuthibitisha matokeo ambayo mtumiaji ataona - kama vile "nambari ya agizo ilionekana kwenye skrini," sio tu "ukurasa uliopakiwa." Ikiwa jaribio linalotolewa na AI halina madai au sio muhimu, jaribio hilo hutoa pseudo-pass (kitengo cha 1).

Tahadhari: Unapoona jaribio la UI linalozalishwa na AI, angalia mambo matatu zaidi: je, wateuzi wamejitolea (data-testid), wanasubiriwa (hakuna usingizi wa kipofu), na je, dai linathibitisha matokeo halisi ya mtumiaji? Ikiwa hizi tatu ni sawa, mtihani labda ni thabiti.

Mfano wa Kitu cha Ukurasa

Majaribio yanapozidi kuwa makubwa, kuandika viteuzi ndani ya kila jaribio inakuwa ndoto ya udumishaji. Muundo wa Kitu cha Ukurasa (POM — muundo wa muundo unaokusanya viteuzi na vitendo kwa kila ukurasa/skrini katika darasa moja) huweka kiteuzi katika sehemu moja; Wakati interface inabadilika, unaisasisha katika faili moja. Je, AI itoe vipimo katika muundo wa POM, badala ya moja kwa moja; Hii hurahisisha matengenezo kwa kiasi kikubwa.

Mwongozo dhaifu / Mwongozo thabiti

Dhaifu: "Andika jaribio la Selenium kwa ukurasa wa kuingia."
Imara: "Andika jaribio la mtiririko wa kuingia ukitumia Playwright (TypeScript). Viteuzi hutumia data-testid pekee; usitumie udhibiti kile ambacho mtumiaji anaona, si kichwa cha ukurasa."

Agizo lenye nguvu; Zana hii inatoa lugha, sera ya kiteuzi, mkakati wa kusubiri, usanifu (POM) na matarajio ya madai yanayoeleweka.

Jaribu data na uhuru wa mazingira

Jaribio thabiti la UI halijaandikwa kwa usahihi tu, bali pia huunda na kusafisha data yake ya jaribio. Majaribio yanayotokana na AI mara nyingi huunganishwa na mtumiaji au rekodi ambayo inachukuliwa kuwa tayari ipo katika mazingira ("ingia kama mtumiaji msimamizi"). Dhana hii huvunjika wakati jaribio linapoendeshwa katika mazingira mengine au baada ya jaribio lingine (tatizo la utegemezi wa agizo katika kitengo cha 9). Ukweli ni kwamba kila jaribio huunda data inayohitaji mwanzoni mwa jaribio (au huitayarisha kwa simu ya API) na kuitakasa mwishoni. Agiza AI kwa uwazi "kuweka data yoyote ambayo jaribio hili inategemea ndani ya jaribio; usichukue data iliyotengenezwa tayari kutoka nje."

Jambo lingine muhimu sio kufanya majaribio ya UI na data halisi ya mtumiaji. Ikiwa nakala ya hifadhidata ya uzalishaji inatumiwa katika mazingira ya majaribio, rekodi hizi ni data za watu halisi; picha za skrini na rekodi za majaribio zinaweza kufichua data hii. Tumia akaunti za majaribio za syntetisk (za kubuni); inalinda usiri na kufanya majaribio yanazaliana. Kufanya jaribio la "kughairi agizo" na akaunti halisi ya mteja ni kosa la kimaadili na kiutendaji.

Kidokezo: Weka majaribio ya UI kuwa machache iwezekanavyo; Acha uthibitishaji halisi kwa API na majaribio ya kitengo, ambayo ni ya haraka na thabiti. Jaribio la kiolesura ni ghali na hafifu - litumie tu ili kuthibitisha mtiririko wa mtumiaji kutoka mwisho hadi mwisho (jaribu mantiki ya piramidi).

Ulinganisho wa gari

kipengele

selenium

mwandishi wa tamthilia

cypress

lugha

Java, C#, Python, JS

JS/TS, Python, .NET, Java

JavaScript/TypeScript

kusubiri kiotomatiki

Hapana (kwa mkono)

Ndio (nguvu)

Ndiyo

Vivinjari vingi

pana

Chromium/Firefox/WebKit

Chromium-inayotawala

tabia ya brittleness

Juu (kusubiri kwa mikono)

chini

chini

Urahisi wa kujifunza

kati

rahisi

rahisi

operesheni sambamba

Gridi inahitajika

iliyojengwa ndani

Mkazi/kulipwa

Unapoomba msimbo kutoka kwa AI, sema kwa uwazi ni gari gani; Vinginevyo, inaweza kutoa msimbo unaochanganya, usiofanya kazi.

Violezo vinne vinavyoweza kunakiliwa

1) Uzalishaji wa mtihani wa UI thabiti:

Jukumu lako: mhandisi mkuu wa majaribio ya kiotomatiki. Andika majaribio kwa kutumia [zana + lugha] kwa mtiririko ufuatao: [mtiririko].Sheria:- Viteuzi data-jaribio pekee; Kwa kutumia XPath/CSS-class. - Hakuna usingizi wa kipofu; Tumia kusubiri kwa uwazi/otomatiki. - Tumia Mfano wa Kitu cha Ukurasa. - Acha kila dai lithibitishe matokeo halisi ya mtumiaji. Toa maoni mwanzoni mwa kila jaribio ni kigezo gani cha kukubalika unachothibitisha.

2) Udhibiti wa udhaifu:

Chunguza jaribio lifuatalo la UI kwa wepesi:- Je, kuna kiteuzi kisicho thabiti (kirefu

3) Ubadilishaji kuwa Kitu cha Ukurasa:

Badilisha nambari ya mtihani ifuatayo kuwa muundo wa Kitu cha Ukurasa. Sogeza viteuzi na vitendo kwa madarasa ya ukurasa; Acha faili ya jaribio isome mtiririko wa hali tu. [Zana/lugha].Msimbo: [bandika msimbo]

4) Uthibitisho wa uwongo wa mpito:

Thibitisha kuwa jaribio hili la UI hakika linathibitisha: Je, ni mabadiliko gani moja ninayofanya kwenye msimbo wa programu ambayo yatageuza jaribio hili kuwa NYEKUNDU? Ikiwa huwezi kupata mabadiliko ambayo yatavunja mtihani, mtihani hautoshi; ongeza madai ambayo hayapo.Jaribio: [bandika jaribio]

kesi tatu ndogo

Kesi ya 1 - Ukombozi kutoka kwa kiteuzi dhaifu. Kati ya majaribio 40 timu moja iliyotolewa na AI, 70% ilivunjwa baada ya kusasisha kiolesura; hakuna hata mmoja wao ambaye alikuwa mende halisi, wote walikuwa wateuzi dhaifu wa XPath. Timu ilibadilisha majaribio kuwa msingi wa majaribio ya data kwa kiolezo cha "kukagua udhaifu". Katika visasisho vitatu vilivyofuata vya kiolesura, idadi ya mapumziko ya uwongo ilishuka hadi sifuri; muda wa matengenezo ulipungua kutoka saa 6 hadi dakika 30 kwa wiki.

Kesi ya 2 - Jaribio la UI la kupitisha uwongo. AI ilitoa mtihani wa "kuongeza kwenye gari"; mtihani ulikuwa wa kijani. Wakati kiolezo cha "ushahidi-bandia wa kifungu" kilipoendeshwa, jaribio lilionekana kuangalia tu kubofya kitufe na kichwa cha ukurasa, bila kuthibitisha kama kihesabu cha rukwama kimeongezeka au la. Hata kama mantiki ya gari ilivunjwa kabisa, mtihani ulipita. Imeongeza dai la kweli (beji ya rukwama ikiwa "1").

Kesi ya 3 - Mtego wa kungojea kipofu. Katika mtihani wa Selenium uliotolewa na AI, kulikuwa na usingizi (2) baada ya kila hatua; Vipimo 60 vilichukua dakika 14 na bado vilivunjika mara kwa mara. Baada ya kubadili ili kufungua subiri (subiri kipengee kiweze kubonyezwa) muda ulipungua hadi dakika 5 na brittleness kutoweka. Kungoja kwa upofu kulikuwa polepole na hakutegemei.

Makosa ya kawaida

  • Kukubaliana na wateuzi dhaifu. Kutumia XPaths ndefu zinazozalishwa na AI kama ilivyo; Majaribio huacha kufanya kazi katika mabadiliko ya kiolesura cha kwanza.
  • Kuacha kipofu `usingizi`. "Kutatua" muda na kusubiri fasta; wote polepole na wasio na maamuzi.
  • Madai yasiyo na maana. Thibitisha tu kwamba ukurasa umepakia; si kuangalia matokeo halisi ya mtumiaji (bandia-pasi).
  • Kukua bila POM. Sambaza viteuzi kwa kila jaribio; Inasasisha faili kadhaa kwa mikono wakati kiolesura kinabadilika.
  • Bila kubainisha chombo. Kutowaambia AI ni zana/lugha gani unayotaka; kupata msimbo mbaya, usiofanya kazi.
  • Kuamini unapoendesha nambari iliyotengenezwa na kupita. Si kujaribu kwa kuvunja kanuni.

Kwa muhtasari

Kiolesura cha majaribio ya otomatiki huthibitisha tabia ya mtumiaji kwa kuendesha kivinjari halisi ukitumia programu. AI hutoa msimbo huu haraka, lakini kuna mitego miwili mikubwa: majaribio brittle (kiteuzi kibaya, kusubiri kwa upofu) na majaribio ya kupita bandia (dai isiyo kamili / isiyo na maana). Nguzo tatu za majaribio thabiti ya UI ni kiteuzi cha ahadi (data-testid), kinachosubiri kwa uwazi, na madai ambayo huthibitisha matokeo halisi ya mtumiaji. Kufanya majaribio yaliyotolewa katika Muundo wa Kitu cha Ukurasa hurahisisha matengenezo kwa kiasi kikubwa. Jaribu kila jaribio linalozalishwa na swali "ni mabadiliko gani yatavunja hili?"

Jukumu la maombi

Chagua mtiririko wa mtumiaji kutoka kwa mradi wako mwenyewe (k.m. kuingia au kutafuta). Fanya majaribio ya uandishi wa AI ukitumia kiolezo cha "kizalishaji cha majaribio cha UI". Kisha: (1) angalia na urekebishe viteuzi na ungojee kwa "hundi ya udhaifu", (2) thibitisha kwamba kila jaribio linathibitisha kwa "uthibitisho wa kupitisha bandia", (3) vunja msimbo na uone kuwa jaribio linageuka kuwa nyekundu. Ripoti idadi ya majaribio yaliyotolewa na kusahihishwa, na idadi ya udhaifu na pasi za uwongo ulizopata.

orodha ya ukaguzi

  • [ ] Niliipa AI zana, lugha, sera ya kiteuzi na usanifu (POM) kwa uwazi.
  • [ ] Nilithibitisha kuwa viteuzi vimejaribiwa kwa data.
  • [ ] Nilihakikisha kuwa ninatumia kusubiri kwa uwazi/otomatiki badala ya kulala kipofu.
  • [ ] Niliangalia kuwa kila dai linathibitisha matokeo halisi ya mtumiaji.
  • [ ] Nilijaribu kila jaribio kwa kuvunja kanuni; Niliona inageuka kuwa nyekundu.
  • [ ] Nilikusanya majaribio katika muundo wa Muundo wa Kitu cha Ukurasa.