Кутумов - Автоматизация тестирования транспортных...

Post on 26-Jun-2015

619 views 0 download

Transcript of Кутумов - Автоматизация тестирования транспортных...

Опыт автоматизации тестирования механизма обслуживания

транспортных карт Кутумов Алексей

2

Алексей Кутумов

ЗАО «Золотая Корона»

Ведущий разработчик

Разработка терминального ПО

и хостовых решений

3

Территория, на которой представлена система

Транспортная карта

Терминал

кондуктора

10 регионов

более 30-ти городов

4

Проблематика

Недостаточная функциональность оборудования

Разнообразие парка терминального

оборудования

Ручное обновление ПО

Количество устройств - тысячи

Устройства территориально разбросаны

5

Цена ошибки

Дефект в ПО недопустим!

Чем грозит

Время на замену ПО во всех устройствах – до 1 месяца

Высокая стоимость процесса обновления

6

Как было раньше - Ручное тестирование

Ручное создание каждого теста

Ручная подготовка тестового окружения

Ручная подготовка входных данных

Итог: 140 часов на регрессию

7

Как было раньше - Частичная автоматизация

Ручное создание каждого теста

Скрипты подготовки тестового окружения

Скрипты подготовки входных данных

Итог: 80 часов на регрессию

8

Ручное тестирование - все еще допустимо?

80 часов 80 часов 80 часов 80 часов 80 часов

400 часов

9

Цель

80 часов -> 2 минуты

10

Формирование понимания

Изменение существующего кода

Поддержка различных терминальных платформ

Выявление требований

Понимание цели автоматизации

11

Решение – функциональное ядро

Требования:

Полная абстракция от платформы

Никаких системных вызовов

Отсутствие файловой системы

Учитываем ограниченные ресурсы памяти и процессора

Цель: Единое функциональное ядро для всего парка

терминалов

12

Промежуточный результат - функциональное ядро

80 часов 80 часов 80 часов 80 часов 80 часов

80 часов

Ядро общее – тестируется отдельно

Экономим время на функциональное тестирование

Тестирование пока по прежнему выполняем вручную

13

Автоматизация тестов – планирование процесса

Создать инструмент, который для каждого теста:

Загружает в ядро:

тестовое окружение

файл с входными параметрами

Запускает механизм обслуживания

Сверяет результаты с эталонными

14

Автоматизация тестов – возникли вопросы

Где взять набор тестов?

Где брать эталонные данные?

Как быстро и просто создавать файл с входными параметрами?

15

Автоматизация тестов – как решали вопросы

Где взять набор тестов?

Существующие «ручные» тесты тестировщиков

Где брать эталонные данные?

Существующие «ручные» тесты тестировщиков

Как быстро и просто создавать файл с входными параметрами?

Существующие «ручные» тесты тестировщиков + стандартные

утилиты

16

Автоматизация тестов – как решали вопросы

Выполнить ручные тесты на ядре

Получить логи

Применить к логам утилиту генерации теста

Получить файл с входными и выходными параметрами

Последний раз было выполнено ручное тестирование ядра,

в результате получены все необходимые данные для

автотестов

17

Ни один имеющийся тест из набора

тестировщиков не пострадал

Ни один тест не был выкинут

Ни один тест не был изменен

18

Автоматизация тестов – два набора автотестов

Тесты тестировщиков

Импортирована вся иерархия тестов

Тестировщики сами следят за своими тестами

Сами создают и дополняют

Тесты разработчиков

Unit-tests и прочее

Создание теста на каждый баг

19

Автоматизация тестов – генерация автотеста

Файл в формате PARAMETER = VALUE

dump-card-in

dump-card-out

Log

20

Continuous integration

Все тесты хранятся в SVN

Исходный код хранится в SVN

Необходим выделенный сервер для сборки

21

Continuous integration

SVN

developer

Commit

Feedback

CI

22

Continuous integration

23

Continuous integration

24

Code coverage

25

Используемые продукты

C – реализация ядра

C++ – реализация тестовой программы

gtest –запуск тестов и сбор статистики

CMake – система сборки

python - вспомогательные скрипты

SVN – система контроля версий

Bamboo – CI сервер

TestCocoon – code coverage пакет

26

Результаты

Вся логика обслуживания карты тестируется за 2 минуты

Ручной тест быстро превращается в автотест

Каждая сборка проверена

27

Спасибо за внимание!

Вопросы?