Ответ
Техника эквивалентного разбиения (Equivalence Partitioning) позволяет сократить количество тестов, группируя входные данные в классы, где поведение системы ожидается одинаковым.
Шаги для поля логина:
- Определить классы эквивалентности (КЭ):
- Валидный КЭ: Корректный логин, соответствующий всем требованиям (например,
user@example.comилиvalid_username). - Невалидные КЭ:
- Пустая строка.
- Строка короче минимально допустимой длины.
- Строка длиннее максимально допустимой длины.
- Содержит запрещённые символы (пробелы, недопустимые спецсимволы).
- Не соответствует формату (например, не email, если требуется).
- Валидный КЭ: Корректный логин, соответствующий всем требованиям (например,
- Выбрать по одному представителю из каждого класса для тестирования.
- Дополнить проверкой граничных значений (Boundary Value Analysis) на стыках классов (например, минимальная и максимальная длина).
Пример тест-кейсов на Python:
def validate_login(login: str) -> bool:
# Примерная логика валидации
if not login:
return False
if len(login) < 3 or len(login) > 100:
return False
if " " in login:
return False
# ... другие проверки
return True
# Тесты для представителей классов эквивалентности
def test_equivalence_partitioning():
# Валидный класс
assert validate_login("correct.user") == True
# Невалидные классы
assert validate_login("") == False # Пустое поле
assert validate_login("ab") == False # Слишком коротко (граница)
assert validate_login("a" * 101) == False # Слишком длинно (граница)
assert validate_login("user name") == False # Запрещённый символ (пробел)
Почему это работает: Система должна одинаково обрабатывать все значения внутри одного класса. Если тест с одним представителем проходит, с высокой вероятностью пройдут и другие значения из этого класса, что экономит ресурсы.