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

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

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

Тестовые случаи обычно построены вокруг требований и спецификации программного приложения. Тестирование « черного ящика » также иногда называют « Непрозрачное тестирование », « Функциональное/Поведенческое тестирование » и « тестирование Закрытого ящика ».

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

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

Различными типами тестирования, которые подпадают под стратегии тестирования черного ящика являются: функциональное тестирование, стресс-тестирование, тестирование на отказ и восстановление, объемное тестирование, тестирование приемлемости для пользователей (также известное как «Пользовательское приемочное испытание»), санитарное тестирование (проверка согласованности), дымовое тестирование, нагрузочное тестирование, юзабилити-тестирование, исследовательское тестирование, ad-hoc тестирование (тестирование без формализации самого процесса), альфа-тестирование, бета-тестирование и т.д.

Эти виды тестирования можно разделились на две группы:

а) тестирование, в котором пользователь выступает в роли тестера.

б) пользователь не требуется.

Методы тестирования, в которых пользователь не требуется

Функциональное тестирование (Functional Testing): в этом типе тестирования, программное обеспечение проверяется на соответствие функциональным требованиям, т.е. то, что система должна делать. Для этого пишутся тестовые сценарии, и проверяется: работает ли система должным образом.

Объемное тестирование (Volume Testing): в этом тестировании посредством приложения (которое проходит испытание) обрабатывается большой объем данных, чтобы проверить работу программы, в ситуациях, когда система может быть подвергнута большим потокам данных.

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

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

Дымовое тестирование (Smoke Testing): это тестирование проводится с целью проверки наиболее важных функций приложения, работают ли они без сбоев, при ожидаемом уровне нагрузки. Оно проверяет стабильность системы и готова ли она для дальнейшего тестирования.

Санитарное тестирование (Sanity Testing): Также известно, как узкое регрессионное тестирование или проверка согласованности, определяет, будет ли приложение нормально работать после внесения незначительных изменений в код или функциональных возможности без внесения каких-либо новых ошибок.

Тестирование на отказ и восстановление (Recovery Testing): это делается, чтобы проверить, как быстро и хорошо приложение может восстановиться после любого типа аварии или сбоя оборудования. Тип или степень восстановления указана в спецификации требований.

Специальное тестирование (Ad hoc Testing): также известно, как тестирование в полном хаосе, этот тип тестирования проводится без какого-либо формального плана тестирования. Специальное тестирование помогает в определении объема и длительности других методов тестирования, а также помогает тестерам в изучении приложения до запуска каких-либо других испытаний.

Исследовательское тестирование (Exploratory Testing): это делается для того, чтобы узнать/изучить приложение, чтобы определить, как работает программа, и как она будет обрабатывать различные тестовые случаи.

Юзабилити-тестирование (Usability Testing): это тестирование называют также тестированием на удобство. Оно проводится, чтобы проверить, может ли предполагаемый пользователь удовлетворить свои требования через тестируемую систему.

Методы тестирования для которых требуется пользователь

Приемочное тестирование пользователями (User Acceptance Testing (UAT)): в этом типе тестирования, программное обеспечение передается пользователям чтобы определить, удовлетворяет ли оно их требованиям и ожиданиям и работает ли оно так как ожидается.

Альфа-тестирования (Alpha Testing): Альфа-тестирование проходит в центре разработки, где система тестируется пользователями или клиентами, чтобы проверить, все ли их требования были соблюдены. Любой тип аномального поведения в системе отмечается разработчиками и устраняется соответствующим образом.

Бета-тестирование (Beta Testing): в этом типе тестирования программа распространяется для пользователей в виде бета-версии. Они тестируют программное обеспечение на своих компьютерах/сайтах/устройствах и записывают любые ошибки или дефекты, с которыми они столкнулись во время процесса. Затем они сообщают о них разработчикам.