1.本技术涉及计算机技术领域,具体而言,本技术涉及一种应用程序测试方法、装置及计算机设备。
背景技术:2.应用程序进入市场前,需要对其进行测试,以确保应用程序的功能正常。
3.目前,应用程序的测试方案首先需要搭建测试环境。该测试环境至少需要两台计算机设备,并通过一根网线直接连接或者通过交换机、路由器等网络设备连接,从而分别在两台计算机设备上运行待测试程序和目标程序,通过待测试程序与目标程序之间交互,来完成对待测试程序的测试。
4.上述测试方案的缺点是测试环境搭建麻烦,需要较多的硬件设备配合,当程序开发人员完成应用程序的开发后,如果没有这些硬件设备则无法测试该应用程序是否能够正确运行而完成相应的应用程序功能。此外,随着应用程序测试所需带宽的膨胀,还需要及时更新测试环境的硬件设备,以便进行应用程序测试。综上所述,无论是测试环境搭建需要的若干硬件设备,还是后续根据应用程序测试的需要更新硬件设备,测试环境搭建都耗费了许多经济成本,造成应用程序测试的测试成本也变得高昂。
5.由此可知,如何减少进行应用程序测试的测试成本成为了亟需解决的问题。
技术实现要素:6.本技术各实施例提供了一种应用程序测试方法、装置及计算机设备,可以解决相关技术中存在的应用程序测试成本较高的问题。所述技术方案如下:
7.根据本技术实施例的一个方面,一种应用程序测试方法,所述方法包括:获取待测试程序的测试数据;基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序;所述虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,所述待测试程序和所述目标程序运行于同一计算机设备;根据所述目标程序对所述测试数据进行的响应,确定所述待测试程序是否通过测试。
8.在一示例性实施例中,所述基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序之前,所述方法还包括:在windows操作系统中,运行虚拟网卡驱动程序;通过所述虚拟网卡驱动程序的运行,建立所述虚拟网络连接,以在所述待测试程序与所述目标程序之间实现所述测试数据的本地转发。
9.在一示例性实施例中,所述通过所述虚拟网卡驱动程序的运行,建立所述虚拟网络连接,包括:通过windows操作系统提供的应用程序接口,调用所述虚拟网卡驱动程序在驱动程序注册入口注册的回调函数;通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数;根据得到的网络参数,建立所述虚拟网络连接。
10.在一示例性实施例中,所述通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数,包括:从所述回调函数中获取配置文件指向数据;根据所述配置文件
指向数据进行的配置文件指向,确定相应的配置文件,并从所确定的配置文件中得到与所述虚拟网络连接建立相关的网络参数。
11.在一示例性实施例中,所述通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数之前,所述方法还包括:响应于针对所述网络参数的触发操作,生成参数设置请求,所述参数设置请求用于指示为建立所述虚拟网络连接请求设置的网络参数;将所述参数设置请求存储至所述回调函数;
12.在一示例性实施例中,所述通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数,包括:从所述回调函数中获取所述参数设置请求;对所述参数设置请求进行参数提取,得到与所述虚拟网络连接建立相关的网络参数。
13.在一示例性实施例中,所述基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序之前,所述方法还包括:调用windows操作系统提供的应用程序接口,在驱动程序注册入口进行虚拟网卡驱动程序的注册,以通过所述虚拟网卡驱动程序在windows操作系统中的运行,建立所述虚拟网络连接。
14.在一示例性实施例中,所述调用windows操作系统提供的应用程序接口,在驱动程序入口进行虚拟网卡驱动程序的注册,包括:将若干个参数变量作为结构体成员,并在指定结构体中进行关于所述结构体成员的变量声明;所述参数变量用于指示与所述虚拟网络连接建立相关的网络参数;将完成变量声明的指定结构体,通过所述应用程序接口传递至所述驱动程序入口,得到用于建立所述虚拟网络连接的若干个回调函数,完成所述虚拟网卡驱动程序的注册。
15.在一示例性实施例中,所述基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序,包括:根据指定网络协议,将所述测试数据封装为若干个测试帧;基于所述虚拟网络连接,在所述待测试程序与所述目标程序之间进行若干个所述测试帧的传输;根据所述指定网络协议,将若干个所述测试帧解析为所述测试数据。
16.根据本技术实施例的一个方面,一种应用程序测试装置,所述装置包括:数据获取模块,用于获取待测试程序的测试数据;数据传输模块,用于基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序;所述虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,所述待测试程序和所述目标程序运行于同一计算机设备;数据响应模块,用于根据所述目标程序对所述测试数据进行的响应,确定所述待测试程序是否通过测试。
17.根据本技术实施例的一个方面,一种计算机设备,包括:至少一个处理器、至少一个存储器、以及至少一条通信总线,其中,所述存储器上存储有计算机程序,所述处理器通过所述通信总线读取所述存储器中的所述计算机程序;所述计算机程序被所述处理器执行时实现如上所述的应用程序测试方法。
18.根据本技术实施例的一个方面,一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现如上所述的应用程序测试方法。
19.根据本技术实施例的一个方面,一种计算机程序产品,计算机程序产品包括计算机程序,计算机程序存储在存储介质中,计算机设备的处理器从存储介质读取计算机程序,处理器执行计算机程序,使得计算机设备执行时实现如上所述的应用程序测试方法。
20.本技术提供的技术方案带来的有益效果是:
21.在上述技术方案中,基于虚拟网络连接,将待测试程序的测试数据在运行于同一计算机设备的待测试程序与目标程序之间传输,以根据目标程序对测试数据进行的响应,确定待测试程序是否通过程序,也就是说,通过在同一计算机设备中建立的虚拟网络连接,来代替通过物理网卡建立在不同计算机设备之间的网络连接,使得测试数据的发送和接收能够在同一计算机设备中完成,无需较多的硬件设备配合,也无需搭建测试环境,从而能够有效地解决相关技术中存在的应用程序测试成本较高的问题。
附图说明
22.为了更清楚地说明本技术实施例中的技术方案,下面将对本技术实施例描述中所需要使用的附图作简单地介绍。
23.图1是根据一示例性实施例示出的一种应用程序测试方法的流程图;
24.图2是图1对应实施例中步骤130之前在一个实施例的流程图;
25.图3是图2对应实施例中步骤210之前在一个实施例的流程图;
26.图4是图2对应实施例中步骤230在一个实施例的流程图;
27.图5是根据一示例性实施例示出的测试数据交互过程的流程图;
28.图6是根据一示例性实施例示出应用程序测试的具体实现流程图;
29.图7是根据一示例性实施例示出的一种应用程序测试装置的结构框图;
30.图8是根据一示例性实施例示出的一种计算机设备的硬件结构图。
具体实施方式
31.下面详细描述本技术的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本技术,而不能解释为对本技术的限制。
32.本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本技术的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或无线耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。
33.下面是对本技术涉及的几个名词进行的介绍和解释:
34.api:英文全称为application programming interface,中文含义为应用程序接口,又称为应用编程接口,可由windows操作系统提供,供运行于windows操作系统中的相关程序调用,例如,该程序可以是应用程序,还可以是驱动程序。
35.inf:英文全称为device information file,中文含义为驱动安装设备信息,可作为存储网络参数的配置文件,例如,inf文件链接可作为配置文件指向数据,用于建立虚拟网络连接。
36.oid:英文全称为object identifier,中文含义为对象标识符,例如,可根据为建立虚拟网络连接而设置的网络参数形成oid请求,用于建立虚拟网络连接。
37.osi模型,遵循tcp/ip协议,将数据交互过程划分为7个层次,具体是指物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。为了简化数据交互过程以及降低资源损耗,osi模型可进一步简化,例如,待测试程序与目标程序之间关于测试数据的交互过程使用简化osi模型,该简化osi模型包括:应用层、传输层、网络层和网络接口层。
38.如前所述,目前的应用程序测试方案的缺点是测试环境搭建麻烦。
39.测试环境通常至少需要两台配置有物理网卡的计算机设备,两台计算机设备之间基于内部所配置的物理网卡,通过一根网线直接地或者通过交换机、路由器等网络设备间接地建立网络连接,通过该网络连接在待测试程序与目标程序进行交互数据的交换,以此进行应用程序测试。
40.由于需要较多的硬件设备配合,当程序开发人员完成应用程序的开发后,如果没有这些硬件设备将无法测试该应用程序是否能够正确运行而完成相应的应用程序功能。
41.此外,随着信息技术的发展,物理网卡的吞吐量从百兆发展到千兆,如今上万兆物理网卡逐步成为主流,例如,40gbps/100gbps已经在服务器机房、交易所等应用场景下使用。物理网卡在吞吐量上的升级往往导致计算机设备的网络接口也需要升级,对于台式电脑来说,物理网卡通常是插入pcie(pci express)接口上使用,以使得大多数的台式电脑的pcie接口能满足升级后的带宽要求,然而,无论是物理网卡还是计算机设备等硬件设备的升级都为应用程序测试环境搭建带来不便,除了不断的更新硬件设备外,硬件设备的更新带来的经济成本也在相应增加;而对于便携式的计算机设备(例如笔记本电脑)来说,由于内部空间有限,不能方便的升级到万兆或更高速率,导致无法基于笔记本电脑所搭建的测试环境来实现高速的应用程序测试。
42.由此可知,相关技术中仍存在应用程序测试成本较高的缺陷。
43.为此,本技术提供的应用程序测试方法,能够有效地降低应用程序测试成本,相应地,该应用程序测试方法适用于应用程序测试装置、该应用程序测试装置可部署于配置冯诺依曼体系结构的计算机设备,例如,该计算机设备可以是台式电脑、笔记本电脑、服务器等等。
44.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
45.请参阅图1,本技术实施例提供了一种应用程序测试方法,该方法适用于计算机设备,例如,该计算机设备可以是台式电脑、笔记本电脑、服务器等。
46.在下述方法实施例中,为了便于描述,以该方法各步骤的执行主体为计算机设备为例进行说明,但是并非对此构成具体限定。
47.如图1所示,该方法可以包括以下步骤:
48.步骤110,获取待测试程序的测试数据。
49.其中,待测试程序是指需要测试应用程序功能的应用程序,相应地,测试数据用于指示待测试程序需要测试的应用程序功能,例如,待测试程序为聊天程序,测试数据可以用于指示聊天程序需要测试的即时通信功能,还可以用于指示聊天程序需要测试的信息推送功能。
50.在一种可能的实现方式,测试数据存储于为待测试程序配置的测试用例。为了测试待测试程序的应用程序功能,程序开发人员将为进行该待测试程序的测试而配置相应的
测试用例,该测试用例中包含有测试数据。
51.那么,在对待测试程序进行应用程序测试时,便能够从相应的测试用例中得到待测试程序的测试数据。
52.步骤130,基于虚拟网络连接,将测试数据由待测试程序传输至目标程序;虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,待测试程序和目标程序运行于同一计算机设备。
53.首先说明的是,目标程序是指需要对待测试程序的测试数据进行响应的应用程序,该目标程序可以与待测试程序为相同的应用程序,也可以与待测试程序为不同的应用程序,此处并未加以限定。
54.传统的应用程序测试方案中,待测试程序和目标程序运行于不同计算机设备,且该不同计算机设备之间通过物理网卡建立网络连接,以通过该网络连接实现待测试程序和目标程序之间的交互,从而完成对待测试程序的测试。然而,发明人意识到,此种测试方案需要搭建测试环境,在该测试环境需要的计算机设备数量多,且计算机设备的数量有可能随着测试带宽的增长而相应增长,从而增加应用程序测试的测试成本。
55.由此,本实施例中,待测试程序和目标程序运行于同一计算机设备,能够有效地避免测试环境的搭建,同时避免计算机设备的数量随着测试带宽的增长而相应增长。
56.其次,待测试程序和目标程序之间的交互基于虚拟网络连接实现,该虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接。
57.也就是说,通过在同一计算机设备中建立的虚拟网络连接,来代替通过物理网卡建立在不同计算机设备之间的网络连接,使得测试数据从待测试程序传输至目标程序能够在同一计算机设备中完成。
58.在一种可能的实现方式,虚拟网络连接的建立通过虚拟网卡驱动程序实现。
59.随着虚拟网卡驱动程序在windows操作系统中运行,虚拟网络连接相应建立,并可在windows设备管理器或者网络连接界面中查看到用于标识该虚拟网络连接的虚拟网卡。
60.基于该虚拟网卡提供的ip地址,程序开发人员可以为待测试程序和目标程序分配相应的ip地址、端口号等,进而使得测试数据能够基于该些ip地址、端口号,在待测试程序与目标程序之间传输。
61.步骤150,根据目标程序对测试数据进行的响应,确定待测试程序是否通过测试。
62.对于目标程序而言,在接收到测试数据之后,便能够对该测试数据进行响应,得到该测试数据对应的响应结果。以待测试程序为聊天程序举例,那么,目标程序也为聊天程序,测试数据用于指示聊天程序需要测试的即时通信功能,则目标程序对该测试数据进行的响应,实质是对测试数据进行聊天答复,对应地,响应结果实质为答复数据。
63.在一种可能的实现方式,待测试程序是否通过测试,基于测试用例实现。
64.如前所述,测试数据可以存储于测试用例中,相应地,测试用例中,还存储了与测试数据对应的测试结果。
65.基于此,在目标程序对测试数据进行响应得到响应结果之后,便能够从测试用例中提取出与该测试数据对应的测试结果,并进行响应结果与测试结果的比对,若比对一致,则表示待测试程序通过此项应用程序功能的测试。
66.通过上述过程,待测试程序通过虚拟网卡建立的虚拟网络连接与目标程序进行数
据交互。该方案不依赖计算机设备的物理网卡,不会因为物理网卡不适配测试带宽要求而升级物理网卡,无需较多的硬件设备配合,也无需搭建测试环境,从而解决应用程序测试成本高昂的问题。
67.请参阅图2,在一示例性实施例中,步骤130之前,该方法还可以包括以下步骤:
68.步骤210,在windows操作系统中,运行虚拟网卡驱动程序。
69.其中,虚拟网卡驱动程序在windows操作系统中注册之后,方可实现在windows操作系统中运行。
70.具体而言,调用windows操作系统提供的应用程序接口,在驱动程序注册入口进行虚拟网卡驱动程序的注册。
71.首先说明的是,驱动程序注册入口,由windows操作系统提供,用于驱动程序在windows操作系统中的注册。
72.如图3所示,在一种可能的实现方式,注册过程可以包括以下步骤:
73.步骤310,将若干个参数变量作为结构体成员,并在指定结构体中进行关于结构体成员的变量声明。
74.其中,参数变量用于指示与虚拟网络连接建立相关的网络参数。
75.在一种可能的实现方式,网络参数包括但不限于:虚拟网卡属性、发送队列、接收队列、ip地址、端口号等。具体地,虚拟网卡属性包括资源和速率,速率包括发送速率和接收速率,例如发送速率为40gbps/100gbps等,资源是指存储资源;发送队列和接收队列可以是为虚拟网络连接设置的先进先出队列,发送队列和接收队列的设置目的在于设置发送队列和接收队列中存储的数据包大小,应当理解,测试数据对应的数据包通常较大,而在待测试程序与目标程序之间实现测试数据传输的虚拟网络连接,所能够传输的数据包通常较小,那么,当测试数据传输至虚拟网络连接,需要将待测试程序的大数据包拆解为若干个小数据包,并按照内核的内存数据结构,存储至先进先出队列,进而从先进先出队列中逐个读取位于队头的小数据包依次传输至目标程序。
76.步骤330,将完成变量声明的指定结构体,通过应用程序接口传递至驱动程序入口,得到用于建立虚拟网络连接的若干个回调函数,完成虚拟网卡驱动程序的注册。
77.其中,回调函数,指的是在建立虚拟网络连接时可供调用的函数,该函数中封装了与虚拟网络连接建立相关的网络参数。
78.也就是说,注册的作用在于,对与虚拟网络连接建立相关的网络参数进行封装,也就是说,通过虚拟网卡驱动程序的注册,windows操作系统可以获知该虚拟网卡驱动程序包含的回调函数中涉及哪些网络参数,以便于后续能够通过该若干个回调函数的调用获得该些网络参数进而实现虚拟网络连接的建立。
79.由此,虚拟网卡驱动程序在windows操作系统中注册之后,windows操作系统中便能够运行该虚拟网卡驱动程序,来建立虚拟网络连接。
80.此处的windows操作系统,包括但不限于windows7、windows8、window8.1、windows10、windows11。
81.步骤230,通过虚拟网卡驱动程序的运行,建立虚拟网络连接,以在待测试程序与目标程序之间实现测试数据的本地转发。
82.如前所述,虚拟网卡驱动程序的注册的作用在于,对与虚拟网络连接建立相关的
网络参数进行封装,那么,虚拟网卡驱动程序的运行,实质是对与虚拟网络连接建立相关的网络参数进行解析,以此获得建立虚拟网络连接所需的网络参数。
83.如图4所示,在一种可能的实现方式,运行过程可以包括以下步骤:
84.步骤410,通过windows操作系统提供的应用程序接口,调用虚拟网卡驱动程序在驱动程序注册入口注册的回调函数。
85.步骤430,通过回调函数的调用,得到与虚拟网络连接建立相关的网络参数。
86.在一种可能的实现方式,与虚拟网络连接建立相关的网络参数通过请求形式直接存储于回调函数。此种方式下,网络参数可以从回调函数中的请求直接获取。在一种可能的实现方式,回调函数的调用,具体是指:从回调函数中获取参数设置请求;对参数设置请求进行参数提取,得到与虚拟网络连接建立相关的网络参数。
87.应当说明的是,参数设置请求是程序开发人员为设置网络参数触发生成的,具体而言,响应于针对网络参数的触发操作,生成参数设置请求,参数设置请求用于指示为建立虚拟网络连接请求设置的网络参数;将参数设置请求存储至回调函数。例如,参数设置请求为oid请求。
88.在一种可能的实现方式,与虚拟网络连接建立相关的网络参数通过文件形式间接存储于回调函数。此种方式下,网络参数通过回调函数进行的文件指向间接地从文件中获取。在一种可能的实现方式,回调函数的调用,具体是指:从回调函数中获取配置文件指向数据;根据配置文件指向数据进行的配置文件指向,确定相应的配置文件,并从所确定的配置文件中得到与虚拟网络连接建立相关的网络参数。例如,配置文件指向数据可以是软链接形式,比如inf文件链接。
89.步骤450,根据得到的网络参数,建立虚拟网络连接。
90.上述过程,基于虚拟网卡驱动程序实现了虚拟网络连接的建立,为待测试程序与目标程序能够在同一计算机设备之间交互提供了基础,进而有利于减少应用程序测试的测试成本。
91.此外,通过回调函数设置实现高速通信和大数据通信,避免因物理网卡不适应带宽需要而升级物理网卡造成的应用测试成本上升。
92.请参阅图5,本技术实施例中提供了在应用程序测试中,测试数据在待测试程序与目标程序之间交互过程中进行封装与解析的步骤,从而实现测试数据由待测试程序传输至目标程序。
93.步骤510,根据指定网络协议,将测试数据封装为若干个测试帧。
94.首先需要说明的是,该指定网络协议包括但不限于:netbeui(netbios enhanced user interface)、ipx/spx(internetwork packet exchange/sequences packet exchange)、tcp/ip(transmission control protocol/internet protocol),在此不作限定。
95.以tcp/ip为例,在简化osi模型中,待测试程序发送测试数据,测试数据被拆分为若干个数据包,各数据包依次先经过应用层,被添加app头部,随后到达传输层,被添加tcp头部;然后经过网络层,被添加ip头部;最后到达网络接口层,被添加以太网帧头和以太网帧尾,得到若干个测试帧。
96.步骤530,基于虚拟网络连接,在待测试程序与目标程序之间进行若干个所述测试
帧的传输。
97.在获得若干个测试帧之后,便能够基于虚拟网络连接,将该若干个测试帧发送至目标程序。
98.步骤550,根据指定网络协议,将若干个测试帧解析为测试数据。
99.首先需要说明的是,目标程序接收到的测试帧是指添加了多个协议头、以太网帧头和以太网帧尾的数据包。因此,对于目标程序而言,为了得到原始的测试数据,需要对接收到的测试帧进行解析操作。
100.以封装测试帧的网络协议为tcp/ip为例,在简化osi模型中,目标程序通过虚拟网络连接接收到若干个测试帧后,各测试帧依次先经过网络接口层,去除以太网帧头和以太网帧尾;随后到达网络层,去除ip头部;然后经过传输层,去除tcp头部,最后到达应用层,去除app头部,解析得到若干个数据包,进而由该若干个数据包得到测试数据。
101.补充说明的是,在其他实施例中,待测试程序与目标程序通过虚拟网络连接进行数据交互,除了使用网络socket io,也可以使用标准的文件io。前者就是上述通过指定网络协议对测试数据封装后进行数据交互的方式,能够更加快捷有效地实现待测试程序与目标程序之间的数据交互。后者主要以文件概念进行读写,既没有tcp/ip协议栈的概念,也没有ip地址/端口号的概念,需要自行将测试数据组装成原始以太网报文进行发送和接收,有利于减轻windows操作系统关于协议栈的开销,进而有利于提高windows操作系统的处理效率。
102.经过上述过程,目标程序和待测试程序在数据交互过程中能互相封装解析测试数据,保证了两者通信的稳定性,进而使得应用程序测试能顺利进行。
103.图6为应用程序测试的具体实现流程图,通过在待测试程序和目标程序之间建立虚拟网络连接,进行应用程序测试。
104.首先,执行步骤601至步骤611,在windows操作系统中注册虚拟网卡驱动程序。
105.具体过程是:先定义若干个参数变量,将所有定义的参数变量作为结构体成员写入指定结构体ndis_miniport_driver_characteristic中进行变量声明。随后通过驱动入口函数driverentry调用ndismregisterminiportdriver(api),将指定结构体传递至该api,向windows操作系统注册虚拟网卡驱动程序。注册过程中,从该api中导出一组标准miniportxxx函数,该组标准miniportxxx函数是指所有回调函数的集合,用于后续应用程序测试和建立虚拟网络链接,该些回调函数包括:initializehandlerex,用于初始化虚拟网卡;ndismderegisterminiportdriver,用于释放资源;oidrequesthandler,用于获取oid请求建立虚拟网络连接;infrequesthandler,用于获取inf文件链接得到网络参数;sendnetbufferlistshandler,用于发送方发送数据至接受方;returnnetbufferlistshandler,用于接收方返回数据至发送方。其中,发送方为待测试程序,接收方则为目标程序;发送方为目标程序,则接收方为待测试程序。
106.其中,driverentry是windows操作系统提供的一个创建驱动的函数,视为驱动程序注册入口;ndismregisterminiportdriver是windows操作系统提供的一个应用程序接口api。
107.其次,执行步骤613至步骤615,建立虚拟网络连接。
108.具体过程是:完成虚拟网卡驱动程序注册后,运行虚拟网卡驱动程序,通过该虚拟
网卡驱动程序在同一计算机设备上创建虚拟网络连接。调用initializehandlerex,以获取网络参数来建立虚拟网络连接,也可以理解为是初始化虚拟网卡,包括基于获取到的网络参数来对虚拟网络连接所需的网络参数进行设置,网络参数包括但不限于虚拟网卡属性、发送队列和接收队列、ip地址、端口号等。
109.关于initializehandlerex的调用主要有两种方式,一是调用infrequesthandler,inf文件存储了网络参数,将inf文件链接(配置文件指向数据)存储于infrequesthandler;虚拟网卡驱动程序运行时调用infrequesthandler时,根据inf文件链接进行的文件指向,从inf文件中读取存储的网络参数,对其解析后根据网络参数建立虚拟网络连接;二是调用oidrequesthandler,程序开发人员完成网络参数设置后,会触发生成一个oid请求,并将该oid请求存储于oidrequesthandler中,虚拟网卡驱动程序运行时调用oidrequesthandler时,按照oid请求中的网络参数建立虚拟网络连接。
110.最后,执行步骤617至步骤619,实现基于虚拟网络连接的应用程序测试。
111.具体过程是:建立待测试程序与目标程序之间的虚拟网络连接后,便可通过该虚拟网络连接进行应用程序测试。虚拟网卡驱动程序运行时,一方面,调用sendnetbufferlistshandler,待测试程序通过虚拟网络连接将测试数据发送给目标程序,目标程序确认接收到该测试数据后,对其进行响应得到响应结果,若响应结果和测试结果比对一致,可视为待测试程序通过测试;另一方面,也可以调用returnnetbufferlistshandler,目标程序通过虚拟网络连接将响应结果发送至待测试程序,若以上数据交互过程顺利,也可视为待测试程序通过测试。
112.待测试程序通过测试后,执行步骤621至623,卸载虚拟网卡。
113.具体过程是:虚拟网卡驱动程序运行时,调用ndismderegisterminiportdriver,释放资源,避免长时间占用计算机资源,随后结束应用程序测试。
114.在本实施例中,通过windows操作系统提供的api接口,再利用windows操作系统提供的驱动入口函数注册虚拟网卡驱动程序以导出回调函数,进而通过调用回调函数得到的网络参数来建立虚拟网络连接,实现在同一计算机设备下待测试程序和目标程序之间的数据交互。此方案下,虚拟网卡驱动程序注册所需的api接口和驱动入口函数均由windows操作系统提供,高效快捷,并且由虚拟网卡驱动程序建立的虚拟网络连接,能够在一台计算机设备完成应用程序测试,无需通过外围硬件设备或自开发接口,更不需要搭建复杂的测试环境,大大降低了应用程序测试成本。
115.下述为本技术装置实施例,可以用于执行本技术所涉及的应用程序测试方法。对于本技术装置实施例中未披露的细节,请参照本技术所涉及的应用程序测试方法的方法实施例。
116.请参阅图7,本技术实施例中提供了一种应用程序测试装置700,包括但不限于:数据获取模块710、数据传输模块730、以及数据响应模块750。
117.其中,数据获取模块710,用于获取待测试程序的测试数据。
118.数据传输模块730,用于基于虚拟网络连接,将测试数据由待测试程序传输至目标程序;虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,待测试程序和目标程序运行于同一计算机设备。
119.数据响应模块750,用于根据目标程序对测试数据进行的响应,确定待测试程序是
否通过测试。
120.需要说明的是,上述实施例所提供的应用程序测试装置在进行应用程序测试时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即应用程序测试装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。
121.另外,上述实施例所提供的应用程序测试装置与应用程序测试方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
122.请参阅图8,本技术实施例中提供了一种计算机设备4000,该计算机设备4000可以包括:台式电脑、笔记本电脑等。
123.在图8中,该计算机设备4000包括至少一个处理器4001、至少一条通信总线4002以及至少一个存储器4003。
124.其中,处理器4001和存储器4003相连,如通过通信总线4002相连。可选地,计算机设备4000还可以包括收发器4004,收发器4004可以用于该计算机设备与其他计算机设备之间的数据交互,如数据的发送和/或数据的接收等。需要说明的是,实际应用中收发器4004不限于一个,该计算机设备4000的结构并不构成对本技术实施例的限定。
125.处理器4001可以是cpu(central processing unit,中央处理器),通用处理器,dsp(digital signal processor,数据信号处理器),asic(application specific integrated circuit,专用集成电路),fpga(field programmable gate array,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本技术公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器4001也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。
126.通信总线4002可包括一通路,在上述组件之间传送信息。通信总线4002可以是pci(peripheral component interconnect,外设部件互连标准)总线或eisa(extended industry standard architecture,扩展工业标准结构)总线等。通信总线4002可以分为地址总线、数据总线、控制总线等。为便于表示,图8中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
127.存储器4003可以是rom(read only memory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(random access memory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electrically erasable programmable read only memory,电可擦可编程只读存储器)、cd-rom(compact disc read only memory,只读光盘)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
128.存储器4003上存储有计算机程序,处理器4001通过通信总线4002读取存储器4003中存储的计算机程序。
129.该计算机程序被处理器4001执行时实现上述各实施例中的应用程序测试方法。
130.此外,本技术实施例中提供了一种存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的应用程序测试方法。
131.本技术实施例中提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在存储介质中。计算机设备的处理器从存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备执行上述各实施例中的应用程序测试方法。
132.与相关技术相比,本发明无需两台计算机设备,待测试程序和目标程序在同一计算机设备运行。在同一台计算机设备创建虚拟网卡驱动程序,在待测试程序和目标程序间之间建立虚拟网络连接,通过该虚拟网络连接进行应用程序测试数据的传输,不依赖物理网卡建立的网络连接。由上可知,本发明无需构建复杂的测试环境进行应用程序测试,并且对计算机设备物理网卡要求较低,因此极大的节省了应用程序测试成本。
133.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
134.以上所述仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
技术特征:1.一种应用程序测试方法,其特征在于,所述方法包括:获取待测试程序的测试数据;基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序;所述虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,所述待测试程序和所述目标程序运行于同一计算机设备;根据所述目标程序对所述测试数据进行的响应,确定所述待测试程序是否通过测试。2.如权利要求1所述的方法,其特征在于,所述基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序之前,所述方法还包括:在windows操作系统中,运行虚拟网卡驱动程序;通过所述虚拟网卡驱动程序的运行,建立所述虚拟网络连接,以在所述待测试程序与所述目标程序之间实现所述测试数据的本地转发。3.如权利要求2所述的方法,其特征在于,所述通过所述虚拟网卡驱动程序的运行,建立所述虚拟网络连接,包括:通过windows操作系统提供的应用程序接口,调用所述虚拟网卡驱动程序在驱动程序注册入口注册的回调函数;通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数;根据得到的网络参数,建立所述虚拟网络连接。4.如权利要求3所述的方法,其特征在于,所述通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数,包括:从所述回调函数中获取配置文件指向数据;根据所述配置文件指向数据进行的配置文件指向,确定相应的配置文件,并从所确定的配置文件中得到与所述虚拟网络连接建立相关的网络参数。5.如权利要求3所述的方法,其特征在于,所述通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数之前,所述方法还包括:响应于针对所述网络参数的触发操作,生成参数设置请求,所述参数设置请求用于指示为建立所述虚拟网络连接请求设置的网络参数;将所述参数设置请求存储至所述回调函数;所述通过所述回调函数的调用,得到与所述虚拟网络连接建立相关的网络参数,包括:从所述回调函数中获取所述参数设置请求;对所述参数设置请求进行参数提取,得到与所述虚拟网络连接建立相关的网络参数。6.如权利要求1所述的方法,其特征在于,所述基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序之前,所述方法还包括:调用windows操作系统提供的应用程序接口,在驱动程序注册入口进行虚拟网卡驱动程序的注册,以通过所述虚拟网卡驱动程序在windows操作系统中的运行,建立所述虚拟网络连接。7.如权利要求6所述的方法,其特征在于,所述调用windows操作系统提供的应用程序接口,在驱动程序入口进行虚拟网卡驱动程序的注册,包括:将若干个参数变量作为结构体成员,并在指定结构体中进行关于所述结构体成员的变量声明;所述参数变量用于指示与所述虚拟网络连接建立相关的网络参数;
将完成变量声明的指定结构体,通过所述应用程序接口传递至所述驱动程序入口,得到用于建立所述虚拟网络连接的若干个回调函数,完成所述虚拟网卡驱动程序的注册。8.如权利要求1至7任一项所述的方法,其特征在于,所述基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序,包括:根据指定网络协议,将所述测试数据封装为若干个测试帧;基于所述虚拟网络连接,在所述待测试程序与所述目标程序之间进行若干个所述测试帧的传输;根据所述指定网络协议,将若干个所述测试帧解析为所述测试数据。9.一种应用程序测试装置,其特征在于,所述装置包括:数据获取模块,用于获取待测试程序的测试数据;数据传输模块,用于基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序;所述虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,所述待测试程序和所述目标程序运行于同一计算机设备;数据响应模块,用于根据所述目标程序对所述测试数据进行的响应,确定所述待测试程序是否通过测试。10.一种计算机设备,其特征在于,包括:至少一个处理器、至少一个存储器、以及至少一条通信总线,其中,所述存储器上存储有计算机程序,所述处理器通过所述通信总线读取所述存储器中的所述计算机程序;所述计算机程序被所述处理器执行时实现权利要求1至8中任一项所述的应用程序测试方法。
技术总结本申请实施例提供了一种应用程序测试方法、装置及计算机设备,涉及计算机技术领域。其中,该方法包括:获取待测试程序的测试数据;基于虚拟网络连接,将所述测试数据由所述待测试程序传输至目标程序;所述虚拟网络连接用于模拟通过物理网卡建立在不同计算机设备之间的网络连接,所述待测试程序和所述目标程序运行于同一计算机设备;根据所述目标程序对所述测试数据进行的响应,确定所述待测试程序是否通过测试。本申请实施例解决了相关技术中应用程序测试成本较高的问题。序测试成本较高的问题。序测试成本较高的问题。
技术研发人员:李洪 黄俊锋 周亮 柳承台
受保护的技术使用者:深圳市辰卓科技有限公司
技术研发日:2022.06.27
技术公布日:2022/11/1