Tools & Methods of Program Analysis (TMPA-2014)
Conference in Kostroma, November 14-15
Рассмотрена задача автоматизации тестирования программного комплекса с двухуровневым резервированием. Предложен подход на основе описания комплекса как системы конечных автоматов, тогда тестовые сценарии есть пути на графе переходов конечного автомата. На основе этого подхода создано инструментальное средство, позволяющее находить всевозможные пути графа (возможные сценарии осуществления переходов, порождающие управляющие bash-скрипты в операционной системе Linux). Предусмотрено исполнение порожденных скриптов в рамках инфраструктуры автоматизированного тестирования. Инструментальное средство позволяет проверить исправность работы системы резервирования
BDD. The Outer Limits. Iosif Itkin at Youcon (in Russian)
Moscow Exchange Test Automation of a Backup System at TMPA-2014 (Trading Systems Testing)
1. 14 ноября 2014, Кострома
Жердер Вадим
ОАО Московская Биржа
Ульянина Татьяна
НИЯУ МИФИ
Автоматизация тестирования
системы резервирования торговой
системы ASTS Московской Биржи
5. Задачи:
1. Создать сценарий теста
2. Проверить адекватность реакции компонент
3. Убедиться в устойчивости подключения сервера
доступа
4. Измерить величину временных задержек на сервере
доступа
5. Измерить время переключения и сформировать отчет
4
Continuous integration
Полностью автоматический режим
6. Предлагаемый подход
Компоненты системы
конечные автоматы
копии одного и того же конечного автомата
различаются лишь начальными состояниями
Компонента Начальное состояние
MAIN MAIN SINGLE
BU BACKUP START
WBU WARMBACKUP START
5
7. 6
Диаграммы состояний компонент системы
MAIN
GW
Завершение работы компоненты
Синхронизация
BU с MAIN
Завершение работы
компоненты
MAIN
WITH
BACKUP
MAIN
SINGLE
работы
Завершение
Потеря связи
К MAIN
Подключение
К MAIN
Завершение
работы
GW
- off
GW
- on
TERMINATED
Stop
TERMINATED
Stop
8. Диаграммы состояний компонент системы
7
BACKUP
WARMBACKUP
Завершение работы компоненты
Синхронизация
BU с MAIN
Завершение
работы
BU компоненты
READY
BU
START
TERMINATED
Stop
MAIN недоступен
MAIN
Завершение работы компоненты
Синхронизация
WBU с BU
Завершение
работы
WBU компоненты
READY
TERMINATED
Stop
BU недоступен
BACKUP
WBU
START
9. 8
Завершение работы компоненты
BU недоступен
Начальное
состояние BU
Синхронизация
BU с MAIN
MAIN
недоступен
Синхронизация
BU с MAIN
BU есть
Завершение работы компоненты
MAIN есть
MAIN
отсутствует
Синхронизация
WBU с BU
Запрос на
переведение WBU
в состояние BU
WARM
BACKUP
START
WARM
BACKUP
READY
BACK
UP
START
BACKU
P
READY
BACKU
P WAIT
GOVER
NOR
WBU
discon
nected
MAIN
WITH
BACKU
P
TERMINATED
STOP
Начальное
состояние
MAIN
Начальное
состояние
WBU
Завершение работы компоненты
Завершение работы компоненты
BU
discon
nected
Завершение работы компоненты
Завершение работы компоненты
Этап 1. Создание сценария
WARM
BACKUP
WAIT GOV
ERNOR
MAIN
SINGLE
10. 9
Реализация на языке Python
Этап 1. Создание сценария
o Обход графа и запись сценария
o Сценарии тестов порождают управляющие
bash-скрипты в операционной системе Linux.
11. 10
Модуль Fysom
class Component(Fysom):
def init (self, initial state, log name, tks name, tks ip):
…
Граф переходов:
events list = [
{'name': 'Sync BU with MAIN', 'src': 'BU unsync', 'dst': 'BU synced'},
{'name': 'MAIN unaccessible', 'src': 'BU synced', 'dst': 'BU Wait Gov'},
…]
12. Пример сценария, полученного по графу переходов
Event MAIN state BU state WBU state
PATH 1
MAIN SINGLE BACKUP START WARMBACKUP START
11
Sync BU with
MAIN
1
MAIN WITH
BACKUP
BACKUP READY WARMBACKUP START
Sync WBU with BU MAIN WITH
BACKUP
BACKUP READY WARMBACKUP READY
2
BU unaccessible MAIN SINGLE No BU WARMBACKUP WAIT
GOVERNOR
Switch WBU to BU MAIN SINGLE No BU BACKUP START
Sync BU with
MAIN
MAIN WITH
BACKUP
No BU BACKUP READY
MAIN unaccessible No MAIN No BU BACKUP WAIT GOVERNOR
Gov Permission
granted
No MAIN No BU MAIN SINGLE
3
4
5
6
13. Пример:
runandsave ssh $TEBACKUPMACHINE "`cat ~/ASTSDIR`/te/bin/testBU.sh KILLTE $Scenario $TIMESTAMP"
12
Сценарий в виде Bash-скрипта
Структура команды:
<функция записи в лог> ssh <Node> <вызов скрипта> <команда> <параметры>
14. …
13
Этап 2. Выполнение сценария
o Порожденные скрипты исполняются в рамках инфраструктуры
автоматизированного тестирования.
Сценарий 1
Сценарий 2
Сценарий n
Управляющий скрипт
…
…
15. 14
Этап 3. Анализ результатов теста
o по результатам теста – журналам работы
компонент
o Δt - ?
o занесение данных о переходах
компонент в файл отчёта
Последовательность
переключений
Времена переключений
… …
16. 15
Таблица переходов
TKS Initial State Time 1 Time 2 New State Time delta
Sync BU with
MAIN
tks1 MAIN SINGLE 2014-06-14
10:16:21.786970
2014-06-14
10:16:37.254394
MAIN WITH
BACKUP
15.467424
Sync BU with
MAIN
tks2 BACKUP START 2014-06-14
10:16:34.228663
2014-06-14
10:16:37.254197
BACKUP
READY
3.025534
Sync WBU with
BU
tks3
WARMBACKUP
START
2014-06-14
10:17:01.699093
2014-06-14
10:17:01.699386
WARMBACKUP
READY 0.000293
MAIN
unaccessible
tks2 Lost link to Main 2014-06-14
10:23:00.330469
2014-06-14
10:23:02.001329
MAIN SINGLE 1.67086
Sync BU with
MAIN
tks2 MAIN SINGLE 2014-06-14
10:23:02.001329
2014-06-14
10:23:06.374270
MAIN WITH
BACKUP
4.372941
17. Заключение:
Для автоматизации тестирования разработаны инструменты,
реализующие:
генерацию всевозможных тестовых сценариев;
анализ правильности реакции компонент на внешние события;
анализ устойчивости подключения сервера доступа;
вычисление времени переключения каждой компоненты в новое
состояние;
формирование отчета о переходах компонент.
Результаты работы внедрены в практику тестирования на Московской
бирже.
16