1000 ошибок, одна Google Таблица и пять часов, которые мне уже не вернуть
У каждого бага есть своя история. Большинство начинается с фразы: «На моей машине всё работает».
Мы тестировали функцию импорта данных для компании, занимающейся лидогенерацией. Функция казалась простой: нажимаете кнопку импорта, загружаете таблицу, и система загружает контакты. Все полагали, что она работает.
Это предположение — ловушка.
Тестировщики существуют для того, чтобы разрушить это предположение. «Счастливый путь» (happy path) всегда вводит вас в заблуждение.
Если бы мы использовали чистый файл Excel, импорт прошел бы успешно. Мы могли бы пойти на обед. Мы могли бы выпустить фичу. Но клиент обнаружил бы баг в понедельник утром в продакшене.
Проблема была в Google Таблице.
Реальные пользователи не используют чистые файлы Excel. Они используют хаотичные Google Таблицы. Они ожидают, что системы справятся с их хаосом.
Когда мы загрузили данные из Google Таблицы, система дала сбой. Мы увидели более 1000 ошибок. Экран заполнился ошибками. Та же кнопка и тот же тип данных привели к полному краху только потому, что изменился исходный формат.
Мы вернулись к Excel, чтобы протестировать больше. Мы пробовали смесь валидных и невалидных строк. Система справилась хорошо: она пропускала плохие строки и шла дальше.
Затем мы попытались воспроизвести хаос реального мира. Мы загрузили большой файл с сотнями строк. Большинство из них были мусором. Лишь немногие были корректными.
Система полностью сломалась. Логика валидации работала для нескольких плохих строк, но она погибла под горой некорректных данных.
Мы потратили пять часов на поиск первопричины. Мы пялились в экраны, перезапускали тесты и винили файлы, браузер и кофе.
Эти пять часов были дешевыми. Альтернативой было бы потерянное клиентом время и потеря доверия к нашему продукту. За баги в тестировании вы платите временем. За баги в продакшене вы платите клиентами.
Я буду выбирать эти пять часов каждый раз.
Хороший тестировщик не спрашивает, работает ли функция. Хороший тестировщик спрашивает, как её сломать.
Перестаньте думать как разработчик. Начните думать как эти люди:
- Ленивый пользователь, который загружает неверный формат файла.
- Пользователь-хаос с объединенными ячейками и пустыми строками.
- Пользователь больших объемов данных с 4000 «грязных» записей вместо 10 чистых.
- Смутьян, который делает именно то, чего делать не следует.
Программное обеспечение ломается на входных данных, которых вы не ожидали.
Самые «простые» функции часто оказываются самыми опасными. Кнопка импорта, поле поиска и контактная форма выглядят безобидно. Это не так.
Если функция проходит «счастливый путь», не спешите двигаться дальше. Будьте тем человеком, который спросит: «А что, если я загружу самый ужасный файл, который только можно вообразить?»
А затем идите и сделайте это.
Optional learning community: https://t.me/GyaanSetuAi
