Приведи пример глубокого анализа задачи перед тестированием.

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

Ответ

Глубокий анализ задачи включает декомпозицию требований, выявление скрытых сценариев и граничных условий. Рассмотрим форму регистрации.

1. Анализ явных требований:

  • Обязательные поля: Email, Пароль, Подтверждение пароля.
  • Валидация email по RFC 5322.
  • Пароль: минимум 8 символов, одна заглавная буква, одна цифра.

2. Выявление неявных (неочевидных) сценариев:

  • Ввод данных:
    • Email с пробелами в начале/конце (" user@example.com ").
    • Копирование пароля из менеджера паролей или текстового файла.
    • Использование символов Unicode (эмодзи, иероглифы) в поле "Имя".
  • Поведение UI:
    • Работа формы при быстром двойном клике на кнопку "Зарегистрироваться".
    • Поведение при нажатии кнопки "Назад" в браузере после успешной регистрации.

3. Определение граничных условий (Edge Cases):

  • Пароль: ровно 8 символов vs 7 символов; максимальная длина (например, 255 символов).
  • Email: адреса с поддоменами (user@sub.domain.com), знаками + (user+tag@example.com).
  • Безопасность: попытка XSS-инъекции (<script>alert(1)</script>) в любые текстовые поля.
  • Производительность: ввод очень длинного email (более 254 символов).

Пример теста на валидацию email (Python):

import re

def is_valid_email(email: str) -> bool:
    # Упрощенное, но практичное регулярное выражение
    pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}$'
    return bool(re.match(pattern, email.strip()))

# Тесты на граничные условия
assert is_valid_email("user@example.com") == True
assert is_valid_email("user.name+tag@sub.domain.co.uk") == True
assert is_valid_email("user@.com") == False          # Нет домена перед точкой
assert is_valid_email("user@example..com") == False  # Двойная точка
assert is_valid_email(" user@example.com ") == True  # trim сработал
assert is_valid_email("") == False                  # Пустая строка