Ответ
Достаточное количество тестов определяется применением техник тест-дизайна к специфике поля, а не произвольным числом. Нужно покрыть ключевые сценарии.
Методика оценки (на примере числового поля 'Возраст' от 18 до 99):
-
Позитивные тесты (валидные данные):
- Стандартное значение внутри диапазона (например,
25). - Граничные значения: Минимум (
18) и максимум (99).
- Стандартное значение внутри диапазона (например,
-
Негативные тесты (невалидные данные):
- Граничные значения -1/+1:
17и100. - Некорректные типы: Пустая строка
"", строка"двадцать пять",null. - Специальные символы и атаки: Попытки SQL-инъекции (
' OR '1'='1), XSS (<script>alert()</script>). - Экстремальные значения: Отрицательные числа, очень большие числа, дробные числа (если не допускаются).
- Граничные значения -1/+1:
Пример набора тестовых данных в Python:
test_cases = [
# (input_value, expected_is_valid, description)
(25, True, "Valid middle value"),
(18, True, "Valid lower boundary"),
(99, True, "Valid upper boundary"),
(17, False, "Just below lower boundary"),
(100, False, "Just above upper boundary"),
("", False, "Empty string"),
(None, False, "Null value"),
("25", False, "String instead of integer"),
(-10, False, "Negative number"),
("18 OR 1=1", False, "SQL injection attempt"),
]
Для простого поля достаточно 7-12 тестов. Для критичных полей (пароль, email, сумма платежа) количество увеличивается за счет проверки формата, безопасности и сложной бизнес-логики.
Ответ 18+ 🔞
Ага, ну вот, опять про тесты. Слушай, а ты знаешь, как на самом деле определяется, сколько их нужно? Не какое-то там волшебное число «пять штук на поле», а по-человечески, с мозгами.
Вот представь, у тебя есть поле, скажем, «Возраст». От 18 до 99, всё просто, казалось бы. Так вот, достаточное количество — это когда ты применил техники тест-дизайна к конкретной фиче, а не просто натыкал кейсов, как бог на душу положит. Нужно покрыть ключевые сценарии, а не всю вселенную, блядь.
Смотри, как это оценивается, на примере этого самого поля:
-
Позитивные тесты (когда всё ок):
- Нормальное значение где-то посередине (ну,
25, например). - Граничные значения, ёпта! Это святое: минимум (
18) и максимум (99). Если тут косяк — пиши пропало.
- Нормальное значение где-то посередине (ну,
-
Негативные тесты (когда всё идёт по пизде):
- Границы на минус-плюс один:
17и100. Это чтобы проверить, не проскочит ли лишнее. - Неправильный тип данных: Пустая строка
"", текст"двадцать пять",null— система не должна сломаться в истерике, а должна вежливо послать нахуй. - Всякая херня для безопасности: Попытки SQL-инъекции (
' OR '1'='1), XSS-скрипты (<script>alert()</script>). Если это пропустишь — потом будешь ебаться с безопасниками до посинения. - Экстремальные значения: Отрицательные числа, числа размером с бюджет мелкой страны, дробные числа (если они не разрешены).
- Границы на минус-плюс один:
Вот, смотри, как это выглядит в коде, на Python:
test_cases = [
# (введённое_значение, должно_быть_валидным, описание_для_себя_любимого)
(25, True, "Valid middle value"),
(18, True, "Valid lower boundary"),
(99, True, "Valid upper boundary"),
(17, False, "Just below lower boundary"),
(100, False, "Just above upper boundary"),
("", False, "Empty string"),
(None, False, "Null value"),
("25", False, "String instead of integer"),
(-10, False, "Negative number"),
("18 OR 1=1", False, "SQL injection attempt"),
]
Для простого поля, вроде возраста, обычно хватает где-то 7-12 тестов, и ты уже чувствуешь себя более-менее спокойно. Но если поле критичное — пароль, почта, сумма перевода — тут уже по-другому. Там количество взлетает, потому что надо проверять и формат, и безопасность, и всякую ебучую бизнес-логику, которая может быть сложнее, чем инструкция к китайской стиралке. Вот так вот, без воды.