Qazanclar:
- AI ilə mənalı təsdiqlə vahid, inteqrasiya və kənar vəziyyət testləri hazırlamaq bacarığı
- AI dəstəyi ilə test əhatəsini, limit dəyərləri və mənfi ssenariləri sistematik şəkildə çıxarmaq bacarığı
- Süni intellekt tərəfindən istehsal edilən testlərin əslində davranışı yoxladığını və sadəcə mövcud kodu təkrarlamadığını yoxlamaq imkanı
Test proqram təminatının həqiqətən vəd edildiyi kimi davrandığını sübut edən mexanizmdir. Yaxşı bir test dəsti sizə bir neçə saniyə ərzində dəyişikliyin nəyisə pozub-dağıdmayacağını söyləyir və mühəndisə inamla hərəkət etmək azadlığı verir. Süni intellekt test yazısının ən yorucu və ən çox atlanan hissəsini sürətləndirir: çoxlu ssenarilər, kəsilmə nöqtələri və mənfi hallar yaradır. Ancaq burada gizli bir tələ var: AI kodun ehtimal edilən davranışını deyil, cari (bəlkə də səhv) davranışını yoxlayan testlər yaza bilər; ya da əslində heç nəyi yoxlayan yox, həmişə keçən boş testlər yarada bilər. Testin dəyəri onun keçib-keçməməsində deyil, doğru şeyi yoxlayıb-yaxşılamamasında və səhv olanda qırmızıya çevrilməsindədir.
Bu bölmədə siz mənalı ifadələrlə vahid, inteqrasiya və kənar vəziyyət testlərinin necə hazırlanacağını öyrənəcəksiniz; test əhatə dairəsini, kəsilmə nöqtələrini və mənfi ssenariləri sistematik şəkildə necə çıxarmaq olar; və biz AI-nin istehsal etdiyi testlərin həqiqətən davranışı təsdiq etdiyini necə yoxlaya biləcəyinizi görəcəyik.
Konsepsiyalar: Vahid sınağı: Tək funksiyanı/sinfi təcrid olunmuş halda sınaqdan keçirir. İnteqrasiya sınağı: Birdən çox hissələrin birlikdə düzgün işlədiyini yoxlayır. Təsdiq: Nəticənin gözlənilə bərabər olduğunu yoxlayan bəyanat; Bu imtahanın ürəyidir. Əhatə dairəsi: Kodun nə qədəri testlər tərəfindən idarə olunur; Yüksək əhatə keyfiyyətinə zəmanət vermir.
Mənalı Testlər Hazırlamaq
Yaxşı bir sınaq üç şeyi aydın şəkildə yerinə yetirir: bir vəziyyət yaradır, bir hərəkəti yerinə yetirir, nəticəni təsdiqləyir. Testləri AI-yə çap edərkən, yoxlamaq istədiyiniz davranışı və hansı ssenariləri əhatə etməsini göstərin; Əks halda, həmişə keçən səthi testlər çıxarır.
- Test ediləcək davranışı müəyyənləşdirin. "Nə doğru hesab olunur?" Suala aydın cavab verin.
- Ssenari növlərini soruşun. Normal, limit, mənfi, xəta vəziyyəti.
- Mənalı təsdiqi idxal edin. Bu, sadəcə "səhv atmaq" deyil, "düzgün dəyəri qaytardı".
- Testin düzgünlüyünü yoxlayın. Şüurlu şəkildə kodu pozduqda test qırmızıya çevrilirmi?
Kompleks test yaratma əmri: "Aşağıdakı "endirim tətbiq et(məbləğ, kupon)" funksiyası üçün vahid testləri yazın. Aşağıdakı kateqoriyalarda AZAL bir ssenariyə sahib olun: (1) normal etibarlı kupon, (2) kəsilmə nöqtələri (0 məbləğ, 100% endirim), (3) mənfi (etibarsız kupon, gözlənilən səhv məbləği (COTEu) səhv dəyəri). hər bir testdə (yalnız 'işləmiş' deyil, oxuna bilən testləri adlandırın: [kod]".
Sərhəd dəyərinin çıxarılması sorğusu: "Bu funksiyanın girişləri üçün sərhəd təhlili aparın. Hər bir parametr üçün 'yalnız sərhəddə', 'sərhədin altında', 'sərhəddən bir qədər yuxarıda' dəyərləri cədvəl kimi çıxarın. Sonra bu sərhədləri əhatə edən test ssenarilərini sadalayın. Hələlik kod yazmayın: io təhlili və skript yazmayın."
Diqqət: Yüksək test əhatəsi (məsələn, 90%) kodun düzgün olduğunu sübut etmir. Əhatə dairəsi neçə sıranın icra olunduğunu ölçür; o xətlərin düzgün nəticə verməsi deyil. Mənalı təsdiqi olmayan test əhatə dairəsini artırır, lakin heç nəyə zəmanət vermir. Təsdiqin məzmunu təsdiqlərin sayını deyil, keyfiyyəti müəyyən edir.
Testin özünü sınamaq: mutasiya məntiqi
Süni intellekt tərəfindən yaradılan testin həqiqətən işlədiyini başa düşməyin ən praktik yolu kodu qəsdən pozmaqdır (mutasiya testi məntiqi). Şərti tərsinə çevirin, + işarəsi qoyun -; Heç bir test qırmızıya çevrilmirsə, testləriniz əslində bu davranışı saxlamır.
Zəifliyin axtarışı ilə bağlı sorğu: "Mənə deyin ki, bu kodda hansı potensial səhvlər var, aşağıdakı testlər DAXİL OLA BİLMƏYƏ bilər. Koda edilə bilən 5 kiçik mutasiya təklif edin (məsələn, > əvəzinə >=, + əvəzinə) və hər biri üçün mövcud testlərin onu tuta bilməyəcəyini göstərin. Tutulmayanlar üçün əlavə edilməli olan testi təklif edin. Test kodu: [kod]"
Zəif Tələb / Güclü Tələb
ZƏFS: "Bu funksiyaya test yazın." (Nəticə: adətən bir xoşbəxt ssenari, zəif təsdiq; səhvləri qaçırır.) GÜÇLÜ: "Bu 'passwordStrong' funksiyasına test yazın. Qayda: ən azı 8 simvol, 1 böyük hərf, 1 rəqəm tələb olunur. Aşağıdakı ssenariləri AYRI testlər kimi əhatə edin: tam olaraq 8 simvol (limit), 7 rəqəm, hərf yoxdur, hərf yoxdur boş sətir, yalnız boşluqlar, çox uzun (1000 simvol) Hər testdə gözlənilən doğru/yanlış dəyərini açıq şəkildə təsdiqləyin və yoxladığına uyğun olaraq testi adlandırın."
Güclü göstəriş qaydalar və tam sərhəd ssenariləri verir. "Tam olaraq 8/7 simvol" kimi sərhəd cütləri səhv etmək üçün ən çox rast gəlinən yerlərdir (>= ilə çaşdırılır). Zəif sürət bu sərhədləri aşır və səhvi istehsala aparır.
Test növləri və harada istifadə olunmalı
Test növü
Nəyi təsdiqləyir?
AI töhfəsi
Diqqət
vahid
Tək funksiya/sinif
Sürətli çoxlu ssenarilər yaradır
Mənalı təsdiq tələb olunur
inteqrasiya
Parçalar birlikdə işləyir
Ssenari və saxta məlumat layihəsi
Əsl asılılıq davranışı
bitir/qəbul et
Bütün istifadəçi axını
Addım siyahısı və gözlənti
kövrəkliyə meyllidir
reqressiya
Köhnə xəta geri qayıtmır
Arızanın xüsusi testi
Hər düzəlişə əlavə edilməlidir
Mini Çantalar
Case 1 - Həmişə keçən test. Süni intellekt bir funksiyaya 12 test yazır və hamısı keçir. Mühəndis şübhələnir və funksiyanın qaytarılması dəyərini qəsdən təhrif edir; Testlərdən yalnız 3-ü qırmızıya çevrilir. Digər 9 testdə mənalı təsdiqlər yoxdur. Test mutasiya ovu ilə gücləndirilir; real müdafiə 9 ssenaridə əldə edilir.
Hal 2 - Sərhəd xətası. Yaş doğrulama funksiyası "18 və daha yuxarı etibarlıdır" deməlidir, lakin >18 yazılır, yəni 18 yaş rədd edilir. Səhv test zamanı dərhal özünü göstərir, çünki AI kəsilmə nöqtəsi təhlili vasitəsilə “dəqiq 18” ssenarisini yaradır. Tək limit testi istənilən real istifadəçi şikayətlərinin qarşısını alır.
Case 3 - Cari davranışın düzəldilməsi. Süni intellektə "bu kod əsasında test yaz" deyildikdə, kodda artıq mövcud olan yuvarlaqlaşdırma xətasını "düzgün" kimi qəbul edən bir test istehsal edir. Mühəndis testi koda deyil, tələbə uyğun olaraq (gözlənilən düzgün dəyər) çap etdikdə, test qırmızıya çevrilir və əsl xəta baş verir. Testlər koddan deyil, gözləntilərdən alınmalıdır.
Ümumi səhvlər
- Mənasız iddia. "Səhv atmadım" kifayət deyil; Düzgün dəyər yoxlanılmalıdır.
- Keyfiyyətlə əhatə dairəsini qarışdırmaq. Yüksək əhatə dəqiq nəticələrə zəmanət vermir.
- Testin kodla çap edilməsi. Cari səhvi "doğru" olaraq düzəldir; Testlər gözləntilərdən irəli gəlməlidir.
- Limit dəyərlərin atlanması. > ilə >= qarışdırmaq ən çox yayılmış səhvdir; sərhəd cütləri sınaqdan keçirilməlidir.
- Testin özünü yoxlamaq. Kodu pozduqda qırmızıya çevrilməyən test qorunma təmin etmir.
Xülasə
Yaxşı sınaq dəsti inamla dəyişikliklər etmək üçün açardır. Süni intellekt tez bir zamanda çoxlu ssenarilər, sərhədlər və neqativ hallar yaradır; Ancaq testləri tələblərdən çox koddan əldə edərsə, mövcud səhvləri düzəldə bilər və ya həmişə keçən mənasız testlər yaza bilər. Hər bir testdə gözlənilən konkret dəyəri təsdiqləyin, əlaqəli cütləri daxil edin və kodu qəsdən pozaraq testlərinizin həqiqətən qoruduğunu yoxlayın. Keyfiyyəti əhatə dairələrinin sayı deyil, məzmunu müəyyənləşdirir.
Tətbiq tapşırığı
Funksiyanı seçin və hərtərəfli test yaratma əmri ilə dörd kateqoriyada (normal, limit, mənfi, səhv) testlər yaratsın; Hər testdə konkret gözlənilən dəyər təsdiqlənsin. Sonra test açığı axtarış sorğusunu işə salın, kodda 5 kiçik mutasiya təklif edin və hansını tutduqlarını yoxlamaq üçün testləri həyata keçirin. Tutulmamış ən azı bir mutasiya üçün yeni bir test əlavə edin və onun indi qırmızı olduğunu göstərin.
yoxlama siyahısı
- [ ] Testləri koda deyil, gözlənilən/düzgün davranışa əsaslanaraq çap etdim.
- [ ] Normal, limit, mənfi və səhv ssenarilərini əhatə etdim.
- [ ] Mən hər testdə konkret gözlənilən dəyəri təsdiqlədim.
- [ ] Sərhəd cütlərini sınaqdan keçirdim (yalnız yuxarıda/aşağıda).
- [ ] Kodu qəsdən pozaraq, testlərin qırmızıya çevrildiyini təsdiqlədim.
- [ ] Aşkar olunmamış mutasiyalar üçün yeni test əlavə etdim.