Методы тестирования ПО на примере консольного приложения

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

Для лучшего понимания данных методов я буду рассказывать о них на примере тестирования простого консольного приложения, написанном на языке программирования Python. Это обычный калькулятор, который выполняет базовые арифметические действия. Скачать файл программы можно по ссылке.

Итак, тестирование черного ящика (Black Box). Данный метод также известен как тестирование, основанное на спецификации или тестирование поведения. Данная техника не предполагает доступа, как полного, так и частичного, к системе, т.е. она основывается исключительно на работе с внешним интерфейсом тестируемой программы. То есть мы просто изучаем спецификацию, пишем по ней тестовые сценарии, запускаем приложение и выполняем наши тесты.

Интерфейс приложения. Выполнение позитивного теста
Интерфейс приложения. Выполнение позитивного теста

Тестирование серого ящика (Grey Box) — это комбинация White Box и Black Box методов. Данный метод предполагает частичный доступ к коду проекта. Почерпнуть эту информацию возможно из документации с описанием работы некоторых функций системы, из логов или, например, из корпоративной базы знаний, которая содержит коды ошибок и причины их появления. Все это дает частичное понимание системы, даже без доступа к исходному коду приложения. В нашем примере источником данной информации будет служить небольшое руководство пользователя. Из этого руководства нам становится известно, что доступные значения операций хранятся в списке correct_operations = ['+', '-', '*', '/', '%', '**', 'log']. Это сложение, вычитание, умножение, деление, процент первого числа от второго, возведение первого числа в степень второго и логарифм первого числа по основанию второго. Исходя из этих знаний можно разрабатывать более эффективные тест-кейсы.

Выполнение негативного тест-кейса. Ввод недоступной операции
Выполнение негативного тест-кейса. Ввод недоступной операции

White Box или тестирование белого ящика — метод тестирования ПО, который предполагает полный доступ к коду проекта, т.е. внутренняя структура, устройство и реализация системы известны тестировщику.

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

Путь — это последовательность выполнения операторов, начинающаяся на входе и заканчивающаяся на выходе модуля.

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

Рассмотрим граф потока управления функции calc(first, second, oper) тестируемого калькулятора.

Для простоты и удобства описания путей уберем программный код, пометим каждый узел буквой и составим маршруты, которые могут образовывать все возможные линейные пути в программном модуле.

Получившийся граф потока управления
Получившийся граф потока управления

Таким образом мы имеем девять маршрутов:

  1. ABJS

  2. ACKS

  3. ADLS

  4. AEMQS

  5. AEMRS

  6. AFNS

  7. AGOS

  8. AHPS

  9. AIS

Далее для каждого из этих путей создаются тест-кейсы, выполнение которых гарантирует покрытие как всех ветвей, так и всех операторов.

Для полного изучения данной темы рекомендую к прочтению книгу Ли Коуплэнда «Практическое Руководство по Тест-Дизайну», и надеюсь, что в этой небольшой статье мне удалось передать суть тестирования ПО методами черного, белого и серого ящиков.

Источник: https://habr.com/ru/articles/830380/


Интересные статьи

Интересные статьи

Привет, Хабр! В этой статье мы рассмотрим один из подходов к офлайновому A/B-тестированию, поговорим о сложностях, которые возникают при оценке результатов пилотного проекта (далее — пилота) и разберё...
В наш век высоких скоростей, время самый ценный ресурс, так как в связи с развитием интернета, информации очень много и проанализировать её всю досконально просто невозможно. В связи с этим, особо ост...
Мы продолжаем цикл статей о нашей новой линейке систем хранения данных PowerStore. Этот материал посвящен уникальному функционалу, позволяющему запускать на борту системы пользовательские...
Сбалансированная архитектура мобильного приложения продлевает жизнь проекту и разработчикам. История Познакомьтесь с Алексом. Ему необходимо разработать приложение для составления спис...
Ни для кого не секрет то, что команда разработчиков Flutter стремится к тому, чтобы этот фреймворк позволял бы, пользуясь единой кодовой базой, создавать приложения для широкого разно...