- Тестирование белого ящика и черного ящика
- Тестирование чёрного ящика или поведенческое тестирование
- Тестирование по стратегии белого ящика
- Тестирование белого ящика
- Введение в тестирование белого ящика
- Что такое тестирование белого ящика?
- Что отличает тестирование белого ящика от тестирования черного ящика
- Как проводится тестирование белого ящика?
- 1. Понимание предоставленного кода
- 2. Создание тестовых случаев и их выполнение
- Пример тестирования белого ящика
- Методы испытаний белой коробки
- преимущества
- Недостатки
- Инструменты тестирования White Box
- JSUnit.net
- CppUnit
- Veracode
- NUnit
- JUnit
- CSUnit
- Вывод
- Рекомендуемые статьи
Тестирование белого ящика и черного ящика
В зависимости от доступа разработчика тестов к исходному коду тестируемой программы различают «тестирование (по стратегии) белого ящика» и «тестирование (по стратегии) чёрного ящика».
При тестировании белого ящика (также говорят — прозрачного ящика), разработчик теста имеет доступ к исходному коду программ и может писать код, который связан с библиотеками тестируемого программного обеспечения. Это типично для модульного тестирования, при котором тестируются только отдельные части системы. Оно обеспечивает то, что компоненты конструкции — работоспособны и устойчивы, до определённой степени. При тестировании белого ящика используются метрики покрытия
кода или мутационное тестирование.При тестировании чёрного ящика, тестировщик имеет доступ к программе только через те же интерфейсы, что и заказчик или пользователь, либо через внешние интерфейсы, позволяющие другому компьютеру либо другому процессу подключиться к системе для тестирования. Например, тестирующий модуль может виртуально нажимать клавиши или кнопки мыши в тестируемой программе с помощью механизма взаимодействия процессов, с уверенностью в том, все ли идёт правильно, что эти события вызывают тот же отклик, что и реальные нажатия клавиш и кнопок мыши.
Как правило, тестирование чёрного ящика ведётся с использованием спецификаций или иных документов, описывающих требования к системе. Обычно в данном виде тестирования критерий покрытия складывается из покрытия структуры входных данных, покрытия требований и покрытия модели (в тестировании на основе моделей).
При тестировании серого ящика разработчик теста имеет доступ к исходному коду, но при непосредственном выполнении тестов доступ к коду, как правило, не требуется.
Если «альфа-» и «бета-тестирование» относятся к стадиям до выпуска продукта (а также, неявно, к объёму тестирующего сообщества и ограничениям на методы тестирования), тестирование «белого ящика» и «чёрного ящика» имеет отношение к способам, которыми тестировщик достигает цели.
Бета-тестирование в целом ограничено техникой чёрного ящика (хотя постоянная часть тестировщиков обычно продолжает тестирование белого ящика параллельно бета-тестированию). Таким образом, термин «бета-тестирование» может указывать на состояние программы (ближе к выпуску чем «альфа»), или может указывать на некоторую группу тестировщиков и процесс, выполняемый этой группой. То есть, тестировщик может продолжать работу по тестированию белого ящика, хотя программа уже «бета-стадии», но в этом случае он не является частью «бета-тестирования».
Тестирование чёрного ящика или поведенческое тестирование
Тестирование чёрного ящика или поведенческое тестирование — стратегия (метод) тестирования функционального поведения объекта (программы, системы) с точки зрения внешнего мира, при котором не используется знание о внутреннем устройстве тестируемого объекта. Под стратегией понимаются систематические методы отбора и создания тестов для тестового набора. Стратегия поведенческого теста исходит из технических требований и их спецификаций.
Тестирование по стратегии белого ящика
Тестирование по стратегии белого ящика — тестирование кода на предмет логики работы программы и корректности её работы с точки зрения компилятора того языка, на котором она писалась.Тестирование по стратегии белого ящика, также называемое техникой тестирования, управляемой логикой программы, позволяет проверить
внутреннюю структуру программы. Исходя из этой стратегии тестировщик получает тестовые данные путем анализа логики работы программы.
Техника Белого ящика включает в себя следующие методы тестирования:
1. покрытие решений
2. покрытие условий
3. покрытие решений и условий
4. комбинаторное покрытие условий
Источник
Тестирование белого ящика
Введение в тестирование белого ящика
Тестирование является одной из важных частей разработки программного обеспечения, оно гарантирует, что все ошибки устранены, и программа работает так, как и предполагалось. Тестирование программного продукта может состоять из нескольких этапов и нескольких процедур. В этой статье мы рассмотрим один из важных подходов к процессу тестирования — тестирование «Белого ящика».
Что такое тестирование белого ящика?
Тестирование белого ящика также называется тестированием кода, тестированием прозрачного бокса, тестированием открытого бокса и структурным тестированием. Основная идея этого подхода к тестированию программного обеспечения заключается в рассмотрении внутренней структуры и кода программы для ее тестирования.
При тестировании Белого ящика тестер может видеть весь код программы, и ему поручено проверить последовательность работы входов и выходов в программе. В отличие от тестирования «черного ящика», которое в большей степени ориентировано на тестирование функциональности программы, White Box Testing занимается тестированием внутренних структур программы. Такой взгляд на программу позволяет нам работать над улучшением дизайна, удобства использования и повышением безопасности продукта.
Как вы можете догадаться, это называется тестированием белого или стеклянного ящика, потому что тестер может видеть код и другие части программы.
Что отличает тестирование белого ящика от тестирования черного ящика
Если в прошлом вы испытывали трудности при тестировании, я уверен, что вы сталкивались с тестированием Black Box. Самое большое различие между тестированием White Box и тестированием Black Box заключается в том, что в отличие от тестирования Black Box, которое проводится с точки зрения пользователя, тестирование White Box выполняется с точки зрения разработчика.
Другими словами, вместо того, чтобы смотреть на программу извне, подход White Box Testing видит внутренний код и тестирует его.
Как проводится тестирование белого ящика?
Мы можем разделить процесс тестирования белого ящика на два основных этапа.
1. Понимание предоставленного кода
Сначала тестировщику в White Box Testing необходимо будет изучить код приложения. Учитывая тот факт, что White Box Testing — это все о понимании и тестировании всего внутреннего кода программы, любой, кому поручено тестировать код, должен не только хорошо разбираться в программировании, но он также должен иметь хорошие знания языка исходного кода.
Безопасность является одним из важных аспектов тестирования White Box, поэтому тестировщик также должен уметь применять методы безопасного кодирования.
2. Создание тестовых случаев и их выполнение
После изучения кода группой тестирования они могут начать тестирование кода, чтобы проверить его правильную последовательность и структуру. Чтобы сделать это, тестеры напишут некоторый код для некоторых тестовых случаев, который попытается пройти через все строки кода, присутствующие в программе.
Это также можно сделать в ручном тестировании, которое включает в себя метод проб и ошибок Тестировщики также могут использовать некоторые инструменты автоматического тестирования, такие как JUnit и NUnit.
Пример тестирования белого ящика
Чтобы лучше понять концепцию White Box Testing, взгляните на код ниже:
print (int x, int y) (
int sum = x + y;
If ( sum > 0 )
Print ( «Positive», result )
Else
Print ( «Negative», result )
)
Как мы уже обсуждали ранее, целью White Box Testing является обход всех ветвей, циклов и операторов, присутствующих в коде. Учитывая это, мы можем сделать 2 теста, один, где оба входа положительны, а другой, где оба входа являются отрицательными целыми числами.
- А = 10 и В = 20
- А = -10 и В = -20
Методы испытаний белой коробки
Один из самых популярных методов тестирования для тестирования белого ящика называется анализом покрытия кода. Этот метод пытается устранить любые пробелы в наборе тестовых наборов и идентифицирует разделы приложения, которые не используются тестовыми примерами. Как только эти пробелы найдены, мы можем создать случаи, чтобы увидеть и проверить части кода, которые не были проверены, что в конечном итоге приводит к более отточенному продукту.
Ниже приведены некоторые методы анализа покрытия:
- Охват операторов : в этом методе мы пытаемся пройти все операторы в коде хотя бы один раз. Это гарантирует, что весь код протестирован.
- Покрытие ветвей: этот метод планируется для прохождения каждой ветви точек принятия решения в коде. Это гарантирует, что все решения хотя бы один раз проверены.
Есть и другие методы тестирования, вот лишь некоторые из них:
- Охват условий: в этом методе тестирования мы гарантируем, что все условия покрыты кодом, например:
READ A, B
IF (A == 0 || B == 0)
PRINT ‘0’
Как видите, здесь у нас есть 2 условия: A == 0 и B == 0. Теперь эти условия получают TRUE и FALSE в качестве значений. Одним из возможных примеров может быть:
# TC1 — A = 0, B = 110
# TC2 — A = 10, B = 0
- Многократное покрытие условий: это немного более продвинутое, чем последнее. Как вы можете догадаться, мы проверяем все возможные комбинации и все возможные результаты хотя бы один раз. Вот достойный пример:
READ A, B
IF (A == 0 || B == 0)
PRINT ‘0’
# TC1: A = 0, B = 0
# TC2: A = 0, B = 10
# TC3: A = 110, B = 0
# TC4: A = 110, B = 5
Следовательно. Нам требуется 4 теста для 2 условий.
Следовательно, если есть n условий, то нам потребуется 2 n тестовых случаев.
- Основное тестирование пути: В этой методике тестирования белого ящика мы создаем график потока управления, а затем вычисляем его цикломатическую сложность, которая представляет собой число независимых путей. Используя цикломатическую сложность, мы можем найти минимальное количество тестовых случаев, которые мы можем спроектировать для каждого независимого пути потокового графа.
- Loop Testing: Loops — один из наиболее часто используемых инструментов в оружии программиста. Так как они лежат в основе многих алгоритмов, имеет смысл иметь методику тестирования, основанную на циклах. Там может быть 3 типа циклов: простые, вложенные и сцепленные. Давайте посмотрим, как тестер будет иметь дело с технологиями следующих типов:
1. Простые циклы: для цикла, который прост по дизайну и имеет размер n, мы можем разработать несколько тестовых примеров, которые выполняют следующее:
- Пропустить эту петлю.
- Пройдите петлю только один раз.
- Есть 2 прохода
- Имейте любое количество проходов, которое меньше его размера.
- n-1 и n + 1 проходят через цикл.
2. Вложенные циклы: Для кода с вложенными циклами мы начинаем с самого внутреннего цикла, а затем идем наружу, пока не достигнем самого внешнего цикла.
3. Конкатенированные петли: в случае этих петель. Мы используем простой цикл проверки один за другим, и если каскадный цикл не является независимым, мы можем работать с ними, как мы это делали с вложенными циклами.
преимущества
Теперь, когда мы увидели, что это за метод тестирования и как он работает. Давайте посмотрим на некоторые из плюсов этого.
- White Box Testing имеет простые и понятные правила, позволяющие тестировщику знать, когда тестирование завершено.
- Методы тестирования White Box легко автоматизировать, поэтому разработчик вынужден нанимать меньше тестеров и меньше затрат.
- Это показывает узкие места, которые делают оптимизацию довольно легкой для программистов.
- Команда тестирования может начать свою работу, не дожидаясь, пока команда разработчиков завершит разработку пользовательского интерфейса.
- Поскольку в большинстве случаев все пути кода рассматриваются в коде, тестирование кода является более тщательным.
- Это помогает в удалении частей кода, которые не являются необходимыми для функциональности программы.
Недостатки
- Это довольно обременительно для ресурсов. Чтобы выполнить тестирование, вам понадобится кто-то, кто очень хорошо знает ваш код, чтобы быть в команде тестирования и кто сам является хорошим программистом. Этот тип уровня квалификации увеличивает затраты на тестирование.
- Во многих случаях возможность проверить все возможные условия в коде невозможна из-за временных или бюджетных ограничений.
- Поскольку тестирование белого ящика основано на проверке функциональности существующего кода, вы не можете найти недостающие функции в программе.
- Если какая-либо часть кода будет переработана и переписана, тестировщикам необходимо снова написать контрольные примеры.
Инструменты тестирования White Box
Теперь, когда вы знакомы с преимуществами, недостатками и методами тестирования белого ящика, мы можем взглянуть на некоторые популярные инструменты, которые тестировщики могут использовать для тестирования белого ящика.
JSUnit.net
Это инструмент тестирования JavaScript. JSUnit является частью Junit и является модульным модулем тестирования с открытым исходным кодом, который можно использовать для тестирования White Box. JSUnit является полностью открытым исходным кодом в соответствии с GNU Public License 2.0, что означает, что даже для коммерческого использования разработчик не должен платить никаких лицензионных сборов.
CppUnit
Как и JSUnit, CppUnit также считается частью JUnit. Инструмент может выводить в виде простого текста или в формате XML, в зависимости от потребностей тестировщика, и может создавать модульные тесты со своими собственными классами. CppUnit распространяется по лицензии LGPL.
Veracode
Хотя это не является бесплатным для использования, Veracode имеет несколько мощных инструментов, которые можно использовать для тестирования .NET, C ++, Java и некоторых других языков. Тестирование Белого ящика может быть выполнено для приложений, предназначенных для настольных компьютеров, веб-приложений и мобильных приложений.
NUnit
Это основа модульного тестирования, написанная на C #. Инструмент поддерживает все доступные языки .Net и тестирование на основе данных. С точки зрения функциональности он может работать как при параллельном, так и при параллельном выполнении, а также может предоставлять среду классов и приложения для запуска тестов. Одна заметная особенность NUnit в том, что она довольно проста в использовании.
JUnit
Как вы можете догадаться из его названия, JUnit — это инструмент автоматизации модульного тестирования для Java. Фургон JUnit легко интегрируется с такими средами разработки, как eclipse, Macen ACT и т. Д. Он способен поддерживать разработку через тестирование и может синхронизировать существующие тесты с вновь созданными. JUnit — это полностью открытый исходный код, который можно бесплатно использовать для любого вида разработки на Java.
CSUnit
Как и Nunit, CSUnit создан для поддержки модульного тестирования в .Net Framework. Он поддерживает такие языки, как C # и VB.Net. CSUnit имеет встроенную поддержку практики факторинга и других типов практик, которые используются в подходе гибкой разработки SDLC.
Вывод
Тестирование занимает очень важное место в процессе разработки программного обеспечения, и White Box Testing является ценным подходом к его выполнению. Хотя этот подход к тестированию может быть дорогостоящим и длительным, White Box Testing остается единственным способом убедиться, что все части кода были охвачены в процессе тестирования.
Самая важная часть White Box Testing — насколько знаком тестер с кодом. Кто-то, кому поручено тестирование на подходе WBT, кто не очень хорошо разбирается в исходном коде и используемом языке программирования, вызовет много проблем. Кроме того, в зависимости только от White Box тестирование не является хорошей идеей, поскольку оно не охватывает отсутствующую функциональность. Для более детального подхода к разработке необходимо выполнить тестирование как белого ящика, так и тестирование черного ящика, поскольку оно будет охватывать максимальное количество ошибок, дефектов и оставшихся функций, которые необходимо добавить перед отправкой продукта.
Рекомендуемые статьи
Это было руководство к тестированию белой коробки. Здесь мы обсудили, как проводится тестирование белого ящика с помощью примеров и различных методов тестирования белого ящика с инструментами. Вы также можете просмотреть наши другие предлагаемые статьи, чтобы узнать больше —
- Интервью по тестированию программного обеспечения
- Карьера в тестировании программного обеспечения
- Вопросы по тестированию игр
- ETL Тестирование Интервью Вопросы
- Код покрытия против тестирования покрытия | Лучшие 4 отличия для изучения
- Инструменты покрытия кода | 6 лучших инструментов покрытия кода
Источник