Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

TMPA-2015: Automated process of creating test scenarios for financial protocols and connectivity testing

3,216 views

Published on

Automated process of creating test scenarios for financial protocols and connectivity testing

Anna Toropova, Sergey Pavlov, Andrey Soloviev, Alexander Bormotin, Iosif Itkin, Exactpro Systems

12 - 14 November 2015
Tools and Methods of Program Analysis in St. Petersburg

Published in: Education
  • Be the first to comment

  • Be the first to like this

TMPA-2015: Automated process of creating test scenarios for financial protocols and connectivity testing

  1. 1. Автоматизированное создание тест-кейсов для тестирования соединений и протоколов Сергей Павлов, Андрей Соловьев, Александр Бормотин, Анна Торопова, Иосиф Иткин 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. 2. 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
  3. 3. Зачем? Финансовые платформы - сложные, постоянно развивающиеся системы Для каждой новой функциональности надо создавать новые тесты В финансовой индустрии существуют универсальные протоколы (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
  4. 4. Зачем? Финансовые платформы - сложные, постоянно развивающиеся системы Для каждой новой функциональности надо создавать новые тесты В финансовой индустрии существуют универсальные протоколы (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
  5. 5. Зачем? Финансовые платформы - сложные, постоянно развивающиеся системы Для каждой новой функциональности надо создавать новые тесты В финансовой индустрии существуют универсальные протоколы (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
  6. 6. Зачем? Финансовые платформы - сложные, постоянно развивающиеся системы Для каждой новой функциональности надо создавать новые тесты В финансовой индустрии существуют универсальные протоколы (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
  7. 7. Зачем? Финансовые платформы - сложные, постоянно развивающиеся системы Для каждой новой функциональности надо создавать новые тесты В финансовой индустрии существуют универсальные протоколы (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
  8. 8. Зачем? Финансовые платформы - сложные, постоянно развивающиеся системы Для каждой новой функциональности надо создавать новые тесты В финансовой индустрии существуют универсальные протоколы (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. 9. 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. 10. Протоколы передачи данных 10 Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49 www.exactpro.com
  11. 11. 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
  12. 12. 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
  13. 13. Финансовые протоколы • Текстовые (FIX, SWIFT и т.д.) 00000000 38 3d 46 49 58 54 2e 31 2e 31 01 39 3d 31 38 32 8=FIXT.1.1SOH9=182 00000010 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 "A 00000010 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. 14. 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. 15. Способы описания сообщений - текст/таблица 15 Field Offset Length Type Description Length 0 2 UInt16 Length 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.
  16. 16. Способы описания сообщений - 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
  17. 17. Способы описания сообщений - 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. 18. Структура словаря 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. 19. 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. 20. Способы описания технологического процесса 20 t Client Server Login Message Heartbeat Login message Heartbeat
  21. 21. Требования к описанию технологического процесса 21 • Точность • Полнота • Лаконичность • Наглядность • Гибкость • Возможность чтения программой
  22. 22. Способы описания технологического процесса Конечные автоматы (англ. Finite State Machine) • таблица Состояние/Событие • машина Мили • машина Мура • UML • SCXML • ... 22 START PILL TIMER PACMAN EATS POWER PILL UPDATE MOVEMENT UPDATE MOVEMENT UPDATE MOVEMENT MOVE FROM PACMAN MOVE TO PACMAN COLLISION WITH PACMAN TIMER ENDS
  23. 23. Способы описания технологического процесса 23 Client opens TCP/IP connection TCP/IP connection is established entry / Timer==0; Client sends correct not Login Request; TCP/IP connection is closed Client 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. 24. 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
  25. 25. Как генерировать тесты при помощи словаря и 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;
  26. 26. Как генерировать тесты при помощи словаря и workflow TCP/IP connection is closed call event (when) 26 when (Timer = <User_max_idling_time>) TCP/IP connection is established entry / Timer==0;
  27. 27. Как генерировать тесты при помощи словаря и 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;
  28. 28. Как генерировать тесты при помощи словаря и 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. 29. Корректные и некорректные сообщения 29 Аттрибут Позитивные тесты Негативные тесты MinOccurs Количество появлений поля в сообщении больше либо равно параметру MinOccurs Количество появлений поля в сообщении меньше параметра MinOccurs MaxOccurs Количество появлений поля в сообщении меньше либо равно параметру MaxOccurs Количество появлений поля в сообщении больше параметра MaxOccurs Length Длина поля меньше либо равна параметру Length Длина поля больше параметра Length Data type (Целые числа) ● Значение в середине диапазона; ● Значение равно максимальному/минимальному для этого типа данных; (Целые числа) ● Значение содержащие символы кроме “-” и “0-9”; ● Значение с символом “-”, находящемся не в начале.
  30. 30. Способы описания технологического процесса 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. 31. Способы описания технологического процесса 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
  32. 32. Как генерировать тесты при помощи словаря и 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;
  33. 33. Как генерировать тесты при помощи словаря и 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;
  34. 34. Способы описания технологического процесса • client sends/system sends • registered/not registered • correct/not correct • entry actions • actions/transitions • variables • guard • call event (when) 34
  35. 35. 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
  36. 36. А что в итоге и что дальше? Что в итоге? • Словари 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. 37. А что в итоге и что дальше? Что в итоге? • Словари vs Конечные автоматы? И то и другое! • Разные протоколы - единая структура • Сложные конечные автоматы? Современные представления! (UML и SCXML) Что дальше? • Применение метода для других протоколов • Хватит проектировать! Нам нужен код! • Есть ли фундаментальные ограничения? 37 Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49 www.exactpro.com
  38. 38. А что в итоге и что дальше? Что в итоге? • Словари vs Конечные автоматы? И то и другое! • Разные протоколы - единая структура • Сложные конечные автоматы? Современные представления! (UML и SCXML) Что дальше? • Применение метода для других протоколов • Хватит проектировать! Нам нужен код! • Есть ли фундаментальные ограничения? 38 Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49 www.exactpro.com
  39. 39. А что в итоге и что дальше? Что в итоге? • Словари vs Конечные автоматы? И то и другое! • Разные протоколы - единая структура • Сложные конечные автоматы? Современные представления! (UML и SCXML) Что дальше? • Применение метода для других протоколов • Хватит проектировать! Нам нужен код! • Есть ли фундаментальные ограничения? 39 Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49 www.exactpro.com
  40. 40. А что в итоге и что дальше? Что в итоге? • Словари vs Конечные автоматы? И то и другое! • Разные протоколы - единая структура • Сложные конечные автоматы? Современные представления! (UML и SCXML) Что дальше? • Применение метода для других протоколов • Хватит проектировать! Нам нужен код! • Есть ли фундаментальные ограничения? 40 Quality Assurance & Related Software Development for Innovative Trading Systems Tel: +7 495 640 24 60 , +1 415 830 38 49 www.exactpro.com
  41. 41. Спасибо! 41
  42. 42. Ваши вопросы 42

×