Введение в тестирование белого ящика
Тестирование является одной из важных частей разработки программного обеспечения, оно гарантирует, что все ошибки устранены, и программа работает так, как и предполагалось. Тестирование программного продукта может состоять из нескольких этапов и нескольких процедур. В этой статье мы рассмотрим один из важных подходов к процессу тестирования - тестирование «Белого ящика».
Что такое тестирование белого ящика?
Тестирование белого ящика также называется тестированием кода, тестированием прозрачного бокса, тестированием открытого бокса и структурным тестированием. Основная идея этого подхода к тестированию программного обеспечения заключается в рассмотрении внутренней структуры и кода программы для ее тестирования.
При тестировании Белого ящика тестер может видеть весь код программы, и ему поручено проверить последовательность работы входов и выходов в программе. В отличие от тестирования «черного ящика», которое в большей степени ориентировано на тестирование функциональности программы, 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 лучших инструментов покрытия кода