Что такое динамическое тестирование? Типы, методы и примеры

⚡ Умное резюме

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

  • 🎯 Цель: Проверяйте реальное поведение во время выполнения, а не документы, которые его описывают.
  • 🔀 Две ветви: Белый ящик исследует код, черный ящик исследует поведение.
  • 🧱 Четыре уровня: Модульное, интеграционное, системное и приемочное тестирование — все эти виды тестирования включают выполнение кода.
  • ⚙️ Не функциональный: Здесь выполняются проверки производительности, восстановления, совместимости, безопасности и удобства использования.
  • 🔄 Процесс: Разработка стратегии, проектирование тестов, настройка среды, выполнение тестов и составление отчетов об ошибках.
  • ???? Компромисс: Более глубокое выявление дефектов достигается ценой затрат времени, ресурсов окружающей среды и средств.

Динамическое тестирование: типы, методы и примеры.

Что такое динамическое тестирование?

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

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

В таблице ниже эти два варианта легко различить с первого взгляда.

Аспект Статическое тестирование (верификация) Динамическое тестирование (валидация)
Code выполненный Нет Да
Типичные виды деятельности Revобзоры, обходы, инспекции, статический анализ Выполнение тестовых сценариев на всех уровнях тестирования
Ответ на вопрос Правильно ли мы создаем продукт? Создаем ли мы нужный продукт?
Дефекты найдены Неоднозначные требования, нарушения стандартов кодирования, мертвый код Некорректные выходные данные, утечки памяти, ошибки синхронизации, сбои интеграции.
Старты Как только артефакт существует После того, как будет создан исполняемый файл сборки,
Относительная стоимость ремонта Более низкий уровень дефектов, поскольку они выявляются на более ранних стадиях. Более высокая, потому что дефекты проявляются позже.

Пример динамического тестирования

На коротком примере показано, как работает динамическое тестирование на практике.

Предположим, тестируется страница авторизации. Она содержит два поля: «Имя пользователя» и «Пароль», причём поле «Имя пользователя» ограничено буквенно-цифровыми символами.

Когда пользователь вводит имя пользователя как «GuruСистема принимает значение «99». Когда пользователь вводит «GuruПриложение выдает сообщение об ошибке при вводе значения "99@123". Этот результат показывает, что код работает динамически в зависимости от ввода пользователя.

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

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

Что делает динамическое тестирование?

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

Как показывает этот пример, динамические тесты также обеспечивают согласованность работы всего программного обеспечения.

В банковском приложении есть несколько экранов, таких как «Мои счета», «Перевод средств» и другие. Bill Оплата. Во всех них есть поле для указания суммы.

Предположим, в поле «Мои счета» отображается сумма 25 000, в поле «Перевод средств» отображается 25 000 долларов, и Bill На экране оплаты отображается 25000 долларов. Сумма та же, но способ её отображения отличается, что делает работу программного обеспечения непоследовательной.

Последовательность не ограничивается функциональностью. Она также охватывает такие стандарты, как производительность, удобство использования и совместимость, поэтому динамическое тестирование имеет такое большое значение.

Виды динамического тестирования

Динамическое тестирование подразделяется на две категории.

  • Белый Box Тестирование
  • Цвет - Черный. Box Тестирование

На приведенной ниже диаграмме показано соответствие двух категорий уровням тестирования, которые находятся ниже них.

Динамическое тестирование разделено на тестирование «белого ящика» и «черного ящика» с функциональным и нефункциональным уровнями.

Каждый тип и его предназначение описаны ниже.

Белый Box Тестирование — Метод тестирования программного обеспечения, при котором тестировщику известна внутренняя структура и дизайн системы. Его основная цель — проверить, как система работает на основе кода. В основном его выполняют разработчики или тестировщики «белого ящика», обладающие знаниями в области программирования.

Цвет - Черный. Box Тестирование — Метод тестирования, при котором внутренняя структура, код и дизайн НЕ известны тестировщику. Его главная цель — проверить функциональность тестируемой системы. Этот тип тестирования требует выполнения полного набора тестов, в основном выполняется тестировщиками и не требует знаний в области программирования.

Тестирование методом «черного ящика» снова подразделяется на два типа.

  • Функциональное тестирование
  • Нефункциональное тестирование

Функциональное тестирование

Функциональное тестирование Эта проверка выполняется для подтверждения соответствия всех разработанных функций функциональным спецификациям. Она осуществляется путем выполнения функционального анализа. контрольные примеры Система написана командой контроля качества. На этом этапе проводится тестирование системы путем ввода данных, проверки выходных данных и сравнения фактических результатов с ожидаемыми.

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

  • Модульное тестирование — Модуль — это небольшой, поддающийся тестированию фрагмент кода. Модульное тестирование проводится на отдельном модуле программного обеспечения и выполняется разработчиками.
  • Интеграционное тестирование — выполняется после модульного тестирования путем объединения отдельных тестируемых модулей. Его выполняют либо разработчики, либо тестировщики.
  • Тестирование системы — Эта процедура выполняется для обеспечения соответствия системы требованиям. Как правило, она проводится тестировщиками после того, как сборка передана команде контроля качества, когда вся система готова.
  • Приемочное тестирование — Эта процедура проводится для проверки соответствия системы бизнес-требованиям и ее готовности к использованию или развертыванию. Как правило, ее выполняют конечные пользователи.

Нефункциональное тестирование

Нефункциональное тестирование Это метод тестирования, который не фокусируется на функциональных аспектах, а вместо этого концентрируется на нефункциональных характеристиках системы, таких как утечки памяти, производительность или надежность. Нефункциональное тестирование проводится на всех уровнях тестирования.

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

Методы динамического тестирования

После определения типов тестирования следующий вопрос заключается в том, как на самом деле осуществляется динамический цикл тестирования.

Методы динамического тестирования в ГТЛК Динамическое тестирование включает в себя такие задачи, как анализ требований к тестам, планирование тестирования, разработка и реализация тестовых сценариев, настройка тестовой среды, выполнение тестовых сценариев, составление отчетов об ошибках и, наконец, завершение тестирования. Каждая задача в динамическом тестировании зависит от завершения предыдущей задачи в процессе тестирования.

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

Динамический процесс тестирования: от разработки тестов и их выполнения до составления отчетов об ошибках.

Перед началом процесса необходимо согласовать стратегию динамического тестирования.

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

После того как стратегия определена и одобрена руководством, начинается сам процесс разработки тестовых сценариев.

Разработка и реализация тестов

На этом этапе команда определяет следующее.

  • Возможности для тестирования
  • Условия тестирования, выведенные на основе этих характеристик.
  • Элементы покрытия, полученные на основе условий тестирования.
  • Тестовые примеры, полученные из элементов покрытия

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

Настройка тестовой среды

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

Тестовое выполнение

На этом этапе тестовые примеры фактически выполняются либо вручную, либо с помощью автоматизацияФактические результаты сравниваются с ожидаемыми.

Отчет об ошибке сохранен

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

Преимущества динамического тестирования

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

Недостатки динамического тестирования

  • Динамическое тестирование занимает много времени, поскольку для выполнения приложения или кода требуется большое количество ресурсов.
  • Это увеличивает стоимость проекта, поскольку работы не начинаются на ранних этапах жизненного цикла программного обеспечения, а исправление проблем на более поздних стадиях обходится дороже.
  • Необходимыми условиями являются среда, максимально приближенная к производственной, и реалистичные тестовые данные, создание и поддержание которых требует значительных усилий.

Часто задаваемые вопросы (FAQ)

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

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

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

Структура модулей, например JUnit, TestNG а также pytest, плюс средства запуска пользовательского интерфейса и API, такие как Selenium, Cypress и PostmanЗагрузите такие инструменты, как JMeter покрыть нефункциональную сторону автоматизация.

Отчеты о тестировании методом «белого ящика» показывают покрытие операторов, ветвей и путей на основе данных, полученных в ходе инструментальных запусков. Отчеты о тестировании методом «черного ящика» показывают покрытие требований и условий тестирования. Ни один из этих показателей сам по себе не доказывает адекватность тестирования сборки.

Нет. Динамическое тестирование описывает выполнение кода, независимо от того, кто или что им управляет. Скриптовое тестирование. руководство И запуск программы, и автоматизированный набор регрессионных тестов представляют собой динамическое тестирование.

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

Это основа всего. Модульные и API-наборы контролируют каждый коммит, в то время как более длинные регресс А тесты производительности выполняются каждую ночь на развернутой сборке.

Подведем итог этой публикации следующим образом: