Kitengo 6 / 11

Kizazi cha Jaribio kwa kutumia Akili Bandia: Kitengo, Kiolesura na Majaribio ya Kiotomatiki

Faida:

  • Uwezo wa kutoa vipimo vya kitengo, ujumuishaji na UI na akili ya bandia kwa mujibu wa piramidi ya majaribio na kikomo cha kifuniko na hali za makosa na hali ya furaha.
  • Uwezo wa kupalilia vipimo tupu / visivyo na maana na chanjo iliyojaa kwa kuangalia kuwa kila jaribio linalotolewa linathibitisha tabia.
  • Kuhakikisha kuwa jaribio linashika mdudu na kuizuia kurekebisha mdudu kwa kuwaambia AI kile nambari inapaswa kufanya.

Nambari ya kuandika ni nusu ya kazi; Kuthibitisha kwamba nambari inafanya kazi kwa usahihi ni nusu nyingine. Programu za simu hukutana na mamia ya vifaa tofauti, ukubwa wa skrini, matoleo ya mfumo wa uendeshaji na tabia za watumiaji. Haiwezekani kupima haya yote kwa mikono; Ndiyo maana majaribio ya kiotomatiki (msimbo wa majaribio ya msimbo - majaribio ambayo yanafanyika bila mbofyo wa kibinadamu) ndio uti wa mgongo wa ubora wa simu ya mkononi. AI ni bora sana katika uandishi wa majaribio kwa sababu majaribio ya uandishi ndio aina haswa ya kazi ya muundo inayopenda: kuhalalisha tabia maalum kwa pembejeo maalum. Katika kitengo hiki, tutajifunza jinsi ya kuharakisha majaribio ya kitengo, majaribio ya kiolesura na uwekaji kiotomatiki kwa kutumia AI, lakini tuhakikishe ubora wa jaribio kupitia macho ya binadamu.

Piramidi ya kupima: nini cha kupima na ni kiasi gani

Mkakati wa kupima afya unafanana na piramidi. Msingi ni pamoja na idadi kubwa ya majaribio ya kitengo (jaribio la haraka ambalo hujaribu kazi moja au darasa kwa kutengwa); wao ni haraka na nafuu. Katikati ni majaribio machache ya ujumuishaji (kujaribu jinsi sehemu nyingi zinavyofanya kazi pamoja). Hapo juu kuna majaribio machache ya UI/mwisho-hadi-mwisho (jaribio linafanywa kwa kubofya skrini jinsi mtumiaji anavyofanya); ni za kweli lakini polepole na dhaifu. AI husaidia katika kila safu, lakini thamani zaidi iko kwenye msingi: hutoa haraka vipimo vya kitengo cha mantiki ya biashara.

Aina ya mtihani

Upeo

kasi

Ufanisi wa AI

kupima kitengo

Kitendaji/darasa moja

haraka sana

juu sana

ushirikiano

interlayer

kati

juu

UI / mwisho-hadi-mwisho

Utiririshaji wote wa skrini

polepole

Wastani (tete)

Kidokezo: Unapoiambia AI "kutoa majaribio kwa chaguo hili la kukokotoa", uliza kwa uwazi kesi za makali: ingizo tupu, null, nambari hasi, thamani kubwa sana, hitilafu ya mtandao. AI hutoa njia ya furaha kwa urahisi; Makosa halisi hujificha kwenye mipaka na kuruka nje ikiwa hutaki huko.

Hatua za kuandika majaribio na AI

  1. Bainisha tabia ya kujaribiwa. "Kitendaji hiki kinapaswa kutoa pato hili kwa ingizo hili."
  2. Bainisha muundo. JUnit + MockK kwenye Android, XCTest kwenye iOS, Espresso (Android) au XCUITest (iOS) ya UI.
  3. Uliza majimbo ya kikomo. Hali ya kufurahisha + makosa + sehemu za kukatika.
  4. Dhibiti vitu vya kejeli. Vitegemezi vya nje kama vile mtandao na hifadhidata huigwa kwa majaribio (dhihaka - dhihaka inayodhibitiwa badala ya huduma halisi).
  5. Fanya jaribio na uthibitishe. Je, mtihani unapita, je, unathibitisha jambo lolote la maana kweli?

Hatua ya tano ni muhimu. AI wakati mwingine hutoa vipimo visivyo na maana ambavyo "hupita daima"; kwa mfano, jaribio ambalo halithibitishi chochote au kukagua data yake bandia. Mtihani wa kufaulu na mtihani wa thamani ni vitu tofauti.

Tahadhari: Kwa sababu AI inaweza kutoa haimaanishi kuwa jaribio ni sahihi. Wakati mwingine AI hukubali tabia ya sasa (labda mbaya) ya msimbo kama "sahihi" na huandika vipimo ipasavyo. Upimaji kama huo hurekebisha mdudu badala ya kuikamata. Unaamua nini mtihani unatarajia; Iambie AI inapaswa kufanya nini, sio kile kanuni hufanya.

Kipimo cha chanjo cha mtihani na udanganyifu

Ufikiaji wa majaribio (asilimia ngapi ya msimbo unaendeshwa na majaribio) ni kipimo muhimu lakini cha kupotosha. Chanjo ya 90% inaonyesha kuwa 90% ya kanuni imetekelezwa; lakini haijathibitishwa kuwa laini hizo zinafanya kazi ipasavyo. Jaribio ambalo huendesha mstari na haliangazii matokeo huongeza wigo lakini haitoi usalama. Lengo sio idadi kubwa, lakini uthibitisho wa maana. Unaweza kuongeza kasi kwa kutumia AI, lakini hakikisha kila jaribio linajaribu tabia.

kesi tatu ndogo

Kesi ya 1 - Hali ya mpaka imekamatwa. AI iliulizwa majaribio ya kazi ya kuhamisha pesa katika ombi la benki, na haswa hali za "kiasi hasi" na "zaidi ya salio" ziliongezwa. Jaribio lilifunua kwamba uhamisho haukuzuiwa na kiasi hasi; hii itakuwa hatari kubwa ya usalama katika uzalishaji. Imefungwa kwa kuongeza kidhibiti cha mstari mmoja. Somo: vipimo vya mipaka ni vipimo vya thamani zaidi.

Kesi ya 2 - Mtihani wa uwongo. Timu moja ilifarijika kuongeza ufikiaji hadi 85% na majaribio ya vitengo 40 yaliyotolewa na AI. Wakati wa ukaguzi, ilionekana kuwa majaribio mengi hayakuthibitisha matokeo yoyote, waliita tu kazi hiyo na kuandika assertTrue(true). Chanjo ilikuwa ya juu lakini ulinzi ulikuwa sufuri. Majaribio yalikaguliwa na kuandikwa upya kwa uthibitisho halisi. Somo: nambari za chanjo zinaweza kusema uwongo.

Kesi ya 3 - Jaribio la UI limeharakishwa. Timu ya e-commerce iliandika hati ya XCUITest ya mtiririko wa kuongeza-to-gari na AI katika dakika 20; Ikiwa imeandikwa kwa mkono, itachukua nusu ya siku. AI ilikisia vitambulishi vya kipengele cha skrini; Timu ilizilinganisha na msimbo halisi na kuzirekebisha. Kasi ya rasimu ni halisi, lakini uthibitishaji wa vitambulisho ni kazi ya binadamu.

Mwongozo dhaifu / Mwongozo thabiti

Kidokezo dhaifu: "Andika jaribio la chaguo la kukokotoa."

Kidokezo chenye nguvu: "Tengeneza vipimo vya kitengo cha chaguo hili la kukokotoa la Kotlin ukitumia JUnit5 + MockK. Kazi: uhamisho wa pesa (kiasi, chanzo, lengo). Tabia za kujaribu (kile msimbo unapaswa KUFANYA):- Uhamisho halali lazima ufanikiwe- Kiasi hasi au sufuri lazima kikataliwe- Kiasi kikubwa zaidi ya salio lazima kukataliwa- Kila jaribio la mtandao linapaswa kupotosha, isipokuwa jina la mtandao lazima lifuate. dhihaki huduma ya nje Usiandike madai tupu."

Violezo vinavyoweza kunakiliwa

Kiolezo cha majaribio ya kitengo: "Tengeneza majaribio ya kitengo cha [JUnit/XCTest] kwa chaguo hili la kukokotoa kwa [lugha]. Tabia inayotarajiwa: [cha kufanya]. Jumuisha: hali ya kufurahisha, ingizo lisilofaa, nullpoints, kesi ya makosa. Ruhusu kila jaribio lithibitishe tabia moja; tumia madai yenye maana; dhihaka. [code]"

Kiolezo cha majaribio ya UI: "Andika jaribio la UI la mtiririko ufuatao ukitumia [Espresso/XCUITest]: [mtiririko wa mtumiaji hatua kwa hatua]. Chagua vipengele vya skrini vilivyo na kitambulisho cha ufikivu, tumia kitambulisho badala ya maandishi. Ongeza mkakati wa kusubiri. Nikumbushe kulinganisha vitambulisho vya kipengele na msimbo halisi."

Kiolezo cha ukaguzi wa majaribio:"Chunguza majaribio haya:1) Je, kweli yanathibitisha matokeo/tabia au ni batili?2) Je, yanashughulikia kesi za kikomo?3) Je, wana hitilafu kurekebisha msimbo au wanatarajia tabia sahihi?Tia alama na uimarishe majaribio dhaifu. [majaribio]"

Kiolezo cha uboreshaji wa huduma: "Tambua sehemu ambazo hazijajaribiwa za darasa hili na upendekeze majaribio yenye maana. Tanguliza njia zenye hatari halisi, si tu idadi ya mijadala. [code]"

Makosa ya kawaida

  • Jaribu tu hali ya kufurahisha. Makosa huhifadhiwa katika hali ya kikomo; Waulize kwa uwazi.
  • Kukubali jaribio tupu / lisilofaa. Majaribio ya aina ya kudaiKweli(kweli) huongeza upeo na hayatoi ulinzi.
  • Kuwa na AI kuthibitisha kile msimbo unafanya. Upimaji unapaswa kutarajia kile kanuni inapaswa kufanya; vinginevyo hurekebisha mdudu.
  • Kukosea kwa nambari ya upeo kwa madhumuni. 90% chanjo haimaanishi usahihi wa 90%.
  • Kuunganisha kwa maandishi katika jaribio la UI. Jaribio limevunjwa wakati maandishi yanabadilika; Tumia kitambulisho thabiti (kitambulisho).
  • Kuweka dhihaka vibaya. "Jaribio la kitengo" ambalo huita huduma halisi litakuwa polepole na brittle.

Kwa muhtasari

Upimaji ndio uti wa mgongo wa ubora wa rununu, na AI inafaa sana katika eneo hili, haswa katika upimaji wa kitengo. Fuata piramidi ya majaribio: vitengo vingi, ujumuishaji wa kati, majaribio kidogo ya UI. Uliza AI ​​kwa hali ya kufurahisha na vile vile kupunguza kesi na njia za makosa. Hakikisha kuwa kila jaribio linalotolewa linathibitisha tabia; Majaribio matupu na chanjo iliyoongezeka ni ya kupotosha. Muhimu zaidi, mwambie AI kile msimbo unapaswa kufanya, sio kile kinachofanya, kwa hivyo mtihani unashika mdudu, sio kuirekebisha.

Jukumu la maombi

Omba majaribio kutoka kwa AI kwa kutumia "Kiolezo cha majaribio ya kitengo" kwa utendakazi wa mantiki ya biashara (k.m. hesabu ya punguzo au uthibitishaji wa fomu) na ubainishe kwa uwazi kesi za kikomo (batili, hasi, kubwa sana). Fanya majaribio yaliyotolewa, kisha fanya majaribio sawa na yaliyokaguliwa na "Kiolezo cha ukaguzi wa majaribio". Tafuta angalau jaribio moja dhaifu, liimarishe, na ujaribu ikiwa majaribio yanapata hitilafu halisi ya chaguo la kukokotoa (kwa kuongeza hitilafu ndogo).

orodha ya ukaguzi

  • [ ] Nilichagua safu inayofaa kwa piramidi ya majaribio (kitengo cha kipaumbele)
  • [ ] Nilitaka kesi za kikomo na makosa kando na hali ya kufurahisha
  • [ ] Nilithibitisha kuwa kila jaribio lina madai yenye maana
  • [ ] Niliiambia AI kile kanuni inapaswa kufanya, sio kile inachofanya
  • [ ] Niliangazia njia halisi za hatari, sio idadi ya chanjo
  • [ ] Nilitumia kitambulisho thabiti katika majaribio ya UI, sikufunga maandishi