45
Автоматизация тестирования - это пот, кровь и слезы Под капотом автоматизации тестирования продукта для защиты виртуализации Максим Шульга, Код Безопасности

Автоматизация тестирования - это пот, кровь и слезы

Embed Size (px)

Citation preview

Page 1: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация тестирования - это пот, кровь и слезы

Под капотом автоматизации тестирования продукта для защиты виртуализации

Максим Шульга, Код Безопасности

Page 2: Автоматизация тестирования - это пот, кровь и слезы

О себеШульга Максим

15 лет разрабатываю софт, 10 лет с тестамиНачальник отдела разработки и тестирования

“Код Безопасности”

http://maxshulga.ru

@maxbeard

2

Все используемые картинки являются собственностью тех, кто их запостил в Интернет

Page 3: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация тестирования - это пот, кровь и слезы

3

Больше пота = меньше крови

@maxbeard12

Page 4: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация - как начать и не бросить?

Зачем нужна автоматизация тестирования?

Какие инструменты использовать?

Запуск, анализ результатов тестов

Как эти тесты рождаются

Общие рекомендации

Полезные ссылки

4Помидоры сюда > @maxbeard12

Page 5: Автоматизация тестирования - это пот, кровь и слезы

vGate - защита VMware vSphere или Microsoft Hyper-V

5

Page 6: Автоматизация тестирования - это пот, кровь и слезы

Особенности разработки vGate (в т.ч тестирования)

6

- 95% кода это С++, много низкоуровневых частей (драйвера, сетевые протоколы, хаки) => особенности автоматизации

- сертифицируемый продукт => сложности с фиксами

- большое количество вариантов использования => подготовка стендов, запуск одних и тех же тестов на разном окружении

@maxbeard12

Page 7: Автоматизация тестирования - это пот, кровь и слезы

Особенности разработки vGate (в т.ч тестирования)

7

- распределенное развертывание => в проверке сценариев участвуют несколько машин

- 95% компонентов работают на Windows = вопросы по выбору инструментов

- много legacy => есть древние непокрытые тестами куски кода

@maxbeard12

Page 8: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация - как начать и не бросить?

Зачем нужна автоматизация тестирования?

Какие инструменты использовать?

Запуск, анализ результатов тестов

Как эти тесты рождаются

Общие рекомендации

Полезные ссылки

8

Page 9: Автоматизация тестирования - это пот, кровь и слезы

Выбор инструментаСвой велосипед vs готовое решение

На чем писать:

1. Язык продукта

2. Python

3. Отталкиваемся от “исторических причин”

4. Отталкиваемся от API “окружения”

5. Тулы (автоматизация В тестировании)

6. Еще что-нибудь?

http://www.maxshulga.ru/2015/04/how-to-find-correct-test-framework.html9@maxbeard12

Page 10: Автоматизация тестирования - это пот, кровь и слезы

“Уровень” тестов

10Пагубная страсть к ритуальным сооружения?

@maxbeard12

Page 11: Автоматизация тестирования - это пот, кровь и слезы

“Уровень” тестов

11@maxbeard12

Page 12: Автоматизация тестирования - это пот, кровь и слезы

Как у нас дела с “пирамидой” тестирования?- мало юнит-тестов

- много высокоуровневых

- нет тестов на UI

12@maxbeard12

Page 13: Автоматизация тестирования - это пот, кровь и слезы

У нас не пирамида, у нас небоскреб :)

13

Rainer TowerSeattle

1977 год156 м

Page 14: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация - как начать и не бросить?

Зачем нужна автоматизация тестирования?

Какие инструменты использовать?

Запуск, анализ результатов тестов

Как эти тесты рождаются

Общие рекомендации

Полезные ссылки

14

Page 15: Автоматизация тестирования - это пот, кровь и слезы

Модульные тесты (язык продукта)

Используем gtest и gmock (Google C++ test framework)

Большей частью ими тестируется библиотечный код

Не брезгуем несколькими проверками в одном тесте (Expect vs Assert)

gtest используется не только для “канонических” юнит-тестов

Моя презентация “Тестируем legacy C++” (http://www.slideshare.net/MaximShulga/legacy-c-15355976)

15@maxbeard12

Page 16: Автоматизация тестирования - это пот, кровь и слезы

Модульные тесты - почему мало?

Много хак-кода, драйвера

Удобнее писать тесты на “реале” - у разработчиков есть возможность разворачивать стенды на своей машине

А может просто не умеем...

16@maxbeard12

Page 17: Автоматизация тестирования - это пот, кровь и слезы

Модульные тесты - почему мало?

Много хак-кода, драйвера

Удобнее писать тесты на “реале”

Меняешь реализацию, а тесты продолжают работать

17@maxbeard12

Page 18: Автоматизация тестирования - это пот, кровь и слезы

Инструменты для “немодульных” тестов vGate

Исторические причины = STAF/STAX + C# NUnit

API окружения = FitNesse + PowerSlim

Язык продукты = gtest (тесты похожи на “юнит”, но работают с реальной системой)

Тулы = sikuli (www.sikuli.org) используем для активации функциональности vSphere Web Client (flash)

18@maxbeard12

Page 19: Автоматизация тестирования - это пот, кровь и слезы

STAF/STAXhttp://staf.sourceforge.net

Больше 14 лет и до сих пор живойFREEMulti-platform (Windows, Unix)Multi-agentsУниверсальный запускатель

19@maxbeard12

Page 20: Автоматизация тестирования - это пот, кровь и слезы

FitNesse+PowerSlim

20

FitNesse http://www.fitnesse.org/ – 10 лет, Java, C#, C++, PythonPowerSlim – почти 5 лет. Quest Software, Dell, Код Безопасности https://github.com/konstantinvlasenko/PowerSlim

@maxbeard12

Page 21: Автоматизация тестирования - это пот, кровь и слезы

FitNesse+PowerSlim

21@maxbeard12

Page 22: Автоматизация тестирования - это пот, кровь и слезы

FitNesse+PowerSlim

22

Page 23: Автоматизация тестирования - это пот, кровь и слезы

FitNesse+PowerSlim

23@maxbeard12

Page 24: Автоматизация тестирования - это пот, кровь и слезы

FitNesse+PowerSlim

24

Неожиданности (непривычности) при использовании

Недостаточно программерский инструмент ;)

Несолидно ;)

Больше про PowerSlim тут http://www.maxshulga.ru/search/label/Fitnesse

@maxbeard12

Page 25: Автоматизация тестирования - это пот, кровь и слезы

Тесты “через” UI

25@maxbeard12

Page 26: Автоматизация тестирования - это пот, кровь и слезы

Тулы для “нефункциональных” тестыНам важно не замедлять работу пользователя с виртуальной инфраструктурой

Эмуляция пользовательской нагрузки (PowerShell)

Стабилизация (утечки, работа с базой)

Нагрузка на сеть (iperf3)

26“Нагрузочные тесты прошли” (с)@maxbeard12

Page 27: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация - как начать и не бросить?

Зачем нужна автоматизация тестирования?

Какие инструменты использовать?

Запуск, анализ результатов тестов

Как эти тесты рождаются

Общие рекомендации

Полезные ссылки

27@maxbeard12

Page 28: Автоматизация тестирования - это пот, кровь и слезы

Незапускаемые регулярно тесты - мертвые тесты.

Jenkins (1.625.3) - наша “всея запускалка”:

Сборка

Скрипты развертывания

Запуск тестов

28“Утро после ночного билда”@maxbeard12

Page 29: Автоматизация тестирования - это пот, кровь и слезы

Приемы использования Jenkins

и полезные расширения

Параметризуемые “работы” (Job Config History)

Связки из “работ” (Build Flow, Copy Artifact)

Мониторинг (Build Monitor)

Еще полезности: Artifact Deployer, Build timeout

29@maxbeard12

Page 30: Автоматизация тестирования - это пот, кровь и слезы

Контроль выполнения

30@maxbeard12

Page 31: Автоматизация тестирования - это пот, кровь и слезы

Тесты прошли. Что дальше?

31@maxbeard12

Page 32: Автоматизация тестирования - это пот, кровь и слезы

Тесты прошли. Что дальше?

Анализ результатов

Контроль времени выполнения

Учет количества запущенных тестов

Борьба с “моргающими” тестами

Багофикс

32@maxbeard12

Page 33: Автоматизация тестирования - это пот, кровь и слезы

Анализ результатов

Диагностика

История результатов запусков

Облегчение для разбора тестов (например, логирование старт-стопа тестов в логи продукта)

33@maxbeard12

Page 34: Автоматизация тестирования - это пот, кровь и слезы

Как релизимся?

Спрашивают - отвечаем- Каждый релиз с Чумаком?- Нет, не каждый.

Кашпировского еще призываем, шаманов и прочих экстрасексов :)

34@maxbeard12

Page 35: Автоматизация тестирования - это пот, кровь и слезы

Как релизимся?

Время полной автопроверки сейчас около 2-х рабочих дней

Ручная проверка (сетапы, UI)

Code freeze (1-2 недели)

35@maxbeard12

Page 36: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация - как начать и не бросить?

Зачем нужна автоматизация тестирования?

Какие инструменты использовать?

Запуск, анализ результатов тестов

Как эти тесты рождаются

Общие рекомендации

Полезные ссылки

36@maxbeard12

Page 37: Автоматизация тестирования - это пот, кровь и слезы

Как тесты рождаются?

Test first? It depends on…

Обсуждение того, что будем проверять

Анализ уже имеющихся “кубиков” для настройки окружения, продукта, проверок

Разработчик отвечает за то, чтобы его код проверялся

Боремся с “хвойными” (вечнозелеными) тестами

37@maxbeard12

Page 38: Автоматизация тестирования - это пот, кровь и слезы

Общие рекомендации по автоматизации

Автоматизация - работа всей команды

Разработчики должны участвовать в автоматизации

38Теория “сухого памперса”

@maxbeard12

Page 39: Автоматизация тестирования - это пот, кровь и слезы

Общие рекомендации по автоматизации

Автоматизировать или нет?

Если не нужно, то не надо. Вы поймете, когда нужно.

Начните с малого.

39@maxbeard12

Page 40: Автоматизация тестирования - это пот, кровь и слезы

Общие рекомендации по автоматизации

Начните с малого.

● legacy: Начните писать тесты на фиксы (может даже через UI), начните писать новый код с тестами

● Изучаете новый язык - изучайте тестовые инструменты к нему● при выборе ATF учитывайте архитектуру вашего приложения и то

окружение в котором он работает● Контроль за временем выполнения

40@maxbeard12

Page 41: Автоматизация тестирования - это пот, кровь и слезы

Автоматизация тестирования - это пот, кровь и слезы

41

Больше пота = меньше крови

@maxbeard12

Page 42: Автоматизация тестирования - это пот, кровь и слезы

Общие рекомендации по автоматизации

42

Больше пота = меньше кровиНо коэффициент меняется...

@maxbeard12

Page 43: Автоматизация тестирования - это пот, кровь и слезы

Полезные ссылкиАвтоматизация тестирования. С чего начинать, возможные проблемы

Как перестать бояться и начать автоматизировать (А. Лянгузов)

Сказка-быль о попытке оценить ROI автоматизации (Н.Макаров)

Серия статей о FitNesse+PowerSlim

Про Code Freeze от С.Мартыненко (http://blog.shumoos.com/archives/317)

ГОСТ Р 56939-2016 Защита информации. Разработка безопасного программного обеспечения. Общие требования

*линки можно увидеть на последнем слайде

43@maxbeard12

Page 44: Автоматизация тестирования - это пот, кровь и слезы

Вроде все :)

Вопросы?

http://maxshulga.ru

@maxbeard

44