«Простота» тестирования небольшого системного ПО Калугин Александр, PhD, PMP Mercury Development Project Director

Содержание

Слайд 2

…В отличие от прикладного программного обеспечения, системное не решает конкретные прикладные


…В отличие от прикладного программного обеспечения, системное не решает конкретные прикладные задачи,

а лишь обеспечивает работу других программ, управляет аппаратными ресурсами вычислительной системы и т.д…
© Wikipedia

Cистемное ПО

Слайд 3

«Прибанбас». Небольшой компонент большого прикладного комплекса. Реализация одного или нескольких уровней

«Прибанбас».
Небольшой компонент большого прикладного комплекса.
Реализация одного или нескольких уровней стека сетевых

протоколов.
Клиентские/серверные компоненты комплексов использующих стандартные коммуникационные протоколы

Cистемное ПО на заказ

Слайд 4

Нету кнопок и формочек. Некуда вводить некорректные данные. Сложная предметная область.

Нету кнопок и формочек.
Некуда вводить некорректные данные.
Сложная предметная область.
«Нелинейная» архитектура.
Баг может

проявляться на третьи сутки.
То, что оно генерирует корректные данные здесь и сейчас, – ничего не значит.
Спецификация – в виде стандарта – «слишком много буквов»…

Почему сложнее для тестирования?

Слайд 5

Не всё так плохо...


Не всё так плохо...

Слайд 6

Мало нового кода Непосредственные пользователи – сервисы ОС. Стандартизованная логика Большое

Мало нового кода
Непосредственные пользователи – сервисы ОС.
Стандартизованная логика
Большое значение нефункциональных требований
Сложная

оптимизированная архитектура
Много нового кода
Непосредственные пользователи – люди
Нестандартная логика
Нефункциональные требования – на втором плане
Относительно стандартная архитектура

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

Слайд 7

Просто нужен другой подход!


Просто нужен другой подход!

Слайд 8

Не ошибки в реализации «бизнес-логики», а ошибки интеграции Некорректные ожидания о

Не ошибки в реализации «бизнес-логики», а ошибки интеграции
Некорректные ожидания о работе

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

Какие дефекты типичны?

Слайд 9

Тип дефекта не специфичен для продукта, продукты «менее разнообразны»


Тип дефекта не специфичен для продукта, продукты «менее разнообразны»

Слайд 10

Количество переходит в качество. Тестовые наборы из одного проекта могут быть

Количество переходит в качество. Тестовые наборы из одного проекта могут быть

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

Какие преимущества:

Слайд 11

Прикладное ПО: корректное поведение - в результате анализа требований и дизайна

Прикладное ПО: корректное поведение - в результате анализа требований и дизайна

тестовых наборов.
Системное ПО: есть референтная реализация корректного поведения аналогичным ПО.
Метод №1. Сравнительное свободное тестирование
Вместо анализа поведения системы на корректность и некорректность – можно сравнить с существующим аналогом.
При требованиях совместимости с несколькими окружениями – тестировать параллельно в различных окружениях.

Калугин Александр

Как тестировать?

Слайд 12

Прикладное ПО: Функциональное тестирование сложной бизнес-логики. Внутреннее состояние системы – недоступно,

Прикладное ПО: Функциональное тестирование сложной бизнес-логики. Внутреннее состояние системы – недоступно,

черный ящик.
Системное ПО: Нефункциональное тестирование интеграции. Сервисы ОС поддаются конфигурированию и администрированию – серый ящик.
Метод №2. Автоматизированные тесты
Вместо ввода тестовых данных и креш-тестов – скриптами менять состояние системного окружения.
Для анализа отклика системы – не требуется специальных методов: можно анализировать (включая полуавтоматический анализ состояние сервисов используя средства анализа: vmstat, tcpdump, etc.

Калугин Александр

Как тестировать?

Слайд 13

Прикладное ПО: Для клиент- серверных систем -- нестандартные протоколы выше транспортного

Прикладное ПО: Для клиент- серверных систем -- нестандартные протоколы выше транспортного уровня.

Клиентские и серверные компоненты – уникальны
Системное ПО: Используются стандартизованные протоколы, зачастую с рекомендованной реализацией
Метод №3. Кросс-Тестирование
Вместо верификации конкретной реализации протокола – проверка совместимости работающих компонентов и поиск различий
Независимая проверка клиентских и серверных компонент перекрестно с использованием референтной реализации.

Калугин Александр

Как тестировать?

Слайд 14

Сравнение с аналогами в полусвободном сессионном тестировании. Функциональное тестирование часто тривиально.

Сравнение с аналогами в полусвободном сессионном тестировании.
Функциональное тестирование часто тривиально.
Автоматизация достается

практически бесплатно
Возможно тестирование отдельных частей/компонентов
Необходимо тестирование наработки на отказ.
Регрессионный набор – автоматически.
Анализ спецификации и дизайн тестов.
Функциональное тестирование – центральное место
Автоматизация – требует специальных усилий и фреймворков
Тестирование отдельных компонентов требует специальных усилий
Наработка на отказ обычно не требуется.
Регрессионный набор - специально

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

Слайд 15

Разработать набор тестовых скриптов для корректности ввода-вывода (создание/удаление/перемещение файлов) Для каждой

Разработать набор тестовых скриптов для корректности ввода-вывода (создание/удаление/перемещение файлов)
Для каждой операции

сделать дамп сетевого обмена между клиентом и сервером, используя стороннюю реализацию клиента.
Запустить скрипт и сравнить дамп для тестируемой реализации
Запустить скрипт в цикл – для наработки на отказ.
Для тестирования совместимости (например, с антивирусом) – установить антивирус и повторить тест.

Калугин Александр

Пример. NAS-клиент. Стратегия