Vahid 6 / 11

Süni İntellektlə Test Yaradılması: Vahid, İnterfeys və Avtomatlaşdırma Testləri

Qazanclar:

  • Sınaq piramidasına uyğun olaraq süni intellektlə vahid, inteqrasiya və UI testləri hazırlamaq və limit və səhv vəziyyətlərini, eləcə də xoşbəxt ssenariləri əhatə etmək bacarığı
  • Yaranan hər bir testin həqiqətən bir davranışı təsdiqlədiyini yoxlayaraq boş/faydasız testləri və şişkin əhatəni aradan qaldırmaq bacarığı
  • Testin səhvi tutmasını təmin etmək və AI-yə kodun nə etməsi lazım olduğunu söyləməklə səhvi düzəltməsinin qarşısını alır

Kod yazmaq işin yarısıdır; Kodun düzgün işlədiyini sübut etmək digər yarısıdır. Mobil proqramlar yüzlərlə müxtəlif cihaz, ekran ölçüləri, əməliyyat sistemi versiyaları və istifadəçi davranışları ilə qarşılaşır. Bütün bunları əl ilə yoxlamaq mümkün deyil; Buna görə də avtomatlaşdırılmış test (kod test kodu — insan klik etmədən işləyən test) mobil keyfiyyətin əsasını təşkil edir. Süni intellekt testlərin yazılmasında inanılmaz dərəcədə səmərəlidir, çünki testlərin yazılması onun bəyəndiyi nümunə işidir: xüsusi girişlər üçün xüsusi davranışın təsdiqlənməsi. Bu bölmədə biz süni intellekt ilə vahid testini, interfeys testini və avtomatlaşdırmanı sürətləndirməyi öyrənəcəyik, lakin testin keyfiyyətini insan gözü ilə təmin edəcəyik.

Test piramidası: nəyi sınamaq və nə qədər

Sağlam sınaq strategiyası piramidaya bənzəyir. Baza çoxlu sayda vahid testləri daxildir (tək funksiyanı və ya sinfi təcrid olunmuş şəkildə sınaqdan keçirən sürətli sınaq); sürətli və ucuzdurlar. Ortada daha az inteqrasiya testi (birdən çox hissələrin birlikdə necə işlədiyini yoxlamaq) var. Yuxarıda minimal UI/end-to-end testi var (test istifadəçinin etdiyi kimi ekrana klikləməklə həyata keçirilir); onlar realistdir, lakin yavaş və kövrəkdirlər. Süni intellekt hər səviyyədə kömək edir, lakin ən çox dəyər əsasdır: biznes məntiqinin vahid testlərini tez bir zamanda hazırlamaq.

Test növü

Əhatə dairəsi

sürət

AI səmərəliliyi

vahid sınağı

Tək funksiya/sinif

çox sürətli

çox yüksək

inteqrasiya

interlayer

orta

yüksək

UI / uçdan-uca

Bütün ekran axını

yavaş

Orta (kövrək)

İpucu: Süni intellektə “bu funksiya üçün testlər yarat” deyərkən açıq şəkildə kənar halları soruşun: boş giriş, sıfır, mənfi rəqəm, çox böyük dəyər, şəbəkə xətası. AI asanlıqla xoşbəxt yol yaradır; Əsl səhvlər sərhədlərdə gizlənir və orada olmasını istəmirsinizsə, oradan tullanır.

AI ilə testlərin yazılması mərhələləri

  1. Test ediləcək davranışı müəyyənləşdirin. "Bu funksiya bu girişə bu çıxışı verməlidir."
  2. Çərçivəni təyin edin. Android-də JUnit + MockK, iOS-da XCTest, UI üçün Espresso (Android) və ya XCUITest (iOS).
  3. Limit vəziyyətlərini soruşun. Xoşbəxt ssenari + xəta + kəsilmə nöqtələri.
  4. Saxta obyektləri idarə edin. Şəbəkə və verilənlər bazası kimi xarici asılılıqlar sınaq üçün təqlid edilir (faktiki xidmət əvəzinə istehza — idarə olunan istehza).
  5. Testi işə salın və yoxlayın. Test keçdimi, həqiqətən mənalı bir şey təsdiqləyirmi?

Beşinci addım kritikdir. Süni intellekt bəzən “həmişə keçən” faydasız testlər istehsal edir; məsələn, heç nəyi yoxlayan və ya öz saxta məlumatlarını yoxlayan test. Keçid imtahanı və qiymətli test fərqli şeylərdir.

Diqqət: Süni intellektin istehsal edə bilməsi testin düzgün olması demək deyil. Bəzən AI kodun cari (bəlkə də səhv) davranışını "düzgün" kimi qəbul edir və buna uyğun olaraq testlər yazır. Belə sınaq səhvi tutmaq əvəzinə düzəldir. Testin nə gözlədiyini müəyyən edirsiniz; AI-yə kodun nə etdiyini deyil, nə etməli olduğunu söyləyin.

Test əhatə dairəsi ölçüsü və yanlışlıq

Test əhatə dairəsi (kodun neçə faizi testlər tərəfindən idarə olunur) faydalı, lakin yanıltıcı metrikdir. 90% əhatə kodun 90% icra edildiyini göstərir; lakin bu xətlərin düzgün işləməsi yoxlanılmamışdır. Xətti işlədən və nəticəni yoxlamayan test əhatə dairəsini artırır, lakin təhlükəsizliyi təmin etmir. Məqsəd yüksək rəqəmlər deyil, mənalı qiymətləndirmədir. Siz süni intellektlə sürətlə böyüyə bilərsiniz, lakin hər bir testin həqiqətən davranışı sınadığına əmin olun.

üç mini qutu

1-ci hal - Sərhəd vəziyyəti tutuldu. AI-dən bir bank tətbiqində pul köçürmə funksiyası üçün testlər istəndi və xüsusi olaraq "mənfi məbləğ" və "balansdan çox" ssenariləri əlavə edildi. Test nəticəsində məlum oldu ki, transfer mənfi məbləğlə bloklanmayıb; bu istehsalda böyük bir təhlükəsizlik zəifliyi olardı. Bir sətirli nəzarət əlavə edilərək bağlandı. Dərs: sərhəd testləri ən qiymətli testlərdir.

Case 2 - Saxta test. Bir komanda süni intellekt tərəfindən istehsal edilən 40 vahid testi ilə əhatə dairəsini 85%-ə qədər artırmaqdan azad oldu. Yoxlama zamanı məlum oldu ki, əksər testlər əslində heç bir çıxışı yoxlamayıb, onlar sadəcə funksiyanı çağırıb assertTrue(true) yazıblar. Əhatə yüksək idi, lakin qorunma sıfır idi. Testlər əsaslı təmir edildi və real təsdiqləmələrlə yenidən yazılmışdır. Dərs: əhatə nömrələri yalan danışa bilər.

Case 3 - UI testi sürətləndirildi. Elektron ticarət komandası 20 dəqiqə ərzində AI ilə səbətə əlavə etmə axınının XCUITest skriptini yazdı; Əllə yazılsaydı, yarım gün çəkərdi. AI tərəfindən təxmin edilən ekran elementi identifikatorları; Komanda onları real kodla uyğunlaşdırdı və düzəltdi. Qaralama sürəti realdır, lakin identifikatorun yoxlanılması insan işidir.

Zəif məlumat / Güclü göstəriş

Zəif göstəriş: "Bu funksiya üçün test yazın."

Güclü göstəriş: "JUnit5 + MockK ilə bu Kotlin funksiyası üçün vahid testləri hazırlayın. Funksiya: pul köçürməsi (məbləğ, mənbə, hədəf). Test edilməli davranışlar (kod nə etməlidir):- Etibarlı köçürmə uğurlu olmalıdır- Mənfi və ya sıfır məbləğ rədd edilməlidir- Balansdan çox olan məbləğ rədd edilməlidir. təsviri, xarici xidməti lağa qoymayın, boş bir iddia yazmayın."

Kopyalana bilən şablonlar

Vahid test şablonu: "[dil] üçün bu funksiya üçün [JUnit/XCTest] vahid testləri yaradın. Gözlənilən davranış: [nə etməli]. Daxil edin: xoşbəxt ssenari, sıfır daxiletmə, kəsilmə nöqtələri, xəta hadisəsi. Hər testin tək davranışı yoxlamasına icazə verin; mənalı təsdiqdən istifadə edin; istehza. [kod]"

UI test şablonu: "Aşağıdakı axının UI testini [Espresso/XCUITest] ilə yazın: [istifadəçi axını addım-addım]. Əlçatanlıq id-si olan ekran elementlərini seçin, mətn əvəzinə id-dən istifadə edin. Gözləmə strategiyası əlavə edin. Element id-lərini faktiki koda uyğunlaşdırmağı mənə xatırlat."

Test audit şablonu:"Bu testləri nəzərdən keçirin: 1) Onlar həqiqətən çıxışı/davranışı yoxlayırlarmı, yoxsa boşdur?2) Məhdud halları əhatə edirmi?3) Onlar kodu səhv düzəldirlər və ya düzgün davranış gözləyirlər? Zəif testləri qeyd edin və gücləndirin. [testlər]"

Əhatə dairəsinin optimallaşdırılması şablonu: "Bu sinfin sınaqdan keçirilməmiş hissələrini müəyyənləşdirin və mənalı testlər təklif edin. Yalnız əhatə dairələrinin sayını deyil, real riski olan yollara üstünlük verin. [kod]"

Ümumi səhvlər

  • Sadəcə xoşbəxt ssenarini sınaqdan keçiririk. Səhvlər limit vəziyyətlərində saxlanılır; Onları açıq şəkildə soruşun.
  • Boş/faydasız testi qəbul etmək. assertTrue(true) tipli testlər əhatə dairəsini artırır və heç bir qorunma təmin etmir.
  • AI kodun nə etdiyini yoxlayır. Test kodun nə edəcəyini gözləməlidir; əks halda səhvi düzəldir.
  • Məqsəd üçün əhatə dairəsinin nömrəsini səhv salmaq. 90% əhatə 90% dəqiqlik demək deyil.
  • UI testində mətnə ​​keçid. Mətn dəyişdikdə test pozulur; Stabil identifikatordan (id) istifadə edin.
  • İstehzaların səhv qurulması. Həqiqi xidməti çağıran "vahid testi" yavaş və kövrək olacaq.

Xülasə

Test mobil keyfiyyətin əsasını təşkil edir və süni intellekt bu sahədə, xüsusən də vahid testində çox səmərəlidir. Test piramidasına əməl edin: çoxlu vahidlər, orta inteqrasiya, kiçik UI testi. Xoşbəxt ssenari, həmçinin limit halları və səhv yolları üçün AI-dən açıq şəkildə soruşun. Yaranan hər bir testin həqiqətən davranışı təsdiq etdiyinə əmin olun; Boş testlər və şişirdilmiş əhatə dairəsi aldadıcıdır. Ən əsası, AI-yə kodun nə etdiyini deyil, nə etməsi lazım olduğunu söyləyin, beləliklə test səhvi düzəltmək deyil, onu tutur.

Tətbiq tapşırığı

Biznes məntiqi funksiyası üçün (məsələn, endirimlərin hesablanması və ya formanın doğrulanması) "Vahid test şablonu"ndan istifadə edərək süni intellektdən testlər tələb edin və limit hallarını açıq şəkildə göstərin (null, mənfi, çox böyük). Yaradılmış testləri işə salın, sonra eyni testləri "Test audit şablonu" ilə yoxlayın. Ən azı bir zəif test tapın, onu gücləndirin və testlərin funksiyanın faktiki xətasını tutduğunu yoxlayın (kiçik bir səhv əlavə etməklə).

yoxlama siyahısı

  • [ ] Test piramidası üçün uyğun təbəqəni seçdim (prioritet vahidi)
  • [ ] Xoşbəxt ssenaridən başqa limit və səhv halları istədim
  • [ ] Mən təsdiq etdim ki, hər bir testdə mənalı təsdiq var
  • [ ] Mən AI-yə kodun nə etməli olduğunu söylədim, nə etdiyini yox
  • [ ] Mən əhatə dairələrinin sayına deyil, faktiki risk yollarına diqqət yetirdim
  • [ ] UI testlərində stabil identifikatordan istifadə etdim, mətnə bağlamadım