Существуют различные стратегии тестирования, которые используются для проверки системы против различных типов возможных ошибок. В этой статье я расскажу о стратегии тестирования черного ящика, а также различных ее видах, где тестеру не требует знаний внутренней логики или структуре кода программы.
Тестирование черного ящика - это тип тестирования, в котором функциональные возможности программного обеспечения тестируются без каких-либо ссылок на внутренний дизайн, код или алгоритм, используемый в программе.
Тестовые случаи обычно построены вокруг требований и спецификации программного приложения. Тестирование «черного ящика» также иногда называют «Непрозрачное тестирование», «Функциональное/Поведенческое тестирование» и «тестирование Закрытого ящика».
Тестирование по стратегии чёрного ящика заключается в выборе соответствующих данных в соответствии с функциональными возможностями системы и ее тестирования в отношении функциональных спецификаций для того, чтобы проверить наличие нормального и ненормального поведения системы. В наше время многие компании для получения точных результатов передают испытание своих работ третьим лицам. Это происходит потому, что Разработчик системы очень хорошо понимает внутреннюю логику и кодирование системы, что делает его непригодным для тестирования его приложения.
В целях реализации стратегии тестирования черного ящика, тестировщик должен иметь полное представление о спецификации требований системы, и ее поведения в ответ на конкретные действия.
Различными типами тестирования, которые подпадают под стратегии тестирования черного ящика являются: функциональное тестирование, стресс-тестирование, тестирование на отказ и восстановление, объемное тестирование, тестирование приемлемости для пользователей (также известное как «Пользовательское приемочное испытание»), санитарное тестирование (проверка согласованности), дымовое тестирование, нагрузочное тестирование, юзабилити-тестирование, исследовательское тестирование, 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): в этом типе тестирования программа распространяется для пользователей в виде бета-версии. Они тестируют программное обеспечение на своих компьютерах/сайтах/устройствах и записывают любые ошибки или дефекты, с которыми они столкнулись во время процесса. Затем они сообщают о них разработчикам.