← Назад к вопросам

Как проверить поле для ввода возраста методом граничных значений?

2.0 Middle🔥 252 комментариев
#Теория тестирования#Фреймворки тестирования

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Проверка поля ввода возраста методом граничных значений

Метод граничных значений — один из ключевых в арсенале QA Automation, особенно для проверки числовых полей. Он основан на принципе, что ошибки чаще всего возникают на границах входных значений, а не в центре диапазона. Для поля «Возраст» мы должны определить допустимый диапазон, а затем тестировать значения на его границах и за их пределами.

Для примера, предположим, что поле «Возраст» принимает значения от 18 до 120 лет (типичные ограничения для многих систем).

Шаги проверки

  1. Определение допустимого диапазона:
    *   Нижняя граница (`min`): 18
    *   Верхняя граница (`max`): 120
    *   Допустимый диапазон: [18, 120] (включительно).

  1. Выбор тестовых значений:
    Мы тестируем не только сами граничные значения, но и значения рядом с ними.

    *   **Корректные граничные значения (валидные)**:
        *   `min` = 18
        *   `max` = 120
        *   Любое значение внутри диапазона, например, 50.
    *   **Некорректные граничные значения (невалидные)**:
        *   `min - 1` = 17 (сразу за нижней границей)
        *   `max + 1` = 121 (сразу за верхней границей)
    *   **Дополнительные сценарии (по желанию или требованию)**:
        *   `min + 1` = 19
        *   `max - 1` = 119
        *   Значение 0, отрицательные числа (например, -1, -100)
        *   Нечисловые значения: строки, спецсимволы (это уже проверка на валидацию типа данных).

Автоматизация проверки в коде (пример на Python с использованием Pytest)

Вот как эти сценарии могут быть реализованы в тестах. Предполагается, что у нас есть объект веб-страницы (age_input_page) с методом set_age_and_validate(value), который вводит значение и возвращает True, если оно принято, или False/выбрасывает исключение, если нет.

import pytest

class TestAgeInputBoundaryValues:
    """Класс для тестирования граничных значений поля Возраст."""

    # Валидные граничные значения и позитивный кейс
    @pytest.mark.parametrize("valid_age", [18, 120, 50])
    def test_valid_age_boundaries(self, age_input_page, valid_age):
        """Проверяем, что валидные границы и внутреннее значение принимаются."""
        result = age_input_page.set_age_and_validate(valid_age)
        assert result is True, f"Валидный возраст {valid_age} должен быть принят системой."

    # Невалидные граничные значения
    @pytest.mark.parametrize("invalid_age", [17, 121])
    def test_invalid_age_boundaries(self, age_input_page, invalid_age):
        """Проверяем, что значения прямо за границами диапазона отклоняются."""
        result = age_input_page.set_age_and_validate(invalid_age)
        # Ожидаем, что система НЕ примет значение (False) или выбросит ошибку валидации.
        assert result is False, f"Невалидный возраст {invalid_age} должен быть отклонен."

    # Дополнительные негативные проверки
    @pytest.mark.parametrize("edge_case", [0, -1, -999])
    def test_extreme_invalid_ages(self, age_input_page, edge_case):
        """Проверка явно недопустимых значений (отрицательные, ноль)."""
        result = age_input_page.set_age_and_validate(edge_case)
        assert result is False, f"Значение {edge_case} не должно быть допустимым возрастом."

    # Проверка на некорректный тип данных (например, строка)
    def test_non_numeric_input(self, age_input_page):
        """Проверка, что поле не принимает текст."""
        # Предполагаем, что метод обрабатывает исключение или возвращает False.
        # В реальности может потребоваться перехват исключения или проверка сообщения об ошибке.
        with pytest.raises(ValueError) or age_input_page.set_age_and_validate("двадцать пять") is False:
            # Если исключение было выброшено или вернулось False - тест пройден.
            pass

Ключевые аспекты для автоматизатора

  • Параметризация тестов: Использование @pytest.mark.parametrize делает код чище и позволяет легко добавлять новые значения.
  • Читаемость и отчетность: Названия тестовых методов должны четко указывать, что проверяется (valid_age_boundaries, invalid_age_boundaries).
  • Валидация поведения системы: Важно проверять не просто факт ввода данных, а реакцию системы: показ ошибки, блокировку кнопки, подсветку поля. В коде это отражено в проверке булева результата (True/False) или перехвате исключений.
  • Интеграция с CI/CD: Такие тесты должны быть частью pipeline, чтобы гарантировать, что регрессия не сломает базовую валидацию поля.
  • Взаимодействие с фронтендом: В реальном проекте методы set_age_and_validate будут использовать Selenium или Playwright для взаимодействия с полем ввода и проверки UI-элементов с сообщениями об ошибках.

Расширение метода

Для более тщательного тестирования метод граничных значений можно комбинировать с анализом классов эквивалентности:

  • Валидный класс: 18-120.
  • Невалидные классы: меньше 18, больше 120, нечисловые данные.

Таким образом, проверка поля возраста — это не только ввод чисел 17, 18, 120, 121. Это комплексная проверка логики валидации на всех критических точках, что идеально ложится на автоматизацию, обеспечивая скорость и надежность при каждом запуске.