Системное тестирование - важнейший этап проверки качества программного продукта. В этой статье мы разберем его цели, задачи, основные виды и этапы. Узнаете, как правильно подойти к тестированию ПО на системном уровне.
Понятие системного тестирования
Системное тестирование - этап тестирования программного обеспечения, на котором проверяется работа системы целиком по заранее определенным сценариям.
Цели системного тестирования:
- Проверка соответствия системы требованиям
- Выявление дефектов интеграции компонентов
- Оценка производительности и надежности
Системное тестирование отличается от модульного и интеграционного тем, что на данном этапе рассматривается система как единое целое.
Системное тестирование проводится после завершения этапов разработки и предшествует этапу внедрения системы.
Подготовка к системному тестированию
Перед началом системного тестирования необходимо выполнить следующие подготовительные работы:
- Проанализировать требования к системе и программному обеспечению
- Разработать тестовые сценарии (тест-кейсы)
- Подготовить тестовые данные
- Настроить тестовую среду
Рассмотрим каждый из этих пунктов подробнее.
Анализ требований к системе
На основании требований к разрабатываемой системе необходимо определить критерии успешного прохождения системного тестирования. Это позволит оценить по завершении тестирования, соответствует ли система заявленному функционалу и требованиям к качеству.
Разработка тест-плана и тест-кейсов
Тест-план определяет цели, задачи, типы, подходы и этапы системного тестирования. На его основе создаются конкретные тестовые сценарии - тест-кейсы, описывающие пошаговые действия по проверке требований к системе.
Подготовка тестовых данных
Для проведения системного тестирования требуется подготовить наборы входных тестовых данных, соответствующих различным сценариям использования системы. Эти данные должны обеспечить максимальное покрытие тестами функционала системы.
Настройка тестовой среды
Тестовая среда должна максимально соответствовать производственной среде, в которой будет эксплуатироваться система после внедрения. Это позволит обнаружить больше дефектов на этапе системного тестирования.
Методы системного тестирования
Существует три основных метода системного тестирования:
- Метод черного ящика
- Метод белого ящика
- Метод серого ящика
Рассмотрим их подробнее.
Метод черного ящика
При данном методе тестировщик не знаком с внутренним устройством системы. Тестирование основано только на внешних проявлениях и результатах работы системы.
Достоинства метода черного ящика: независимость тестирования от реализации системы, возможность выявления дефектов из логики работы системы.
Метод белого ящика
Тестировщик имеет доступ к исходному коду и архитектуре системы. Это позволяет проводить глубокий анализ и тестирование отдельных компонентов.
Метод серого ящика
Это гибридный подход, сочетающий тестирование по функциональным сценариям (черный ящик) и тестирование отдельных компонентов системы (белый ящик).
Каждый из методов имеет свои плюсы и минусы, поэтому часто применяется их комбинация в рамках системного тестирования.
Виды системного тестирования
Системное тестирование включает в себя различные виды тестирования, позволяющие оценить качество системы с разных сторон:
Виды системного тестирования
Системное тестирование включает в себя различные виды тестирования, позволяющие оценить качество системы с разных сторон:
Функциональное тестирование
При функциональном тестировании на системном уровне проверяется, реализован ли в системе заявленный функционал, все ли требования выполнены. Функциональное тестирование может проводиться как методом "черного ящика", так и "белого ящика".
Тестирование производительности
В рамках данного вида тестирования оцениваются характеристики быстродействия и масштабируемости системы при возрастающих нагрузках. Выявляются узкие места в архитектуре и реализации системы.
Тестирование надежности
При тестировании надежности проверяется способность системы сохранять заявленное качество функционирования в течение заданного времени и в определенных условиях. Надежность характеризуется такими показателями как отказоустойчивость, восстанавливаемость, доступность системы.
Юзабилити-тестирование
Юзабилити-тестирование нацелено на оценку удобства использования системы конечными пользователями. Выявляются трудности при освоении интерфейса, проблемные места во взаимодействии пользователя с системой.
Тестирование безопасности
Цель тестирования безопасности - проверка устойчивости системы к внешним и внутренним угрозам. С помощью специальных методов моделируются атаки на систему, чтобы обнаружить уязвимости в механизмах защиты.
Этапы системного тестирования
Процесс системного тестирования обычно состоит из следующих этапов:
- Статическое тестирование
- Динамическое тестирование
- Тестирование установки/удаления
- Регрессионное тестирование
Статическое тестирование
Статическое тестирование подразумевает анализ исходного кода, архитектуры и документации системы без запуска программы. Применяются такие методы как ревью кода, статический анализ кода, моделирование и верификация архитектуры.
Динамическое тестирование
В отличие от статического, динамическое тестирование предполагает выполнение системы и анализ результатов этого выполнения. На данном этапе выявляются дефекты и отклонения в поведении системы при конкретных входных данных и сценариях использования.
Тестирование установки/удаления
Данный вид тестирования направлен на выявление проблем, возникающих при установке системы на целевую аппаратную и программную конфигурацию или при удалении установленной системы. Проверяется корректность запуска инсталлятора, внесения изменений в настройки системы в процессе установки, а также полнота удаления системы и следов ее работы.
Регрессионное тестирование
Задачей регрессионного тестирования является проверка отсутствия регрессий – ошибок в ранее работавшем коде после внесения изменений в систему. Для этих целей повторно выполняется набор тестов разработанных на предыдущих этапах тестирования. Регрессионное тестирование позволяет убедиться, что новые функции и исправления не "сломали" уже протестированные ранее части системы.
Инструменты для системного тестирования
Эффективное системное тестирование невозможно без использования специализированных инструментов автоматизации:
Инструменты для функционального тестирования
Для автоматизации функционального тестирования применяются такие инструменты как Selenium, UFT, TestComplete. Они позволяют создавать автоматизированные UI тесты, эмулирующие действия пользователя. Автотесты запускают приложение, имитируют ввод данных, нажатия и другое взаимодействие с интерфейсом.
Инструменты для тестирования производительности
Для нагрузочного тестирования используются такие решения как JMeter, LoadRunner, Yandex.Tank. Они позволяют моделировать одновременную нагрузку от сотен и тысяч пользователей, чтобы оценить поведение системы при возрастажущем количестве запросов.
Инструменты для тестирования надежности
Для тестирования надежности и стабильности работы системы под нагрузкой используются такие инструменты как Yandex.Tank, JMeter, LoadRunner. Они выполняют длительные тесты под нагрузкой и анализируют статистику отказов, что позволяет оценить надежность системы.
Кроме упомянутых инструментов, в процессе системного тестирования могут использоваться средства мониторинга производительности, сбора логов, анализа кода и данных. Их комбинация позволяет получить максимально полную картину качества тестируемой системы.