Введение

Метод тестирования программного обеспечения

Тестирование «черного ящика», иногда называемое тестированием на основе спецификаций, — это метод тестирования программного обеспечения, который проверяет функциональность приложения, не обращаясь к его внутренним структурам или принципам работы. Этот метод тестирования может применяться практически на любом уровне тестирования программного обеспечения: модульном, интеграционном, системном и приемочном. Тестирование «черного ящика» также используется в тестировании на проникновение, где этичный хакер имитирует внешнюю атаку взлома или кибервойны, не имея знаний об атакуемой системе.

Процедуры испытаний

Испытания на основе спецификаций направлены на проверку функциональности программного обеспечения в соответствии с применимыми требованиями. Этот уровень тестирования обычно требует предоставления тестировщику подробных тестовых случаев, по которым он может просто убедиться, что для заданного ввода выходное значение (или поведение) либо "соответствует", либо "не соответствует" ожидаемому значению, указанному в тестовом случае. Специальные знания кода приложения, его внутренней структуры и навыки программирования в целом не требуются. Тестировщик понимает, что программное обеспечение должно делать, но не знает, как именно оно это делает. Например, тестировщик знает, что определенный ввод всегда возвращает определенный результат, но не знает, как программное обеспечение этот результат формирует.

Тест-казы

Тест-кейсы разрабатываются на основе спецификаций и требований, то есть того, что приложение должно выполнять. Как правило, тест-кейсы выводятся из внешних описаний программного обеспечения, включая спецификации, требования и параметры проектирования. Хотя используемые тесты преимущественно функциональные, могут также применяться нефункциональные тесты. Разработчик тест-кейсов выбирает как корректные, так и некорректные входные данные и определяет ожидаемый результат, часто используя тестовый оракул или ранее полученный известный правильный результат, не опираясь на знание внутренней структуры тестируемого объекта.

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

Типичные методы разработки тестовых сценариев для тестирования "черного ящика" включают тестирование таблицами решений, попарное тестирование, разбиение на классы эквивалентности, анализ граничных значений, граф "причина-следствие", тестирование методом "угадывания ошибок", тестирование переходов состояний, тестирование вариантов использования, тестирование пользовательских историй, анализ предметной области и синтаксическое тестирование.

Область испытаний

Покрытие тестами – это процент требований к программному обеспечению, которые проверяются методами "черного ящика" для системы или приложения. Это отличается от покрытия кода, которое анализирует внутреннее устройство программы и измеряет степень выполнения исходного кода программы при запуске набора тестов. Измерение покрытия тестами позволяет быстро выявлять и устранять дефекты, создавать более полный набор тестов и удалять тесты, не относящиеся к заданным требованиям.

Эффективность

Испытания черного ящика могут быть необходимы для подтверждения корректной функциональности, но их недостаточно для защиты от сложных или высокорискованных ситуаций. Преимущество метода черного ящика заключается в том, что не требуются знания программирования. Какие бы предубеждения ни имели программисты, у тестировщика, скорее всего, будет другой набор предубеждений, и он может акцентировать внимание на различных аспектах функциональности. С другой стороны, тестирование черного ящика часто сравнивают с "прогулкой по темному лабиринту без фонарика". Поскольку исходный код не анализируется, случается, что тестировщик создает множество тестовых случаев для проверки чего-то, что можно было бы проверить одним тестовым случаем, или оставляет некоторые части программы непроверенными.