Добици:
- Способност читања метрика као што су покривеност линија, грана и услова као мапа, а не као поверење, и разумевање да висока покривеност може дати псеудоповерење
- Способност стављања опсега захтева поред обима кода и омогућавање видљивости празнина у следљивости помоћу вештачке интелигенције
- Способност оцењивања карактеристика уз помоћ формуле ризик = вероватноћа × утицај, усмеравање ограничених напора тестирања на највећи ризик и документовање намерно ван оквира
Не можете заувек тестирати сваки софтвер; Време и ресурси су ограничени. Дакле, право питање је: где ставити ограничене напоре тестирања? Два концепта одговарају на ово питање. Покривеност тестом — метрика која мери колико кода или захтева дотичу тестови — представља оно што се тестира. Тестирање засновано на ризику – приступ одређивања приоритета теста према вероватноћи пропадања неке области и штете коју ће проузроковати када се погорша – усмерава напор на највећи ризик. Вештачка интелигенција (АИ) је моћан партнер у анализи у оба случаја: чини празнине у покривености видљивим, сугерише ризичне области. Али централно упозорење остаје: број домета које АИ види може бити погрешан; Чак и 100% покривеност редова може се постићи тестовима који ништа не потврђују. Ваш посао је да читате опсег као мапу, а не поверење.
Правилно читање метрике покривености
Постоји неколико типова опсега, а нису сви подједнако значајни:
- Покривеност линија: Колико је линија кода извршено најмање једном. Најчешћи али најслабији критеријум; Само зато што линија функционише није доказ да се понаша исправно.
- Покривеност гране: Да ли је тестирана свака ако грана (и тачна и нетачна). Смисленије од линије.
- Покривеност услова: Тестирање сваког подуслова у сложеним условима посебно.
- Покривеност путања: Комбинације логичких путања унутар кода. То је најсвеобухватнији, али га је у пракси тешко достићи.
Опрез: Проценат покривености није „оцена квалитета“. 100% покривеност редова вам говори да редови раде; не да даје тачан резултат (псеудо-пролаз у јединици 1). Користите опсег као одговор на питање „где никад нисам гледао“, а не као уверење да је „све тестирано“.
Сцопе блинд спотс
Метрике покривености мере само колико је кода извршено; не може да види: (1) непроверене захтеве (код постоји, али пословно правило је погрешно), (2) недостаје код (нема опсега за контролу која никада није написана), (3) комбинације података/стања, (4) употребљивост, перформансе, безбедност. Према томе, покривеност захтева (сваки критеријум прихватања мора бити испуњен најмање једним тестом) треба ставити поред покривености кода. АИ је од велике помоћи у изради мапирања тестова захтева (матрица следљивости).
Тестирање засновано на ризику: где улажемо труд?
Ризик = вероватноћа (шанса лома) × утицај (штета у случају лома). Помоћу вештачке интелигенције можете постићи листу карактеристика на ове две осе и креирати топлотну мапу. Велика вероватноћа × високи домени (плаћање, аутентификација, интегритет података) заслужују најинтензивније тестирање; ниске × ниске области (ретко коришћени преферирани екран) тестирање осветљења је довољно.
области
вероватноћа
Утицај
Ризик
Тест густине
Ток плаћања
средње
веома високо
висока
Дубоко + аутоматизација
аутентификацију
средње
веома високо
висока
Дубоко + сигурност
Претрага производа
висока
средње
Средње-високо
Аутоматизација + откривање
Фотографија профила
ниско
ниско
ниско
контрола светлости
Страница помоћи
ниско
прениско
прениско
преглед
Замка јурњаве домета
Постављање процента покривености као циљ (нпр. правило „тим мора да прође 90% покривености“) има опасан споредни ефекат: програмери и тестери се фокусирају на повећање процента, а не на решавање стварног ризика. Резултат је често надуван опсег без тврдњи или тривијалних тестова — број изгледа лепо, али нема заштите. Ово је феномен да се критеријум квари када сам постане циљ: „када мера постане циљ, она престаје да буде добра мера“. Користите опсег као дијагностички алат, а не као извештај о учинку.
Здравији приступ је читање опсега усмерено: „Зашто је покривеност филијала заглављена на 40% у критичном модулу плаћања?“ Питање је "да ли је укупна покривеност 90%?" То је много вредније од питања. Нека АИ разбије извештај о обиму према модулима и нивоу ризика; Истакните подручја високог ризика са малом покривеношћу. Дакле, опсег постаје компас који усмерава рад, а не слепи проценат.
Опрез: Слоган „100% покривеност“ је замка. Тестирање неког кода (једноставних приступника, аутоматски генерисаних делова) је мале вредности; труд утрошен тамо је украден из правила пословања високог ризика. Циљ је тестирати свако важно понашање и ризик, а не сваку линију.
Слаби промпт / Јаки промпт
Слабо: „Повећајте моју покривеност тестирањем.“
Снажно: „С обзиром на ову листу критеријума прихватања и ове постојеће тестне случајеве. (1) Табеларни које критеријуме прихватања нису испунили ниједан тест (јаз у покрићу захтева). (2) Оцените сваку карактеристику 1-5 на оси вероватноће и утицаја; ранг по ризик = вероватноћа × утицај. (3) За моје ограничено време, предложите којих 5 празнина не треба да затворим највећом линијом ризика. критеријум приоритета пословања Критеријуми: [...] Тестови: [...]"
Снажан промпт; комбинује обим са пословним ризиком и даје приоритет ограниченој радној снази.
Четири шаблона за копирање
1) Недостатак у обиму захтева:
С обзиром на следеће критеријуме прихватања и ове тестне случајеве. Направите табелу следљивости: сваки критеријум -> тест(и) који га испуњава. Критеријуми који немају никакве тестове називају се „ПОКРИВАЊЕ ГАП“, а тестови који се не повезују ни са једним критеријумом називају се „НЕОПХОДНИ?“ Оцена: Критеријум: [...] / Тестови: [...]
2) Бодовање ризика:
Оцените ову листу карактеристика/модула 1-5 на оси вероватноће (вероватноћа лома) и ударца (оштећења ако се поквари). Ризик = вероватноћа × утицај. Сортирајте у табели и наведите препоручени тип тестирања (јединица/АПИ/УИ/извиђање/безбедност) за сваку област високог ризика. Листа: [...]
3) Тумачење опсега:
Дат је следећи извештај о покривености (ред %, грана %). Реците ми ово:- Шта ови бројеви НЕ доказују?- Које су области које би могле бити угрожене упркос великој покривености редова?- Која додатна тестирања бисте препоручили за празнине које покривеност не види (захтев, комбинација података, безбедност)? Извештај: [налепи]
4) Ограничени временски план:
Још [Кс сати] до емитовања. Дате су следеће рангирање ризика и празнине у покрићу. Током овог периода припрема се план тестирања који ће смањити максимални ризик по приоритету. Јасно наведите шта НЕ треба свесно тестирати и прихваћени ризик од тога. Подаци: [...]
три мини кофера
Случај 1 — 100% покривеност, нула поверења. Један тим се похвалио 94% покривености линија. Анализа „интерпретације опсега“ показала је да је већина тестова била без тврдњи, што значи да су покретали редове, али нису ништа верификовали. Стварна заштитна покривеност је била много нижа. Тим се није фокусирао на бројеве већ на тестирање мутација (јединица 10); стварна стопа хватања грешака се удвостручила.
Случај 2 — Приоритет исправљен на мапи ризика. Један тим је трошио 40% свог тестирања на ретко коришћен екран за извештавање, прескачући ток плаћања јер „само ради“. Бодовање ризика од вештачке интелигенције показало је ову неравнотежу. Радна снага је прерасподела; Две недеље касније пронађена је грешка са великим утицајем у току плаћања и затворена је пре емитовања.
Случај 3 — Свестан ван домета. 4 сата након објављивања, тим је одлучио шта ће тестирати, а шта свесно прескочити помоћу шаблона „ограниченог распореда“. Дубоко су тестирана два тока високог ризика; екран са преференцијама ниског ризика је документован као „прихваћен ризик“ и прескочен. Одлука је била транспарентна и образложена; Верзија је изашла безбедно.
Уобичајене грешке
- Грешка проценат покривености за квалитет. Читање високе покривености редова као „тестирано“ осигурање.
- Само гледам покривеност кода. Прескакање покривености захтева (тестирање сваког критеријума прихватљивости).
- Тестирање подједнако без узимања у обзир ризика. Распоређивање радне снаге на нискоризична подручја и занемаривање критичних токова.
- Скривање ван домета. Недокументовање онога што није тестирано када није било довољно времена; Изненађења након објављивања.
- Прихватање оцене ризика АИ без питања. АИ не познаје у потпуности контекст производа; Подесите резултате стручним оком.
Укратко
Покривеност тестом и тестирање засновано на ризику су два алата за усмеравање ограничених напора на право место. метрике покривености (линија, грана, стање, путања) показују шта је додирнуто, али не доказују да се понашало исправно; Обим је мапа, поверење није. Ставите покривеност захтева поред покривености кода. Оцените карактеристике са формулом ризик = вероватноћа × утицај и усмерите напор на највећи ризик. АИ чини празнине видљивим, постиже ризик, планира ограничено време; али коначни приоритет и одлука о „свесном одбијању“ лежи на стручњаку који познаје пословни контекст.
Задатак апликације
Изаберите модул из сопственог пројекта. Покрените шаблон „рекуирементс сцопе гап“ са АИ и сазнајте који критеријуми прихватања нису тестирани. Затим рангирајте под-функције модула на оси вероватноће × утицаја са „бодовањем ризика“. Распоредите (хипотетичка) 3 сата времена за тестирање које имате са "ограниченим распоредом"; Запишите шта свесно нећете тестирати и прихваћени ризик. Додајте конкретан тест који ће затворити највећи јаз у покривености који пронађете.
контролна листа
- [ ] Проценат покривености читам као мапу, а не као квалитет.
- [ ] Поред покривености кода, уклонио сам и покривеност захтева.
- [ ] Оценио сам карактеристике према вероватноћи × утицају и рангирао их према ризику.
- [ ] Преусмерио сам напоре тестирања на највећи ризик.
- [ ] Документовао сам области које нису свесно тестиране и признате ризике.
- [ ] Прегледао сам оцене ризика АИ на основу контекста мог производа.