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

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

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

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

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

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

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

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

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

ВВЕДЕНИЕ

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

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

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

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

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

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

POSTMAN

БАЗЫ ДАННЫХ

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

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

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

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