tmpa-2015 > Автомитизирование создание тест-кейсов для...
TRANSCRIPT
Автоматизированное создание тест-кейсов для тестирования соединений и протоколовСергей Павлов, Андрей Соловьев, Александр Бормотин,Анна Торопова, Иосиф Иткин12 ноября 2015
Quality Assurance & Related Software Development for Innovative Trading SystemsTel: +7 495 640 2460, +1 415 830 38 49www.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)
Принципы создания тестов для протоколов достаточно просты и применимы к большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для тестирования протоколов и подключений
3 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)
Принципы создания тестов для протоколов достаточно просты и применимы к большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для тестирования протоколов и подключений
4 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)
Принципы создания тестов для протоколов достаточно просты и применимы к большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для тестирования протоколов и подключений
5 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)
Принципы создания тестов для протоколов достаточно просты и применимы к большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для тестирования протоколов и подключений
6 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)
Принципы создания тестов для протоколов достаточно просты и применимы к большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для тестирования протоколов и подключений
7 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)
Принципы создания тестов для протоколов достаточно просты и применимы к большинству систем
Стоит попытаться автоматизировать процесс создания тест-кейсов для тестирования протоколов и подключений
8 Quality 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
Протоколы передачи данных
10 Quality 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 UInt16Length of the message block including the header and all payload messages.
Message Count 2 1 UInt8
Number of payload messages that will follow the header.
Market Data Group 3 1 Byte
Identity of the market data group the payload messages relate to.
Sequence Number 4 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
DictionaryNameDictionaryVersonDictionaryType...
DictionaryMessageNameMessageIDMessageType...
Message 1
FieldNameFieldTypeRequiredMin/Max value...
Field 1FieldNameFieldTypeRequiredMin/Max value...
Field M1
......
MessageNameMessageIDMessageType...
Message N
FieldNameFieldTypeRequiredMin/Max value...
Field 1FieldNameFieldTypeRequiredMin/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
Buy side
Sell side
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 establishedEntry / 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 closedTCP/IP connection is established
client sends; registered/not registered
25
Client sends Login Request (registered username AND not registered passwordTCP/IP connection is established
entry / Timer==0;Client sends correct not Login Request;
Как генерировать тесты припомощи словаря и workflow
TCP/IP connection is closedTCP/IP connection is established
call event (when)
26
when (Timer = <User_max_idling_time>)TCP/IP connection is established
entry / Timer==0;Client sends correct not Login Request;
Как генерировать тесты припомощи словаря и workflow
27
MITCH-replay connection is established
entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
TCP/IP connection is closedTCP/IP connection is established
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;Client sends correct not Login Request;
Корректные и некорректные сообщения
28
Аттрибут Позитивные тесты Негативные тесты
MinOccurs Количество появлений поля в сообщении больше либо равно параметру MinOccurs
Количество появлений поля в сообщении меньше параметра MinOccurs
MaxOccurs Количество появлений поля в сообщении меньше либо равно параметру MaxOccurs
Количество появлений поля в сообщении больше параметра MaxOccurs
Length Длина поля меньше либо равна параметру Length
Длина поля больше параметра Length
Data type (Целые числа)● Значение в середине
диапазона;● Значение равно
максимальному/минимальному для этого типа данных;
(Целые числа)● Значение содержащие символы
кроме “-” и “0-9”;● Значение с символом “-”,
находящемся не в начале.
Как генерировать тесты припомощи словаря и workflow
29
MITCH-replay connection is established
entry / system sends Logon Response (Status == A), Timer==0, User_Logins_count++;
TCP/IP connection is closedTCP/IP connection is established
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 correct not Login Request;
Способы описания технологического процесса
• client sends/system sends
• registered/not registered
• entry actions
• actions/transitions
• variables
• guard
• call event (when)
• correct/not correct
30
31
● Зачем?● Протоколы передачи данных. Финансовые протоколы● 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)
Что дальше?
• Применение метода для других протоколов• Хватит проектировать! Нам нужен код!• Есть ли фундаментальные ограничения?
32 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)
Что дальше?
• Применение метода для других протоколов• Хватит проектировать! Нам нужен код!• Есть ли фундаментальные ограничения?
33 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)
Что дальше?
• Применение метода для других протоколов• Хватит проектировать! Нам нужен код!• Есть ли фундаментальные ограничения?
34 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)
Что дальше?
• Применение метода для других протоколов• Хватит проектировать! Нам нужен код!• Есть ли фундаментальные ограничения?
35 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)
Что дальше?
• Применение метода для других протоколов• Хватит проектировать! Нам нужен код!• Есть ли фундаментальные ограничения?
36 Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49 www.exactpro.com
Ваши вопросы
37
Спасибо!
38