Тестирование методом белого ящика

White-box testing / Glass-box testing

White cat inside of a box

Возможность провести «тестирование методом белого ящика» появляется, когда тестировщику доступен исходный код программы и знания для его анализа.

Противоположность ему — «тестирование методом чёрного ящика», при котором тестировщик имеет доступ только к внешней оболочке — интерфейсу приложения.

Пример внутренней логики работы программы

Сервис в зависимости от переданного значения параметра taste (вкус) возвращает тот или иной список конфет.

candies(taste) {

    если taste равен MINT игнорируя регистр {
        тогда вернем ответ ["Космическая свежесть", "Мятная туманность"]
    }

    иначе если taste равен CITRUS игнорируя регистр {
        тогда вернем ответ ["Взрывная Комета"]
    }

    иначе вернем ответ ["Вселенская Гармония"]
}

Квадратные скобки [ ] обозначают массив однотипных данных, в нашем случае — список названий конфет.

Техники тестирования методом белого ящика

Основные техники тестирования методом белого ящика:

Тестирование условий

(Condition Testing)

если (taste == MINT или taste == CITRUS) {
    обработать();
} иначе {
    обработатьПоУмолчанию();
}

Проверяет различные состояния и комбинации условий, включая проверку каждой части сложных условий.

Тестирование путей

(Path Testing)

если (taste == MINT или taste == CITRUS) {
    обработать(); //может вызвать ошибку
} иначе {
    обработатьПоУмолчанию();
}

Проверяет все возможные пути выполнения в программе.

Охватывает проверки тестирования условий и, например, может также учитывать сценарий с возникновением исключительной ситуации во время исполнения кода.

Тестирование покрытия кода

(Code Coverage Testing)

если (taste == MINT или taste == CITRUS) {
    обработать();
} иначе {
    обработатьПоУмолчанию();
}

Стремится к выполнению каждой строки кода при тестировании хотя бы один раз.

Строка будет считаться покрытой, даже если была проверена только часть условия. Подробнее.

Расположите техники в порядке увеличения количества проверок.

Тестирование условий

Condition testing

Для наглядности составим блок-схему на основании логики, описанной в исходном псевдокоде.

если, иначе если и иначе — это операторы условий.

Каждое условие (MINT, CITRUS) может быть истинным (да) или ложным (нет) — это возможные состояния условия.

Переход к проверке условия CITRUS происходит только в случае, если состояние условия MINT — ложное (нет).

В таблицу внесем все возможные комбинации состояний условий.

Это и есть проверки, которые необходимо произвести при тестировании методом условий.

Condition testing block schema
Проверка Условие MINT Условие CITRUS
1 да
2 нет да
3 нет нет
Задача
Задача доступна премиум пользователям!

Открой доступ, чтобы заниматься без ограничений.

Полный доступ ко всем практическим задачам
Проверка ответов
Неограниченное количество попыток
Sidebar arrow

ВВЕДЕНИЕ

БАЗОВЫЕ ЗНАНИЯ

УРОВНИ ТЕСТИРОВАНИЯ

UI ТЕСТИРОВАНИЕ

ТЕХНИКИ ТЕСТ ДИЗАЙНА

ТЕСТОВАЯ ДОКУМЕНТАЦИЯ

АУТЕНТИФИКАЦИЯ И АВТОРИЗАЦИЯ

POSTMAN

БАЗЫ ДАННЫХ

ТЕСТИРОВАНИЕ РЕЛИЗА

АНАЛИЗ РАБОТЫ ПРИЛОЖЕНИЯ

ПОДГОТОВКА К СОБЕСЕДОВАНИЮ

Как составить резюме Топ вопросов Тест Собеседование