Покрила генератор 981 тестовим випадком із мінімальним порогом покриття гілок 92%, де попередження вважаються помилками, і перевірила ідемпотентність, двічі запустивши весь пайплайн збірки з порожнього файлу та вимагаючи, щоб другий прохід нічого не змінював.
Роботу виконано: липень 2026
981 тестів — за нижньої межі 92% покриття гілок
Ситуація. Генератор, який збирає базу даних з нуля, має характерний тип вад: першого разу він працює, а другого — псує дані. Кроки, які вставляють рядки без перевірки; кроки, що залежать від порядку виведення попереднього кроку; кроки, безпечні поодинці, але не разом. Нічого з цього не виявить тест, який починає з порожнього стану й виконується один раз.
Завдання. Треба було довести, що збірку можна безпечно повторювати, а не лише те, що вона працює, а набір тестів мав бути достатньо великим і суворим, щоб жодна регресія не прослизнула крізь нього непомітно.
Дія. Тест ідемпотентності — найпрямолінійніший і водночас найкорисніший: зібрати всю базу даних із порожнього файлу, зробити знімок, ще раз виконати весь пайплайн із дев’ятнадцяти кроків поверх результату й вимагати, щоб другий прохід нічого не змінив. Кількість рядків, вміст та ідентифікатори — усе має збігатися. Його доповнюють 383 тестові функції — 981 тестовий випадок після розгортання параметризованих, — у сорока п’яти файлах загальним обсягом 7 944 рядки; вони охоплюють пайплайн, рендерери, завантажувачі вмісту, логіку адаптації під читача та скрипти перевірки. Для покриття гілок установлено нижню межу в дев’яносто два відсотки, яку перевіряє сама збірка, а не просто показує у звіті, і зараз набір дає близько 95 відсотків, тож межа має запас, але не декоративна. Попередження налаштовано як помилки, і на практиці саме це налаштування важить найбільше: попередження про застарілість, яке виводиться два роки поспіль, ніхто не читає, а виправляють його саме тоді, коли прогін перетворює його на червоний тест.
Результат. Пайплайн можна без побоювань повторно запускати на робочій базі даних, і саме це взагалі уможливлює поступову роботу з вмістом. Нижня межа — це мінімум, а не мета, і варто сказати, що навіть дев’яносто два відсотки покриття гілок усе одно лишають гілки, якими виконання ніколи не проходило: це число обмежує ризик, але не усуває його, а два дефекти, знайдені в проєкті згодом, містилися в коді, який звіт про покриття показував як покритий.
Читати далі: Увімкнула всі правила лінтера Python як помилки й довела 1 815 зауважень до нуля; кожен із небагатьох винятків має письмове обґрунтування, а два з них підкріплені перевіркою, а не коментарем. Або перегляньте повне портфоліо.
Одна частина довшого переліку — і він увесь на цьому сайті.
Кожен запис написано однаково: ситуація, завдання, що ми зробили і що змінилося.