Табыстар:
- Жасанды интеллектпен сенімді UI сынақ кодын жасау мүмкіндігі, соның ішінде деректерді тексеру, ашық күту және пайдаланушының нақты нәтижесін растайтын бекіту
- Нәзік сынақтардан (нашар селектор, соқыр күту) аулақ болу және Бет нысанының үлгісі құрылымында сынақтарды оңай жүргізу мүмкіндігі
- Кодты бұзу арқылы жасалған әрбір UI тестін тексеру және жалған өткен сынақтарды анықтау және түзету мүмкіндігі
Әрбір басу, әрбір пішінді толтыру, пайдаланушы браузерде жасаған әрбір бет ауысуын қолмен қайта-қайта тексеру мүмкін емес — сондықтан UI сынақ автоматтандыруы (пайдаланушы интерфейсі; бұл сынақтар нақты браузерді бағдарламалық басқару арқылы пайдаланушы әрекетін еліктейді) бар. Selenium, Drawright және Cypress - бұл жұмыс үшін ең көп таралған құралдар. Жасанды интеллект (AI) осы құралдардың кодын жазуда жоғары білікті: сіз сынақ жағдайын сипаттайсыз, AI сізге автоматтандырудың жұмыс істейтін сценарийінің жобасын береді. Бірақ бұл жерде осы модульдің орталық ескертуі қайтадан іске қосылады: AI шығаратын UI сынақ коды көбінесе «жасыл жанып тұратын, бірақ дұрыс емес нәрсені тексеретін» немесе желде қалқып тұратын нәзік сынақтар болуы мүмкін. Сіздің міндетіңіз бұл кодты іске қосу емес, оның дұрыс нәрсені шынымен тексеретініне көз жеткізу.
Бұл бөлімде біз AI көмегімен сенімді, техникалық қызмет көрсетуге болатын және шынымен растайтын UI сынақтарын шығаруды мақсат етеміз; Сіз нәзік сынақтардан аулақ болуды үйренесіз.
Қатты UI тестілеуінің үш тірегі
1. Элемент локаторын түзетіңіз. Сынақ беттегі элементті табу үшін селекторды пайдаланады. AI жиі сынғыш селекторларды шығарады: ұзын XPath жолдары (мекен-жайы бет құрылымына тым тәуелді), CSS класс атауларына негізделген селекторлар (дизайн өзгерген кезде үзіліс). Тестілеу үшін әзірлеуші қосқан деректер-testid сияқты тұрақты атрибуттар сенімді әдіс болып табылады. Мұны AI-ға анық жүктеңіз.
2. Ашық күту. UI тестілеуіндегі осалдықтың бірінші көзі - уақыт. Тұрақты ұйқы (3) (соқыр күту) жаман тәжірибе: кейде бұл жеткіліксіз, кейде уақытты босқа өткізеді. Дұрыс жол - «осы элемент пайда болғанша күтіңіз» деген анық күтуді пайдалану. Драматург мұны негізінен автоматты түрде жасайды; Selenium-да сіз оны нақты сұрауыңыз керек.
3. Мағыналы бекіту. Сынақ пайдаланушы шынымен көретін нәтижені тексеруі керек, мысалы, «бет жүктелген» емес, «экранда тапсырыс нөмірі пайда болды». Егер АИ жасаған сынақта бекіту болмаса немесе маңызды емес болса, бұл сынақ жалған өту (1-бірлік) береді.
Ескерту: AI арқылы жасалған UI сынағы алғаш рет көргенде, ең көбі үш нәрсені тексеріңіз: селекторлар орындалды ма (деректер сынақтары), күтулер қосулы (соқыр ұйқы жоқ) және бекіту нақты пайдаланушы нәтижесін тексере ме? Егер бұл үшеуі дұрыс болса, сынақ сенімді болуы мүмкін.
Бет нысанының үлгісі
Сынақтар ұлғайған сайын, әрбір сынақтың ішіндегі селекторларды жазу техникалық қызмет көрсету қорқынышына айналады. Бет нысанының үлгісі (POM — әрбір бет/экран үшін селекторлар мен әрекеттерді бір сыныпқа жинайтын дизайн үлгісі) селекторды бір жерде сақтайды; Интерфейс өзгерген кезде оны бір файлда жаңартасыз. AI сынақтарды тікелей емес, POM құрылымында шығарсын; Бұл техникалық қызмет көрсетуді айтарлықтай жеңілдетеді.
Әлсіз шақыру / Күшті шақыру
Әлсіз: «Кіру парағы үшін Selenium сынағын жазыңыз».
Күшті: "Playwright (TypeScript) көмегімен кіру ағынының сынағын жазыңыз. Таңдаушылар тек data-testid пайдаланады; бет тақырыбын емес, пайдаланушы көретін бақылауды пайдаланбаңыз."
Күшті жеделдік; Құрал тілді, селекторлық саясатты, күту стратегиясын, архитектураны (POM) және экспрессивті бекіту күтуін береді.
Сынақ деректері және қоршаған ортаның тәуелсіздігі
Қатты UI сынағы тек дұрыс жазылмайды, сонымен қатар өзінің сынақ деректерін құрастырады және тазартады. AI жасаған сынақтар көбінесе ортада бұрыннан бар деп есептелетін пайдаланушыға немесе жазбаға сілтеме жасайды («әкімші пайдаланушы ретінде кіру»). Бұл болжам сынақ басқа ортада немесе басқа сынақтан кейін орындалғанда бұзылады (9 блоктағы тәртіпке тәуелділік мәселесі). Шындық мынада, әрбір сынақ сынақтың басында қажетті деректерді жасайды (немесе оны API шақыруымен дайындайды) және соңында оны тазартады. Жасанды интеллектке «бұл сынақ сынаққа байланысты кез келген деректерді орнатуды; сырттан дайын деректерді қабылдамаңыз» деп нақты нұсқау беріңіз.
Тағы бір маңызды мәселе UI тестін нақты пайдаланушы деректерімен жасамау. Егер сынақ ортасында өндірістік деректер қорының көшірмесі пайдаланылса, бұл жазбалар нақты тұлғалардың деректері болып табылады; скриншоттар мен сынақ жазбалары бұл деректерді ашуы мүмкін. Синтетикалық (ойдан шығарылған) сынақ шоттарын пайдалану; ол құпиялылықты қорғайды және сынақтарды қайталанатын етеді. Нақты тұтынушы тіркелгісі арқылы «тапсырыстың күшін жою» тестін өткізу этикалық және операциялық қате болып табылады.
Кеңес: UI сынақтарын мүмкіндігінше аз ұстаңыз; Нақты тексеруді жылдам және тұрақты API және бірлік сынақтарына қалдырыңыз. UI тестілеуі қымбат және сынғыш — оны тек түпкілікті пайдаланушы ағынын тексеру үшін пайдаланыңыз (пирамида логикасын тексеру).
Көлікті салыстыру
ерекшелігі
селен
драматург
кипарис
тілдер
Java, C#, Python, JS
JS/TS, Python, .NET, Java
JavaScript/TypeScript
автоматты күту режимі
Жоқ (қолмен)
Иә (күшті)
Иә
Көп браузер
кең
Chromium/Firefox/WebKit
Хром басым
сынғыштыққа бейімділік
Жоғары (қолмен күту режимі)
төмен
төмен
Оқу жеңілдігі
орташа
оңай
оңай
параллель жұмыс
Тор қажет
кіріктірілген
Резидент/төленген
AI-дан код сұраған кезде оның қай көлікке тиесілі екенін нақты көрсетіңіз; Әйтпесе, ол түсініксіз, жұмыс істемейтін кодты шығаруы мүмкін.
Көшірілетін төрт үлгі
1) Қатты UI сынақ генерациясы:
Сіздің рөліңіз: сынақ автоматикасының аға инженері. Келесі ағын үшін [құрал + тіл] көмегімен сынақтарды жазыңыз: [ағыны]. Ережелер:- Тек деректер-тексерілетін селекторлар; XPath/CSS-сыныбын пайдалану. - соқыр ұйқыға болмайды; Ашық/автоматты күтуді пайдаланыңыз. - Бет нысанының үлгісін қолдану. - Әрбір бекітуге пайдаланушының нақты нәтижесін тексеруге мүмкіндік беріңіз. Әрбір сынақтың басында қандай қабылдау критерийлерін растайтыныңызды түсіндіріңіз.
2) сынғыштықты бақылау:
Төмендегі UI сынағының сынғыштығын тексеріңіз: - Тұрақсыз селектор бар ма (ұзын
3) Бет нысанына түрлендіру:
Келесі қарапайым сынақ кодын Бет нысанының үлгісі құрылымына түрлендіріңіз. Селекторлар мен әрекеттерді бет сыныптарына жылжыту; Сынақ файлына тек сценарий ағынын оқуға рұқсат етіңіз. [Құрал/тіл].Код: [кодты қою]
4) Псевдо-өту дәлелі:
Бұл UI сынағы шынымен растайтынын дәлелдеңіз: Мен осы сынақты ҚЫЗЫЛ етіп көрсететін қолданба кодына қандай жалғыз өзгеріс енгіземін? Егер сіз сынақты бұзатын өзгеріс таба алмасаңыз, сынақ жеткіліксіз; жетіспейтін бекітулерді қосыңыз. Тест: [қою сынағы]
үш шағын іс
1-жағдай — Нәзік селектордан босату. AI көмегімен бір топ жасаған 40 сынақтың 70% интерфейсті жаңартудан кейін бұзылды; олардың ешқайсысы нақты қателер емес, олардың барлығы нәзік XPath селекторлары болды. Команда сынақтарды «сынғыштықты тексеру» үлгісімен деректер-тест базасына түрлендірді. Келесі үш интерфейс жаңартуында жалған үзілістер саны нөлге дейін төмендеді; техникалық қызмет көрсету уақыты аптасына 6 сағаттан 30 минутқа дейін қысқарды.
2-жағдай — UI сынағы жалған. AI «себетке қосу» сынағын жасады; сынақ жасыл түсті. «Жалған өтуді тексеру» үлгісін іске қосқан кезде, сынақ тек түймені басу мен бет тақырыбын тексеретін сияқты көрінді, ол арба есептегішінің көбейгенін немесе көбеймегенін ешқашан тексермейді. Арба логикасы толығымен бұзылса да, сынақ өтті. Шынайы растау қосылды (арба белгісі «1»).
3-жағдай - Соқыр күту тұзағы. AI шығарған Selenium тестінде әрбір қадамнан кейін ұйқы (2) болды; 60 сынақ 14 минутқа созылды және әлі де кейде үзілді. Ашық күтуге ауысқаннан кейін (элементтің басылатынын күтіңіз) уақыт 5 минутқа дейін қысқарды және сынғыштық жоғалды. Соқыр күту баяу әрі сенімсіз болды.
Жалпы қателер
- Нәзік селекторлармен келісу. AI жасаған ұзын XPath-ті сол қалпында пайдалану; Сынақтар интерфейсті бірінші өзгерту кезінде бұзылады.
- Соқыр «ұйқы» қалдыру. Белгіленген күтумен уақытты «шешу»; әрі баяу, әрі шешімсіз.
- Тривиальды бекіту. Тек беттің жүктелгенін тексеріңіз; пайдаланушының нақты нәтижесін тексермеу (жалған өту).
- POMсыз өсіңіз. Әрбір сынаққа селекторларды таратыңыз; Интерфейс өзгерген кезде ондаған файлдарды қолмен жаңарту.
- Құралды көрсетпейді. AI-ға қандай құрал/тілді қажет ететінін айтпау; лас, жұмыс істемейтін кодты алу.
- Жасалған кодты іске қосқанда және өту кезінде сену. Кодты бұзу арқылы сынамау.
Қысқаша
UI тестілеуді автоматтандыру нақты браузерді бағдарламамен басқару арқылы пайдаланушы әрекетін тексереді. AI бұл кодты тез жасайды, бірақ екі үлкен қате бар: сынғыш сынақтар (нашар таңдау, соқыр күту) және жалған өту сынақтары (толық емес/тривиальды бекіту). Қатты UI тестілеуінің үш тірегі - тапсырма селекторы (деректер-тесті), нақты күту және пайдаланушының нақты нәтижесін растайтын бекіту. Бет нысаны үлгісінде жасалған сынақтардың болуы техникалық қызмет көрсетуді түбегейлі жеңілдетеді. Әрбір құрылған тестті «қандай өзгеріс бұзады?» Деген сұрақпен сынап көріңіз.
Қолданбалы тапсырма
Жеке жобаңыздан пайдаланушы ағынын таңдаңыз (мысалы, кіру немесе іздеу). Жасанды интеллект тесттерін «мықты UI сынақ генерациясы» үлгісімен жазыңыз. Содан кейін: (1) селекторларды тексеріп, түзетіңіз және «сынғыштықты тексеру» арқылы күтіңіз, (2) әрбір сынақ «жалған өту дәлелімен» шын мәнінде расталатынын дәлелдеңіз, (3) кодты бұзыңыз және сынақ қызыл түске айналатынын бақылаңыз. Жасалған және түзетілген сынақтар санын және сіз тапқан осалдықтар мен жалған рұқсаттар санын хабарлаңыз.
бақылау парағы
- [ ] Мен AI-ға құралды, тілді, селекторлық саясатты және архитектураны (POM) анық бердім.
- [ ] Мен селекторлардың деректерге негізделгенін растадым.
- [ ] Мен соқыр ұйқының орнына анық/автоматты күтуді пайдалануды қамтамасыз еттім.
- [ ] Әрбір бекіту нақты пайдаланушы нәтижесін тексеретінін тексердім.
- [ ] Мен кодты бұзу арқылы әрбір сынақты тексердім; Мен оның қызарғанын көрдім.
- [ ] Мен сынақтарды Бет нысанының үлгісі құрылымында жинадым.