Ответ
При тестировании поля возраста с допустимым диапазоном от 18 до 100 лет я применяю метод граничных значений. Тестируются не только сами границы, но и значения рядом с ними.
Набор тестовых значений:
- Минимальная граница: 18 (валидно)
- Значение сразу ниже минимума: 17 (невалидно)
- Значение сразу выше минимума: 19 (валидно)
- Максимальная граница: 100 (валидно)
- Значение сразу ниже максимума: 99 (валидно)
- Значение сразу выше максимума: 101 (невалидно)
Практическая реализация в тестах (на примере Java + JUnit):
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
import static org.junit.jupiter.api.Assertions.*;
class AgeValidatorTest {
private boolean isValidAge(int age) {
return age >= 18 && age <= 100;
}
@ParameterizedTest
@ValueSource(ints = {18, 19, 99, 100}) // Валидные граничные значения
void validAgeBoundaries_ShouldReturnTrue(int age) {
assertTrue(isValidAge(age), "Age " + age + " should be valid");
}
@ParameterizedTest
@ValueSource(ints = {17, 101}) // Невалидные граничные значения
void invalidAgeBoundaries_ShouldReturnFalse(int age) {
assertFalse(isValidAge(age), "Age " + age + " should be invalid");
}
}
Дополнительно всегда проверяю нечисловые вводы (буквы, символы), пустую строку, отрицательные числа и ноль, так как эти кейсы часто выявляют ошибки валидации на стороне сервера или фронтенда.