С какими уровнями тестирования приложений вы работали?

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

Ответ

Я работал со следующими основными уровнями тестирования:

Уровень Цель Мой опыт и пример
Модульное (Unit) Проверка корректности работы отдельных функций/методов. Писал unit-тесты на Python (pytest) для критичных функций бэкенда.
Интеграционное Проверка взаимодействия между модулями, сервисами или системой и внешними интерфейсами (БД, API). Тестирование REST API (запрос-ответ), проверка корректности записи/чтения данных из БД.
Системное (E2E) Проверка работы приложения как целостной системы с точки зрения конечного пользователя. Автоматизация UI-сценариев в браузере (Selenium/Playwright) и мобильных приложениях.
Приемочное (UAT) Подтверждение, что система удовлетворяет бизнес-требованиям и готова к выпуску. Участие в демонстрациях фич продукт-менеджеру, подготовка данных и сценариев для UAT.

Практические примеры:

1. Модульное тестирование (Python):

# Тестируемая функция
def calculate_discount(price, discount_percent):
    if discount_percent < 0 or discount_percent > 100:
        raise ValueError("Discount must be between 0 and 100")
    return price * (1 - discount_percent / 100)

# Unit-тест
import pytest

def test_calculate_discount_normal():
    assert calculate_discount(1000, 10) == 900

def test_calculate_discount_zero():
    assert calculate_discount(1000, 0) == 1000

def test_calculate_discount_invalid_raises_error():
    with pytest.raises(ValueError):
        calculate_discount(1000, 150)

2. Интеграционное тестирование (API + БД):

# Тест, что создание пользователя через API корректно записывает данные в БД
def test_user_creation_integration(db_connection, api_client):
    # 1. Действие через API
    user_data = {"name": "Alice", "email": "alice@example.com"}
    api_response = api_client.post("/users", json=user_data)
    assert api_response.status_code == 201
    user_id = api_response.json()["id"]

    # 2. Проверка в БД
    db_user = db_connection.execute(
        "SELECT * FROM users WHERE id = ?", (user_id,)
    ).fetchone()

    assert db_user is not None
    assert db_user["email"] == user_data["email"]

Наиболее глубокий опыт у меня в системном (E2E) и интеграционном (API) тестировании, что характерно для позиции Middle QA.