Јединице
1. Увод у вештачку интелигенцију у тестирању софтвера и обезбеђењу квалитета: улоге, границе, ризик од фалсификовања и валидација 2. Тест сценарио и генерисање тест случаја: од захтева до свеобухватне контроле 3. Истраживачко тестирање и генерисање идеја за тестирање: Креативни лов на грешке са вештачком интелигенцијом 4. Аутоматизација УИ теста: генерисање кода за селен, драматург и чемпрес помоћу вештачке интелигенције 5. Аутоматизација АПИ тестова: уговор, шема и свеобухватна валидација са АИ 6. Генерисање јединичних тестова и могућност тестирања: Робусно тестирање са АИ 7. Писање извештаја о грешци и одређивање приоритета: јасни, поновљиви записи са АИ 8. Анализа покривености тестом и тестирање засновано на ризику: Право циљање са АИ 9. Регресионо тестирање, одржавање тестова и борба против осетљивих тестова 10. Тестирање ризика од лажног поверења, квалитета тестова и мутација: тестови тестирања 11. Ток рада од краја до краја, интеграција ЦИ/ЦД, етика и безбедност: одговорно коришћење вештачке интелигенције
Јединица 9 / 11

Регресионо тестирање, одржавање тестова и борба против осетљивих тестова

Добици:

  • Разумети сврху регресионог тестирања и бити у стању да изабере тестове и произведе случајеве регресије у складу са променама са вештачком интелигенцијом
  • Способност да се дијагностикују основни узроци крхких тестова (тајминг, зависност од редоследа, заједничко стање, спољна зависност) и примени трајна решења без потискивања симптома
  • Способност да се одржи дисциплина покретања пре-издања целог пакета, уз одржавање регресијског пакета брзим, независним и поузданим елиминисањем дупликата тестирања

Софтвер се стално мења; Свака нова функција, свака поправка може покварити нешто што је раније функционисало. Накнадни поремећај функције која је претходно радила назива се регресија. Регресионо тестирање је поновно тестирање постојеће функционалности са сваком променом да би се ухватила ова деградација. Временом, ови пакети тестова постају све већи — хиљаде тестова — и јављају се два велика проблема: пакет успорава, а непоуздани тестови — непоуздани тестови који понекад пролазе, а понекад не успевају у истом коду — уништавају поверење тима у резултате теста. Вештачка интелигенција (АИ) је моћна помоћ у одржавању регресијског пакета добро одржаваним, брзим и поузданим. Али централно упозорење остаје: иако АИ може понудити да „прође“ крхки тест, често може произвести закрпу која прикрива праву грешку. Ваш посао је да пронађете основни узрок нестабилности, а не да потиснете симптом.

Основни узроци крхких тестова

Крхко тестирање је најподмуклији проблем тестирања: непоуздано је да ли прође или не успе, гурајући тим у навику „мора да се поново заглавио, покрените га поново“ — и ова навика ће једног дана игнорисати праву грешку као „неуспешну“. Главни узроци:

  • Услови мерења времена/трке: Тест проверава резултат без чекања да се операција заврши. Најчешћи разлог.
  • Зависност од редоследа: Тестови зависе од података које остављају једни од других; Прекида се када се редослед промени.
  • Дељени случај: Више тестова користи исте тест податке/корисника, конфликтно.
  • Екстерна зависност: права мрежа, услуга треће стране, системско време, насумична вредност.
  • Разлика у окружењу: Пребацује се на локално, остаје у ЦИ (континуирано интеграцијско окружење).
Опрез: Полагање крхког теста „поновним покушајем неколико пута“ често ће прикрити праву грешку истовремености. Поновни покушај је дијагностички алат, а не третман. Прво пронађите основни узрок; Користите само поновни покушај као последње средство за документовану, заиста спољну нестабилност.

Пробно одржавање: одржавање паковања здравим

Регресијски апартман је као врт; Ако се не води рачуна, коров ће преузети. АИ помаже у три задатка одржавања:

1. Дуплицирано/непотребно пробно чишћење. Током времена велики број случајева се акумулира тестирајући исту ствар. АИ предлаже груписање и спајање сличних тестова.

2. Дијагноза крхког теста. Дајете АИ тестни код и образац нестабилности; сугерише могуће узроке и трајно решење.

3. Избор/приоритет теста. Скупо је покренути цео пакет са сваком променом. Са анализом утицаја теста (одабиром само релевантних тестова на основу промењеног кода), АИ препоручује које тестове треба прво покренути. Међутим, комплетан пакет пре пуштања у продају је обавезан.

Карантин: исправно управљање крхким тестирањем

Открили сте да је тест крхак, али немате времена да одмах отклоните основни узрок. шта да радим? Постоје два погрешна начина: да се тест потпуно избрише (то понашање више уопште није сачувано) или да се утиша поновним покушајем (прикривајући праву грешку). Исправан начин је стављање у карантин (привремено одвајање ломљивог теста од главног пакета и праћење на посебној листи). Тестирање у карантину не спречава спајање верзија, али остаје видљив дуг и редовно се решава. Критична тачка је следећа: карантин је чекаоница, а не канта за смеће. Ако листа карантина расте, ово је аларм да се здравље тима на тесту погоршава. АИ може повремено да прегледа вашу листу карантина и групише је према обрасцима основних узрока; Омогућава колективна решења откривањем заједничких узрока, као што је „свих 6 тестова је повезано са истим заједничким корисником теста“.

Савет: Додајте „власника“ и „датум последње ревизије“ сваком запису у карантину. Запуштени карантин постаје трајна депонија; Крхки тестови живе тамо заувек јер никог није брига.

Табела стратегије регресије

Статус

Стратегија

Улога АИ

мања исправка

Захваћено подручје + тест дима

Изаберите релевантне тестове

нова функција

Повезани модул + интеграција

Предложите нови случај регресије

велики рефактор

Комплетан пакет регресије

Анализа јаза у покривености

пре пуштања на слободу

Комплетан пакет + истраживање

Процена приоритета и трајања

Хитна поправка уживо

Фокусиран + критички пут

Минимални безбедни тест сет

Слаби промпт / Јаки промпт

Слаб: "Овај тест понекад не успе, поправи га."
Снажан: „Овај тест не успе у 3 од 10 покретања, код је непромењен. Дијагностикујте основни узрок нестабилности: може бити време/трка, зависност од редоследа, дељено стање, спољна зависност или разлика у окружењу. Покажите који ред у тесту указује на сваки могући узрок. Предложите трајно решење; НЕМОЈТЕ предлагати решење за сузбијање симптома као што је 'ифли реасон вритеабле' — ако упишите поново покушај. Траг грешке: [лог]."

Снажан промпт; усмерава дијагнозу на основни узрок и експлицитно забрањује потискивање симптома.

Четири шаблона за копирање

1) Дијагноза крхког теста:

Овај тестни код понекад прође, а понекад не успе без промене. Наведите кандидате за основни узрок (раса, зависност од редоследа, дељено стање, спољна зависност, сат/случајно, разлика у окружењу) и покажите линију доказа у тесту за сваки. Предложите трајно решење; означити супресивно решење као што је поновни покушај као последње средство и са оправдањем. Тест: [код] / Образац нестабилности: [колико пута у колико покретања]

2) Предлагање случаја регресије:

Направљена је следећа промена: [сажетак промене/ПР]. Наведите ТРЕНУТНА понашања која би ова промена прекршила и предложите случај регресије за свако. Посебно истакните области нежељених ефеката и заједничких зависности.

3) Дуплицирано чишћење теста:

Погледајте комплет тестова испод. Групирајте дупле или преклапајуће случајеве који тестирају исто понашање; Предложите које да задржим, а које да комбинујем за сваку групу. Упозорите ако постоји ризик од губитка покривености. Тестови: [листа/шифра]

4) Избор ефекта теста:

Следеће датотеке/функције су промењене: [лист]. Из постојећег скупа тестова изаберите и оправдајте тестове које прво треба да покренем (оне који су директно/индиректно повезани са промењеним кодом). Напомена: подсетите ме да ћу и даље покретати комплетан пакет пре издања.

три мини кофера

Случај 1 — Права грешка прикривена поновним покушајем. Један тим је додао 3 покушаја повременом преосталом тесту исплате; Тест је сада увек "пролазио". Применом „дијагнозе ломљивог теста“ откривено је да је нестабилност настала због стварног стања трке: при великом оптерећењу, потврда плаћања је понекад била двоструко обрађена. Месецима је Ретри прикривао грешку која је могла да доведе до стварног губитка новца уживо. Основни узрок је отклоњен, покушај уклоњен.

Случај 2 — Пакет се смањио, брзина повећана. Регресијски пакет од 1.400 тестова трајао је 55 минута. Са „чишћењем дуплицираног теста” испоставило се да је 380 тестова дупло или покривено; спојено. Пакет је смањен на 900 тестова, време је смањено на 34 минута, покривеност није мерљиво смањена. Брже повратне информације охрабриле су тим да чешће тестира.

Случај 3 — Зависност налога. Тест би увек прошао локално, али би насумично пао у ЦИ. АИ дијагностика је показала да тест зависи од корисника који је креирао други тест, у ЦИ се покварио јер су тестови вођени паралелно/различитим редоследом. Сваки тест је направљен да би се установили сопствени подаци; Неодлучност је готова.

Уобичајене грешке

  • Утишавање крхког теста поновним покушајем. Покушај поново без тражења основног узрока; прикривајући праву грешку.
  • Култура "опет заглављена". Рутински игнорисање црвених резултата; Једног дана, прескакање праве грешке.
  • Не обрезивање пакета уопште. Омогућавање дуплих тестова да се гомилају и успоравају пакет.
  • Зависност између тестова. Тестови су засновани на уобичајеном стању/редоследу; извор неизвесности.
  • Тестирање само промењеног дела и прескакање целог пакета. Пре-релеасе пречица; Скривени нежељени ефекти беже.
  • Ослањајући се на спољну зависност. Тестови засновани на стварној мрежи/сату/случајној вредности; природно нестабилна.

Укратко

Регресионо тестирање открива промене које нарушавају функције које су претходно радиле; Али како пакети расту, спорост и крхко тестирање нарушавају поверење. Основни узроци ломљивог тестирања су обично време, зависност од поретка, дељено стање и спољне зависности. АИ је моћна помоћ у дијагностици, чишћењу и избору тестова; Али потискивање неодлучности поновним покушајем прикрива праве грешке. Пронађите основни узрок, учините тестове независним и детерминистичким, редовно смањите пакет, покрените цео пакет пре објављивања.

Задатак апликације

Изаберите тест из сопственог пројекта за који знате да је крхак (или делује нестабилно). Издвојите кандидате за основни узрок и проверите линије доказа у тесту помоћу шаблона „дијагноза крхког теста“. Идентификујте основни узрок и примените трајно решење без поновног покушаја. Затим изаберите 10 тестова из свог пакета и пронађите оне који се могу комбиновати са „чишћењем дуплицираног теста“. Пријавите колико сте нестабилности теста решили из њиховог основног узрока и колико непотребних случајева сте уклонили из пакета.

контролна листа

  • [ ] Дијагностиковао сам основни узрок крхког теста; Нисам потиснуо симптом.
  • [ ] Поновни покушај сам сматрао оправданим последњим средством, а не леком.
  • [ ] Тестове сам учинио независним и детерминистичким (изолованим од спољних зависности).
  • [ ] Уклонио сам дупле/непотребне тестове из пакета регресије.
  • [ ] Одлучио сам да тестирам на основу промене, али сам покренуо комплетан пакет пре издања.
  • [ ] Свако црвено сам схватио озбиљно, против културе „опет заглави, додај“.