Одним из способов изучения поставленного вопроса является исследование стратегии тестирования, называемой стратегией «чёрного ящика», тестированием с управлением по данным, или тестированием с управлением по входу-выходу. При использовании этого способа программа рассматривается как «чёрный ящик». Иными словами, такое тестирование имеет целью выяснение обстоятельств, в которых поведение программы не соответствует ее спецификации. Тестовые же данные используются только в соответствии со спецификацией программы (т.е. без учета знаний о её внутренней структуре). При таком подходе обнаружение всех ошибок в программе является критерием исчерпывающего входного тестирования. Последнее может быть достигнуто, если в качестве тестовых наборов использовать все возможные наборы входных данных.
Для исчерпывающего тестирования определённых задач требуется бесконечное число тестов. Допустим, что делается попытка тестирования методом «чёрного ящика» интерпретатора с языка Java. Для построения исчерпывающего теста нужно использовать всё множество правильных программ на Java (фактически их число бесконечно) и все множество неправильных программ (т.е. действительно бесконечное число), чтобы убедиться в том, что компилятор обнаруживает все ошибки. Только в этом случае синтаксически неверная программа не будет компилирована. Если же программа имеет собственную память (например, операционная система, база данных или система распределенных вычислений), то дело обстоит еще хуже. В таких программах исполнение команды (например, задание, запрос в базу данных, выполнение расчёта) зависит от того, какие события ей предшествовали, т.е. от предыдущих команд. Здесь следует перебрать не только все возможные команды, но и все их возможные последовательности. Тестирование «чёрного ящика» – это функциональное тестирование.
Из изложенного следует, что построение исчерпывающего входного теста невозможно. Это подтверждается двумя аргументами: во-первых, нельзя создать тест, гарантирующий отсутствие ошибок; во-вторых, разработка таких тестов противоречит экономическим требованиям. Поскольку исчерпывающее тестирование исключается, целью должна стать максимизация результативности капиталовложений в тестирование (иными словами, максимизация числа ошибок, обнаруживаемых одним тестом).
К способам тестирования «чёрного ящика» относятся следующие способы:
a) Эквивалентное тестирование (разбиение по классам эквивалентности).
b) Анализ граничных условий.
c) Тестирование на основе диаграмм причин-следствий.
Первые два способа будут объединены и рассмотрены совместно.