Fitimet:
- Aftësia për të prodhuar teste të njësisë, integrimit dhe rastit të skajit me pohim kuptimplotë me AI
- Aftësia për të nxjerrë sistematikisht mbulimin e testit, vlerat kufitare dhe skenarët negativë me mbështetjen e AI
- Aftësia për të verifikuar që testet e prodhuara nga AI vërtetojnë sjelljen dhe jo thjesht përsërisin kodin ekzistues
Testimi është mekanizmi që vërteton se softueri në të vërtetë sillet siç është premtuar. Një grup i mirë testimi ju tregon në sekonda nëse një ndryshim thyen diçka dhe i jep inxhinierit lirinë për të vepruar me besim. Inteligjenca artificiale përshpejton pjesën më të lodhshme dhe më të anashkaluar të shkrimit të testit: gjenerimin e një morie skenarësh, pikash ndërprerjeje dhe raste negative. Por këtu ka një kurth të poshtër: AI mund të shkruajë teste që verifikojnë sjelljen aktuale (ndoshta të gabuar) të kodit, jo sjelljen e supozuar të tij; ose mund të prodhojë teste boshe që kalojnë gjithmonë, duke mos kontrolluar asgjë. Vlera e një testi nuk është nëse ai kalon, por nëse kontrollon për gjënë e duhur dhe nëse bëhet i kuq kur është gabim.
Në këtë njësi, do të mësoni se si të prodhoni teste të njësisë, integrimit dhe rastit të skajit me pohime kuptimplote; si të nxjerrim sistematikisht mbulimin e testit, pikat e ndërprerjes dhe skenarët e anës së keqe; dhe ne do të shohim se si mund të kontrolloni që testet që prodhon AI vërtetojnë sjelljen.
Konceptet: Testimi i njësisë: Teston një funksion/klasë të veçuar. Testimi i integrimit: Testet që disa pjesë punojnë së bashku në mënyrë korrekte. Pohoni: Një deklaratë që kontrollon nëse një rezultat është i barabartë me atë që pritej; Kjo është zemra e testit. Mbulimi: Sa nga kodi ekzekutohet nga testet; Mbulimi i lartë nuk garanton cilësi.
Prodhimi i testeve kuptimplote
Një test i mirë bën tre gjëra qartësisht: vendos një gjendje, kryen një veprim, pohon rezultatin. Kur printoni teste në AI, specifikoni se çfarë sjellje dëshironi të verifikoni dhe cilat skenarë duhet të mbulojë; Përndryshe, prodhon teste sipërfaqësore që kalojnë gjithmonë.
- Përcaktoni sjelljen që do të testohet. "Çfarë llogaritet si e drejtë?" Përgjigjuni pyetjes qartë.
- Kërkoni për llojet e skenarëve. Normal, limit, negativ, gjendje gabimi.
- Importoni pohim kuptimplotë. Ai jo vetëm që "hodhi një gabim", por "ktheu vlerën e duhur".
- Kontrolloni saktësinë e testit. A bëhet testi i kuq kur e thyeni kodin me vetëdije?
Kërkesa gjithëpërfshirëse e gjenerimit të testit: "Shkruani testet e njësisë për funksionin e mëposhtëm 'aplikoni zbritje(shuma, kupon)'. Keni SAKTËN një skenar në kategoritë e mëposhtme: (1) kupon normal i vlefshëm, (2) pika ndërprerje (0 shuma, 100% zbritje), (3) negative (kupon i pavlefshëm, si një rast COTE i pritshëm). vlera në çdo test (jo vetëm 'punuar').
Kërkesa për nxjerrjen e vlerës kufitare: "Kryerni një analizë të vlerës kufitare për hyrjet e këtij funksioni. Për çdo parametër, nxirrni si tabelë vlerat "vetëm në kufi", "vetëm poshtë kufirit", "vetëm mbi kufirin". Më pas listoni skenarët e provës që mbulojnë këta kufij. Mos shkruani ende kode: vetëm analizoni].
Kujdes: Mbulimi i lartë i testit (p.sh. 90%) nuk vërteton se kodi është i saktë. Mbulimi mat sa rreshta janë ekzekutuar; jo se ato rreshta prodhojnë rezultatin e duhur. Një test pa pohim kuptimplotë rrit mbulimin, por nuk garanton asgjë. Përmbajtja e pohimit përcakton cilësinë, jo numrin e pohimeve.
Testimi i Vetë Testit: Logjika e Mutacionit
Mënyra më praktike për të kuptuar nëse testi i gjeneruar nga AI funksionon në të vërtetë është thyerja e qëllimshme e kodit (logjika e testimit të mutacionit). Kthejeni një kusht, bëni një shenjë + -; Nëse asnjë test nuk bëhet i kuq, testet tuaja në fakt nuk po e ruajnë atë sjellje.
Testoni kërkesën e gjuetisë së cenueshmërisë: "Më tregoni cilat defekte të mundshme në këtë kod NUK MUND të kapin testet e mëposhtme. Sugjeroni 5 mutacione të vogla që mund t'i bëhen kodit (p.sh. >= në vend të >, - në vend të +) dhe tregoni për secilën nëse testet ekzistuese do ta kapnin atë. Për ata që nuk janë kapur, sugjeroni testimin që duhet shtuar. Kodi: [code]"
Prompt i dobët / Prompt i fortë
I DOBËT: "Shkruaj një test për këtë funksion." (Rezultati: zakonisht një skenar i lumtur, pohim i dobët; humbet gabimet.) I FORTË: "Shkruani një test për këtë funksion 'passwordStrong'. Rregulli: të paktën 8 karaktere, 1 shkronjë e madhe, kërkohet 1 shifër. Mbuloni skenarët e mëposhtëm si teste TË VEÇANTA: saktësisht 8 karaktere (kufi në kufi, 7 shkronja bosh), 7 karaktere varg, vetëm hapësira, shumë të gjata (1000 karaktere) Vendosni në mënyrë eksplicite vlerën e pritshme të vërtetë/false në çdo test dhe emërtoni testin sipas asaj që ai kontrollon."
Shpejtësia e fuqishme jep rregulla dhe skenarë të plotë të kufirit. Çiftet kufitare si "saktësisht 8/7 karaktere" janë vendet më të zakonshme për të bërë gabime (ngatërruar > me >=). Prompt i dobët i anashkalon këta kufij dhe e çon gabimin në prodhim.
Llojet e testit dhe ku të përdoren
Lloji i testit
Çfarë konfirmon?
Kontributi i AI
Kujdes
njësi
Një funksion/klasë
Gjeneron shpejt shumë skenarë
Kërkohet një pohim kuptimplotë
integrimin
Pjesë që punojnë së bashku
Skenari dhe drafti i të dhënave tallëse
Sjellje e vërtetë varësie
fund/pranoj
I gjithë fluksi i përdoruesit
Lista e hapave dhe pritshmëritë
të prirur për brishtësinë
regresioni
Gabim i vjetër nuk kthehet
Testimi specifik i gabimeve
Duhet të shtohet në çdo rregullim
Mini Rastet
Rasti 1 - Testi që kalon gjithmonë. AI shkruan 12 teste në një funksion dhe të gjitha kalojnë. Inxhinieri bëhet i dyshimtë dhe qëllimisht shtrembëron vlerën e kthyer të funksionit; Vetëm 3 nga testet marrin ngjyrë të kuqe. 9 testet e tjera nuk përmbajnë pohime kuptimplote. Testimi forcohet nga gjuetia e mutacioneve; mbrojtja reale fitohet në 9 skenarë.
Rasti 2 - Gabim kufitar. Një funksion verifikimi i moshës duhet të thotë "18 e lart është i vlefshëm", por shkruhet >18, që do të thotë se mosha 18 refuzohet. Gabimi shfaqet menjëherë në testim sepse AI gjeneron skenarin "saktësisht 18" përmes analizës së pikës së ndërprerjes. Një test i vetëm kufiri parandalon çdo ankesë reale të përdoruesit.
Rasti 3 - Rregullimi i sjelljes aktuale. Kur AI i thuhet të "shkruajë një test bazuar në këtë kod", ai prodhon një test që pranon si "korrekt" një gabim rrumbullakimi që ekziston tashmë në kod. Kur inxhinieri printon testin sipas kërkesës (vlera e pritshme e saktë) dhe jo kodit, testi bëhet i kuq dhe ndodh gabimi i vërtetë. Testet duhet të rrjedhin nga pritshmëria, jo nga kodi.
Gabimet e zakonshme
- Pohim i pakuptimtë. "Nuk hodhi një gabim" nuk mjafton; Vlera e saktë duhet të verifikohet.
- Shtrirja e ngatërruar me cilësinë. Mbulimi i lartë nuk është garanci për rezultate të sakta.
- Printimi i testit me kod. Rregullon gabimin aktual në "të vërtetë"; Testet duhet të rrjedhin nga pritshmëria.
- Kapërcimi i vlerave kufi. Ngatërrimi > me >= është gabimi më i zakonshëm; çiftet kufitare duhet të testohen.
- Mos auditimi i vetë testit. Një test që nuk bëhet i kuq kur thyen kodin nuk ofron mbrojtje.
Në përmbledhje
Një grup i mirë testimi është çelësi për të bërë ndryshime me besim. AI gjeneron shpejt një mori skenarësh, kufijsh dhe situatash negative; Por nëse nxjerr teste nga kodi dhe jo nga kërkesat, ai mund të rregullojë gabimet ekzistuese ose të shkruajë teste të pakuptimta që kalojnë gjithmonë. Vendosni vlerën e pritur konkrete në çdo test, përfshini çiftet e lidhura dhe verifikoni që testet tuaja mbrojnë në të vërtetë duke thyer qëllimisht kodin. Përmbajtja e pohimit, jo numri i qëllimeve, përcakton cilësinë.
Detyra e aplikimit
Zgjidhni një funksion dhe lëreni të gjenerojë teste në katër kategori (normale, kufi, negativ, gabim) me një kërkesë gjithëpërfshirëse të gjenerimit të testit; Vlera e pritshme konkrete të pohohet në çdo test. Pastaj ekzekutoni promptin e gjuetisë së cenueshmërisë së testit, sugjeroni 5 mutacione të vogla në kod dhe kryeni testet për të kontrolluar se cilat prej tyre kapin. Shtoni një test të ri për të paktën një mutacion që nuk u kap dhe tregoni se tani është në të kuqe.
listë kontrolli
- [ ] I printova testet bazuar në sjelljen e pritur/korrekte, jo në kod.
- [ ] Kam mbuluar skenarë normalë, limit, negativë dhe gabimesh.
- [ ] Kam pohuar vlerën e pritur konkrete në çdo test.
- [ ] Kam testuar çiftet e kufirit (vetëm sipër-poshtë / pak sipër-poshtë).
- [ ] Duke thyer qëllimisht kodin, konfirmova se testet u kthyen në të kuqe.
- [ ] Shtova një test të ri për mutacione të pazbuluara.