Ответ
В современной практике (Agile, DevOps) тестирование начинается не на отдельном этапе, а непрерывно и параллельно с разработкой. Это реализуется через принцип Shift-Left Testing.
Конкретные точки начала тестирования:
| Этап задачи | Деятельность по тестированию |
|---|---|
| Анализ требований | Статическое тестирование: ревью спецификаций, User Stories, Acceptance Criteria. Создание тестового чек-листа на основе требований. |
| Дизайн и разработка | Написание юнит-тестов разработчиками (Test-Driven Development). Параллельное создание QA-специалистом интеграционных и API-тестов. Подготовка тестовых данных и среды. |
| Завершение разработки | Начало выполнения функциональных тестов (по готовности фичи в тестовой среде), регрессионное тестирование. |
Пример параллельной работы: Пока разработчик пишет код функции, QA инженер уже готовит для нее интеграционный тест.
Код функции (разработчик):
def calculate_total(items, tax_rate):
"""Рассчитывает итоговую сумму с налогом."""
subtotal = sum(item['price'] for item in items)
tax = subtotal * tax_rate
return subtotal + tax
Интеграционный тест (QA/SDET):
import pytest
def test_calculate_total():
test_items = [{'price': 100}, {'price': 200}]
expected_total = (100 + 200) * 1.1 # Налог 10%
result = calculate_total(test_items, 0.1)
assert result == expected_total, f"Expected {expected_total}, got {result}"
# Также важно проверить граничные случаи:
assert calculate_total([], 0.1) == 0 # Пустой список
Вывод: Тестирование — это не этап после разработки, а непрерывная активность, интегрированная в процесс создания продукта.