Ответ
Тестирование изменений требует комплексного подхода, чтобы убедиться в работоспособности новой функциональности и отсутствии регрессий.
Многоуровневая стратегия:
-
Дымовое тестирование (Smoke Testing):
- Быстрая проверка самых критичных функций приложения после сборки или деплоя. Цель — определить, стабильна ли сборка для дальнейшего глубокого тестирования.
-
Тестирование новой функциональности:
- Глубокое тестирование по чек-листам или тест-кейсам, созданным на основе требований.
- Проверка позитивных и негативных сценариев, граничных значений.
-
Регрессионное тестирование (Regression Testing):
- Целенаправленная проверка областей, которые могли быть затронуты изменениями (зоны влияния).
- Запуск набора автоматизированных тестов (если есть) для покрытия ключевых сценариев.
-
Санитарное тестирование (Sanity Testing):
- Узкая, глубокая проверка конкретных исправлений или изменений после регрессионного тестирования.
Ключевые фокус-области при тестировании изменений:
- Обратная совместимость: Новые изменения API не должны ломать старых клиентов. Используется версионирование API.
- Миграция данных: Если изменения связаны со структурой БД, тестируется процесс миграции и целостность данных после него.
- Интеграция: Проверка взаимодействия измененного модуля со смежными системами.
- Производительность: Замер времени отклика, использования ресурсов до и после изменений.
Пример регрессионного теста для API:
import requests
import pytest
# Тест проверяет, что старый эндпоинт (v1) все еще работает,
# а новый (v2) возвращает ожидаемую новую структуру.
def test_backward_compatibility():
# Старый клиент
response_v1 = requests.get('https://api.example.com/v1/users/1')
assert response_v1.status_code == 200
assert 'name' in response_v1.json() # Старое поле
def test_new_functionality():
# Новый клиент
response_v2 = requests.get('https://api.example.com/v2/users/1')
assert response_v2.status_code == 200
assert 'full_name' in response_v2.json() # Новое поле
assert 'avatar_url' in response_v2.json() # Новое поле
Все обнаруженные дефекты документируются с четкими шагами воспроизведения, ожидаемым и фактическим результатом.