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

Preview:

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

Recommended