Birlik 4 / 11

UI testini avtomatlashtirish: AI yordamida Selen, dramaturg va Cypress kodlarini yaratish

Daromadlar:

  • Sun'iy intellekt, shu jumladan ma'lumotlar testi, ochiq kutish va haqiqiy foydalanuvchi natijasini tasdiqlovchi tasdiqlash bilan mustahkam UI test kodini ishlab chiqarish qobiliyati
  • Mo'rt sinovlardan qochish qobiliyati (yomon tanlov, ko'r-ko'rona kutish) va sahifa ob'ekti modeli tuzilmasida testlarni oson saqlash.
  • Kodni buzish orqali ishlab chiqarilgan har bir UI testini sinab ko'rish va soxta o'tgan testlarni aniqlash va tuzatish qobiliyati

Har bir bosish, har bir shaklni to‘ldirish, foydalanuvchi brauzerda qilgan har bir sahifaga o‘tishni qo‘lda qayta-qayta sinab ko‘rish mumkin emas — shuning uchun UI testini avtomatlashtirish (foydalanuvchi interfeysi; bu testlar haqiqiy brauzerni dasturiy ravishda boshqarish orqali foydalanuvchi xatti-harakatlarini taqlid qiladi) mavjud. Selen, dramaturg va Cypress - bu ish uchun eng keng tarqalgan vositalar. Sun'iy intellekt (AI) ushbu vositalar uchun kodni yozishda yuqori malakaga ega: siz sinov ishini tasvirlaysiz, AI sizga ishlaydigan avtomatlashtirish skriptining loyihasini beradi. Ammo bu erda ushbu modulning markaziy ogohlantirishi yana kuchga kiradi: AI ishlab chiqaradigan UI test kodi ko'pincha "yashil rangda yonadi, lekin noto'g'ri narsani tasdiqlaydi" yoki shamolda chayqaladigan nozik testlar bo'lishi mumkin. Sizning vazifangiz ushbu kodni ishga tushirish emas, balki u haqiqatan ham to'g'ri narsani ishonchli tarzda tekshirishiga ishonch hosil qilishdir.

Ushbu bo'limda biz sun'iy intellekt yordamida mustahkam, texnik xizmat ko'rsatadigan va haqiqatda tasdiqlovchi UI testlarini ishlab chiqarishni maqsad qilganmiz; Siz mo'rt sinovlardan qochishni o'rganasiz.

Qattiq UI sinovining uchta ustuni

1. Elementni to'g'ri aniqlash. Test sahifadagi elementni topish uchun selektordan foydalanadi. AI ko'pincha mo'rt selektorlarni ishlab chiqaradi: uzun XPath yo'llari (manzil sahifa tuzilishiga juda bog'liq), CSS sinf nomlariga asoslangan selektorlar (dizayn o'zgarganda tanaffus). Ishonchli yo'l - ishlab chiquvchi sinov uchun qo'shgan data-testid kabi barqaror atributlar. Buni AIga aniq yuklang.

2. Aniq kutish. UI testidagi zaiflikning birinchi raqamli manbai vaqtdir. Doimiy uyqu (3) (ko'r-ko'rona kutish) yomon amaliyotdir: ba'zida bu etarli emas, ba'zida vaqtni behuda sarflaydi. To'g'ri yo'l "ushbu element paydo bo'lguncha kuting" degan aniq kutishdan foydalanishdir. Dramaturg buni asosan avtomatik tarzda qiladi; Selenyumda siz buni aniq talab qilishingiz kerak.

3. Ma’noli tasdiq. Sinov foydalanuvchi haqiqatda ko'radigan natijani tekshirishi kerak - masalan, "buyurtma raqami ekranda paydo bo'ldi", "sahifa yuklangan" emas. Agar AI tomonidan ishlab chiqarilgan test tasdiqga ega bo'lmasa yoki ahamiyatsiz bo'lsa, bu test psevdo-pas (1-birlik) hosil qiladi.

Diqqat: AI tomonidan yaratilgan UI testini birinchi marta ko'rganingizda, ko'pi bilan uchta narsani tekshiring: selektorlar sozlanganmi (ma'lumotlar sinovi), kutilmoqdami (ko'r uyqu yo'q) va tasdiqlash foydalanuvchining haqiqiy natijasini tasdiqlaydimi? Agar bu uchtasi yaxshi bo'lsa, test ishonchli bo'lishi mumkin.

Sahifa obyekti modeli

Sinovlar kattalashgani sayin, har bir test ichida selektorlarni yozish parvarishlash dahshatiga aylanadi. Sahifa obyekti modeli (POM — har bir sahifa/ekran uchun selektorlar va amallarni bitta sinfga to‘playdigan dizayn namunasi) selektorni bir joyda saqlaydi; Interfeys o'zgarganda, siz uni bitta faylda yangilaysiz. AI testlarni to'g'ridan-to'g'ri emas, balki POM tuzilishida ishlab chiqarsin; Bu parvarishlashni tubdan osonlashtiradi.

Zaif taklif / Kuchli taklif

Zaif: "Kirish sahifasi uchun Selenium testini yozing."
Kuchli: "Playwright (TypeScript) yordamida kirish oqimi testini yozing. Tanlovchilar faqat data-testiddan foydalanadi; sahifa sarlavhasini emas, foydalanuvchi koʻrgan narsani boshqarishdan foydalanmang."

Kuchli tezkor; Asbob til, selektor siyosati, kutish strategiyasi, arxitektura (POM) va ekspressiv tasdiqlash kutishlarini beradi.

Sinov ma'lumotlari va atrof-muhit mustaqilligi

Qattiq UI testi nafaqat to'g'ri yozilgan, balki o'zining test ma'lumotlarini tuzadi va tozalaydi. AI tomonidan yaratilgan testlar odatda muhitda mavjud deb taxmin qilingan foydalanuvchi yoki yozuvga bog'lanadi (“administrator foydalanuvchi sifatida tizimga kiring”). Sinov boshqa muhitda yoki boshqa sinovdan so'ng (9-bo'limdagi tartib bog'liqligi muammosi) bu taxmin buziladi. Haqiqat shundaki, har bir test sinovning boshida kerakli ma'lumotlarni yaratadi (yoki uni API chaqiruvi bilan tayyorlaydi) va oxirida uni tozalaydi. AIga "bu test sinov doirasida bog'liq bo'lgan har qanday ma'lumotlarni o'rnatish; tashqaridan tayyor ma'lumotlarni o'ylamang" haqida aniq ko'rsatma bering.

Yana bir muhim nuqta, haqiqiy foydalanuvchi ma'lumotlari bilan UI testini o'tkazmaslikdir. Agar ishlab chiqarish ma'lumotlar bazasi nusxasi sinov muhitida ishlatilsa, bu yozuvlar jismoniy shaxslarning ma'lumotlari; skrinshotlar va test yozuvlari bu ma'lumotlarni ko'rsatishi mumkin. Sintetik (hayoliy) test hisoblaridan foydalaning; u ham maxfiylikni himoya qiladi, ham testlarni takrorlanuvchan qiladi. Haqiqiy mijoz hisobi bilan "buyurtmani bekor qilish" testini o'tkazish ham axloqiy, ham operatsion xatodir.

Maslahat: UI testlarini iloji boricha kamroq qiling; Haqiqiy tekshirishni API va birlik testlariga qoldiring, ular tez va barqaror. UI testi qimmat va mo'rt - undan faqat oxirgi foydalanuvchi oqimini tekshirish uchun foydalaning (sinov piramidasi mantig'i).

Avtomobilni taqqoslash

xususiyat

selen

dramaturg

sarv

tillar

Java, C#, Python, JS

JS/TS, Python, .NET, Java

JavaScript/TypeScript

avtomatik kutish

Yo'q (qo'lda)

Ha (kuchli)

Ha

Ko'p brauzer

keng

Chromium/Firefox/WebKit

Xrom-dominant

mo'rtlikka moyillik

Yuqori (qo'lda kutish)

past

past

O'rganish qulayligi

o'rta

oson

oson

parallel ishlash

To‘r kerak

o'rnatilgan

Rezident / to'langan

AIdan kod so'raganda, u qaysi avtomobilga tegishli ekanligini aniq ko'rsating; Aks holda, u chalkash, ishlamaydigan kod ishlab chiqishi mumkin.

To'rt nusxa ko'chirish shablonlari

1) Qattiq UI testini yaratish:

Sizning rolingiz: sinovlarni avtomatlashtirish bo'yicha katta muhandis. Quyidagi oqim uchun [asbob + til] bilan testlarni yozing: [oqim]. Qoidalar: - Faqat ma'lumotlar-testid tanlovchilari; XPath/CSS-sinfidan foydalanish. - ko'r uyqu yo'q; Aniq/avtomatik kutishdan foydalaning. - Sahifa obyekti modelini qo‘llash. - Har bir tasdiqlovchiga foydalanuvchining haqiqiy natijasini tekshirishga ruxsat bering. Qaysi qabul mezonlarini tasdiqlayotganingizni har bir test boshida izohlang.

2) Mo'rtlikni nazorat qilish:

Quyidagi UI testini mo'rtlik uchun tekshiring: - Beqaror selektor mavjudmi (uzun

3) Sahifa obyektiga aylantirish:

Quyidagi oddiy test kodini Page Object Model tuzilishiga aylantiring. Tanlovchilar va amallarni sahifa sinflariga o'tkazish; Sinov fayliga faqat stsenariy oqimini o'qishga ruxsat bering. [Asbob/til].Kod: [kodni joylashtirish]

4) Pseudo-o'tish isboti:

Ushbu UI testi haqiqatan ham tasdiqlanishini isbotlang: Ushbu testni QIZILga aylantiradigan ilova kodiga qanday o'zgartirish kiritaman? Agar siz testni buzadigan o'zgarishlarni topa olmasangiz, test etarli emas; etishmayotgan tasdiqlarni qo'shing.Test: [testni joylashtirish]

uchta mini holat

1-holat - Mo'rt selektordan ozod qilish. Bir guruh AI bilan ishlab chiqarilgan 40 ta testdan 70% interfeys yangilanganidan keyin buzilgan; ularning hech biri haqiqiy xatolar emas edi, ularning barchasi mo'rt XPath selektorlari edi. Jamoa testlarni "mo'rtlikni tekshirish" shabloniga ega ma'lumotlar bazasiga aylantirdi. Keyingi uchta interfeys yangilanishi davomida noto'g'ri tanaffuslar soni nolga kamaydi; parvarishlash vaqti haftasiga 6 soatdan 30 daqiqagacha kamaydi.

2-holat - soxta o'tish UI testi. AI "savatga qo'shish" testini ishlab chiqdi; test yashil edi. “Fe-proof-of-pasage” shablonini ishga tushirganda, sinov faqat tugmani bosish va sahifa sarlavhasini tekshirib ko'rdi va arava hisoblagichi ko'paygan yoki ko'tarilmaganligini hech qachon tekshirmadi. Arava mantig'i butunlay buzilgan bo'lsa ham, sinovdan o'tdi. Haqiqiy tasdiq qo‘shildi (savat nishoni “1”).

3-holat - Ko'r-ko'rona kutish tuzog'i. AI tomonidan ishlab chiqarilgan Selenium testida har bir qadamdan keyin uyqu (2) bor edi; 60 ta test 14 daqiqa davom etdi va vaqti-vaqti bilan sindirildi. Ochiq kutish rejimiga o'tgandan so'ng (elementni bosish mumkin bo'lishini kuting) vaqt 5 daqiqaga tushdi va mo'rtlik yo'qoldi. Ko'r-ko'rona kutish ham sekin, ham ishonchsiz edi.

Umumiy xatolar

  • Nozik tanlovchilarga rozilik bildirish. AI tomonidan yaratilgan uzun XPathlardan avvalgidek foydalanish; Sinovlar birinchi interfeys o'zgarishida ishdan chiqadi.
  • Ko'r "uyqu" qoldirish. Belgilangan kutish bilan vaqtni "hal qilish"; ham sekin, ham qat'iyatsiz.
  • Arzimas da'vo. Faqat sahifa yuklanganligini tekshiring; haqiqiy foydalanuvchi natijasini tekshirmaslik (soxta o'tish).
  • POMsiz o'sing. Har bir test uchun selektorlarni taqsimlang; Interfeys o'zgarganda o'nlab fayllarni qo'lda yangilash.
  • Asbob aniqlanmagan. AIga qaysi vositani/tilni xohlayotganingizni aytmaslik; tartibsiz, ishlamaydigan kodni olish.
  • Yaratilgan kodni ishga tushirganda va o'tishda ishonch. Kodni buzish orqali sinovdan o'tkazilmaydi.

qisqa bayoni; yakunida

UI sinovini avtomatlashtirish dastur bilan haqiqiy brauzerni boshqarish orqali foydalanuvchi xatti-harakatlarini tekshiradi. Sun'iy intellekt ushbu kodni tezda yaratadi, ammo ikkita katta xato mavjud: mo'rt sinovlar (yomon tanlov, ko'r-ko'rona kutish) va soxta o'tish testlari (to'liq bo'lmagan/arzimas tasdiq). Qattiq UI testining uchta ustuni - bu majburiy selektor (ma'lumotlar testi), aniq kutish va foydalanuvchining haqiqiy natijasini tasdiqlovchi tasdiqlash. Sahifa ob'ekt modelida yaratilgan testlarga ega bo'lish texnik xizmatni tubdan osonlashtiradi. Har bir yaratilgan testni “qanday o'zgarish buzadi?” degan savol bilan sinab ko'ring.

Ilova vazifasi

O'zingizning loyihangizdan foydalanuvchi oqimini tanlang (masalan, kirish yoki qidirish). AI testlarini "mustahkam UI testini yaratish" shabloniga ega bo'lsin. Keyin: (1) selektorlarni tekshiring va tuzating va "mo'rtlik tekshiruvi" bilan kuting, (2) har bir test haqiqatda "psevdo-o'tish isboti" bilan tasdiqlanganligini isbotlang, (3) kodni buzing va test qizil rangga aylanganini kuzating. Ishlab chiqarilgan va tuzatilgan testlar soni hamda siz topilgan zaifliklar va psevdo-paslar soni haqida xabar bering.

nazorat ro'yxati

  • [ ] Men AIga vosita, til, selektor siyosati va arxitekturasini (POM) aniq berdim.
  • [ ] Men selektorlar ma'lumotlarga asoslanganligini tasdiqladim.
  • [ ] Men koʻr uyqu oʻrniga aniq/avtomatik kutishdan foydalanishga ishonch hosil qildim.
  • [ ] Men har bir tasdiq haqiqiy foydalanuvchi natijasini tekshirishini tekshirdim.
  • [ ] Men har bir testni kodni buzish orqali sinab ko'rdim; Men uning qizil rangga aylanganini ko'rdim.
  • [ ] Men testlarni Page Object Model tuzilishida to‘pladim.