Daromadlar:
- AI bilan mazmunli tasdiqlash bilan birlik, integratsiya va chekka holatlar testlarini ishlab chiqarish qobiliyati
- AI qo'llab-quvvatlashi bilan test qamrovini, chegaraviy qiymatlarni va salbiy stsenariylarni tizimli ravishda ajratib olish qobiliyati
- AI tomonidan ishlab chiqarilgan testlar aslida xatti-harakatni tekshirishini va faqat mavjud kodni takrorlamasligini tekshirish qobiliyati
Sinov - bu dasturiy ta'minot haqiqatda va'da qilinganidek harakat qilishini isbotlovchi mexanizm. Yaxshi test to'plami bir necha soniya ichida o'zgarish nimanidir buzadimi yoki yo'qligini aytadi va muhandisga ishonch bilan harakat qilish erkinligini beradi. AI test yozishning eng zerikarli va eng ko'p o'tkazib yuborilgan qismini tezlashtiradi: ko'plab stsenariylar, to'xtash nuqtalari va salbiy holatlarni yaratish. Ammo bu erda yashirin tuzoq bor: AI kodning taxminiy xatti-harakatlarini emas, balki joriy (ehtimol noto'g'ri) harakatini tasdiqlovchi testlarni yozishi mumkin; yoki u har doim o'tadigan, aslida hech narsani tekshirmaydigan bo'sh testlarni ishlab chiqishi mumkin. Sinovning ahamiyati uning o‘tgan-o‘tmaganligida emas, balki to‘g‘riligini tekshirib, noto‘g‘ri bo‘lganida qizil rangga aylanganida.
Ushbu bo'limda siz mazmunli tasdiqlar bilan birlik, integratsiya va chekka holat testlarini qanday ishlab chiqarishni o'rganasiz; test qamrovi, to'xtash nuqtalari va salbiy stsenariylarni tizimli ravishda qanday chiqarish kerak; va biz AI ishlab chiqaradigan testlar xatti-harakatni tasdiqlashini qanday tekshirishingiz mumkinligini ko'rib chiqamiz.
Tushunchalar: Birlik testi: Yagona funktsiya/sinfni alohida sinovdan o'tkazadi. Integratsiya testi: Bir nechta qismlarning birgalikda to'g'ri ishlashini tekshirish. Tasdiqlash: Natija kutilgan narsaga tengligini tekshiradigan bayonot; Bu sinovning yuragi. Qamrov: Kodning qancha qismi testlar bilan ishlaydi; Yuqori qoplama sifatni kafolatlamaydi.
Ma'noli testlarni ishlab chiqarish
Yaxshi sinov uchta narsani aniq bajaradi: u holatni o'rnatadi, harakatni bajaradi, natijani tasdiqlaydi. Sinovlarni AIga chop etishda qanday xatti-harakatni tekshirmoqchi ekanligingizni va u qanday stsenariylarni qamrab olishi kerakligini belgilang; Aks holda, u har doim o'tib ketadigan yuzaki testlarni ishlab chiqaradi.
- Sinov qilinadigan xatti-harakatni aniqlang. "Nima to'g'ri deb hisoblanadi?" Savolga aniq javob bering.
- Ssenariy turlarini so'rang. Oddiy, chegara, salbiy, xato holati.
- Ma'noli tasdiqni import qiling. Bu shunchaki "xato tashladi" emas, balki "to'g'ri qiymatni qaytardi".
- Sinovning to'g'riligini tekshiring. Kodni ongli ravishda buzganingizda test qizil rangga aylanadimi?
Keng qamrovli test yaratish soʻrovi: "Quyidagi" chegirmani qoʻllash(summa, kupon)" funksiyasi uchun birlik testlarini yozing. Quyidagi toifalarda KAMDA bitta stsenariyga ega boʻling: (1) normal amaldagi kupon, (2) toʻxtash nuqtalari (0 miqdor, 100% chegirma), (3) salbiy (kupon yaroqsiz, kutilayotgan xato miqdori (CONC) koʻrinishini kiriting). har bir testda (faqat "ishlagan" emas, balki o'qilishi mumkin bo'lgan testlarni nomlang: [kod]".
Chegara qiymatini chiqarish taklifi: "Ushbu funktsiyaning kirishlari uchun chegara tahlilini bajaring. Har bir parametr uchun "chegarada", "chegara ostida", "chegaradan biroz yuqoriroqda" qiymatlarni jadval sifatida ajratib oling. Keyin ushbu chegaralarni qamrab oluvchi test stsenariylarini sanab o'ting. Hali kod yozmang: io ro'yxatini tahlil qiling va qiziqtirmang."
Diqqat: Yuqori sinov qamrovi (masalan, 90%) kodning to'g'ri ekanligini isbotlamaydi. Qamrash qancha qator bajarilganligini o'lchaydi; bu chiziqlar to'g'ri natijani keltirib chiqarmaydi. Ma'noli tasdiqsiz sinov qamrovni oshiradi, lekin hech narsani kafolatlamaydi. Tasdiqlashning mazmuni tasdiqlar sonini emas, balki sifatni belgilaydi.
Sinovning o'zini sinab ko'rish: mutatsiya mantig'i
AI tomonidan yaratilgan test haqiqatan ham ishlayotganligini tushunishning eng amaliy usuli bu kodni ataylab buzishdir (mutatsion test mantig'i). Shartni teskari o'zgartirish, + belgisini qo'ying -; Hech qanday test qizil rangga aylanmasa, testlaringiz aslida bu xatti-harakatni saqlamaydi.
Zaifliklarni aniqlash boʻyicha soʻrov: “Menga ushbu koddagi qaysi ehtimoliy xatolarni ayting, quyidagi testlar TUQIB EMAS MUMKIN. Kodga kiritilishi mumkin boʻlgan 5 ta kichik mutatsiyani taklif qiling (masalan, > oʻrniga >=, + oʻrniga -) va har biri uchun mavjud testlar uni ushlaydimi yoki yoʻqligini koʻrsating. Tugʻilmaganlar uchun qoʻshilishi kerak boʻlgan testni taklif qiling. Test kodi: [sinov]”
Zaif taklif / Kuchli taklif
ZAF: "Ushbu funktsiyaga test yozing." (Natija: odatda bitta baxtli stsenariy, kuchsiz tasdiq; xatolarni oʻtkazib yuboradi.) KUCHLI: “Ushbu“passwordStrong” funksiyasiga test yozing. Qoida: kamida 8 ta belgi, 1 ta katta harf, 1 ta raqam kerak. Quyidagi stsenariylarni Alohida test sifatida qamrab oling: aniq 8 ta belgi (cheklov), 7 ta belgidan oshmasligi kerak, katta harflar (chegara yoʻq) bo'sh satr, faqat bo'shliqlar, juda uzun (1000 ta belgi) Har bir testda kutilgan to'g'ri/noto'g'ri qiymatni aniq tasdiqlang va testni tekshirgan narsaga qarab nomlang."
Kuchli taklif qoidalar va to'liq chegara stsenariylarini beradi. "Aniq 8/7 belgi" kabi chegara juftlari xato qilish uchun eng ko'p uchraydigan joylardir (>= bilan chalkashtirib yuborish). Zaif tezkor ushbu chegaralarni chetlab o'tadi va xatoni ishlab chiqarishga olib boradi.
Sinov turlari va qayerda foydalanish kerak
Sinov turi
Bu nimani tasdiqlaydi?
AI hissasi
Diqqat
birlik
Yagona funktsiya/sinf
Tez ko'p stsenariylarni yaratadi
Ma'noli da'vo talab qilinadi
integratsiya
Birgalikda ishlaydigan qismlar
Ssenariy va soxta ma'lumotlar loyihasi
Haqiqiy giyohvandlik harakati
tugatish/qabul qilish
Butun foydalanuvchi oqimi
Qadamlar ro'yxati va kutish
mo'rtlikka moyil
regressiya
Eski xato qaytarilmadi
Xatolarga oid maxsus sinov
Har bir tuzatishga qo'shilishi kerak
Mini korpuslar
1-holat - har doim o'tib ketadigan test. AI funktsiyaga 12 ta test yozadi va ularning barchasi o'tadi. Muhandis shubhali bo'lib qoladi va funktsiyaning qaytish qiymatini ataylab buzadi; Sinovlarning faqat 3 tasi qizil rangga aylanadi. Qolgan 9 ta testda mazmunli tasdiqlar mavjud emas. Sinov mutatsion ov bilan mustahkamlanadi; 9 ta stsenariyda haqiqiy himoya olinadi.
2-holat - chegara xatosi. Yoshni tekshirish funksiyasi "18 va undan kattalar amal qiladi" deb yozishi kerak, lekin >18 deb yozilgan, ya'ni 18 yosh rad etilgan. Xato testda darhol namoyon bo'ladi, chunki AI uzilish nuqtasi tahlili orqali "aniq 18" stsenariyni yaratadi. Yagona chegara testi har qanday haqiqiy foydalanuvchi shikoyatlarini oldini oladi.
3-holat - Joriy xatti-harakatni tuzatish. AIga "ushbu kod asosida test yozish" deyilsa, u kodda allaqachon mavjud bo'lgan yaxlitlash xatosini "to'g'ri" deb qabul qiladigan test ishlab chiqaradi. Muhandis testni kodga emas, balki talabga (kutilayotgan to'g'ri qiymat) muvofiq chop etganda, test qizil rangga aylanadi va haqiqiy xatolik yuzaga keladi. Sinovlar koddan emas, balki kutishdan olinishi kerak.
Umumiy xatolar
- Ma'nosiz da'vo. "Xato yo'q" etarli emas; To'g'ri qiymat tekshirilishi kerak.
- Sifat bilan qamrovni chalkashtirib yuborish. Yuqori qamrov aniq natijalarning kafolati emas.
- Testni kod bo'yicha chop etish. Joriy xatoni "to'g'ri" ga tuzatadi; Sinovlar kutilganidan kelib chiqishi kerak.
- Cheklangan qiymatlarni o'tkazib yuborish. > ni >= bilan chalkashtirish eng keng tarqalgan xatodir; chegara juftlari sinovdan o'tkazilishi kerak.
- Sinovning o'zini tekshirmaydi. Kodni buzganingizda qizil rangga aylanmaydigan test himoyani ta'minlamaydi.
Xulosa
Yaxshi sinov to'plami ishonch bilan o'zgarishlarni amalga oshirishning kalitidir. AI tezda ko'plab stsenariylar, chegaralar va salbiy vaziyatlarni yaratadi; Ammo agar u testlarni talablardan ko'ra koddan olsa, u mavjud xatolarni tuzatishi yoki har doim o'tib ketadigan ma'nosiz testlarni yozishi mumkin. Har bir testda kutilgan aniq qiymatni tasdiqlang, bog'langan juftlarni qo'shing va kodni ataylab buzish orqali testlaringiz haqiqatda himoyalanganligini tekshiring. Tasdiqlash doirasi soni emas, balki uning mazmuni sifatni belgilaydi.
Ilova vazifasi
Funktsiyani tanlang va to'rtta toifada (normal, chegara, salbiy, xatolik) testlarni keng qamrovli yaratish taklifi bilan yarating; Har bir testda aniq kutilgan qiymatni tasdiqlang. Keyin zaifliklarni aniqlash bo'yicha ko'rsatmalarni ishga tushiring, kodda 5 ta kichik mutatsiyani taklif qiling va qaysi biri ushlanganligini tekshirish uchun testlarni o'tkazing. Tugallanmagan kamida bitta mutatsiya uchun yangi test qo'shing va u hozir qizil rangda ekanligini ko'rsating.
nazorat ro'yxati
- [ ] Men testlarni kodga emas, balki kutilgan/to'g'ri xatti-harakatlarga asoslangan holda chop qildim.
- [ ] Men oddiy, chegara, salbiy va xato stsenariylarini ko'rib chiqdim.
- [ ] Men har bir testda kutilgan aniq qiymatni tasdiqladim.
- [ ] Men chegara juftlarini sinab ko'rdim (faqat yuqorida / pastda).
- [ ] Kodni ataylab buzish orqali men testlar qizil rangga aylanganini tasdiqladim.
- [ ] Men aniqlanmagan mutatsiyalar uchun yangi test qo'shdim.