Блог седого тестировщика

говориМ о тестировании
простым языком

Виды тестирования по запуску кода

Время на прочтение: 4 мин.
Можем ли мы протестировать только работающий продукт или можем начать его тестирование еще до запуска?

Тестирование не всегда предполагает взаимодействие с работающим приложением. Отсюда и классификация тестирования по запуску кода на исполнителя.

По критерию запуска программы (исполняется ли программный код) выделяют 2 вида тестирования: статическое и динамическое.

Статическое тестирование

Статическое тестирование (static testing) — тестирование без запуска кода на исполнение.

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

Статическое тестирование начинается на ранних этапах жизненного цикла ПО и является, соответственно, частью процесса верификации.

Можно поделить статическое тестирование на 2 типа:
1. Обзоры (Review)
2. Статический анализ (Static Analysis)

Обзоры

Обзоры (Review) – проверка обычно используется для поиска и устранения ошибок или неясностей в документах. Это могут быть требования, дизайн, тестовые случаи и так далее.

В свою очередь обзоры делятся на:

  • Неформальные. При неофициальном рассмотрении создатель документов показывает содержание документов аудитории. Каждый присутствующий высказывает свое мнение, что позволяет выявить недостатки на ранней стадии.
  • Сквозные просмотры (Walkthroughs). Выполняются опытным человеком или экспертом для проверки отсутствия дефектов, с целью предупреждения возникновения проблем на этапе разработки или тестирования.
  • Экспертная оценка. Означает проверку документов для выявления и исправления дефектов. В основном это делается в команде.
  • Инспектирование ПО. Это, в большинстве, проверка документа вышестоящим органом, например, проверка требований к программному обеспечению.

Статический анализ

Статический анализ (Static Analysis) – код, написанный разработчиками, анализируется на наличие структурных дефектов, которые могут привести к ошибкам.

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

Статический анализ состоит из 3-х частей:

  1. Поток данных.
  2. Контроль потока (как выполняются операторы или инструкции).
  3. Цикломатическая сложность (измерение сложности программы, которое в основном связано с количеством независимых путей в графе потоков управления программы).

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

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

Примерами ошибок, которые потенциально можно выявить с помощью автоматического статического тестирования, могут быть:
— утечки ресурсов (утечки памяти, неосвобождаемые файловые дескрипторы и т.д.),
— возможность переполнения буфера (buffer overflows),
— ситуации частичной (неполной) обработки ошибок.

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

В рамках этого подхода тестированию могут подвергаться:

  • Документы (требования, тест-кейсы, описания архитектуры приложения, схемы баз данных и т.д.).
  • Графические прототипы (например, эскизы пользовательского интерфейса).
  • Код приложения (что часто выполняется самими программистами в рамках аудита кода (code review), являющегося специфической вариацией взаимного просмотра в применении к исходному коду). Код приложения также можно проверять с использованием техник тестирования на основе структур кода.
  • Параметры (настройки) среды исполнения приложения.
  • Подготовленные тестовые данные.

Плюсы и минусы

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

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

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

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

Динамическое тестирование

Динамическое тестирование (dynamic testing) — тестирование с запуском кода на исполнение. Запускаться на исполнение может как код всего приложения целиком (системное тестирование), так и код нескольких взаимосвязанных частей (интеграционное тестирование), отдельных частей (модульное или компонентное тестирование) и даже отдельные участки кода.

Основная идея этого вида тестирования состоит в том, что проверяется реальное поведение (части) приложения.

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

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

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

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

Плюсы и минусы

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

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

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

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

Сравнение

Виды тестирования по запуску кода, изображение №1

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

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

Share on vk
Vkontakte
Share on facebook
Facebook
Share on linkedin
LinkedIn
Share on twitter
Twitter

Автор статьи:

Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Ближайшие события

Вам также может понравится