Мої нотатки зі статті “Change-Driven Testing” за авторством Dr. Sven Amann and Dr. Elmar Jürgens

Примітка автора. Рекомендую ознайомитись із першоджерелом.

Проблема

  • тестування повільне, тому люди пишуть багато автотестів

  • автотестів стає дуже багато, на кожен PR не запустиш усі

  • нічні прогони тестів допомагають частково: бо треба знайти саме той коміт, що зламав master

  • автотести вирішують питання efficiency (продуктивності), але залишається питання effectiveness (результативності чи корисності)

Change-Drive Testing

Суть - концентрація на тестуванні змін. Підхід - заснований на даних, як і Business Intelligence. Тому й дістав назву Test Intelligence.

Дані збираються:

  • з системи контроля версій

  • з тікет системи (JIRA)

  • профайлерів для покриття коду

  • систем менеджменту тестів

Основна ідея Change-Driven testing - "Існуючі тести впадуть тільки, якщо виникнуть нові помилки. Нові помилки виникнуть, коли відбулися зміни в коді".

Пропонується тестувати в два етапи

  1. Для продуктивності тестуємо тільки те, чого торкнулись зміни. Застосовуємо для цього Test Impact Analysis

  2. Для результативності тестуємо усі можливі зміни. Для цього є Test-Gap Analysis.

Важливо! Під змінами розглядають саме зміни в поведінці чи функціональності, а не рефакторінг.

Test Impact Analysis (TIA)

Мета - знайти саме ті тести, що перевірять конкретні зміни в коді.

Test Impact Analysis проходить в два етапи

  1. Крок вибору тестів (Test Selection step): визначаємо тести, на які вплинули зміни. Це можуть бути модульні тести в самому PR, а також усі, що використовують конкретний змінений метод.

  2. Крок пріоретизації тестів (Test Prioritization step): використовуємо "жадібну" (greedy) еврістику - обираються тести, що покривають найбільше зміненого коду за одиницю часу.

Test Gap Analysis (TGA)

Мета - порівняти зміни в коді з сукупним тестовим покриттям та знайти таким чином зміни, що не покриті жодним тестом (test gaps).

Примітка автора. Test-Gap аналіз розкритий достатньо розмито. Треба напевне писати авторам з конкретними питаннями

Як результат, будується treemap

Обмеження, або чому підхід не "панацея"

  • обидва підходи TIA та TGA не враховують зміни в конфігурації та даних системи

  • TIA розраховує, що покриття стабільне - тобто кожне виконання тесту дає те ж саме покриття. Це працює для автотестів, але погано працює для ручного тестування

  • TGA не враховує наскільки ретельно була протестована зміна. Тільки - чи усі методи в конкретному PR були покриті.

Результати

  • До впровадження Test Impact аналізу - на кожен PR запускались тести на CI та фідбеку треба було чекати 45 хвилин.

  • Після впровадження Test Impact аналізу - 1.5 хвилини на перший тестовий запуск саме тих тестів, які потрібно плюс 45 секунд на ретест після фікса проблеми.

  • автори використовують Test-Gap аналіз для побудови treemap діаграм навіть при змінах на UI. Одразу позначено червоним місця, де потрібно додати тестів

Висновок

Виглядає доволі цікаво. До того ж - я точно знаю, що Test Impact аналіз працює й доволі успішно. Але треба докласти чимало зусиль, щоб додати його в проєкт. Деякі інструменти, типу Sealights “обіцяють” легку інтеграцію, але насправді не така вже вона й легка.

До того ж хочу зазначити, що Test Impact аналіз - може бути не тільки для автотестів. Це можна пробувати проводити вручну. Так само, як Test Gap аналіз.

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Test Engineering Notes
Test Engineering Notes@TestEngineering

Про складні речі в тестуванні

1.2KПрочитань
4Автори
14Читачі
На Друкарні з 27 червня

Більше від автора

Вам також сподобається

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається