一种客户端软件测试的方法及装置与流程

文档序号:12550561阅读:237来源:国知局
一种客户端软件测试的方法及装置与流程

本发明涉及计算机技术领域,特别地涉及一种客户端软件测试的方法及装置。



背景技术:

在做互联网相关的项目研发时,特别是对于大一点的项目,一般会根据功能实现等分成多个模块分别开发,之后再通过一个整体架构进行各模块的接口调用,以实现完整的应用功能。尤其是一个项目通常包含的客户端和服务器端两部分,由于开发语言、环境等的不同,大都是要分开实现的。在各个模块的功能开发过程中,需要对已完成的内容进行测试,以确定是否能达到所需要的功能。在进行测试时往往需要用到各个不同模块之间的联调,尤其是客户端和服务器端的调用。

然而,一般情况下,在项目开发阶段,各模块子项目的开发工作可能是同步推进的,并且存在着相互依赖的关系。例如当一个项目包含同时开发的客户端和服务器端两部分,在该项目未开发完成之前,客户端进行测试需要调用服务器端的接口时,如果该服务器端接口仍未开发完成,那么在进行测试时就需要模拟一个服务器端来与客户端进行联调测试。最常见的情况例如应用程序APP的客户端与服务器端在开发过程中的接口调用、联调测试等。

现有的用于实现客户端与服务器端联调测试的技术方案一般有如下两种:

方案一、通过设置客户端代理,利用网络抓包工具等拦截到客户端请求,并手动修改网络返回的数据,将修改后的结果转发给客户端 以模拟模块间的调用。主要执行过程如下:

1)客户端设置代理服务器;

2)利用网络抓包工具(如:fiddler等)抓取各子系统间接口调用时的通信数据;

3)通过拦截的方式,修改返回的数据结果;

4)将修改后的报文转发给客户端。

方案二、搭建简易的测试环境,针对具体接口,配置固定的响应数据。所谓固定的响应数据,即不会随着请求参数的变化及请求次数变化而变化的数据。主要执行过程如下:

1)在指定服务器中针对某个指定的接口,设置固定的返回报文;

2)客户端请求指定的服务器的该指定的接口;

3)客户端无论向服务端的该指定的接口传递何种参数,服务端只能返回预先设置好的固定报文信息。

在使用过程中发现,采用如上的两种技术方案进行客户端和服务器端的联调测试时,都存在一定的缺陷。主要表现在:

1、方案一通过设置代理和利用抓包工具的方式修改报文信息,操作繁琐,效率低;

2、方案二采用针对指定的接口,配置固定的响应数据(报文信息)的方式,不够灵活,无法根据客户端传递的参数,动态的返回相应测试场景的动态数据(如客户端向该指定接口传入参数x=1,该指定接口会对应响应x=1的数据,而不是预先设定的固定相应数据)。



技术实现要素:

有鉴于此,本发明提供一种客户端软件测试的方法及装置,能够通过简单的配置,即可实现不同测试场景模拟工作,灵活的根据业务规则,搭建测试接口。

为实现上述目的,根据本发明的一个方面,提供了一种客户端软 件测试的方法。

一种客户端软件测试的方法,包括:接收客户端发送的请求;从所述请求中提取请求参数;根据所述请求参数,通过预先保存的模拟报文映射表查找对应的模拟报文,其中,当找到对应的模拟报文,则将找到的该模拟报文返回给所述客户端,所述模拟报文映射表定义请求参数和模拟报文的对应关系,所述模拟报文用作对所述请求的模拟响应。

可选地,还包括:如果未找到对应的模拟报文,则生成错误提示并返回给所述客户端。

可选地,所述的提取请求参数还包括根据预定规则对所述请求参数规范化,所述预定规则包括以下中的一种或几种:排序、编码和加密。

可选地,所述模拟报文与所述请求参数的映射关系为一对一或一对多。

根据本发明的另一方面,提供了一种客户端软件测试的装置。

一种客户端软件测试的装置,包括:请求接收模块,用于接收客户端发送的请求;参数提取模块,用于从所述请求中提取请求参数;请求处理模块,用于根据所述请求参数,通过预先保存的模拟报文映射表查找对应的模拟报文,其中,当找到对应的模拟报文,则将找到的该模拟报文返回给所述客户端,所述模拟报文映射表定义请求参数和模拟报文的对应关系,所述模拟报文用作对所述请求的模拟响应。

可选地,所述请求处理模块还用于:如果未找到对应的模拟报文,则生成错误提示并返回给所述客户端。

可选地,所述参数提取模块还包括参数处理模块,用于在提取请求参数之后,根据预定规则对所述请求参数规范化,所述预定规则包括以下中的一种或几种:排序、编码和加密。

可选地,所述模拟报文与所述请求参数的映射关系为一对一或一对多。

根据本发明的技术方案,服务器端在接收客户端的请求后,提取该客户端请求的参数,并进行规范化处理后匹配模拟报文,通过增加模拟报文映射表来保存请求参数与模拟报文的映射关系,可以轻松实现在线测试的模拟工作,通过简单的配置即可模拟复杂条件的测试场景,解决了对服务器端接口的依赖问题,从而避免了由于测试不完全导致的严重后果及造成的损失;同时,还可以实现多客户端、多测试场景并发调用且测试结果互不影响,系统可扩展性强。

附图说明

附图用于更好地理解本发明,不构成对本发明的不当限定。其中:

图1是根据本发明实施例的一种客户端软件测试的方法的主要步骤示意图;

图2是本发明实施例的系统架构图;

图3是本发明实施例的软件测试过程的流程图;

图4是根据本发明实施例的一种客户端软件测试的装置的主要模块示意图。

具体实施方式

以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清 楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本发明实施例的一种客户端软件测试的方法的主要步骤示意图。如图1所示,本发明的客户端软件测试的方法主要包括如下的步骤S11至步骤S13。

步骤S11:接收客户端发送的请求;

步骤S12:从所述请求中提取请求参数;

步骤S13:根据所述请求参数,通过预先保存的模拟报文映射表查找对应的模拟报文,其中,当找到对应的模拟报文,则将找到的该模拟报文返回给所述客户端,所述模拟报文映射表定义请求参数和模拟报文的对应关系,所述模拟报文用作对所述请求的模拟响应。

为了模拟在线测试环境,以及根据不同的请求参数得到不同的响应结果,本发明增加了用于储存模拟报文的模块,该模块提供接口供服务器进行调用,从而实现了模拟服务器的响应内容。

模拟报文是按照指定格式且根据相关业务生成的可以被客户端正常解析的数据,可以根据测试场景及业务需求,手动创建或通过自动化报文生成工具生成。模拟报文可以文件的形式或者数据库记录的形式保存在服务器的指定位置,并通过模拟报文映射表进行检索。在模拟报文映射表中可以直接存储模拟报文,也可以存储指向模拟报文的指针,例如模拟报文文件的索引或者链接等信息,以供服务器进行检索和读取。

模拟报文与客户端发来的请求参数存在特定的映射关系,映射关系可以是一对一或一对多的情况,也就是说,模拟报文与请求参数可以是一一对应的情况,也可以是多个请求参数对应一个报文的情况。大部分情况下,模拟报文与请求参数是一对一的关系,例如:客户端发送请求“http://xxx?a=1&b=2”,根据获取的请求参数“a=1&b=2”可以映射到“a=1&b=2.txt”的报文数据。但是,也可根据业务需要设 置成模拟报文与请求参数是一对多的关系,例如:在模糊匹配的场景下,客户端发送请求“http://xxx?a=1”时,也可以映射到“a=1&b=2.txt”的报文数据。

在步骤S12提取请求参数的过程中还可以包括根据预定规则对所述请求参数规范化,所述预定规则包括以下中的一种或几种:排序、编码和加密。另外,还可以根据业务需求增加其他的规则。

对请求参数进行排序是为了更简便地维护模拟报文与请求参数的映射关系。服务器端接收到客户端传入的请求参数后,可先将请求参数按字母顺序进行排序。例如:“a=1&b=2&c=3”与“b=2&a=1&c=3”这两个请求参数中的三个元素“a=1”、“b=2”、“c=3”是相同的,那么这两个请求参数对应的请求内容是相同的,只是请求参数中的多个元素的先后顺序不同而已。由于客户端在发送请求时,无需关注请求参数的先后顺序,因此,服务器端在获取到请求参数后如果不进行排序,就可能会将“a=1&b=2&c=3”与“b=2&a=1&c=3”这两个响应内容相同的请求误判断为两个不同的请求,从而需要映射到两个不同的模拟报文,这样就增加了很多模拟报文与请求参数的映射关系,既不利于模拟报文映射表的维护也会影响到后续的检索效率。

在对请求参数进行排序之后,还可以对其进行编码或者加密处理。由于请求参数的先后顺序不同,编码或加密的结果是不一样的,因此,在进行编码或者加密之前,需先对请求参数进行排序。

对请求参数进行编码处理是通过将已经排序的参数用Base64编码方式进行编码,生成编码后的密文,以避免请求参数明文传输的问题。Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,在实际应用中,编码方式的选择灵活多样,可根据需求选择任何其他的编码方式。

同样地,对于安全级别要求较高的敏感信息的传输,仅对请求参数进行编码,是远远不够的。此时可通过消息摘要算法MD5等加密方式,对请求参数进行加密处理。MD5为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护,在实际应用中,也可根据需求选择任何其他的加密方式。

根据业务需求,对请求参数进行编码和加密为可选配置,也可混合使用以生成最终规范化的请求参数。

结合前述的实施例,以客户端请求“http://xxx?b=2&a=1&c=3”为例,对该请求的参数“b=2&a=1&c=3”进行排序后可得到第一请求参数“a=1&b=2&c=3”;对第一请求参数进行编码后得到第二请求参数,例如为:“YT0xJmI9MiZjPTM=”;之后,再对第二请求参数进行加密处理得到最终规范化的请求参数,例如是:“ce788ff9145c2260534889c454d437b8”。

根据规范化处理后得到的请求参数,可以通过模拟报文映射表查找对应的模拟报文。为介绍简便,假设仅对获取的客户端请求的参数进行排序处理即得到规范化的请求参数“a=1&b=2&c=3”,那么,根据该请求参数可从服务器中的模拟报文映射表中查找索引记录为“a=1&b=2&c=3”的模拟报文。可设定索引记录为“a=1&b=2&c=3”的索引值为“a=1&b=2&c=3.txt”文件,则该请求参数对应的模拟报文即为“a=1&b=2&c=3.txt”文件。通过模拟报文映射表中该模拟报文的链接,即可找到相应的“a=1&b=2&c=3.txt”文件。

另外,在本发明的实施过程中,如果未找到对应的模拟报文,则生成错误提示并返回给客户端。如果根据请求参数从模拟报文映射表中匹配模拟报文失败,可给出默认的错误提示,如:“未匹配到对应的报文数据”或者“当前数据,请根据业务添加报文数据”等,以提示此次模拟报文匹配失败。同时,服务器端还可以当前的请求参数为 索引记录,生成对应的模拟报文(如txt文件或者数据库记录等),但是该模拟报文的业务内容为空,并可提示服务器端开发人员根据业务手动添加具体业务相关的模拟报文的内容,以便下次匹配到该模拟报文时进行显示。

图2是本发明实施例的系统架构图。如图2所示,本实施例根据功能可包括3个子系统:客户端、服务器端和模拟报文映射表。客户端用于向服务器端发送请求和接收服务器端返回的响应内容模拟报文;服务器端用于接收并处理客户端的请求,并通过接口调用的方式,从模拟报文映射表中检索并获取对应的模拟报文;模拟报文映射表中保存请求参数与模拟报文的映射关系,也可保存请求参数与指向模拟报文的指针(例如模拟报文文件的索引或者链接等信息)的关系,以便通过模拟报文映射表可以检索到请求参数对应的模拟报文数据,并且模拟报文映射表还提供接口供服务器端进行调用。

图3是本发明实施例的软件测试过程的流程图。如图3所示,客户端向服务器端发送请求(步骤S30)。服务器端接收请求(步骤S31)后,首先从请求中提取参数,并可以对参数进行规范化(步骤S32),规范化处理过程可根据业务需要进行设定,例如包括排序、编码或者加密等。之后根据规范化的请求参数,从模拟报文映射表中匹配模拟报文(步骤S33)。然后,判断模拟报文是否匹配成功(步骤S34),如果匹配成功,则读取匹配到的模拟报文(步骤S35)并把模拟报文返回客户端(步骤S36),此次模拟报文匹配结束(步骤S39);否则,没有匹配成功,则生成错误提示(步骤S37)并把错误提示返回客户端(步骤S38),结束此次模拟报文匹配(步骤S39)。

图4是根据本发明实施例的一种客户端软件测试的装置的主要模块示意图。如图4所示,本发明的客户端软件测试的装置40主要包括请求接收模块41、参数提取模块42和请求处理模块43。

请求接收模块41用于接收客户端发送的请求;参数提取模块42用于从所述请求中提取请求参数;请求处理模块43用于根据所述请求参数,通过预先保存的模拟报文映射表查找对应的模拟报文,其中,当找到对应的模拟报文,则将找到的该模拟报文返回给所述客户端,所述模拟报文映射表定义请求参数和模拟报文的对应关系,所述模拟报文用作对所述请求的模拟响应。

根据功能实现的需要,所述请求处理模块43还可以用于,如果未找到对应的模拟报文,则生成错误提示并返回给所述客户端。

另外,本发明的参数提取模块42还可以包括参数处理模块,用于在提取请求参数之后,根据预定规则对所述请求参数规范化,所述预定规则包括以下中的一种或几种:排序、编码和加密。

其中,所述模拟报文与所述请求参数的映射关系为一对一或一对多。

根据本发明实施例的技术方案,服务器端在接收客户端的请求后,提取该客户端请求的参数,并进行规范化处理后匹配模拟报文,通过增加模拟报文映射表来保存请求参数与模拟报文的映射关系,可以轻松实现在线测试的模拟工作,通过简单的配置即可模拟复杂条件的测试场景,解决了对服务器端接口的依赖问题,从而避免了由于测试不完全导致的严重后果及造成的损失;同时,还可以实现多客户端、多测试场景并发调用且测试结果互不影响,系统可扩展性强。

上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1