Ответ
Да, написание тест-кейсов — это базовая и регулярная часть моей работы как QA-инженера. Я пишу их как для ручного тестирования (в системах управления тестированием), так и в виде автоматизированных сценариев.
1. Ручные тест-кейсы (в TestRail/Jira): Я следую принципу чёткого, атомарного и воспроизводимого сценария.
- ID: API-TC-101
- Заголовок: Проверка успешного создания пользователя через REST API
- Предусловия:
- Доступен эндпоинт
POST /api/v1/users - У пользователя есть права администратора (токен получен).
- Доступен эндпоинт
- Шаги:
- Отправить POST-запрос с телом:
{ "username": "test_user_01", "email": "user@example.com", "role": "viewer" } - Зафиксировать код ответа и тело ответа.
- Отправить POST-запрос с телом:
- Ожидаемый результат:
- Код ответа: 201 Created
- Тело ответа: Содержит ID созданного пользователя и переданные данные.
- Побочный эффект: Новый пользователь появляется в БД и доступен через
GET /api/v1/users/{id}.
2. Автоматизированные кейсы (в коде на Python): Тест-кейс превращается в исполняемый скрипт.
import pytest
import requests
class TestUserAPI:
BASE_URL = "https://api.example.com"
def test_create_user(self, admin_auth_token):
"""API-TC-101: Проверка успешного создания пользователя."""
headers = {"Authorization": f"Bearer {admin_auth_token}"}
payload = {
"username": "test_user_01",
"email": "user@example.com",
"role": "viewer"
}
# Шаг 1: Отправить POST-запрос
response = requests.post(
f"{self.BASE_URL}/api/v1/users",
json=payload,
headers=headers
)
# Ожидаемый результат: Проверки (assert)
assert response.status_code == 201, f"Expected 201, got {response.status_code}"
response_json = response.json()
assert response_json["username"] == payload["username"]
assert "id" in response_json
user_id = response_json["id"]
# Побочный эффект: Проверка, что пользователь действительно создан
get_response = requests.get(
f"{self.BASE_URL}/api/v1/users/{user_id}",
headers=headers
)
assert get_response.status_code == 200
Ключевые принципы: независимость, ясность шагов, однозначность ожидаемого результата и связь с требованиями (Traceability).