tmpa-2015: automated process of creating test scenarios for financial protocols and connectivity...
TRANSCRIPT
Автоматизированное создание
тест-кейсов для тестирования
соединений и протоколов
Сергей Павлов, Андрей Соловьев, Александр Бормотин,
Анна Торопова, Иосиф Иткин
12 ноября 2015
Quality Assurance & Related Software Development for Innovative Trading Systems
Tel: +7 495 640 2460, +1 415 830 38 49
www.exactpro.com
2
● Зачем?
● Протоколы передачи данных. Финансовые протоколы
● Cпособы описания финансовых протоколов
● Технологический процесс (workflow)
● Как генерировать тесты при помощи словаря и workflow?
● А что в итоге и что дальше?
О чем пойдет речь
Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Зачем?
Финансовые платформы - сложные, постоянно развивающиеся системы
Для каждой новой функциональности надо создавать новые тесты
В финансовой индустрии существуют универсальные протоколы (FIX, SWIFT)
Принципы создания тестов для протоколов достаточно просты и применимы к
большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для
тестирования протоколов и подключений
3Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Зачем?
Финансовые платформы - сложные, постоянно развивающиеся системы
Для каждой новой функциональности надо создавать новые тесты
В финансовой индустрии существуют универсальные протоколы (FIX, SWIFT)
Принципы создания тестов для протоколов достаточно просты и применимы к
большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для
тестирования протоколов и подключений
4Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Зачем?
Финансовые платформы - сложные, постоянно развивающиеся системы
Для каждой новой функциональности надо создавать новые тесты
В финансовой индустрии существуют универсальные протоколы (FIX, SWIFT)
Принципы создания тестов для протоколов достаточно просты и применимы к
большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для
тестирования протоколов и подключений
5Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Зачем?
Финансовые платформы - сложные, постоянно развивающиеся системы
Для каждой новой функциональности надо создавать новые тесты
В финансовой индустрии существуют универсальные протоколы (FIX, SWIFT)
Принципы создания тестов для протоколов достаточно просты и применимы к
большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для
тестирования протоколов и подключений
6Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Зачем?
Финансовые платформы - сложные, постоянно развивающиеся системы
Для каждой новой функциональности надо создавать новые тесты
В финансовой индустрии существуют универсальные протоколы (FIX, SWIFT)
Принципы создания тестов для протоколов достаточно просты и применимы к
большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для
тестирования протоколов и подключений
7Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Зачем?
Финансовые платформы - сложные, постоянно развивающиеся системы
Для каждой новой функциональности надо создавать новые тесты
В финансовой индустрии существуют универсальные протоколы (FIX, SWIFT)
Принципы создания тестов для протоколов достаточно просты и применимы к
большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для
тестирования протоколов и подключений
8Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
9
● Зачем?
● Протоколы передачи данных. Финансовые протоколы
● Cпособы описания финансовых протоколов
● Технологический процесс (workflow)
● Как генерировать тесты при помощи словаря и workflow?
● А что в итоге и что дальше?
О чем пойдет речь
Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Протоколы передачи данных
10Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
TCP/IP Model OSI Model
Application Layer
Transport Layer
Internet Layer
Network Access Layer
Модели OSI и TCP/IP
11
Application Layer
Presentation Layer
Session Level
Transport Layer
Network Layer
Data Link Layer
Physical Layer
TCP/IP Model OSI Model
Application Layer
Transport Layer
Internet Layer
Network Access Layer
Модели OSI и TCP/IP
12
Application Layer
Presentation Layer
Session Level
Transport Layer
Network Layer
Data Link Layer
Physical Layer
Финансовые протоколы
• Текстовые (FIX, SWIFT и т.д.)
00000000 38 3d 46 49 58 54 2e 31 2e 31 01 39 3d 31 38 32 8=FIXT.1.1SOH9=18200000010 01 33 35 3d 44 01 33 34 3d 36 31 30 01 34 39 3d SOH35=DSOH34=610SOH49=00000020 4e 46 54 46 58 30 33 30 31 01 35 36 3d 46 47 57 NFTFX030SOH56=FGW
• Бинарные (ITCH, FAST)
00000000 30 00 02 42 93 03 00 00 06 54 87 78 00 00 22 41 0 B⌠ T┤x "A00000010 00 00 00 00 30 00 00 00 02 00 00 00 42 e8 03 00 0 BХ
00000020 00 20 0f 00 00 00 00 00 9d 69 3a 00 00 00 00 00 ²i:
13
14
● Зачем?
● Протоколы передачи данных. Финансовые протоколы
● Cпособы описания финансовых протоколов
● Технологический процесс (workflow)
● Как генерировать тесты при помощи словаря и workflow?
● А что в итоге и что дальше?
О чем пойдет речь
Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Способы описания сообщений - текст/таблица
15
Field Offset Length Type Description
Length 0 2 UInt16
Length of the message block
including the header and all
payload messages.
Message
Count2 1 UInt8
Number of payload messages that
will follow the header.
Market Data
Group3 1 Byte
Identity of the market data group
the payload messages relate to.
Sequence
Number4 4 UInt32
Sequence number of the first
payload message.
Payload 5 Variable - One or more payload messages.
Способы описания сообщений - XML
<message name="LoginRequest">
<attribute type="java.lang.Short" name="MessageType">1</attribute>
<field isCollection="false" defaultvalue="11" type="java.lang.Integer"
name="Length">
<attribute type="java.lang.String" name="Type">UInt16</attribute>
<attribute type="java.lang.Integer" name="Offset">0</attribute>
<attribute type="java.lang.Integer" name="Length">2</attribute>
</field>
<field isCollection="false" defaultvalue="" type="java.lang.String"
name="Username">
<attribute type="java.lang.String" name="Type">Alpha</attribute>
<attribute type="java.lang.Integer" name="Offset">3</attribute>
<attribute type="java.lang.Integer" name="Length">8</attribute>
</field>
</message>
16
Способы описания сообщений - XSD
<xs:simpleType name="AnyBICIdentifier">
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-
9]{3,3}){0,1}"/>
</xs:restriction>
</xs:simpleType>
>
<xs:simpleType name="DeniedReason4Code">
<xs:restriction base="xs:string">
<xs:enumeration value="ADEA"/>
<xs:enumeration value="DCAN"/>
<xs:enumeration value="DSET"/>
</xs:restriction>
</xs:simpleType>
17
Структура словаря
18
DictionaryName
DictionaryVerson
DictionaryType
...
Dictionary
MessageName
MessageID
MessageType
...
Message 1
FieldName
FieldType
Required
Min/Max value
...
Field 1
FieldName
FieldType
Required
Min/Max value
...
Field M1
......
MessageName
MessageID
MessageType
...
Message N
FieldName
FieldType
Required
Min/Max value
...
Field 1
FieldName
FieldType
Required
Min/Max value
...
Field M2
...
19
● Зачем?
● Протоколы передачи данных. Финансовые протоколы
● Cпособы описания финансовых протоколов
● Технологический процесс (workflow)
● Как генерировать тесты при помощи словаря и workflow?
● А что в итоге и что дальше?
О чем пойдет речь
Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Способы описания технологического процесса
20
t
Client Server
Login Message
Heartbeat
Login message
Heartbeat
Требования к описанию
технологического процесса
21
• Точность
• Полнота
• Лаконичность
• Наглядность
• Гибкость
• Возможность чтения программой
Способы описания технологического процесса
Конечные автоматы (англ. Finite State Machine)
• таблица Состояние/Событие
• машина Мили
• машина Мура
• UML
• SCXML
• ...
22
START
PILLTIMER
PACMAN EATSPOWER PILL
UPDATEMOVEMENT
UPDATEMOVEMENT
UPDATEMOVEMENT
MOVE FROMPACMAN
MOVE TOPACMAN
COLLISIONWITH PACMAN
TIMERENDS
Способы описания технологического процесса
23
Client opens TCP/IP connectionTCP/IP connection is established
entry / Timer==0;Client sends correct not Login Request;
TCP/IP connection is closedClient sends Login Request (not registered username)
MITCH-replay connection is established
Entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
Client sends Replay Request / Timer==0, system sends Replay Response;
Client sends Snapshot Request / Timer==0, system sends Replay Response (Status == d);
Client sends Login Request (registered username AND registered password) / Timer==0, system sends Replay Response (Status == e);
Client sends Login Request (registered username AND not registered password)
Client sends Login Request (incorrect Length) / system does nothing (1 sec);
Client sends Replay Request (incorrect Length) / system does nothing (1 sec);
Client sends Login Request (registered username AND registered
password) [User_Logins_count < <Max_Logins_count>]
Client sends Logout Request / system does nothing (1 sec);
when (Timer = <User_max_idling_time>)
Client sends Login Request (registered username AND registered password) [User_Logins_count >= <Max_Logins_count>] / Login
Response (Status == b)
when (Timer = <User_max_idling_time>)
Client sends Login Request (incorrect Length) / system does nothing (1 sec);
24
● Зачем?
● Протоколы передачи данных. Финансовые протоколы
● Cпособы описания финансовых протоколов
● Технологический процесс (workflow)
● Как генерировать тесты при помощи словаря и workflow?
● А что в итоге и что дальше?
О чем пойдет речь
Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Как генерировать тесты при
помощи словаря и workflow
TCP/IP connection is
closed
client sends; registered/not registered
25
Client sends Login Request
(registered username AND not
registered password)TCP/IP connection is
established
entry / Timer==0;
Как генерировать тесты при
помощи словаря и workflow
TCP/IP connection is
closed
call event (when)
26
when (Timer =
<User_max_idling_time>)
TCP/IP connection is
established
entry / Timer==0;
Как генерировать тесты при
помощи словаря и workflow
27
MITCH-replay connection is established
entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
TCP/IP connection is established
entry; system sends
Client sends Login Request
(registered username AND
registered password)
TCP/IP connection is
established
entry / Timer==0;
Как генерировать тесты при
помощи словаря и workflow
28
MITCH-replay connection is established
entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
TCP/IP connection is
closed
entry; system sends; incorrect length
Client sends Login
Request (registered
username AND registered
password)
Client sends Replay
Request (incorrect
Length) / system does
nothing (1 sec);
TCP/IP connection is
established
entry / Timer==0;
Корректные и некорректные сообщения
29
Аттрибут Позитивные тесты Негативные тесты
MinOccurs Количество появлений поля в
сообщении больше либо равно
параметру MinOccurs
Количество появлений поля в
сообщении меньше параметра
MinOccurs
MaxOccurs Количество появлений поля в
сообщении меньше либо равно
параметру MaxOccurs
Количество появлений поля в
сообщении больше параметра
MaxOccurs
Length Длина поля меньше либо равна
параметру Length
Длина поля больше параметра
Length
Data type (Целые числа)
● Значение в середине
диапазона;
● Значение равно
максимальному/минимальному
для этого типа данных;
(Целые числа)
● Значение содержащие символы
кроме “-” и “0-9”;
● Значение с символом “-”,
находящемся не в начале.
Способы описания технологического процесса
30
TCP/IP connection is
established
entry / Timer==0;
Client sends correct not
Login Request;
TCP/IP connection is
closed
MITCH-replay connection is established
Entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
Client sends Replay Request / Timer==0, system sends Replay Response;
internal actions
Способы описания технологического процесса
31
TCP/IP connection is
established
entry / Timer==0;
Client sends correct not
Login Request;
TCP/IP connection is
closed
MITCH-replay connection is established
Entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
Client sends Replay Request / Timer==0, system sends Replay Response;
Client sends Login Request (registered username AND
registered password)
Client sends Logout
Request / system does
nothing (1 sec);
internal actions
Как генерировать тесты при
помощи словаря и workflow
32
TCP/IP connection is
closed
guard
Client sends Login Request (registered username AND
registered password) [User_Logins_count >=
<Max_Logins_count>] / Login Response (Status == b)TCP/IP connection is
established
entry / Timer==0;
Как генерировать тесты при
помощи словаря и workflow
33
MITCH-replay connection is established
entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
TCP/IP connection is
closed
guard
Client sends Login Request (registered username AND
registered password) [User_Logins_count >=
<Max_Logins_count>] / Login Response (Status == b)
Client opens TCP/IP connection
Client sends Login Request (registered
username AND registered password)
[User_Logins_count <
<Max_Logins_count>]
Client sends Logout Request /
system does nothing (1 sec);
TCP/IP connection is
established
entry / Timer==0;
Способы описания технологического процесса
• client sends/system sends
• registered/not registered
• correct/not correct
• entry actions
• actions/transitions
• variables
• guard
• call event (when)
34
35
● Зачем?
● Протоколы передачи данных. Финансовые протоколы
● Cпособы описания финансовых протоколов
● Технологический процесс (workflow)
● Как генерировать тесты при помощи словаря и workflow?
● А что в итоге и что дальше?
О чем пойдет речь
Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
А что в итоге и что дальше?
Что в итоге?
• Словари vs Конечные автоматы? И то и другое!
• Разные протоколы - единая структура
• Сложные конечные автоматы? Современные представления! (UML и
SCXML)
Что дальше?
• Применение метода для других протоколов
• Хватит проектировать! Нам нужен код!
• Есть ли фундаментальные ограничения?
36Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
А что в итоге и что дальше?
Что в итоге?
• Словари vs Конечные автоматы? И то и другое!
• Разные протоколы - единая структура
• Сложные конечные автоматы? Современные представления! (UML и
SCXML)
Что дальше?
• Применение метода для других протоколов
• Хватит проектировать! Нам нужен код!
• Есть ли фундаментальные ограничения?
37Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
А что в итоге и что дальше?
Что в итоге?
• Словари vs Конечные автоматы? И то и другое!
• Разные протоколы - единая структура
• Сложные конечные автоматы? Современные представления! (UML и
SCXML)
Что дальше?
• Применение метода для других протоколов
• Хватит проектировать! Нам нужен код!
• Есть ли фундаментальные ограничения?
38Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
А что в итоге и что дальше?
Что в итоге?
• Словари vs Конечные автоматы? И то и другое!
• Разные протоколы - единая структура
• Сложные конечные автоматы? Современные представления! (UML и
SCXML)
Что дальше?
• Применение метода для других протоколов
• Хватит проектировать! Нам нужен код!
• Есть ли фундаментальные ограничения?
39Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
А что в итоге и что дальше?
Что в итоге?
• Словари vs Конечные автоматы? И то и другое!
• Разные протоколы - единая структура
• Сложные конечные автоматы? Современные представления! (UML и
SCXML)
Что дальше?
• Применение метода для других протоколов
• Хватит проектировать! Нам нужен код!
• Есть ли фундаментальные ограничения?
40Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49
www.exactpro.com
Спасибо!
41
Ваши вопросы
42