😇
На testengineer.ru мы не размещаем рекламу, но над сайтом регулярно работают несколько человек. Поддержите нас, подписавшись на телеграм-канал "Тестировщик от бога"!
ДомойОбучениеЧто такое статическое и динамическое тестирование

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

Автор

Дата

Категория

Есть приложение, на этапе минимально рабочего прототипа (MVP). После написания начальной документации, первых use-кейсов, архитектурного плана, есть два пути. Тестировать приложение сразу после создания первого работающего MVP-прототипа, или потратить больше времени на QA-проверку документации, архитектурного плана, и первых версий кода. Эти два пути, собственно, описывают два подхода к тестированию — динамический и статический. Далее разберемся, где какое подходит, и как сочетается.

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

Статическое тестирование — не требует выполнения кода; это его суть. При этом оно может быть ручным или автоматизированным (например автоматические чекеры синтаксиса). 

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

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

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

Тестировщики делают статический анализ, чтобы найти:

  • Так называемый мертвый код — выполнение которого никак не влияет на приложение
  • Незадействованные переменные
  • Некорректный синтаксис
  • Переменные с неизвестными значениями
  • Бесконечные циклы

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

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

Этапы статического тестирования:

  1. Проверка требований и написание скриптов. Описываются все действия пользователей (включая вводы и выводы). Чем лучше детализированы use-кейсы, тем лучше — надежнее тест-кейсы.
  2. Верификация функциональных требований. Проверяется, что требования “покрывают” все важные элементы. Особое внимание уделяется базам данных, интерфейсу, далее требованиям по аппаратной и программной части, и сети.
  3. Оценка архитектуры. Оценка всех процессов на бизнес-уровне. Особое внимание — правильности локации серверов, также сетевые диаграммы, протоколы, балансировка нагрузки, доступность баз данных; затем оценка тестового окружения.
  4. Верификация прототипов, и, особо в последнее время, пропорций экрана в мобильных приложениях. Проверяются требования и use-кейсы.
  5. Валидация т.н. “field dictionary”. Каждое поле ввода в интерфейсе пользователя подробно описывается, и генерируются соответствующие тест-кейсы.

Статическое тестирование — это о самых важных вещах в приложении, «опорных». Поэтому составляются пошаговые чек-листы, чтобы не упустить ничего важного.

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

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

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

Существуют три способа динамического тестирования. 

  • Юнит-тестирование. Все модули тестируются QA-командой (хотя традиционно это задача разработчиков).
  • Интеграционное тестирование. Оценка связности работы всех частей приложения.
  • Системное тестирование. Тестируется вся система как целое — выполнены ли требования в спецификациях.

Разумеется, тестирование безопасности и производительности динамические.

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

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

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

Разница между динамическим и статическим тестированием

Итак, статическое тестирование анализирует код, требования, и дизайн, а динамическое — функциональность в целом, нагрузку на память и процессор, производительность в целом.

Статическое тестированиеДинамическое тестирование
Без запуска приложенияНа работающем приложении
Предназначено для предотвращения баговНаходит и фиксит баги
Проверяет код и документациюСообщает о найденных багах и узких местах
Составляется чек-лист и выполняется проверкаВыполняются стандартные тест-кейсы
До компиляцииПосле компиляции
Низкая стоимость поиска и устранения дефектовВысокая стоимость
ROI (финансовая эффективность затрат на QA) высокая, потому что дефекты находят вовремяROI низкая, потому что дефекты находят уже после разработки
Нужно провести много митинговНамного меньше митингов
Статическое и динамическое тестирование — сравнительная таблица

О деньгах и распределении сил

На вопросе финансовой эффективности возможно стОит остановиться подробнее. Бизнес-интересы превыше всего, как известно. Какова стоимость статического и динамического тестирования?

С точки зрения управления стоимостью, оценить работу QA-команды можно по:

  • Количеству найденных дефектов
  • % дефектов которые пофиксили
  • % отклоненных дефектов
  • Покрытию требований
  • Автоматизации тестов

Исходя из этого задаются KPI для тестировщиков.

По статистике, больше всего тестовых сьютов — на этапе раннего статического тестирования. В небольших проектах хорошо структурированное статическое тестирование составляет примерно две трети объема QA-операций. Именно тогда устраняются почти все проблемы с кодом — не привлекая “сеньйоров” в большом количестве, что разумеется, удешевляет процессы. Хорошей практикой является “разделение“ процесса на многие простые этапы. Далее проводится проверка вводов/выводов. Это экономит затраты времени (и денег) для дальнейших, более “дорогих” этапов. 

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

Статическое тестирование не влияет на user experience; проверка кода и документации не дает полного представления о дизайне приложения, и главное его юзабилити. При этом, самые критические дефекты (из практики небольших проектов) это именно дефекты дизайна, и они находятся только динамическим тестированием. Если у продукта лишь несколько функций, доля динамического тестирования будет больше.

Какой была ваша первая зарплата в QA и как вы искали первую работу?

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

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

$1100*
медианная зарплата в QA в ноябре

*по результатам опроса QA-инженеров в нашем телеграм-канале

Последние публикации

Последние комментарии