Ответ
Тестирование программного обеспечения (Software Testing) — это процесс проверки и оценки программного продукта для выявления различий между его фактическим и ожидаемым поведением, а также для оценки качества и соответствия требованиям.
Основные цели:
- Обнаружение дефектов (багов) до того, как их найдут пользователи.
- Повышение уверенности в качестве и надежности продукта.
- Обеспечение соответствия функциональным и нефункциональным требованиям.
- Снижение рисков и затрат на поддержку.
Пример базового модульного теста на 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)
# Тесты с использованием assert
# Тест 1: Корректный расчет скидки
assert calculate_discount(1000, 20) == 800
# Тест 2: Скидка 0%
assert calculate_discount(500, 0) == 500
# Тест 3: Скидка 100% (товар бесплатный)
assert calculate_discount(300, 100) == 0
# Тест 4: Проверка обработки некорректных входных данных (отрицательная скидка)
try:
calculate_discount(100, -10)
except ValueError as e:
assert str(e) == "Discount must be between 0 and 100"
Уровни тестирования (по степени изоляции компонентов):
- Модульное (Unit): Тестирование отдельных функций/методов.
- Интеграционное (Integration): Тестирование взаимодействия нескольких модулей или с внешними системами (БД, API).
- Системное (System/E2E): Тестирование полностью собранной системы с точки зрения конечного пользователя.
Типы тестирования (по целям):
- Функциональное: Проверка, что функции работают согласно спецификации.
- Нефункциональное: Проверка качества — производительность, безопасность, удобство использования (UX).
- Регрессионное: Проверка, что новые изменения не сломали существующий функционал.