одиниці
1. Вступ до штучного інтелекту в тестуванні програмного забезпечення та якості: ролі, межі, ризик підробки та перевірка 2. Тестовий сценарій і генерація тестових випадків: від вимоги до всебічного контролю 3. Дослідницьке тестування та генерація тестових ідей: креативний пошук помилок за допомогою ШІ 4. Автоматизація тестування інтерфейсу користувача: створення коду Selenium, Playwright і Cypress за допомогою ШІ 5. Автоматизація тестування API: контракт, схема та наскрізна перевірка за допомогою ШІ 6. Генерація модульних тестів і можливість тестування: надійне тестування за допомогою ШІ 7. Написання звіту про помилку та встановлення пріоритетів: чіткі, відтворювані записи за допомогою ШІ 8. Аналіз тестового покриття та тестування на основі оцінки ризиків: правильна ціль за допомогою ШІ 9. Регресійне тестування, обслуговування тестів і боротьба з крихкими тестами 10. Ризик помилкової довіри, якість тесту та тестування на мутації: Тести тестування 11. Наскрізний робочий процес, інтеграція CI/CD, етика та безпека: відповідальне використання ШІ
одиниця 8 / 11

Аналіз тестового покриття та тестування на основі оцінки ризиків: правильна ціль за допомогою ШІ

Прибуток:

  • Здатність читати показники, такі як лінії, розгалуження та покриття умов, як карту, а не довіру, і розуміти, що високе покриття може створити псевдодовіру
  • Можливість розмістити область вимог поруч із областю коду та зробити прогалини у відстежуваності видимими за допомогою штучного інтелекту
  • Можливість оцінювати функції за формулою ризик = ймовірність × вплив, спрямовувати обмежені зусилля на тестування на найвищий ризик і документувати навмисне виходу за рамки

Ви не можете вічно перевіряти кожне програмне забезпечення; Час і ресурси обмежені. Тож справжнє запитання: куди подіти обмежені зусилля з тестування? На це питання відповідають дві концепції. Тестове покриття — метрика, яка вимірює, скільки коду або вимог торкається тестів — представляє те, що тестується. Тестування на основі ризику - підхід до визначення пріоритету тесту відповідно до ймовірності погіршення стану території та шкоди, яку це спричинить у разі погіршення - спрямовує зусилля на найбільший ризик. Штучний інтелект (AI) є потужним аналітичним партнером в обох випадках: він робить видимими прогалини в охопленні, пропонує зони ризику. Але головне застереження залишається: кількість областей, які бачить ШІ, може ввести в оману; Навіть 100% покриття рядків можна досягти за допомогою тестів, які нічого не перевіряють. Ваше завдання — читати масштаб як карту, а не довіру.

Правильне читання показників покриття

Існує кілька типів обсягу, і не всі однаково важливі:

  • Покриття рядків: скільки рядків коду було виконано принаймні один раз. Найпоширеніший, але найслабший критерій; Те, що рядок працює, не є доказом того, що він поводиться правильно.
  • Покриття розгалужень: чи було перевірено кожне розгалуження if (і справжнє, і невірне). Значніше, ніж рядок.
  • Покриття умов: Тестування кожної підумови в складних умовах окремо.
  • Покриття шляху: комбінації логічних шляхів у коді. Він є найбільш повним, але його важко досягти повністю на практиці.
Застереження: відсоток покриття не є «показником якості». 100% покриття рядків означає, що рядки працюють; не те, що він дає правильний результат (псевдопрохід у блоці 1). Використовуйте приціл як відповідь на запитання «де я ніколи не дивився», а не як запевнення, що «все перевірено».

Обсяг сліпих зон

Показники покриття вимірюють лише те, скільки коду було виконано; не бачить: (1) неперевірених вимог (код існує, але бізнес-правило неправильне), (2) відсутній код (немає області для елемента керування, який ніколи не був написаний), (3) комбінації даних/стану, (4) зручність використання, продуктивність, безпека. Таким чином, охоплення вимог (кожен критерій прийнятності має бути виконано принаймні одним тестом) слід розмістити поруч із охопленням коду. AI дуже корисний у створенні відображення вимог і тестів (матриця відстеження).

Тестування на основі ризиків: куди ми докладаємо зусиль?

Ризик = ймовірність (ймовірність поломки) × вплив (шкода у разі поломки). За допомогою штучного інтелекту ви можете оцінити список функцій на цих двох осях і створити теплову карту. Висока ймовірність × високі домени (оплата, автентифікація, цілісність даних) заслуговують найінтенсивнішого тестування; низькі × низькі області (рідко використовуваний екран переваг) достатньо перевірити освітленість.

область

ймовірність

Вплив

Ризик

Щільність тесту

Потік платежів

середній

дуже високий

висока

Глибина + автоматизація

аутентифікація

середній

дуже високий

висока

Глибина + безпека

Пошук товару

висока

середній

Середньо-високий

Автоматизація + відкриття

Фото профілю

низький

низький

низький

контроль світла

Сторінка довідки

низький

занадто низький

занадто низький

огляд

Пастка погоні за розмахом

Встановлення відсотка охоплення як цілі (наприклад, правило «команда повинна пройти 90% охоплення») має небезпечний побічний ефект: розробники та тестувальники зосереджуються на збільшенні відсотка, а не на усуненні фактичного ризику. Результатом часто є роздутий обсяг без тверджень або тривіальних тестів — число виглядає добре, але захисту немає. Це феномен псування критерію, коли він сам стає метою: «коли міра стає метою, вона перестає бути хорошою мірою». Використовуйте приціл як інструмент діагностики, а не як звіт про ефективність.

Більш здоровий підхід полягає в тому, щоб прочитати обсяг напряму: «Чому охоплення філії застрягло на рівні 40% у критичному платіжному модулі?» Питання: чи загальне охоплення становить 90%? Це набагато цінніше питання. Попросіть штучний інтелект розбити звіт про обсяг за модулями та рівнями ризику; Виділіть зони високого ризику з низьким охопленням. Таким чином, масштаб стає компасом, який спрямовує роботу, а не сліпим відсотком.

Увага: гасло «100% охоплення» — це пастка. Тестування деякого коду (простих інструментів доступу, автоматично згенерованих частин) має низьку цінність; зусилля, витрачені на це, викрадені з бізнес-правил високого ризику. Мета полягає в тому, щоб перевірити кожну важливу поведінку та ризик, а не кожну лінію.

Слабка підказка / Сильна підказка

Слабкий: «Збільшити охоплення тестуванням».
Сильно: «Враховуючи цей список критеріїв прийнятності та ці існуючі тестові приклади. (1) Табличне, які критерії прийнятності не було виконано жодним тестуванням (прогалина охоплення вимог). (2) Оцініть кожну функцію 1–5 за осями ймовірності та впливу; ранжуйте за ризиком = ймовірність × вплив. (3) На мій обмежений час запропонуйте, які 5 прогалин мені слід усунути першими, починаючи з найвищого ризику. Не сприймайте охоплення рядка коду як єдине. критерій пріоритетності бізнес-ризику: [...] Тести: [...]"

Потужна підказка; поєднує масштаби з бізнес-ризиком і надає пріоритет обмеженій робочій силі.

Чотири шаблони, які можна копіювати

1) Прогалина в області застосування вимог:

Враховуючи наступні критерії прийнятності та ці тестові приклади. Створіть таблицю простежуваності: кожен критерій -> тест(и), які йому відповідають. Критерії, які не мають жодних тестів, називаються «ПРАЗИНОЮ В ПОКРИТТІ», а тести, які не пов’язані з жодними критеріями, називаються «ПОТРІБНО?» Оцінка: Критерії: [...] / Тести: [...]

2) Оцінка ризику:

Оцініть цей список функцій/модулів 1-5 за осями ймовірності (ймовірності поломки) та впливу (пошкодження у разі поломки). Ризик = ймовірність × вплив. Відсортуйте в таблиці та вкажіть рекомендований тип тестування (пристрій/API/UI/розвідка/безпека) для кожної зони високого ризику. Список: [...]

3) Інтерпретація обсягу:

Було надано наступний звіт про покриття (рядок %, галузь %). Скажіть мені це:- Що ці цифри НЕ доводять?- Які області можуть бути під загрозою, незважаючи на високе покриття рядків?- Яке додаткове тестування ви б порекомендували для прогалин, яких покриття не бачить (вимога, комбінація даних, безпека)? Звіт: [вставити]

4) План з обмеженим часом:

До трансляції залишилося [X годин]. Наведено наступне ранжування ризиків і прогалини в охопленні. Протягом цього періоду готується план тестування, який знизить максимальний ризик, у порядку пріоритету. Чітко вкажіть, що НЕ слід свідомо тестувати, і прийнятний ризик цього. Дані: [...]

три міні-чохла

Випадок 1 — 100% покриття, нульова довіра. Одна команда похвалилася 94% покриттям лінії. Аналіз «інтерпретації обсягу» показав, що більшість тестів були без тверджень, тобто вони запускали рядки, але нічого не перевіряли. Фактичне захисне покриття було набагато нижчим. Команда зосередилася не на цифрах, а на тестуванні мутацій (блок 10); фактичний рівень виявлення помилок подвоївся.

Випадок 2 — виправлений пріоритет карти ризиків. Одна команда витрачала 40% своїх зусиль на тестування рідко використовуваного екрана звітів, пропускаючи потік платежів, оскільки він «просто працює». Оцінка ризику ШІ показала цей дисбаланс. Відбувся перерозподіл робочої сили; Через два тижні в платіжному потоці було виявлено серйозну помилку, яку було закрито перед опублікуванням.

Випадок 3 — Свідомість поза межами видимості. Через 4 години після випуску команда вирішила, що тестувати, а що свідомо пропустити за допомогою шаблону «обмежений графік». Два потоки високого ризику були перевірені глибоко; екран переваги з низьким ризиком був задокументований як «прийнятий ризик» і пропущений. Рішення було прозорим і вмотивованим; Версія вийшла благополучно.

Поширені помилки

  • Помилка відсотка покриття за якість. Зчитування високого покриття рядків як «перевірена» гарантія.
  • Просто дивлячись на покриття коду. Пропускання покриття вимог (перевірка кожного критерію прийнятності).
  • Тестування однаково без урахування ризику. Розподіл робочої сили на території з низьким рівнем ризику та нехтування критичними потоками.
  • Приховування поза межами видимості. Недокументування того, що не було перевірено, коли не вистачило часу; Сюрпризи після випуску.
  • Беззаперечно приймає оцінку ризику ШІ. AI не повністю знає контекст продукту; Налаштуйте бали експертним оком.

Підсумовуючи

Тестове покриття та тестування на основі оцінки ризиків — це два інструменти, які дозволяють спрямувати обмежені зусилля в потрібне місце. Показники покриття (лінія, гілка, стан, шлях) показують, до чого торкалися, але не доводять, що воно поводилося правильно; Сфера – це карта, а довіра – ні. Поставте покриття вимог поруч із покриттям коду. Оцініть функції за формулою ризик = ймовірність × вплив і спрямуйте зусилля на найбільший ризик. AI робить прогалини видимими, оцінює ризик, планує обмежений час; але остаточний пріоритет і рішення про «свідому відмову» залишається за експертом, який знає бізнес-контекст.

Аплікаційне завдання

Виберіть модуль із власного проекту. Запустіть шаблон «розрив обсягу вимог» за допомогою штучного інтелекту та дізнайтеся, які критерії прийнятності не тестуються. Потім ранжуйте підфункції модуля за осями ймовірність × вплив за допомогою «оцінки ризику». Розподіліть (гіпотетичні) 3 години тестування, які у вас є, з «обмеженим графіком»; Запишіть, що ви свідомо не перевірятимете, і прийнятий ризик. Додайте конкретний тест, який усуне виявлений пробіл у охопленні з найвищим ризиком.

контрольний список

  • [ ] Я сприймаю відсоток покриття як карту, а не як якість.
  • [ ] Окрім покриття коду, я також видалив покриття вимог.
  • [ ] Я оцінив функції за ймовірністю × впливом і ранжував їх за ризиком.
  • [ ] Я перенаправив зусилля з тестування на найвищий ризик.
  • [ ] Я задокументував області, які свідомо не перевірялися та не визнавали ризик.
  • [ ] Я переглянув оцінки ризику ШІ на основі контексту свого продукту.