Тестирование совсем черного ящика QA для Windows сервисов Москвин Сергей ООО «Смартек»
Темы для обсуждения О чем сегодня пойдет речь? Что такое сервисы и почему они не такие как все? Как начать тестировать сервис? Какие виды тестирования применимы для сервисов? Какие инструменты можно использовать? Все упомянутое выше будет подкреплено примерами из реального проекта по тестированию сервиса – монитора файловой системы
Отличительные черты Windows сервисов Почему Windows сервисы такие особенные? Не имеют графического интерфейса Могут запускаться при загрузке ОС и останавливаться при завершении работы, легко переносят перезагрузку Запуск и остановка выполняется командами Service Control Manager’а, поэтому они могут быть постоянно запущенными и не требуют внимания В большинстве случаев работают под системными учетными записями
Диаграмма работы монитора FS
Архитектура сервиса – монитора FS
Начало тестирования сервиса С чего же начать тестирование сервиса? Изучить документацию Определить круг приложений и действий, на которые сервис реагирует Познакомиться c событиями попадающими в лог сервиса, а также изучить их формат. Подготовить средства просмотра и анализа логов И конечно же не стоит забывать про журнал событий Windows
Негативное тестирование Почему негативное тестирование так важно? Падения сервисов сложнее заметить, чем падения десктопных приложений Последствия отказов в работе сервисов обходятся гораздо дороже Надежность сервиса не должна ни у кого вызывать сомнений После устранения сбоев в работе сервис должен восстанавливать корректную работу самостоятельно
Автоматизация тестирования Как организовать автоматизацию тестирования сервиса? Использовать уже известные приемы и приложения, что используются для ручного тестирования Научиться автоматизировать действия с данными приложениями Подготовить тестовые сценарии на все случаи жизни Помнить о необходимости сбора и обработки ошибок Применять автотесты для регрессионных проверок и длительных тестов
Конфигурационное тестирование Что проверить кроме настроек самого сервиса? Даже если используется .Net Framework или другие фреймворки, стоит проверить продукт на всех совместимых ОС, в том числе разной архитектуры Сервисы редко работают одни – всегда рядом есть антивирусы, фаерволы, средства шифрования и другое «тяжелое» ПО Иногда возникают ситуации, когда даже «легковесное» ПО сторонних производителей может влиять на корректную работу сервиса
Анализ использования ресурсов Сколько ресурсов нужно сервису для счастья? Наибольшее внимание нужно уделять тем ресурсам, которые потребляются в большей степени, согласно специфике сервиса Для оценки потребления ресурсов не обязательно использовать стороннее ПО – зачастую достаточно монитора ресурсов Windows Стремление к экономии ресурсов не всегда идет производительности сервиса на пользу – нужен баланс
Профилирование Что может быть скрыто внутри? Утечки памяти в компонентах сервиса Исключения и ошибки (например Access Violation или Null Reference Exception) Статистика использования процессорного времени методами внутри сервиса Узкие места в коде или логике, влияющие на производительность
Для достижения полной уверенности Как еще убедиться в качестве сервиса? Нагрузочное тестирование Стресс тестирование Тестирование масштабируемости Тестирование безопасности
Заключение и Ваши вопросы С чего все начиналось? Мы знали только установлен ли у нас сервис, запущен ли он и имели возможность запустить его или остановить. К чему мы пришли? Мы научились влиять на сервис, фиксировать его реакцию, автоматизировать наши тесты, применять различные методики тестирования и убедились в том, что он надежен ! Всем спасибо за внимание! С удовольствием отвечу на заданные вопросы по почте: smoskvin@smartru.com по Skype: s_moskvin по ICQ: 272688126