Как вы определяете критерии тестирования при полном отсутствии каких-либо требований?

«Как вы определяете критерии тестирования при полном отсутствии каких-либо требований?» — вопрос из категории Тестовая документация, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В ситуации полного отсутствия формальных требований я строю тестовые сценарии на основе комбинации следующих источников и принципов:

Ключевые подходы:

  1. Сравнительный анализ (Competitive Analysis): Тестирование и изучение поведения прямых аналогов или похожих продуктов для формирования гипотез об ожидаемом функционале.
  2. Отраслевые стандарты и нормативы:
    • WCAG — для проверки доступности веб-интерфейсов.
    • ISO 25010 — как модель качества программного обеспечения.
    • RFC-стандарты — для сетевых протоколов.
  3. Основные принципы UX/UI: Проверка на соответствие интуитивно понятным паттернам (логичность потока, ясность сообщений об ошибках, консистентность).
  4. Прямая коммуникация: Инициативное общение с заказчиком или продукт-менеджером для уточнения бизнес-целей и ожиданий.
  5. Исследование существующей системы: Если это доработка, тщательно анализирую текущее поведение (reverse engineering).

Почему это работает: Такой подход смещает фокус с проверки «как должно быть по документу» на исследование «как система ведет себя сейчас» и «как это соотносится с общепринятыми нормами».

Пример: Эвристическое тестирование формы логина

# Псевдокод/логика проверок для формы входа без требований
def explore_login_form(page):
    """Исследовательское тестирование формы входа на основе эвристик."""
    findings = []

    # Эвристика 1: Наличие обязательных полей
    if not page.has_field("username"):
        findings.append("Отсутствует поле для имени пользователя/email")
    if not page.has_field("password"):
        findings.append("Отсутствует поле для пароля")

    # Эвристика 2: Безопасность (пароль должен маскироваться)
    if not page.password_field_is_masked():
        findings.append("Текст пароля отображается открыто")

    # Эвристика 3: Наличие понятного действия
    if not page.has_button(["Login", "Sign In", "Войти"]):
        findings.append("Отсутствует четко обозначенная кнопка отправки формы")

    # Эвристика 4: Базовая валидация ввода
    page.fill("username", "invalid-email")
    page.submit()
    if not page.shows_validation_error():
        findings.append("Отсутствует валидация некорректного формата логина")

    return findings

Результатом такого исследования становится де-факто набор требований, который можно задокументировать и согласовать.