Перейти до вмісту

Покрила генератор 981 тестовим випадком із мінімальним порогом покриття гілок 92%, де попередження вважаються помилками, і перевірила ідемпотентність, двічі запустивши весь пайплайн збірки з порожнього файлу та вимагаючи, щоб другий прохід нічого не змінював.

981 тестів — за нижньої межі 92% покриття гілок

Ситуація. Генератор, який збирає базу даних з нуля, має характерний тип вад: першого разу він працює, а другого — псує дані. Кроки, які вставляють рядки без перевірки; кроки, що залежать від порядку виведення попереднього кроку; кроки, безпечні поодинці, але не разом. Нічого з цього не виявить тест, який починає з порожнього стану й виконується один раз.

Завдання. Треба було довести, що збірку можна безпечно повторювати, а не лише те, що вона працює, а набір тестів мав бути достатньо великим і суворим, щоб жодна регресія не прослизнула крізь нього непомітно.

Дія. Тест ідемпотентності — найпрямолінійніший і водночас найкорисніший: зібрати всю базу даних із порожнього файлу, зробити знімок, ще раз виконати весь пайплайн із дев’ятнадцяти кроків поверх результату й вимагати, щоб другий прохід нічого не змінив. Кількість рядків, вміст та ідентифікатори — усе має збігатися. Його доповнюють 383 тестові функції — 981 тестовий випадок після розгортання параметризованих, — у сорока п’яти файлах загальним обсягом 7 944 рядки; вони охоплюють пайплайн, рендерери, завантажувачі вмісту, логіку адаптації під читача та скрипти перевірки. Для покриття гілок установлено нижню межу в дев’яносто два відсотки, яку перевіряє сама збірка, а не просто показує у звіті, і зараз набір дає близько 95 відсотків, тож межа має запас, але не декоративна. Попередження налаштовано як помилки, і на практиці саме це налаштування важить найбільше: попередження про застарілість, яке виводиться два роки поспіль, ніхто не читає, а виправляють його саме тоді, коли прогін перетворює його на червоний тест.

Результат. Пайплайн можна без побоювань повторно запускати на робочій базі даних, і саме це взагалі уможливлює поступову роботу з вмістом. Нижня межа — це мінімум, а не мета, і варто сказати, що навіть дев’яносто два відсотки покриття гілок усе одно лишають гілки, якими виконання ніколи не проходило: це число обмежує ризик, але не усуває його, а два дефекти, знайдені в проєкті згодом, містилися в коді, який звіт про покриття показував як покритий.

Одна частина довшого переліку — і він увесь на цьому сайті.

Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.

Переглянути весь перелік