- Определение
- Быстрый пример
- Цели
- Кейс
- Подготовка: RTM-матрица и приоритеты
- Простой вариант
- Схема
- Выгоды конфигурационного тестирования
- Программные конфигурации
- Аппаратные конфигурации
Определение
Тестирование конфигураций (конфигурационное тестирование, тестирование конфигурации) — приложение выполняется на множестве аппаратных и программных платформ/комбинаций, проще говоря вариантов «харда и софта». Команда оценивает, как выполнены функциональные требования, и определяет оптимальные и проблемные сочетания.
Быстрый пример
Стандартное десктопное приложение состоит из двух (или трех) «слоев» (tier). Рассмотрим «трехслойное» десктопное приложение на ASP.NET, это обычно клиент, сервер бизнес-логики и БД-сервер:
- Windows 7, Windows 8, Windows 10, и другие клиентские платформы
- Windows Server 2008 R2, Windows Server 2008 R2, и Windows Server 2012R2 и другие серверные платформы
- SQL Server 2008, SQL Server 2008R2, SQL Server 2012, и другие БД-серверы
Чтобы гарантировать корректную работу приложения (то есть что оно не проблемное в этой конфигурации), тестировщик должен проанализировать поведение при разных вариантах клиента/сервера/БД, перебирая перечисленные выше варианты.
Разумеется, конфигурационное тестирование не ограничивается версиями софта; нужно подбирать и «хард» — тестирование аппаратных конфигураций. Могут включаться также принтер, сканер, веб-камера и прочие девайсы, нужные приложению.
Цели
Итак, оценка производительности и корректности работы программной системы в различных рабочих конфигурациях. Подобрать оптимальные и худшие из них, минимизировать баги конфликтующего оборудования, и предвидеть/устранить другие узкие места, особенно производительность (наиболее частая проблема). Подбирается наилучшая конфигурация, оптимальная, при которой все нужное оборудование работает без каких-либо проблем.
Совместимость продукта с другим аппаратным и программным обеспечением является стандартным требованием и прописывается в соответствующем разделе требований к продукту (SRS).
Кейс
Компания создала десктопное приложение на C#, то есть на .NET. Это приложение имеет описанную выше «трехслойную» архитектуру, имея фронтэнд (клиент), слой приложения (сервер), и слой баз данных. Например, каждый слой поддерживает такие платформы:
- Клиент: Microsoft Windows 10, Windows 7, Windows XP, Linux.
- Ubuntu Server, Windows Server 2016, и Novell Open Enterprise Server.
- Microsoft SQL Server, IBM DB2, и MySQL.
Тестировщику ставится задача протестировать программу с комбинациями указанных выше клиента/сервера/баз данных.
Нужно будет проверить связку Windows 10 + Windows Server 2016 + MySQL, а также например Windows 10 + Windows Server 2016 + IBM DB2. И так далее.
Нужно будет перепробовать все возможные комбинации. И не только перечисленные выше программные, но и аппаратные: многочисленные конфигурации + периферия.
Подготовка к конфигурационному тесту
- Создание матрицы покрытия конфигураций
Из-за огромного числа сочетаний «харда и софта», проверка абсолютно всех из них потребует огромного времени, и почти всегда невозможна. Прикинем количество вариантов: 3х3х3=27 комбинаций только программных. А ведь еще у нас есть, допустим, пять разных дисковых накопителей и шесть разных видов оперативки. Получается 27х5х9=820 тестовых комбинаций. И ведь еще периферия. Уже из этого понятно, что создание специального плана конфигурационного тестирования — необходимость; чтобы не делать лишних действий, проверять только реально нужные платформы. До этого и нужна матрица покрытия конфигураций, покрывающая все возможные комбинации «харда и софта» ( еще называют «матрица конфигураций»).
- Приоритетные конфигурации
Это будет следующий этап — присваивание приоритетов, пользуясь созданной на предыдущем этапе матрицей. Определяются самые важные конфигурации, основываясь на данных от пользователей. Они будут протестированы в первую очередь. После этого переход к следующим, менее важным конфигурациям.
Процесс в Microsoft VSTS
Здесь можно взять MS VSTS — Visual Studio Team Services. Нужно иметь тест-план, в котором указано, какие тесты выполнять, и с какими конфигурациями. Нужно верифицировать, что окружение корректно настроено в каждой конфигурации.
- Выбрать переменные и настроить конфигурации с ними. Один из компонентов будет переменным. Например переменная браузер будет менять значение на Chrome, Firefox, IE, и так далее.
- Связать конфигурации с тест-планами, тест-сьютами, или отдельными тест-кейсами.
- Запустить тесты по каждой конфигурации
- Отрепортить и проанализировать результаты
Схема действий
- Сделать матрицу комбинаций харда и софта
- Присвоить приоритеты
- Протестировать конфигурации, исходя из приоритетов
Что дает конфигурационное тестирование
- Проверка: все работает корректно в самых часто распространенных конфигурациях
- Валидация приложения, отвечает ли оно требованиям по конфигурациям
- Нередко, создание искусственных сбоев вручную, чтобы определить проблемы, не всегда очевидные во время обычного тестирования. Например, изменения настроек геолокации, таймзона, язык, дата/время и так далее.
- Подбор оптимальных конфигураций
- Внесение/удаление/коррекция настроек девайсов, балансировка объема памяти и дискового пространства., добавление периферийных устройств типа принтер/сканер/камера, и так далее
- Анализ производительности системы, оценка задействования ресурсов
- Верификация системы в эмулированных геолокациях. Например, если сервер будет размещен в геолокации, физически очень удаленной от клиентов, система должна работать отлично при такой ситуации.
- Проверка воспроизводимости ошибок независимо от изменений конфигурации
- Проверка компонентов приложения, путем документирования версий
- Контроль компонентов приложения на протяжении SDLC-цикла
Тестирование программных конфигураций
Это анализ поведения программного продукта в различных операционных системах, в том числе после их обновлений, и так далее. Оно может быть затратным по времени, поскольку время уходит на установку и удаление программ.
Тестирование на виртуальных машинах — один из способов сделать ускорить процесс. Виртуальная машина представляет собой эмулированное окружение, имитирующие поведение реального приложения, что дает тестировщику тот же experience что и в реальном окружении.
Всегда лучше устанавливать приложения на виртуальную машину и продолжать тестирование, чем устанавливать и удалять софт на нескольких реальных машинах. Несколько виртуальных машин существенно упростят работу тестировщика.
Реквизиты тестирования программных конфигураций:
Критерии входа:
- Готовое тестовое окружение
- Команда прошла обучение
- Билд был передан команде, и прошел модульное и интеграционное тестирование
Стандартная стратегия тестирования — выполнение функционального тест-сьюта в разных программных конфигурациях и анализ результатов.
Другой, также часто применяемый метод — ручные негативные тест-кейсы и анализ поведения системы.
Пример
Есть приложение для банкинга, которые нужно протестировать в разных браузерах. Если приложение будет работать в окружении, отвечающем всем критериям, модульное и интеграционное тестирование скорее всего будет успешным. Но если приложение будет развернуто в геолокации клиента и на машинах не будет каких-то важных обновлений или версий ПО, от которых приложение зависит, возможен сбой. Чтобы не допустить таких ситуаций, лучше вручную провести негативные тесты.
Тестирование аппаратных конфигураций
В идеале — в лабораториях, на реальных машинах, с большим парком устройств, доступны самые разные конфигурации, и запас времени.
Когда получен новый билд, приложение ставится на все физические компьютеры, на каждой системе запускается тест-сьют, и анализируется результат.
Конечно, установка софта на каждый компьютер, подключение девайсов и периферии, и ручное (или пусть даже автоматизированное) выполнение описанных выше процедур на всех конфигурациях, потребует уйму времени. Нужно будет задействовать десятки или сотни сочетаний харда (и периферии), что как правило невозможно. Понятно, что QA-команда должна определить, какие конфигурации чаще всего используются и провести тестирование, учитывая эти приоритеты (как и в случае с программными конфигурациями).
Итак
Как видим, тестирование конфигураций — весьма важная часть QA, без которой нельзя гарантировать идеаль-ное качество.