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

Увод у вештачку интелигенцију у тестирању софтвера и обезбеђењу квалитета: улоге, границе, ризик од фалсификовања и валидација

Добици:

  • Бити у стању да разликује где вештачка интелигенција штеди реално време у процесу обезбеђења квалитета и где су квалитетне одлуке као што је „спремно за објављивање“ препуштене људима, у зависности од нивоа ризика задатка
  • Способност препознавања ризика од лажних пролаза и имплементације дисциплине верификације која тестира сваки АИ тест намерним разбијањем кода
  • Способност заштите података тестирања, личних података и кључева и стицање навике да се безбедносно тестирање обавља само у оквиру овлашћења иу одбрамбене сврхе.

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

У овој првој јединици фокусираћемо се на дисциплину, а не на алат. Научићете где АИ штеди реално време у КА процесу, где је опасно, зашто је варљиви зелени такозвани „лажни пролаз“ највећи ризик, како да проверите сваки излаз и које податке можете да дате ком алату. Без постављања ове основе, следеће јединице ће остати у ваздуху.

Где је АИ корисна у процесу тестирања?

Хајде да поделимо послове тестирања у два велика кластера. Први кластер: послови који се понављају, продуктивни, нацрти. Израда тест случаја из захтева, навођење тачака прекида, писање скелета аутоматизованог кода за екран, превођење сложеног случаја грешке у уредан извештај о грешци, сумирање стотина редова датотека евиденције, издвајање шеме из АПИ одговора. У овим задацима, АИ скраћује минуте на секунде и не умара се.

Други кластер: одлуке чији су исход квалитет, поверење и одговорност. Одлуке као што су „може ли ова верзија бити објављена“, „да ли је ова грешка критична или се може одложити“, „да ли је покривеност овим тестом довољна“, „да ли овај сценарио обухвата стварни ризик корисника“ итд. захтевају контекст, познавање производа и одговорност. Овде вештачка интелигенција генерише опције, нацрте - али ви одлучујете „прошао/не успео“ и „иди/не иди“.

Хајде да разјаснимо разлику у једној реченици: АИ је јак у „које ситуације се могу тестирати и како написати код који га тестира“; Одлука је на вама када је у питању питање „Да ли овај софтвер заиста ради и ко гарантује за њега?“

Савет: Пре него што предате посао АИ, питајте: „Шта се дешава ако је овај излаз погрешан, а ја не приметим?“ Ако је одговор "Изгубићу неколико минута", лако делегирајте. Ако је одговор „неисправан софтвер се активира“, пустите АИ да изради нацрт, а ви доносите одлуку и верификацију.

Лажни пролаз: ризик број један од АИ у КА

Када тест светли зелено, то може да значи две ствари: или софтвер заиста ради исправно или не види грешку јер је тест погрешно написан. Други се назива лажним пролазом — тест каже „прошао“, али заправо ништа не потврђује. Овај ризик се значајно повећава у тестовима произведеним са АИ, јер је АИ веома успешна у писању течних, глатких, али празних тестова.

Три најчешћа облика псеудо-проласка су: (1) Тестирање без тврдње — код се покреће, не садржи тврдње, увек пролази. (2) Тест за самоверификацију — очекивана вредност теста се израчунава на основу излазног кода који се тестира; То јест, шта год да код произведе, тест прихвата као "тачан". (3) Тест који потврђује погрешну ствар — тврдња постоји, али проверава нешто тривијално (нпр. „одговор није ништаван“), а не стварно пословно правило.

Опрез: Зелени тест панел није доказ квалитета; У најбољем случају пише „контроле које смо написали тренутно нису покварене“. Немојте да се утешите када видите „пролаз“ на тесту који АИ производи — право питање је: да ли ће овај тест постати црвени ако намерно разбијем код? Ако се не окреће, тај тест је украс.

Златно правило које се понавља кроз овај модул: тестирајте сваки тест вештачке интелигенције намерно разбијајући код. Ако је тест и даље зелен, тај тест не ради. (Ову идеју ћемо продубити као тестирање мутација у јединици 10.)

Дисциплина верификације: три корака

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

  1. Повежите га са захтевом. Сваки тест случај и тврдња да АИ производи морају бити засновани на стварним захтевима или критеријумима прихватања (услови које посао мора да испуни да би се сматрао „готовим“). „Које правило потврђује овај сценарио?“ питати.
  2. Види црвено. Покрените генерисани тест једном, разбијајући код. Ако не постане црвено, тест је неважећи. Ово је корак о коме се не може преговарати у тестирању вештачке интелигенције.
  3. Прођите кроз контекстни филтер. Да ли се резултат подудара са оним што знате да је понашање производа, архитектура, стварни ток корисника? Ваше знање о домену је коначни филтер.

Приватност и безбедност података: шта где иде?

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

Постоји додатно ограничење у контексту безбедносног тестирања: све што се научи у овом модулу је у одбрамбене сврхе — да ауторитативно тестирате безбедност сопственог производа. Коришћење вештачке интелигенције за инфилтрирање у туђи систем без дозволе, оружје за стварне рањивости или тестирање система за који немате овлашћења истовремено је неетично и криминално. Никакво увредљиво тестирање се неће вршити без овлашћења (обим и дозволе).

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

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

Случај 1 — Уштеда времена на правом месту. Тестер Екомерце тима провео је 6 сати ручно креирајући тест сценарио из документа са захтевима од 30 страница за свако издање. Дао је документ (део који није садржао пословне тајне) ИЗ и затражио структурирани нацрт сценарија; Време је смањено на 90 минута. Он је уштеђено време посветио самој верификацији, додајући рубне случајеве пословних правила које је вештачка интелигенција пропустила. АИ је одузео рад који се понавља, остављајући расуђивање човеку.

Случај 2 — Лажни пролаз ухваћен. Програмер је имао АИ да напише 12 јединичних тестова за рачунску функцију; сви су били зелени. Тестер је применио корак „види црвено“: намерно мењајући знак сабирања унутар функције у множење. Само 3 од 12 тестова су се вратила црвеном бојом. Осталих 9 тестова није дало праву потврду; Само је писало "није избацило грешку". 9 декоративних тестова је обрисано и уместо њих је написано 5 правих тестова.

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

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

1) Процена подобности за посао:

Ваша улога: виши лидер КА. Описаћу вам посао тестирања. Реците ми (1) да ли је овај посао рад на изради/анализи који се може безбедно делегирати АИ или квалитетна одлука коју човек мора да донесе, (2) потенцијални трошак нетачних резултата, (3) верификацију коју треба да урадим пре делегирања. Посао: [овде унесите посао]

2) Псеудо-пасс контрола:

Погледајте тест у наставку. Реци ми: - Какво понашање потврђује овај тест? (једна реченица)- Како могу да разбијем код који се тестира тако да тест постане ЦРВЕНИ?- Да ли постоји слабост због које овај тест увек прође (недостаје тврдња, самопотврђивање, тривијална провера)? Тест: [налепите тест овде]

3) Тест контрола маскирања података:

Дневник/подаци које ћу вам дати могу да садрже лична или поверљива поља (е-маил, име, картица, кључ, интерна адреса). Прво, наведите поља која треба да буду маскирана; Замаскираћу га и послати поново. Немојте то анализирати онако како јесте.

4) Генерисање података о синтетичким тестовима:

Генеришите 20 редова потпуно измишљених, реалистичних тест података за [следећу структуру поља]. Немојте користити стварне податке о личности/организацији. Такође укључите и рубне случајеве: празан простор, предугачак текст, граничне вредности, неважећи формат.

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

Слабо: „Напишите тестове на овом коду.“
Јако: "Израчунајте ово Напишите јединичне тестове за функцију попуста. Критеријуми прихватања за функцију: 10% попуста преко 1000 ТЛ, 20% попуста преко 5000 ТЛ; негативан износ би требало да доведе до грешке. Наведите у реду за коментар које правило потврђујете за сваки тест. Тестирајте граничне вредности (999, 1001, 5.0, 1000, одвојено) тврдње које ће постати црвене ако разбијем код или не напишем тривијално тврдње."

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

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

  • Поверење зеленом. Мислећи да је полагање теста доказ. Право питање је: да ли постаје црвено када разбијете код?
  • Захтевање теста без навођења разлога. АИ производи генеричке, често бескорисне тестове, а да не зна шта треба да се провери.
  • Прескакање верификације. Рекавши "АИ је то написао, вероватно је истина". Одговорност је на особи која користи излаз.
  • Лепљење стварних/осетљивих података у алатку. Рад са производним подацима, кључевима или личним подацима.
  • Неовлашћено тестирање безбедности. Покушај увредљивог тестирања без обима и дозволе.
  • Коришћење вештачке интелигенције за делегирање доношења одлука. Постављајући питање „Може ли ова верзија бити објављена?“ АИ и стављање одговора у потпис.

Укратко

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

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

Урадите 5 јединичних тестова генерисаних АИ (или АИ генерисаних) из сопственог пројекта. За сваки: (1) напишите у једној реченици које понашање верификује, (2) намерно разбијте и покрените код који се тестира и забележите колико њих постаје црвено, (3) означи оне који не постану црвени као „тестове декорације“ и препишите их са правим тврдњом. Ставите резултат у табелу: назив теста / правило које је верификовано / да ли је покварено када је прекинуто / радња.

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

  • [ ] Пре предаје рада поставио сам питање „шта ћу изгубити ако крене наопако?“
  • [ ] Тестирао сам сваки АИ тест разбијањем кода; Заменио сам онај који није поцрвенео правим тестом.
  • [ ] Повезао сам тест случајеве са стварним критеријумима захтева/прихватања.
  • [ ] Маскирао сам осетљиве/стварне податке без давања алату; Користио сам синтетичке податке ако је могуће.
  • [ ] Сматрао сам безбедносно тестирање само у оквиру овлашћења иу одбрамбене сврхе.
  • [ ] Одлуку о томе „да ли ће верзија бити објављена“ препустио сам себи, а не АИ.