Ответ
Тестирование белого ящика (white-box/structural/glass-box testing) — это метод, при котором тестировщик проектирует тестовые сценарии, основываясь на знании внутренней структуры, реализации и кода тестируемого приложения. Фокус смещен на проверку корректности внутренних путей выполнения, условий и структур данных.
Основные характеристики:
- Доступ к коду: Тестировщик имеет доступ к исходному коду.
- Цель: Проверка внутренней логики, покрытие ветвлений (branch coverage), путей выполнения (path coverage).
- Уровень: Применяется преимущественно на уровне модульного (unit) и интеграционного (integration) тестирования.
Пример модульного теста (белый ящик) в XCTest:
// Тестируемая функция (логика известна тестировщику)
func calculateDiscount(price: Double, isPremium: Bool) -> Double {
let baseDiscount = 0.1
let premiumBonus = 0.05
var discount = baseDiscount
if isPremium {
discount += premiumBonus // Эта ветвь должна быть проверена
}
return price * discount
}
// Тест, проверяющий внутреннюю логику
class DiscountTests: XCTestCase {
func testDiscountForPremiumUser() {
let result = calculateDiscount(price: 100.0, isPremium: true)
// Проверяем, что бонус для premium был учтен: 100 * (0.1 + 0.05) = 15
XCTAssertEqual(result, 15.0)
}
func testDiscountForRegularUser() {
let result = calculateDiscount(price: 100.0, isPremium: false)
// Проверяем только базовую скидку: 100 * 0.1 = 10
XCTAssertEqual(result, 10.0)
}
}
Преимущества: Позволяет находить скрытые ошибки в сложной логике, обеспечивает высокое покрытие кода. Недостатки: Требует глубоких знаний системы, может быть затратным, не проверяет соответствие внешним требованиям (для этого используется черный ящик).