Математика для тестировщика

Вы пишете тесты. Часто слышите: «Надо проверить всё». Но «всё» — это сотни и тысячи вариантов. Как понять, сколько тестов достаточно? Тут помогает математика. Простая. Без сложных формул. Давайте разберём на пальцах.

Классы эквивалентности. Группируем похожее

У вас есть поле для ввода возраста. Оно принимает числа от 1 до 99. Проверять все 99 вариантов — бессмысленно. Мы делим все возможные значения на группы с одинаковым поведением.

· Меньше 1 (невалид) · От 1 до 99 (валид) · Больше 99 (невалид)

Теперь берём по одному представителю из каждой группы. Например: 0, 50, 100. Итого три теста. Вместо 99. Экономия очевидна.

Граничные значения. Смотрим на края

Ошибки чаще всего прячутся на границах. Для диапазона 1–99 мы проверяем не только середину, но и края: 0, 1, 2, 98, 99, 100. Шесть проверок. Добавляем середину (50) — получаем семь тестов. Это покрывает все опасные зоны.

Попарное тестирование. Когда комбинаций слишком много

Представьте: у вас три настройки. Каждая имеет по десять вариантов. Полный перебор даёт 1000 комбинаций. Руками не проверить.

Попарный метод проверяет каждую пару значений хотя бы один раз. Например, если мы проверим сочетание настройки А и Б, а потом Б и В — мы уже покрыли большинство ошибок. Вместо 1000 тестов получается около 20–30. Реально выполнимо.

Таблицы принятия решений. Когда логика ветвится

У вас есть условия и действия. Например, для кредита: возраст больше 18, доход выше 50 тысяч, хорошая кредитная история. Каждое условие может быть истинным или ложным.

Если у вас три условия, то количество комбинаций — 2 в кубе, то есть 8. Вы просто рисуете таблицу с 8 строками. Для каждой строки прописываете результат. Это наглядно и не даёт пропустить ни одной ветки.

Вероятности. Оцениваем риск

Вы знаете, что из 100 сценариев 10 могут упасть. Вероятность случайно наткнуться на дефект — 10%. Если вы запустите 20 случайных тестов, вероятность найти хотя бы один баг будет около 88%. Это помогает решить: сколько тестов запускать, чтобы быть уверенным.

Как я применяю это на практике

Смотрю на задачу. Считаю классы эквивалентности — получаю базу. Добавляю граничные значения — ловлю края. Если много комбинаций — применяю попарное тестирование. Если ветвистая логика — рисую таблицу решений. Вероятности помогают решить, на чём сосредоточиться.

Никогда не проверяю всё подряд. Всегда считаю. Цифры дают уверенность, что я не пропущу критичный баг.

Зеркало. Разрушаем миф

Многие думают, что математика в тестировании — это для учёных. На деле это простая арифметика. Сложение, умножение, немного комбинаторики. Всё, что проходили в школе.

Главное — не бояться считать. Потому что каждый сэкономленный тест — это час вашего времени.

Математика для тестировщика | Сетка — социальная сеть от hh.ru