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