一种自动化测试方法、装置、系统及访问代理的制作方法_2

文档序号:9810433阅读:来源:国知局
LAP具有一定的通用性。
[0031] 具体而言,HLAP使用socket tcp或udp方式为外部测试程序提供访问通道,而不 同宿主语言的被测对象则用不同的网络端口号相区分,每种宿主语言的被测对象都通过一 个单独的网络端口与访问代理相连通。设置在被测对象的HLAP可以作为socket服务端, 为外部多个测试工具提供辅助测试服务,而多个外部测试工具可以作为socket客户端,向 HLAP发送访问请求。
[0032] 可选的,外部测试程序可以通过统一的接口来访问HLAP,这个接口可以为请求命 令形式的软件指令,可包含三类方法来完成对代理程序的连接、请求和关闭的操作。
[0033] 方法功能分别如下:
[0034] Open :建立与代理程序的tcp或udp连接。
[0035] Require :发送调用函数或对象等操作请求。
[0036] Close :断开与代理程序的tcp或udp连接。
[0037] 可选的,步骤S12中,所述各种测试工具通过所述访问代理对所述被测对象进行 测试具体包括:
[0038] 所述访问代理通过统一接口接收所述各种测试工具的测试请求;
[0039] 所述访问代理根据所述测试请求,对相应端口的被测对象进行测试。
[0040] 可选的,外部测试程序可以向HLAP提请各种测试请求,如建立连接请求、调用函 数请求、调用对象请求、断开连接请求等。例如,在本发明的一个实施例中,外部程序(即测 试工具)与代理程序(即访问代理)建立tcp链路后,可以向代理程序发送指令请求HLAP 调度指定的函数,HLAP通过访问被测对象的测试接口完成函数调用,并将调度的结果返回 给外部程序,从而完成相应的测试。优选的,HLAP可以以多线程的方式,并行为多个外部程 序提供访问服务,从而进一步完善了软件的自动化测试。其具体工作流程可如图3所示。
[0041] 如图3所示,具体可包括如下步骤:
[0042] 步骤一:外部测试程序作为tcp客户端按指定tcp端口号访问HLAP ;
[0043] 步骤二:HLAP收到tcp连接请求,接受请求后发消息通知外部测试程序连接成功, 并为此外部测试程序开启一个代理服务线程等待处理函数调用请求;
[0044] 步骤三:外部测试程序发送消息请求调用被测系统的某个功能函数;
[0045] 步骤四:HLAP收到请求后解析出调用的函数名和参数并执行此函数,函数的执行 结果通过消息返回给外部测试程序;
[0046] 外部测试程序可反复执行步骤三和步骤四,以便对被测对象进行全面测试;
[0047] 步骤五:测试完毕,外部测试程序发断开tcp或udp连接请求,HLAP收到请求后关 闭tcp或udp连接并结束为此连接开启的代理服务线程。
[0048] 使用上面的方法,测试程序可以同时访问多个宿主语言实现的被测系统,并且不 受跨语言调度的限制,HLAP通过多线程方式可以满足并发调度请求,测试程序不会增加跨 语言访问的开销。
[0049] 本实施例中,步骤三和步骤四中,HLAP调用被测系统函数功能的实现方法可以根 据被测系统自身的宿主语言特点来具体实现。本发明的实施例对此不做限定。
[0050] 可选的,如果HLAP代理的宿主语言有反射机制,则HLAP可以通过反射机制直接调 用函数。如java、python等语言都提供了反射机制,那么HLAP在向被测系统进行函数调用 时,可以直接通过输入函数名等字符串来实现函数调用。
[0051] 但是在c语言、C++等编程语言等没有反射机制的语言实现的被测系统中,代理程 序需要通过建立函数名与函数指针的映射表来实现函数的调用。
[0052] 进一步的,为了与面向对象的编程相适应,在本发明的一些实施例中,HLAP还可以 调用被测系统中的对象。需要说明的是,对象调用与函数调用不同,对象调用并不能直接使 用,而是需要HLAP首先建立一个这样的对象。具体而言,所述访问代理对所述调用对象请 求的响应过程可包括:
[0053] 所述访问代理根据所述测试工具的新建对象请求建立测试对象;
[0054] 所述访问代理根据所述测试工具的调用对象请求调用所述测试对象的函数;
[0055] 所述访问代理根据所述测试工具的删除对象请求删除所述测试对象。
[0056] 也就是说,调度对象不同于调度函数,需要发送多个请求才能完成一个对象的调 用,并且HLAP在外部测试程序删除对象前要保留这个对象,供外部测试程序多次调用对象 的函数。
[0057] 举例说明,在本发明的一个实施例中,HLAP对被测对象的对象调用的具体工作流 程可如图4所示,包括如下步骤:
[0058] 步骤一:外部测试程序向HLAP发送新建对象请求,代理程序收到请求后解析出新 建对象的唯一标识号ID,在映射表中检索ID是否存在,如果存在则直接回复外部程序对象 建立成功。如果不存在则新建对象并在映射表中插入ID和对象的映射记录。
[0059] 步骤二:外部测试程序发送调用对象方法的请求,HLAP收到请求后解析出ID和对 象方法和参数,然后从映射表中根据ID找到对象实例,然后调用对象的方法,并将执行结 果返回给外部程序。
[0060] 步骤三:外部测试程序发送删除对象请求,HLAP收到请求后,按照解析出的ID删 除映射表中的记录,并删除对象。
[0061] 本发明实施例提供的自动化测试方法,在编写自动化测试程序中,测试人员只需 要使用一种语言,就可以实现对多种宿主语言实现的函数功能模块进行调用,测试程序的 开发不受被测软件的宿主语言接口限制。从而解决了测试程序跨语言调度被测对象功能的 难题。
[0062] 相应的,如图5所示,本发明还提供一种自动化测试装置2,包括:
[0063] 提供单元20,用于提供基于被测对象宿主语言的访问代理,所述访问代理用于以 统一接口与各种测试工具通信,同时用于通过不同的端口与不同宿主语言的被测对象通 信;所述被测对象宿主语言与所述各种测试工具支持的语言不同;
[0064] 测试单元22,用于使所述各种测试工具通过所述访问代理对所述被测对象进行测 试。
[0065] 本发明实施例提供的自动化测试装置2,当测试工具所支持的语言与被测对象开 发所使用的宿主语言不同时,提供单元20可以提供一个用被测对象宿主语言实现的访问 代理,该访问代理能够以统一通信接口与各种测试工具通信,同时能够通过不同的网络端 口号与不同宿主语言的被测对象通信,这样,当测试工具对被测对象进行测试时,测试单元 22使各种语言编写的测试工具都能够通过该访问代理对不同宿主语言实现的被测对象进 行自动化测试,从而极大地方便了跨语言的软件自动测试,有效提高了软件测试效率。
[0066] 本发明实施例提供自动化测试装置的详细工作方法已经在前文进行了详细的说 明,此处不再赘述。
[0067] 相应的,如图6所示,本发明还提供一种访问代理3,包括:
[0068] 接收单元30,用于通过统一接口接收所述各种测试工具的测试请求;
[0069] 端口测试单元32,用于根据所述测试请求,对相应端口的被测对象进行测试。
[0070] 本发明实施例提供的访问代理3,当测试工具所支持的语言与被测对象开发所使 用的宿主语言不同时,接收单元30能够以统一接口接收所述各种测试工具的测试请求,同 时端口测试单元32能够通过不同的端口与不同宿主语言的被测对象通信,这样,各种语言 编写的测试工具都能够通过该访问代理对不同宿主语言的被测对象进行自动化测试,从而 极大地方便了跨语言的软件自动测试,有效提高了软件测试效率。
[0071] 具体的,端口测试单元32,可用于解析根据所述测试请求中携带的端口信息调度 信息,调度被测对象宿主语言实现的测试
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1