бирдиги 6 / 11

Жасалма интеллект менен тестти түзүү: блок, интерфейс жана автоматташтыруу тесттери

Пайдалар:

  • Сыноо пирамидасына ылайык жасалма интеллект менен бирдикти, интеграцияны жана UI тесттерин өндүрүү жана чектөө жана ката кырдаалдарын, ошондой эле бактылуу сценарийлерди жабуу мүмкүнчүлүгү
  • Ар бир жасалган тест чындыгында жүрүм-турумду ырастай турганын текшерүү менен бош/пайдасыз тесттерди жана толтурулган камтууну жок кылуу мүмкүнчүлүгү
  • Сыноо мүчүлүштүктөрдү аныктап, AIга код эмне кылышы керектигин айтып, катаны оңдоого жол бербейт.

Кодду жазуу жумуштун жарымы; Коддун туура иштешин далилдөө - бул экинчи жарым. Мобилдик колдонмолор жүздөгөн ар кандай түзмөктөргө, экрандын өлчөмдөрүнө, операциялык системанын версияларына жана колдонуучунун жүрүм-турумуна туш болушат. Булардын баарын кол менен сынап көрүү мүмкүн эмес; Ошондуктан автоматташтырылган тестирлөө (код тестирлөө коду — адамдын чыкылдатуусу жок иштеген тест) мобилдик сапаттын негизи болуп саналат. AI тесттерди жазууда укмуштуудай натыйжалуу, анткени жазуу тесттери дал ушундай үлгү ишинин түрү болуп саналат: конкреттүү киргизүү үчүн белгилүү бир жүрүм-турумду текшерүү. Бул бөлүмдө биз бирдикти тестирлөө, интерфейсти тестирлөө жана AI менен автоматташтырууну кантип тездетүүнү үйрөнөбүз, бирок тесттин сапатын адамдын көзү менен камсыздайбыз.

Сыноо пирамидасы: эмнени жана канчаны текшерүү керек

Дени сак тестирлөө стратегиясы пирамидага окшош. Базага көп сандагы бирдик тесттери кирет (бир функцияны же классты өзүнчө сынаган тез тестирлөө); алар тез жана арзан. Ортодо интеграциялык тестирлөө азыраак (бир нече бөлүктөрдүн чогуу иштешин текшерүү). Жогору жагында минималдуу UI/аягына чейин тестирлөө бар (тестирлөө колдонуучу кылгандай экранды чыкылдатуу менен жүргүзүлөт); алар реалдуу, бирок жай жана морт. AI ар бир катмарда жардам берет, бирок эң баалуусу базада: бизнес логикасынын тесттерин тез чыгаруу.

Сыноо түрү

Колдонуу чөйрөсү

ылдамдык

AI натыйжалуулугу

бирдик сыноо

Жалгыз функция/класс

абдан тез

абдан бийик

интеграция

аралык катмар

орто

бийик

UI / аягына чейин

Бардык экран агымы

жай

Орто (морт)

Кеңеш: AIга "бул функция үчүн тесттерди түзүүнү" айтып жатканда, ачык түрдө четтөө учурларын сураңыз: бош киргизүү, нөл, терс сан, өтө чоң маани, тармак катасы. AI оңой жолду жаратат; Чыныгы каталар чек араларда жашынып, эгер каалабасаңыз, сыртка секирип кетет.

AI менен тест жазуу кадамдары

  1. Сыналуучу жүрүм-турумду аныктаңыз. "Бул функция бул киргизүүгө бул чыгарууну бериши керек."
  2. Алкакты белгилеңиз. Android'де JUnit + MockK, iOS'то XCTest, UI үчүн Espresso (Android) же XCUITest (iOS).
  3. Чектөө мамлекеттерин сураңыз. Бактылуу сценарий + ката + үзүлүү чекиттери.
  4. Жасалма объекттерди башкарыңыз. Тармак жана маалымат базасы сыяктуу тышкы көз карандылыктар тестирлөө үчүн эмуляцияланат (иш жүзүндө кызматтын ордуна шылдың — башкарылган шылдың).
  5. Сыноону жүргүзүп, текшериңиз. Сыноо өтүп жатабы, ал чындап эле маанилүү нерсени тастыктайбы?

Бешинчи кадам абдан маанилүү. AI кээде "ар дайым өтүп" пайдасыз тесттерди чыгарат; мисалы, эч нерсени текшербеген же өзүнүн жасалма маалыматтарын текшерген тест. Өтүп жаткан сыноо жана баалуу сыноо эки башка нерсе.

Эскертүү: AI өндүрө алганы тесттин туура экенин билдирбейт. Кээде AI коддун учурдагы (балким, туура эмес) жүрүм-турумун "туура" деп кабыл алып, ошого жараша тесттерди жазат. Мындай тестирлөө катаны кармоонун ордуна оңдойт. Сыноо эмнени күтөрүн сиз аныктайсыз; Код эмне кылганын эмес, AI эмне кылышы керектигин айтыңыз.

Тест камтуу чарасы жана жаңылыштык

Сыноо камтуусу (коддун канча пайызы тесттер тарабынан иштетилет) пайдалуу, бирок адаштыруучу көрсөткүч. 90% камтуу коддун 90% аткарылганын билдирет; бирок ал линиялардын туура иштеп жаткандыгы текшерилген жок. Сапты иштеткен жана натыйжаны текшербеген тест масштабды көбөйтөт, бирок коопсуздукту камсыз кылбайт. Максат - жогорку сандар эмес, бирок маанилүү текшерүү. Сиз AI менен тез масштабды өстүрө аласыз, бирок ар бир тест иш жүзүндө жүрүм-турумду сынап жатканын текшериңиз.

үч мини учурлар

1-жагдай - Чек арадагы абал. AI банктык тиркемеде акча которуу функциясы үчүн тесттер суралып, өзгөчө "терс сумма" жана "баланс ашык" сценарийлери кошулган. Тест терс сумма менен которуу бөгөттөлбөгөнүн көрсөттү; бул өндүрүштөгү коопсуздуктун олуттуу кемчилиги болмок. Бир сап башкарууну кошуу менен жабылды. Сабак: чек ара тесттери эң баалуу тесттер.

2-жагдай - жасалма тест. Бир команда AI тарабынан жасалган 40 бирдик тесттери менен камтууну 85% га көтөрүү үчүн жеңилдеди. Текшерүү учурунда, көпчүлүк тесттер иш жүзүндө эч кандай жыйынтыкты текшербегени, алар жөн гана функцияны чакырып, assertTrue(true) деп жазганы байкалды. Камтуу жогорку, бирок коргоо нөл болгон. Тесттер кайра каралып, чыныгы валидациялар менен кайра жазылды. Сабак: камтуу сандары калп айтышы мүмкүн.

3-жагдай - UI тестирлөө тездетилди. Электрондук коммерция командасы AI менен 20 мүнөттүн ичинде арабага кошуу агымынын XCUITest сценарийин жазган; Кол менен жазса жарым суткага кетмек. AI болжолдогон экран элементтеринин идентификаторлору; Команда аларды чыныгы код менен дал келтирип, оңдоп койду. Долбоордун ылдамдыгы реалдуу, бирок идентификаторду текшерүү адамдын иши.

Алсыз тездик / Күчтүү тездик

Алсыз эскертүү: "Бул функция үчүн тест жазыңыз."

Күчтүү сунуш: "JUnit5 + MockK менен бул Котлин функциясы үчүн бирдик тесттерин чыгарыңыз. Функция: акча которуу (сумма, булак, максат). Сыноо үчүн жүрүм-турумдар (код эмне кылышы керек):- Жарактуу которуу ийгиликтүү болушу керек - Терс же нөл сумманы четке кагуу керек - Баланстан чоңураак сумма четке кагылышы керек - Тармактын катасы бир гана аталыштан башка ыргытылышы керек. сыпаттоо, сырткы кызматты шылдыңдоо, куру ырастоону жазбаңыз.

Көчүрмө шаблондор

Бирдиктин тестинин шаблону: "[тил] үчүн бул функция үчүн [JUnit/XCTest] бирдик тесттерин түзүңүз. Күтүлгөн жүрүм-турум: [эмне кылуу керек]. Камтыңыз: бактылуу сценарий, нөлдүк киргизүү, үзгүлтүккө учуроо чекиттери, ката учуру. Ар бир тест бир жүрүм-турумду текшерсин; маанилүү ырастоону колдонуңуз; шылдыңдоо. [код]"

UI сыноо үлгүсү: "[Espresso/XCUITest] менен төмөнкү агымдын UI сынагын жазыңыз: [колдонуучунун агымы этап-этабы]. Атайын мүмкүнчүлүктөр идентификатору бар экран элементтерин тандаңыз, тексттин ордуна id колдонуңуз. Күтүү стратегиясын кошуңуз. Элементтин идентификаторлорун чыныгы код менен далдаштырууну эскертиңиз."

Текшерүү аудитинин шаблону:"Бул тесттерди карап көрүңүз:1) Алар чындыгында жыйынтыкты/жүрүм-турумду текшерип жатабы же алар нөлбү?2) Алар чектөө учурларын камтыйбы?3) Алар кодду оңдоп же туура жүрүм-турумду күтөбү? Алсыз тесттерди белгилеңиз жана күчөтүңүз. [тесттер]"

Камтууну оптималдаштыруу шаблону: "Бул класстын текшерилбеген бөлүктөрүн аныктап, маанилүү тесттерди сунуштаңыз. Камтуулардын санын эле эмес, реалдуу коркунучу бар жолдорго артыкчылык бериңиз. [код]"

Жалпы каталар

  • Жөн гана бактылуу сценарийди сыноо. Каталар чектик абалда сакталат; Аларды ачык сурагыла.
  • Бош/пайдасыз тестти кабыл алуу. assertTrue(true) тибиндеги тесттер масштабды көбөйтөт жана эч кандай коргоону камсыз кылбайт.
  • AI коддун эмне кылып жатканын текшерет. Тестирлөө коддун эмне кылышын күтүшү керек; антпесе катаны оңдойт.
  • Максат үчүн масштабдын номерин жаңылыштык. 90% камтуу 90% тактык дегенди билдирбейт.
  • UI сынагында текстке шилтемелөө. Текст өзгөргөндө тест бузулат; Туруктуу идентификаторду (id) колдонуңуз.
  • Мазактарды туура эмес орнотуу. Чыныгы кызматты чакырган "бирдик сыноо" жай жана морт болот.

Кыскача айтканда

Тестирлөө мобилдик сапаттын негизи болуп саналат жана AI бул чөйрөдө, айрыкча бирдикти тестирлөөдө абдан натыйжалуу. Сыноо пирамидасын аткарыңыз: көп бирдиктер, орто интеграция, аз UI тести. Бактылуу сценарийди, ошондой эле учурларды жана ката жолдорун чектөө үчүн AIдан ачык сураңыз. Түзүлгөн ар бир тест иш жүзүндө жүрүм-турумду ырастаарын текшериңиз; Бош тесттер жана көбүртүлгөн камтуу жаңылыштык болуп саналат. Эң негизгиси, AIга код эмне кылышы керек экенин айтыңыз, ал эмне кылышы керек, ошондуктан тест аны оңдобой, катаны кармап калат.

Колдонмо тапшырмасы

Бизнес логикалык функциясы үчүн (мисалы, арзандатууларды эсептөө же форманы текшерүү) "Бирдиктин тестинин шаблону" аркылуу AIдан сыноолорду сураныңыз жана чектик учурларды ачык көрсөтүңүз (нөл, терс, өтө чоң). Түзүлгөн тесттерди иштетиңиз, андан кийин ошол эле тесттерди "Тест аудитинин шаблону" менен текшериңиз. Жок дегенде бир алсыз тестти табыңыз, аны бекемдеңиз жана тесттер функциянын чыныгы катасын байкап калбасын текшериңиз (кичинекей мүчүлүштүктөрдү кошуу менен).

текшерүү тизмеси

  • [ ] Мен сыноо пирамидасы үчүн ылайыктуу катмарды тандадым (артыкчылык бирдиги)
  • [ ] Мен бактылуу сценарийден тышкары чектөө жана ката учурларын кааладым
  • [ ] Ар бир тестте маанилүү ырастоо бар экенин текшердим
  • [ ] Мен AIга код эмне кылышы керек экенин айттым, ал эмне кылат
  • [ ] Мен камтуулардын санына эмес, чыныгы тобокелдик жолдоруна басым жасадым
  • [ ] Мен UI тесттеринде туруктуу идентификаторду колдондум, текстке байланган жокмун