用于软件测试的应答模拟装置及方法与流程

文档序号:12550581阅读:243来源:国知局
用于软件测试的应答模拟装置及方法与流程
本发明涉及软件性能测试
技术领域
,特别涉及一种用于软件测试的应答模拟装置及方法。
背景技术
:随着IT技术的发展,电信,金融等行业的信息系统越来越复杂,单个系统对其它系统的依赖度越来越高。系统对外依赖复杂度的提升带来的问题是:对于其中单个系统的测试需要预先搭建众多与之存在关联的系统,否则,对这个系统的测试难以实施。而协调所有依赖系统的成本和难度非常高,尤其是协调外公司的相关测试环境。因此,部分涉及依赖系统的测试一般需要引入测试工具降低成本。现有的大部分测试工具,例如:LoadRunner,一般只能测试向被测试系统主动发送请求的场景。对于被测试系统向依赖系统发出消息,并接收依赖系统回复消息的场景,目前缺少有效工具。普遍使用的方法是针对被测试系统单独开发一个模拟工具,用于接收被测试系统的消息,然后根据制定的测试案例场景回复对应的消息。该工具往往被称为挡板。使用挡板测试回复场景存在的问题是:现有方法针对每一个被测试系统开发对应的挡板,项目在实施过程中,对于系统的开发,修改等均需要同步开发维护测试挡板,增加了项目的工作量;挡板接收到消息后回复的消息一般是固定的消息,一般不支持测试人员(尤其是业务测试人员)定义案例。而在实际测试过程中,异常场景测试非常重要。技术实现要素:本发明实施例提供了一种用于软件测试的应答模拟装置,减少开发和维护的成本,可以实现任意场景下的案例,覆盖任何场景的测试,对提高测试覆盖范围提供有效保证。该装置包括:适配模块和模拟控制模块;所述适配模块,用于接收被测试系统发送的测试消息;当测试消息的格式满足预设数据格式时:所述适配模块用于:将测试消息发送至模拟控制模块;接收模拟控制模块返回的回复消息,将回复消息发送至被测试系统;当测试消息的格式不满足预设数据格式时:所述适配模块用于:按照预设数据格式将所述测试消息转换成第一内部消息,将第一内部消息发送至模拟控制模块;接收模拟控制模块返回的回复消息,将回复消息进行格式转换,获得第二内部消息,将第二内部消息发送至被测试系统;所述模拟控制模块用于:根据测试消息或第一内部消息从预设的案例数据表中查找相应的回复消息,并将所述回复消息返回至适配模块;所述案例数据表用于存储接收消息和回复消息集的映射关系;所述接收消息为测试消息或第一内部消息;所述测试消息和第二内部消息的格式为被测试系统可接受的消息格式;所述第一内部消息和回复消息的格式满足预设数据格式。本发明实施例还提供了一种用于软件测试的应答模拟方法,该方法包括:接收被测试系统发送的测试消息;当测试消息的格式满足预设数据格式时:根据测试消息从预设的案例数据表中查找相应的回复消息,并将回复消息发送至被测试系统;当测试消息的格式不满足预设数据格式时:按照预设数据格式将所述测试消息转换成第一内部消息,根据第一内部消息从预设的案例数据表中查找相应的回复消息,将回复消息进行格式转换,获得第二内部消息,将第二内部消息发送至被测试系统;所述案例数据表用于存储接收消息和回复消息集的映射关系;所述接收消息为测试消息或第一内部消息;所述测试消息和第二内部消息的格式为被测试系统可接受的消息格式;所述第一内部消息和回复消息的格式满足预设数据格式。在本发明实施例中,通过适配模块接收被测试系统发送的测试消息,当测试消息的格式满足预设数据格式时:适配模块将测试消息发送至模拟控制模块;当测试消息的格式不满足预设数据格式时:按照预设数据格式将所述测试消息转换成第一内部消息,将第一内部消息发送至模拟控制模块;模拟控制模块根据测试消息或第一内部消息从预设的案例数据表中查找相应的回复消息,并将所述回复消息返回至适配模块,案例数据表用于存储接收消息和回复消息集的映射关系;所述接收消息为测试消息或第一内部消息。针对新的被测试系统,只需要根据被测试系统的数据格式开发对应的适配模块即可,可以极大的减少开发和维护的成本。由于可预设案例数据表,因此能够实现任意场景下的案例,覆盖任意场景的测试,对提高测试覆盖范围提供有效保证。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1是本发明实施例提供的一种用于软件测试的应答模拟装置结构示意图一;图2是本发明实施例提供的一种案例数据表结构示意图;图3是本发明实施例提供的一种回复数据的树形结构示意图;图4是本发明实施例提供的一种用于软件测试的应答模拟装置结构示意图二。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。在本发明实施例中,提供了一种用于软件测试的应答模拟装置,主要目的是根据用户配置的案例模拟依赖系统对被测试系统的应答。如图1所示,该装置包括:适配模块和模拟控制模块。其中,适配模块用于接收被测试系统发送的测试消息;当测试消息的格式满足预设数据格式时:适配模块将测试消息发送至模拟控制模块;接收模拟控制模块返回的回复消息,将回复消息发送至被测试系统;当测试消息的格式不满足预设数据格式时:适配模块按照预设数据格式将测试消息转换成第一内部消息,将第一内部消息发送至模拟控制模块;接收模拟控制模块返回的回复消息,将回复消息进行格式转换,获得第二内部消息,将第二内部消息发送至被测试系统;模拟控制模块用于根据测试消息或第一内部消息从预设的案例数据表中查找相应的回复消息,并将所述回复消息返回至适配模块。其中,案例数据表用于存储接收消息(测试消息或第一内部消息)和回复消息集的映射关系;测试消息和第二内部消息的格式为被测试系统可接受的消息格式;第一内部消息和回复消息的格式满足预设数据格式。具体实施时,当被测试系统与其所有的依赖系统之间通信的实际消息格式相同时,适配模块直接将被测试系统发送的测试消息发送给模拟控制模块;当被测试系统与其所有的依赖系统之间通信的实际消息格式不同时,适配模块需要将测试消息转换为被测试系统与依赖系统之间通信的实际消息,包括报文转换格式和通信协议转换,模拟控制模块根据案例定义生成回复消息,适配模块将回复消息转换为实际消息,实际消息的格式为被测试系统能接受的数据格式,再使用被测系统的通信协议将实际消息发送给被测系统。模拟控制模块和适配模块起到了将案例驱动与消息适配分离的作用,提高了装置的通用性。具体实施时,案例数据表是按照接收消息的消息类型来存储接收消息和回复消息集的映射关系的。具体的,案例数据表是一个HASH表,案例数据表包括索引项和索引项对应的回复消息集;其中,索引项为接收消息的类型,案例数据表的内容是回复消息集,如图2所示。回复消息集包括回复消息的优先级、回复条件和某个接收消息类型下所有可以回复的回复数据,回复消息集在本发明中被定义为一张列表,下称案例列表。案例列表的结构如表1所示:表1优先级条件回复数据1条件1回复数据12条件2回复数据2。。。。。。。。。n条件n回复数据n其中,一个优先级、一个条件和一个回复数据统称为一个元素,优先级表示该回复消息的优先级;条件表示在收到该类型消息后,如果要回复对应数据的消息,应满足的条件。例如:在收到转账请求后,回复转账成功的条件是接收行为XX银行。回复数据表示该条件下回复数据的内容。由于使用挡板测试回复场景还存在如下问题:很多场景下,返回数据的很多要素要根据当前场景的上下文填写。例如:回复报文的原报文流水号需要根据接收消息的报文号填写;回复消息的流水号则要在产生新的序列填写。一般的档板往往不具备此类复杂功能。因此,回复的数据根据业务要素的组织结构,使用了树形结构组织要回复的数据。每个树的节点可以是固定值,也可以是数据的表达式。图3是回复数据的树形结构示意图。具体实施时,如图4所示,适配模块可以包括外部通信单元、数据转换单元和第一内部通信单元;其中,外部通信单元用于接收被测试系统发送的测试消息;当测试消息的格式满足预设数据格式时:外部通信单元用于将所述测试消息发送至所述第一内部通信单元;将所述回复消息发送至被测试系统;当测试消息的格式不满足预设数据格式时:外部通信单元用于将所述测试消息发送至所述数据转换单元;将所述第二内部消息发送至被测试系统;数据转换单元,用于按照预设数据格式将所述测试消息转换成第一内部消息;将所述回复消息进行格式转换,获得第二内部消息;第一内部通信单元,用于将所述测试消息或所述第一内部消息发送至模拟控制模块;接收所述第二内部通信单元返回的回复消息。具体的,适配模块是与被测试系统进行数据通信的接口模块。外部通信单元可以使用被测试系统的通信方式(TCP/IP直连、HTTP协议或者使用MQ通信方式)接收/发送数据;数据转换单元负责内部消息和被测试系统数据格式的转换(例如:内部消息和ISO8583格式相互转换,或者是内部消息和ISO20022格式相互转化);第一内部通信单元则负责适配模块与模拟控制模块之间的数据交互。另外,适配模块中的数据转换单元还用于:识别所述接收消息的消息类型,发送至第一内部通信单元;第一内部通信单元还用于:将所述接收消息的消息类型发送至模拟控制模块。具体的,数据转换单元识别出接收消息的消息类型后,将消息类型写入转换后的第一内部消息对应的字段上。该字段可使用如下方法标准:<nodename=“msgType”></node>。具体实施时,如图4所示,模拟控制模块可以包括第二内部通信单元、回复消息生成单元和案例数据表。其中,第二内部通信单元,用于接收第一内部通信单元发送的所述接收消息的消息类型和所述接收消息(测试消息或第一内部消息);回复消息生成单元,用于根据所述接收消息的消息类型访问案例数据表,根据接收消息从案例数据表中查找相应的回复消息,并将所述回复消息返回至适配模块。具体的,适配模块的第一内部通信单元与模拟控制模块的第二内部通信单元使用内部通信协议连接。本发明使用TCP单向长连接方式交互数据。模拟控制模块与适配模块之间的第一内部消息和回复消息的格式满足预设数据格式,预设数据格式可以使用XML(eXtensibleMarkupLanguage)格式。案例中每个数据的要素在内部消息中定义为简单类型节点,可使用“name”属性标注数据要素的名称,XML数据域的“value”标注该数据的值。如果某个数据是多个数据元素的集合,以下称为结构,则用复合类型节点表示,将包含的数据元素放入该节点下。具体实施时,所述模拟控制模块中的回复消息生成单元按照如下方式查找(或生成)回复消息:按照XML格式解析收到的第一内部消息,将其中的数据转化为图3示意的树形结构。根据转换的结果,从树形结构的接收消息中获取消息类型,然后根据接收消息的消息类型访问案例数据表的类型索引表,获取对应的回复消息集(也就是所说的案例列表);当案例列表中的元素个数(也可以说是回复数据个数)为0时,则对该消息不做回复,即不返回回复消息;当回复消息集中的回复数据个数为1个时,根据接收消息的内容判断所述接收消息是否满足对应的消息回复条件,当满足时,则返回该回复数据,当不满足时,则不返回回复消息;当回复消息集中的回复数据个数为多个时,从优先级别最高的回复数据开始,根据接收消息的内容逐个判断所述接收消息是否满足对应的消息回复条件,当满足时,则返回相应的回复数据;否则,继续判断,直到遍历完多个回复数据对应的消息回复条件为止;当所述接收消息均不满足多个回复数据对应的消息回复条件时,不返回回复消息。或者将案例列表的最后一个节点设为默认的回复案例。获取回复数据后,扫描数据,计算所有数据的表达式的值。例如,某个字段标识需要填写原消息的流水号,则从原消息的流水号字段中取出流水号的值,然后将该值填写到对应的位置上。将完成表达式计算后的树形结构的数据转换为XML格式的回复消息,并将回复消息发送给模拟控制模块的第二内部通信单元。具体实施时,由于使用挡板测试回复场景还存在如下问题:挡板一般只被动返回测试数据,不保存测试数据,不利于分析测试结果。因此,本发明用于软件测试的应答模拟装置还包括:案例数据库和用户操作模块,如图4所示。其中,案例数据库用于存储所述接收消息和所述回复消息。案例数据库还用于将保存的案例转换为案例数据表结构。案例数据库主要完成测试案例的持久化和测试结果数据的持久化。用户操作模块与测试用户交换,主要完成测试案例配置,并将配置的数据写入案例数据库中,同时用户可通过该模块查看测试结果,统计测试数据。具体实施时,案例数据表和案例数据库存在如下不同:(1)案例数据表是内存结构,案例数据库是对接收消息和回复消息的持久化存储。(2)案例数据表是按照接收消息的消息类型来存储接收消息和回复消息集的映射关系,重点在于映射关系;(3)对于接收消息,案例数据表只存储接收消息类型,而非接收消息实体,接收消息实体由案例数据库负责存储。(4)对于回复消息,案例数据表只存储回复消息模板,该消息模板经过模拟控制装置中的回复消息生成单元处理后,生成回复消息实体,该回复消息实体由案例数据库负责持久化存储。以上所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以上实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。基于同一发明构思,本发明实施例中还提供了一种用于软件测试的应答模拟方法,如下面的实施例所述。由于用于软件测试的应答模拟方法解决问题的原理与用于软件测试的应答模拟装置相似,因此用于软件测试的应答模拟方法的实施可以参见用于软件测试的应答模拟装置的实施,重复之处不再赘述。本发明提出的用于软件测试的应答模拟方法包括:接收被测试系统发送的测试消息;当测试消息的格式满足预设数据格式时:根据测试消息从预设的案例数据表中查找相应的回复消息,并将回复消息发送至被测试系统;当测试消息的格式不满足预设数据格式时:按照预设数据格式将所述测试消息转换成第一内部消息,根据第一内部消息从预设的案例数据表中查找相应的回复消息,将回复消息进行格式转换,获得第二内部消息,将第二内部消息发送至被测试系统;所述案例数据表用于存储接收消息和回复消息集的映射关系;所述接收消息为测试消息或第一内部消息;所述测试消息和第二内部消息的格式为被测试系统可接受的消息格式;所述第一内部消息和回复消息的格式满足预设数据格式。具体实施时,所述案例数据表按照接收消息的消息类型来存储接收消息和回复消息集的映射关系;在获得接收消息之后,还包括:识别所述接收消息的消息类型;根据所述接收消息的消息类型访问案例数据表,根据所述接收消息从预设的案例数据表中查找相应的回复消息。具体实施时,所述案例数据表包括索引项和索引项对应的回复消息集;所述索引项为接收消息的类型;所述回复消息集包括回复消息的优先级、回复条件和相对应的回复数据;根据接收消息的消息类型访问案例数据表,根据所述接收消息从预设的案例数据表中查找相应的回复消息,包括:根据接收消息的消息类型访问案例数据表的类型索引表,获取对应的回复消息集;当回复消息集中的回复数据个数为0时,不返回回复消息;当回复消息集中的回复数据个数为1个时,根据接收消息的内容判断所述接收消息是否满足对应的消息回复条件,当满足时,则返回该回复数据,当不满足时,则不返回回复消息;当回复消息集中的回复数据个数为多个时,从优先级别最高的回复数据开始,根据接收消息的内容逐个判断所述接收消息是否满足对应的消息回复条件,当满足时,则返回相应的回复数据;否则,继续判断,直到遍历完多个回复数据对应的消息回复条件为止;当所述接收消息均不满足多个回复数据对应的消息回复条件时,不返回回复消息。综上所述,本发明提出的一种用于软件测试的应答模拟装置,具有如下有益效果:(1)本发明的应答模拟装置是一种通用结构。对于新的被测试系统,只需要开发对应的适配模块即可,可以极大的减少开发和维护的成本。被测试系统的开发过程中,其依赖系统的通信数据格式和通信协议如果没有变化,本发明的适配模块可保持不变。(2)本发明使用规则和表达式相结合的方法,能够实现任意场景下的案例,覆盖任何场景的测试,对提高测试覆盖范围提供有效保证。(3)本发明的模拟控制模块中的案例数据表使用HASH表结构,以消息类型做为HASH表的索引,能够快速找到该种消息对应的回复消息集。案例数据表中的回复数据保存为树形结构,这样,在生成回复数据时对回复数据树做一次遍历,即可完成全部节点的表达式计算。同时收到的测试消息或转换后的第一内部消息也使用树形结构表示,计算过程中能够快速获取接收消息的对应值,能够在复杂场景下快速生成回复消息,提高了运行效率,因此本发明可应用于复杂场景下的性能测试。(4)本发明将测试数据的相关结果持久化到案例数据库中,提供给用户做测试分析,为用户分析问题提供有效依据。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1