Тестирование+чёрного+ящика+(black+box)

Под «чёрным ящиком» понимается объект исследования, внутреннее устройство которого неизвестно. Понятие «чёрный ящик» предложено У. Р. Эшби. В кибернетике оно позволяет изучать поведение систем, то есть их реакций на разнообразные внешние воздействия и в то же время абстрагироваться от их внутреннего устройства.

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

Этот подход до сих пор является самым распространенным в повседневной практике, но у него есть целый ряд недостатков. Во-первых, таким способом невозможно найти взаимоуничтожающихся ошибок, во-вторых, некоторые ошибки возникают достаточно редко (ошибки работы с памятью) и потому их трудно найти и воспроизвести.


 * Методы стратегии чёрного ящика **
 * 1) Эквивалентное разбиение.
 * 2) Анализ граничных значений.
 * 3) Анализ причинно-следственных связей.
 * 4) Предположение об ошибке.

Случайные данные можно менять любыми способами. Например, можно менять не просто часть файла, а весь файл заменить случайными данными. Можно ограничить содержимое файла лишь ASCII-текстом либо ненулевыми байтами. Как бы вы не меняли файл, главным будет подать приложению побольше случайных данных и посмотреть, что будет.
 * Тестирование по этому методу реализовать довольно просто:**
 * 1) Подготовьте корректный файл, предназначенный для ввода в программу;
 * 2) Замените некоторые части этого файла случайными данными;
 * 3) Откройте файл в программе;
 * 4) Посмотрите, что идет не так.

Хотя начальные тесты можно проводить и вручную, для достижения максимального эффекта тестирование следует автоматизировать. В этом случае сначала нужно определить правильное поведение при ошибке, когда приложение получает неверные входные данные. (Если вы обнаружили, что программа вообще не побеспокоилась определить, что случилось, когда поданные входные неверны, -- что ж, это ваша первая ошибка.) Затем вы просто подаете случайные данные в программу до тех пор, пока не найдется файл, в ответ на который не появляется правильное диалоговое окно ошибки, сообщение, исключительная ситуация и т.д. Сохраните и зарегистрируйте этот файл, чтобы позже можно было воспроизвести проблему. Повторите. Хотя тестирование по методу "черного ящика" обычно требует некоторого ручного написания кода, существуют инструментальные средства, которые могут помочь в этом.

Исказить файл легко. Передать его приложению обычно ненамного труднее. Для написания этой части теста часто наилучшим выбором будут такие языки сценариев, как AppleScript или Perl. Для программ с графическим интерфейсом самой трудной частью может быть распознавание того факта, что приложение указало правильный режим ошибки. Иногда проще всего посадить кого-нибудь перед монитором и заставить его помечать каждый тест как удачный или неудачный. Обязательно отдельно называйте и сохраняйте все сгенерированные случайные контрольные примеры, чтобы потом можно было воспроизвести все ошибки, обнаруженные с помощью этой процедуры.