葛泽文 胡兆华
摘要:本文针对受安全性限制的自定义通信协议的动态测试难题,通过对协议的特征进行分析,研究协议动态测试通用技术,从协议模板定义、用例生成、动态交互、即时调用三方库等方面进行方法研究。找到了解决自定义通信协议动态测试问题的方法,并且该方法通用于所有协议的测试应用。
关键词:自定义通信协议;动态测试;协议模板;用例自动生成
中图分类号:TP273 文献标识码:A 文章编号:1007-9416(2019)09-0090-03
0 引言
一些涉及安全性的行业,其定义的通信协议一般具有特殊的安全性要求,协议中采用了受控的安全机制,协议功能和性能测试无法直接通过通用测试工具来构造,只能屏蔽被测产品安全特性及处理流程来实现,并且构造测试数据非常因难,测试覆盖也不充分。针对自定义通信协议存在的测试问题主要有以下几个方面:(1)协议功能动态测试,目前只能采用静态分析和代码跟踪,效率低,且只能覆盖部分功能需求。(2)协议并发性能测试,需要被测设备修改程序、取消诸如抗重放等机制的检查,固化参与协议过程的临时参数等,导致测试场景与生产场景差异巨大。(3)协议承载的业务测试,对陪测设备类型和数量的依赖非常大,导致测试效率差。
因此,需要研究协议动态测试方法和工具套件,以解决自定义通信协议动态测试问题,并发数据构造问题,模拟测试配套设备问题。
1 协议测试分析
自定义通信协议一般具有专用性,安全机制受限[1],承载于各类通信信道等特点。(1)自定义协议格式种类多,不同设备或不同系统可能都不同。需要考虑测试技术通用性,不同协议均能采同一种动态测试方法(协议模板化[2])进行构造。(2)安全性机制受限,要考虑协议个性,需要将安全机制涉及模块形成第三方方法库,以便支持不同安全机制的灵活扩展。(3)承载通信信道或承载通信协议多种多样,需要支持多各类信道或承载协议扩展。
2 协议动态测试模型研究
协议动态测试由通信双方实体(测试端和被测端)构成,测试端根据协议模板和用例控制与被测端实施动态测试业务,并统计结果形成测试报告。协议动态测试模型见图1。
主要完成以下四个部分功能:(1)协议解析和构造,依据协议模板和协议用例完成协议发送数据构造和接收数据解决,并进行字段用例预期检查;(2)协议流程的控制,依据协议模板控制协议交互流程,调度解析/构造模块,并进行流程用例预期检查;(3)测试业务的调度,依据协议模板中流程定义和字段定义生成用例数据;根据单次用例调度流程控制、通道控制和代理执行测试业务,并收集测试结果;(4)收发通道的选取和驱动,支持各层次通道的选取和驱动,如以太网、IP、TCP、串口等。支持对多实例共享或独占通道。
其中,协议解析和构造部分,根据模板完成协议消息数据生成和接收,并根据模板调用三方库完成协议字段数据动态生成和解析。如图2所示。
2.1 协议动态测试流程
依据定义的协议模板自动生成数据包,根据配置承载通道进行数据发送、接收数据解析、预期结果检查、测试报告生成等操作。测试流程如图3所示。
在协议测试过程中,构造用例对交互协议进行动态测试,确认协议数据字段处理是否与定义要求一致。具体测試活动流程如下:
(1)协议模板定义。1)协议交互定义:定义协议完整的交互流程,测试端发送的协议消息(如申请)和接收解析的协议消息(如响应),及组成关系(如根据接收包内容不同,组织不同消息发送)。2)协议交互包格式定义:定义消息中涉及的字段及组成关系。3)字段属性定义:含协议字段本身的要素信息(含字段依赖:协议包内部和外部的依赖关系)和测试管理要素(取值方法,存储方法、检查点等)。
(2)测试预期设置。通过设置字段预期,作为协议字段数据解析后比对基准,形成检查点(含协议流程预期设置)。
(3)生成测试用例。将定义的协议模板(含外部导入的预置数据、字段构造的用例值)和预置的检查点等形成用例套件,供协议数据解析时自动进行测试(含协议流程用例)。
(4)协议动态交互。控制端加载协议模板生成的用例套件,控制测试端与被测端进行协议交互测试:
1)按配置通道进行消息发送和接收:协议控制层将数据交由发送模块,接收模块接收数据交协议控制层,协议控制层控制消息的动态交互;2)发送消息生成:按模板生成发送数据,构造的用例数据和需要动态生成的数据,即时调用相应三方库处理后,形成协议发送消息数据;3)接收消息解析:按模板解析数据,存储相应数据供后续解析过程使用,按模板即时调用相应三方库处理,并进行比对检查和进行下一消息动态生成。
(5)生成测试报告。协议数据交互过程中,根据用例套件中涉及的检查点(含响应消息接收失败)比对结果输出测试报告。
2.2 协议静态分析流程
根据自定义的协议模板,可自动分析从数据包中提取的协议数据,自动判断数据包是否符合协议模板预期定义,并导出分析结果和报告。测试流程如图4所示。
设备涉及的各类自定义协议在测试过程中,对交互数据进行静态解析验证,确认协议数据封装是否与定义要求一致。具体测试处理流程如下:
(1)协议模板定义。1)协议流程定义:定义交互流程(格式),测试端发送的协议消息(如申请)和接收解析的协议消息(如响应)。2)协议格式(消息)定义:定义消息中涉及的字段及组成关系。3)字段属性定义:定义协议字段本身的要素信息(含字段依赖:消息内部和消息外部)和测试管理要素(取值方法,存储方法、检查点等)。
(2)字段预期设置。通过设置字段预期,作为协议字段数据解析后比对基准,形成检查点。
(3)生成测试用例。将协议模板定义和预置的检查点组合形成用例套件,供协议数据解析时自动进行测试。
(4)输入数据解析。控制端加载按模板生成的用例套件,对输入协议数据进行解析:1)按模板解析数据,与检查点预置数据进行比对,并记录结果。2)存储供后续解析过程使用的字段内容。3)在协议分析过程中,按模板字段属性方法及依赖数据,自动调用三方库进行处理。
(5)生成测试报告。数据解析完成后,自动依据用例套件中涉及的检查点比对结查输出测试报告。
3 协议动态测试关键技术研究
3.1 协议模板按需定义
根据被测协议具体要求,定义协议流程、协议格式、协议字段和字段依赖关系及处理方法(含外部算法调用),形成协议模板。协议模板定义如下:
(1)协议消息条目定义。定义协议涉及的交互消息条目,控制消息申请、响应及其时序关系。
(2)协议消息字段定义。根据接收消息特定字段取值,选择模板定义分支或层次(子模板)。如协议通过类型字段区分,后续封装数据不同定义子模板供选择,如图5所示。
(3)协议字段依赖关系。主要涉及两类字段依赖:1)消息内部,后面字段依赖前面字段取值,如B字段长度依赖A字段值来确定等。主要有值依赖、循环次数依赖及子模板依赖等,如图6所示。2)消息外部,生成消息中存在字段依赖接收消息字段值(动态值)或外部输入值(个性值)来参与三方(方法库)处理后生成的动态值,如图7所示。
(4)用例和检点嵌入。1)用例数据构造:如A字段取值,需从边界、等价类等进行用例测试,该类例重复进行协议消息交互来进行验证。模板中定义测试业务控制字来进协议控制调度。2)针对字段设定检查点:并设预期值,控制协议交互中将调用检查模块进行对比确认并记录,供生成测试报告。
(5)子模板及字段数据处理方法外部扩展。1)子模板数据处理方法:自定义协议大多是分层处理,外层处理一般涉及多个字段处理之后,再进行外层处理。针对这类层次子模板也定义方法进行处理;2)字段数据处理方法:调用三方库对数据进行生成处理或解析处理,主要涉及加密、解密、签名、验签等,涉及依赖其他字段值需要存储或从外部导入。
3.2 协议测试数据动态处理
根据模板定义组织协议交互流程场景;根据测试用例,在三方库支持下,即时生成或解析协议消息数据;按字段属性处理(存储、输出、变换、比对等)字段数据。
3.2.1 协议数据生成和解析
协议数据生成同解析数据,处理方式相反。主要涉及以下处理内容:(1)支持對变长字段处理;(2)支持字段依赖处理;(3)支持对接收字段依赖处理;(4)字段预期定义处理,预期格式功能用于判断被测目标返回值是否符合用户的预期。
3.2.2 协议数据三方库处理
协议交互数据即时处理,除设计的收发场景外,即时根据字段属性,依据当前数据条件,选择处理方法,调用三方动态库,快速生成所需数据。实现从库建立阶段定义方法,协议定义阶段选择方法,协议执行阶段调用方法,将对字段的处理方法统一形成三方库,以便于灵活扩展。针对三方库处理关系如图8所示。
4 协议动态测试应用场景
4.1 协议动态测试
用于验证协议动态交互过程,构造数据测试被测设备或系统对协议字段的处理,验证协议处理逻辑与协议规范的一致性。(1)针对每个字段构造数据,验证被测系统接收情况;(2)针对每个字段设置预期,检查响应结果。
4.2 协议静态解析
用于针对被测设备或系统涉及协议真实交互数据的静态解析,验证协议封装和承载数据内容是否与被测对象设计要求一致。
4.3 并发数据构造测试
将协议动态交互形成一个用户套件,并根据用户个性数据生成多用户协议业务,加载通道承载,形成并发测试场景,构造协议业务并发测试,验证协议性能(含并发和业务性能)。
5 结语
由于自定义协议动态测试技术考虑了通用性和可扩展性等要素,适用于所有自定义协议动态功能和性能测试。能实现的测试目标包括:建立各类协议的功能基准测试;模拟真实的协议负载行为,测试设备或系统的协议性能;模拟陪测设备,建立更多测试场景。综上所述,应用协议动态测试技术,在解决自定义协议动态测试问题的同时,可以提高测试业务的生产效率和质量。
参考文献
[1] 戴宗坤.信息系统安全[M].电子工业出版社,2002.
[2] 古乐,史九林.软件测试技术概论[M].清华大学出版社,2004.
Abstract:With the development of The Times,the level of world technological innovation is continuously improving,but the physical quality of people is declining with years.Therefore,physical exercises,the improvement of physical fitness is also the current national priority.For this reason,our team has developed an intelligent fitness platform used Convolutional Neural Network for image recognition process and Android platform as the client.People can run the software to identify,judge,and recorrect their movement,so as to achieve the same effects as the personal coach.
Key words:Convolutional Neural Network;Image Recognition;movement teaching