Ответ
Процесс проверки — это цикл от анализа требований до верификации реализации. Работа строится по следующим этапам:
- Анализ требований: Изучаю SRS, пользовательские истории, use case диаграммы. Выявляю неоднозначности и задаю уточняющие вопросы аналитикам/заказчику.
- Декомпозиция и проектирование проверок: Разбиваю высокоуровневые требования на проверяемые условия (test conditions). Для каждого определяю:
- Позитивные сценарии (валидные данные).
- Негативные сценарии (невалидные данные, ошибочные действия).
- Граничные значения и классы эквивалентности.
- Создание тестовых артефактов: Пишу тест-кейсы, чек-листы или сценарии для автоматизации, которые напрямую ссылаются на ID требования в системе (например, Jira).
- Выполнение проверок и анализ результатов: Сравниваю фактический результат работы ПО с ожидаемым, описанным в требовании.
Пример автоматизированной проверки требования "Система должна блокировать учетную запись после 3 неудачных попыток ввода пароля":
import pytest
def test_account_lockout_after_three_failed_attempts(auth_api, test_user):
"""
Проверка требования: [REQ-AUTH-007]
"""
# Шаг 1-3: Три неудачные попытки входа
for attempt in range(3):
response = auth_api.login(test_user["login"], "WRONG_PASSWORD")
assert response.status_code == 401 # Unauthorized
assert response.json()["error"] == "Invalid credentials"
# Шаг 4: Проверка, что учетная запись заблокирована
response = auth_api.login(test_user["login"], test_user["correct_password"])
assert response.status_code == 423 # Locked
assert "account is locked" in response.json()["message"].lower()
# Шаг 5 (дополнительный): Проверка, что корректный пароль также не принимается
response_retry = auth_api.login(test_user["login"], test_user["correct_password"])
assert response_retry.status_code == 423 # Должен оставаться заблокированным
Фиксация несоответствий: Любое отклонение фиксируется как дефект с четкой связью на требование, шагами воспроизведения, ожидаемым и фактическим результатом, а также уровнем серьезности (Severity).