1. Software quality assurance days
19 Международная конференция
по вопросам качества ПО
sqadays.com
Санкт-Петербург. 20–21 мая 2016
Батищев Евгений
Аркадия. Санкт-Петербург, Россия
Тестирование инсталляторов
2. Тестирование инсталляторов
Немного о себе
Батищев Евгений
Программист, Аркадия.
• Разработка
• Разработка очень быстро
• Разработка очень качественно
• “Сделайте так, чтобы работало,
пожалуйста”
Batonrain@gmail.com
4. Тестирование инсталляторов
«Встречают по одёжке»
• Первое впечатление о Вашем продукте зависит от Вашего
инсталлятора
• Никто не хочет сидеть и долго разбираться с установкой
• Пользователю, в целом, не важны причины плохого
поведения установщика
5. Тестирование инсталляторов
Зачем тестировать?
Что не получите, если не протестировать свой
инсталлятор?
•Не получите интересного опыта
•Не получите заслуженной похвалы
•Не получите заслуженных денег
Что получите, если не протестировать свой
инсталлятор?
•Проблемы с заказчиками/начальством/пользователями
•Вам будут звонить и дышать в трубку те, кто познал всю
горечь вашего инсталлятора
•В крайнем случае можно получить по лицу от
заказчика/начальства/пользователя
6. Тестирование инсталляторов
«Я есть Альфа и Омега»
Где всё зависит от инсталлятора?
• Мобильные приложения
• Настольные приложения
• Игры, офисные приложения, рабочие программы и т.д.
9. Тестирование инсталляторов
Больше подробностей
• Список файлов в пакете установщика
• Работу Installation Wizard’а
• Список установленных файлов
• Регистрацию приложения в ОС
• Права доступа пользователя
• Откаты установки в случае отмены установки
• И многое-многое другое
10. Тестирование инсталляторов
Как всё это протестировать?
• Ручное тестирование
• Составление графа состояний и переходов
• Автоматизированное тестирование
• Autoit
• Своё, родное
13. Тестирование инсталляторов
Составление графа состояний и
переходов(State-transition diagram)
• Выделяем состояния для каждого шага инсталлятора
• Выделяем конечные состояния: установка отменена,
установка завершена, аварийное прерывание установки
• Строим граф, учитывая кнопки Next, Back, Cancel
• Выписываем наборы тестов, учитывая граф
• Тестируем
• PROFIT!!!
15. Тестирование инсталляторов
Autoit
• Что это такое?
• Свободно распространяемый язык для
автоматизации выполнения задач в Microsoft
Windows
• Как работает?
• Использует симуляцию нажатия клавиш, движений
мыши и манипуляции с окнами, элементами
управления
• Что с этим делать?
• Писать скрипты и радоваться
16. Тестирование инсталляторов
Своё, родное и любимое
• Очень часто необходимо писать софт для тестирования
своих продуктов
• Плюсы
• Заточенность под собственный продукт
• Возможности изменений тест-кейсов под нужды
каждой новой версии продукта
• Минусы
• Заточенность только под конкретный свой продукт
• Могут быть свои проблемы с реализацией и
настройкой
18. Тестирование инсталляторов
Короткий опыт разработки на
InstallAware
• Предназначен для создания установщиков
• Содержит в себе множество готовых расширений
установщиков
• Удобная работа с входными параметрами – можно хоть
через консоль запускать установку
• Крайне не удобный язык написания скриптов
• Невозможность переименовывать файлы и менять их
расположение в списке файлов скриптов
• Медленное время работы
19. Тестирование инсталляторов
Что нужно было сделать?
• Установщик, который занимался бы:
• Проверкой системных конфигураций
• Развёрткой веб-приложение на IIS с заданным
портом и названием
• Созданием БД и накатываем миграционных скриптов
• Обновлением существующих компонентов
• Возможность “тихой” установки
20. Тестирование инсталляторов
История
• Во время разработки не было сделано заделов для тестирования
• Сначала проводилось только ручное тестирование без построения
графа состояний
• Когда установщик стал разростаться, была создана программа для
тестирования установщика с разнообразными настройками
• Программа учитывала как положительные, так и отрицательные
сценарии, что позволило увеличить скорость тестирования и качество
• Минусом стало постоянное сопровождение программы тестирования,
ибо постоянно добавлялись новые сценарии
• Для самой программы тестирования пришлось переделать многое в
скрптах установщика
21. Тестирование инсталляторов
Как бы я это сделал сейчас?
• Создали бы базу кодов ошибок
• В автотестере учли бы возможность изменения порядка
шагов тестирования
• Заранее закладывали бы больше времени на ручное
тестирование и тестирование на других ОС
• Утилита для тестирования писалась бы практически в
одно время с разработкой инсталлятора