Upload
maxim-shulga
View
309
Download
3
Embed Size (px)
Citation preview
Автоматизация тестирования - это пот, кровь и слезы
Под капотом автоматизации тестирования продукта для защиты виртуализации
Максим Шульга, Код Безопасности
О себеШульга Максим
15 лет разрабатываю софт, 10 лет с тестамиНачальник отдела разработки и тестирования
“Код Безопасности”
http://maxshulga.ru
@maxbeard
2
Все используемые картинки являются собственностью тех, кто их запостил в Интернет
Автоматизация тестирования - это пот, кровь и слезы
3
Больше пота = меньше крови
@maxbeard12
Автоматизация - как начать и не бросить?
Зачем нужна автоматизация тестирования?
Какие инструменты использовать?
Запуск, анализ результатов тестов
Как эти тесты рождаются
Общие рекомендации
Полезные ссылки
4Помидоры сюда > @maxbeard12
vGate - защита VMware vSphere или Microsoft Hyper-V
5
Особенности разработки vGate (в т.ч тестирования)
6
- 95% кода это С++, много низкоуровневых частей (драйвера, сетевые протоколы, хаки) => особенности автоматизации
- сертифицируемый продукт => сложности с фиксами
- большое количество вариантов использования => подготовка стендов, запуск одних и тех же тестов на разном окружении
@maxbeard12
Особенности разработки vGate (в т.ч тестирования)
7
- распределенное развертывание => в проверке сценариев участвуют несколько машин
- 95% компонентов работают на Windows = вопросы по выбору инструментов
- много legacy => есть древние непокрытые тестами куски кода
@maxbeard12
Автоматизация - как начать и не бросить?
Зачем нужна автоматизация тестирования?
Какие инструменты использовать?
Запуск, анализ результатов тестов
Как эти тесты рождаются
Общие рекомендации
Полезные ссылки
8
Выбор инструментаСвой велосипед vs готовое решение
На чем писать:
1. Язык продукта
2. Python
3. Отталкиваемся от “исторических причин”
4. Отталкиваемся от API “окружения”
5. Тулы (автоматизация В тестировании)
6. Еще что-нибудь?
http://www.maxshulga.ru/2015/04/how-to-find-correct-test-framework.html9@maxbeard12
“Уровень” тестов
10Пагубная страсть к ритуальным сооружения?
@maxbeard12
“Уровень” тестов
11@maxbeard12
Как у нас дела с “пирамидой” тестирования?- мало юнит-тестов
- много высокоуровневых
- нет тестов на UI
12@maxbeard12
У нас не пирамида, у нас небоскреб :)
13
Rainer TowerSeattle
1977 год156 м
Автоматизация - как начать и не бросить?
Зачем нужна автоматизация тестирования?
Какие инструменты использовать?
Запуск, анализ результатов тестов
Как эти тесты рождаются
Общие рекомендации
Полезные ссылки
14
Модульные тесты (язык продукта)
Используем gtest и gmock (Google C++ test framework)
Большей частью ими тестируется библиотечный код
Не брезгуем несколькими проверками в одном тесте (Expect vs Assert)
gtest используется не только для “канонических” юнит-тестов
Моя презентация “Тестируем legacy C++” (http://www.slideshare.net/MaximShulga/legacy-c-15355976)
15@maxbeard12
Модульные тесты - почему мало?
Много хак-кода, драйвера
Удобнее писать тесты на “реале” - у разработчиков есть возможность разворачивать стенды на своей машине
А может просто не умеем...
16@maxbeard12
Модульные тесты - почему мало?
Много хак-кода, драйвера
Удобнее писать тесты на “реале”
Меняешь реализацию, а тесты продолжают работать
17@maxbeard12
Инструменты для “немодульных” тестов vGate
Исторические причины = STAF/STAX + C# NUnit
API окружения = FitNesse + PowerSlim
Язык продукты = gtest (тесты похожи на “юнит”, но работают с реальной системой)
Тулы = sikuli (www.sikuli.org) используем для активации функциональности vSphere Web Client (flash)
18@maxbeard12
STAF/STAXhttp://staf.sourceforge.net
Больше 14 лет и до сих пор живойFREEMulti-platform (Windows, Unix)Multi-agentsУниверсальный запускатель
19@maxbeard12
FitNesse+PowerSlim
20
FitNesse http://www.fitnesse.org/ – 10 лет, Java, C#, C++, PythonPowerSlim – почти 5 лет. Quest Software, Dell, Код Безопасности https://github.com/konstantinvlasenko/PowerSlim
@maxbeard12
FitNesse+PowerSlim
21@maxbeard12
FitNesse+PowerSlim
22
FitNesse+PowerSlim
23@maxbeard12
FitNesse+PowerSlim
24
Неожиданности (непривычности) при использовании
Недостаточно программерский инструмент ;)
Несолидно ;)
Больше про PowerSlim тут http://www.maxshulga.ru/search/label/Fitnesse
@maxbeard12
Тесты “через” UI
25@maxbeard12
Тулы для “нефункциональных” тестыНам важно не замедлять работу пользователя с виртуальной инфраструктурой
Эмуляция пользовательской нагрузки (PowerShell)
Стабилизация (утечки, работа с базой)
Нагрузка на сеть (iperf3)
26“Нагрузочные тесты прошли” (с)@maxbeard12
Автоматизация - как начать и не бросить?
Зачем нужна автоматизация тестирования?
Какие инструменты использовать?
Запуск, анализ результатов тестов
Как эти тесты рождаются
Общие рекомендации
Полезные ссылки
27@maxbeard12
Незапускаемые регулярно тесты - мертвые тесты.
Jenkins (1.625.3) - наша “всея запускалка”:
Сборка
Скрипты развертывания
Запуск тестов
28“Утро после ночного билда”@maxbeard12
Приемы использования Jenkins
и полезные расширения
Параметризуемые “работы” (Job Config History)
Связки из “работ” (Build Flow, Copy Artifact)
Мониторинг (Build Monitor)
Еще полезности: Artifact Deployer, Build timeout
29@maxbeard12
Контроль выполнения
30@maxbeard12
Тесты прошли. Что дальше?
31@maxbeard12
Тесты прошли. Что дальше?
Анализ результатов
Контроль времени выполнения
Учет количества запущенных тестов
Борьба с “моргающими” тестами
Багофикс
32@maxbeard12
Анализ результатов
Диагностика
История результатов запусков
Облегчение для разбора тестов (например, логирование старт-стопа тестов в логи продукта)
33@maxbeard12
Как релизимся?
Спрашивают - отвечаем- Каждый релиз с Чумаком?- Нет, не каждый.
Кашпировского еще призываем, шаманов и прочих экстрасексов :)
34@maxbeard12
Как релизимся?
Время полной автопроверки сейчас около 2-х рабочих дней
Ручная проверка (сетапы, UI)
Code freeze (1-2 недели)
35@maxbeard12
Автоматизация - как начать и не бросить?
Зачем нужна автоматизация тестирования?
Какие инструменты использовать?
Запуск, анализ результатов тестов
Как эти тесты рождаются
Общие рекомендации
Полезные ссылки
36@maxbeard12
Как тесты рождаются?
Test first? It depends on…
Обсуждение того, что будем проверять
Анализ уже имеющихся “кубиков” для настройки окружения, продукта, проверок
Разработчик отвечает за то, чтобы его код проверялся
Боремся с “хвойными” (вечнозелеными) тестами
37@maxbeard12
Общие рекомендации по автоматизации
Автоматизация - работа всей команды
Разработчики должны участвовать в автоматизации
38Теория “сухого памперса”
@maxbeard12
Общие рекомендации по автоматизации
Автоматизировать или нет?
Если не нужно, то не надо. Вы поймете, когда нужно.
Начните с малого.
39@maxbeard12
Общие рекомендации по автоматизации
Начните с малого.
● legacy: Начните писать тесты на фиксы (может даже через UI), начните писать новый код с тестами
● Изучаете новый язык - изучайте тестовые инструменты к нему● при выборе ATF учитывайте архитектуру вашего приложения и то
окружение в котором он работает● Контроль за временем выполнения
40@maxbeard12
Автоматизация тестирования - это пот, кровь и слезы
41
Больше пота = меньше крови
@maxbeard12
Общие рекомендации по автоматизации
42
Больше пота = меньше кровиНо коэффициент меняется...
@maxbeard12
Полезные ссылкиАвтоматизация тестирования. С чего начинать, возможные проблемы
Как перестать бояться и начать автоматизировать (А. Лянгузов)
Сказка-быль о попытке оценить ROI автоматизации (Н.Макаров)
Серия статей о FitNesse+PowerSlim
Про Code Freeze от С.Мартыненко (http://blog.shumoos.com/archives/317)
ГОСТ Р 56939-2016 Защита информации. Разработка безопасного программного обеспечения. Общие требования
*линки можно увидеть на последнем слайде
43@maxbeard12
Вроде все :)
Вопросы?
http://maxshulga.ru
@maxbeard
44
Полезные ссылкиhttp://www.maxshulga.ru/2012/04/blog-post_21.html
https://vimeo.com/173420986#at=101
http://test-failed.blogspot.ru/2015/02/software-stories-roi.html
http://www.maxshulga.ru/search/label/Fitnesse
http://blog.shumoos.com/archives/317
http://protect.gost.ru/v.aspx?control=8&baseC=-1&page=0&month=-1&year=-1&search=&RegNum=1&DocOnPageCount=15&id=195653&pageK=59430995-38C6-4236-ABFE-798B2D5C2D4E
45@maxbeard12