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

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

  • Upload
    qasib

  • View
    597

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

2

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

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

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

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

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

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

3

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

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

Терминал

кондуктора

10 регионов

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

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

4

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

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

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

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

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

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

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

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

5

Цена ошибки

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

Чем грозит

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

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

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

6

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

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

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

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

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

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

7

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

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

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

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

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

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

8

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

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

400 часов

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

9

Цель

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

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

10

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

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

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

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

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

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

11

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

Требования:

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

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

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

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

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

терминалов

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

12

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

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

80 часов

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

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

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

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

13

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

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

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

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

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

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

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

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

14

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

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

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

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

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

15

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

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

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

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

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

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

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

утилиты

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

16

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

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

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

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

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

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

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

автотестов

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

17

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

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

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

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

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

18

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

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

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

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

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

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

Unit-tests и прочее

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

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

19

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

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

dump-card-in

dump-card-out

Log

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

20

Continuous integration

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

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

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

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

21

Continuous integration

SVN

developer

Commit

Feedback

CI

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

22

Continuous integration

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

23

Continuous integration

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

24

Code coverage

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

25

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

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

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

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

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

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

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

Bamboo – CI сервер

TestCocoon – code coverage пакет

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

26

Результаты

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

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

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

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

27

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

Вопросы?