一种测试方法、装置及系统与流程

文档序号:15850838发布日期:2018-11-07 09:52阅读:129来源:国知局
一种测试方法、装置及系统与流程

本申请涉及测试技术领域,特别是涉及一种测试方法、装置及系统。

背景技术

目前,越来越多的用户会通过浏览器来访问互联网。为了保证浏览器运行的稳定性,技术人员在发布浏览器之前,会先对浏览器的程序进行测试,以减少浏览器的程序中的漏洞。

现有技术中,技术人员通常会采用静态分析技术对浏览器进行测试。具体的,技术人员会人工查看浏览器的程序代码,判断该程序代码的编写是否存在漏洞,以便对漏洞进行修正。

然而,浏览器的程序代码的数据量通常较大,因此,通过人工方式对浏览器的程序进行检测,会导致浏览器测试的效率较低。



技术实现要素:

本申请实施例的目的在于提供一种测试方法、装置及系统,可以提高浏览器测试的效率。具体技术方案如下:

第一方面,提供了一种测试方法,所述方法应用于测试服务器,所述测试服务器与多个分布式测试节点连接,所述方法包括:

根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本;

将所述多个测试样本分发给所述多个分布式测试节点,以使每个分布式测试节点通过所述目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使所述目标应用程序发生异常的异常测试样本;

当接收到所述分布式测试节点发送的异常测试样本时,输出所述异常测试样本。

第二方面,提供了一种测试方法,所述方法应用于分布式测试节点,所述分布式测试节点中安装有待测试的目标应用程序,所述方法包括:

接收测试服务器发送的测试样本;

通过所述目标应用程序加载所述测试样本,并判断所述目标应用程序是否发生异常;

如果所述目标应用程序发生异常,则将所述测试样本记录为异常测试样本;

将所述异常测试样本发送给所述测试服务器。

第三方面,提供了一种测试装置,所述装置应用于测试服务器,所述测试服务器与多个分布式测试节点连接,所述装置包括:

生成模块,用于根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本;

第一确定模块,用于将所述多个测试样本分发给所述多个分布式测试节点,以使每个分布式测试节点通过所述目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使所述目标应用程序发生异常的异常测试样本;

输出模块,用于当接收到分布式测试节点发送的异常测试样本时,输出所述异常测试样本。

第四方面,提供了一种测试装置,所述装置应用于分布式测试节点,所述分布式测试节点中安装有待测试的目标应用程序,所述装置包括:

接收模块,用于接收测试服务器发送的测试样本;

判断模块,用于通过所述目标应用程序加载所述测试样本,并判断所述目标应用程序是否发生异常;

记录模块,用于如果所述目标应用程序发生异常,则将所述测试样本记录为异常测试样本;

第一发送模块,用于将所述异常测试样本发送给所述测试服务器。

第五方面,提供了一种测试系统,所述测试系统包括测试服务器和多个分布式测试节点,每个分布式测试节点中安装有待测试的目标应用程序,其中:

所述测试服务器包括权利要求9-11任一项所述的装置;

所述多个分布式测试节点中的每个分布式测试节点,包括权利要求12-16任一项所述的装置。

第六方面,提供了一种测试服务器,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现第一方面所述的方法步骤。

第七方面,提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现第一方面所述的方法步骤。

第八方面,提供了一种分布式测试节点,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现第二方面所述的方法步骤。

第九方面,提供了一种机器可读存储介质,存储有机器可执行指令,在被处理器调用和执行时,所述机器可执行指令促使所述处理器:实现第二方面所述的方法步骤。

本发明实施例提供的一种测试方法,测试服务器可以根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本,然后将多个测试样本分发给多个分布式测试节点,以使每个分布式测试节点通过目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使目标应用程序发生异常的异常测试样本,当测试服务器接收到分布式测试节点发送的异常测试样本时,输出异常测试样本。基于本方案,可以实时自动测试应用程序,无需通过人工方式对应用程序进行检测,并且,基于分布式测试节点,可以对多种应用程序(比如不同版本的某应用程序)同时进行检测,提高了浏览器测试的效率。

当然,实施本申请的任一产品或方法必不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种网络系统的示例图;

图2为本发明实施例提供的一种测试方法的方法流程图;

图3为本发明实施例提供的一种测试装置的结构示意图;

图4为本发明实施例提供的一种测试装置的结构示意图;

图5为本发明实施例提供的一种测试装置的结构示意图;

图6为本发明实施例提供的一种测试装置的结构示意图;

图7为本发明实施例提供的一种测试装置的结构示意图;

图8为本发明实施例提供的一种测试装置的结构示意图;

图9为本发明实施例提供的一种测试装置的结构示意图;

图10为本发明实施例提供的测试服务器的结构示意图;

图11为本发明实施例提供的分布式测试节点的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

本发明实施例还提供了一种测试方法,该方法可以由测试服务器和多个分布式测试节点共同实现。如图1所示,为本发明实施例提供的测试系统的示意图。该测试系统包括测试服务器和多个分布式测试节点。其中,各分布式测试节点中分别安装有待测试的应用程序(即目标应用程序),比如某浏览器的应用程序。测试服务器可以与各分布式测试节点进行通信,以完成对目标应用程序的测试。本发明实施例中,测试服务器和分布式测试节点之间可以采用socket方式进行通信。

需要说明的是,各分布式测试节点中安装的目标应用程序可以是不同的,以实现分布式测试。例如,分布式测试节点a中安装有a版本的应用程序m,分布式测试节点b中安装有b版本的应用程序m,分布式测试节点c中安装有c版本的应用程序n。

在进行测试之前,技术人员需要先对测试服务器进行配置,具体的,技术人员会在测试服务器中启动服务程序(即server程序),并配置相关参数,比如测试服务器的ip地址、端口号以及访问权限等。同时,技术人员在测试服务器中创建守护进程,如果守护进程创建成果,则可以进行后续测试处理,如果守护进程创建失败,则测试服务器会打印错误信息并重新创建进程,直到成功为止。

在进程测试时,测试服务器中的守护进程会根据预设的测试样本分发策略,为各分布式测试节点下发测试任务,测试任务中包括该分布式测试节点需要执行的测试样本。测试服务器的守护进程还会向各分布式测试节点下发应用程序控制指令(比如浏览器控制指令)和进程监控指令。对于每个分布式测试节点,当该分布式测试节点接收到应用程序控制指令后,该分布式测试节点会启动待测试的应用程序(比如web浏览器);该分布式测试节点接收到进程监控指令后,会启动监控进程。分布式测试节点通过监控进程主要对以下两方面信息进行监控:一方面,对待测试的应用程序的运行状态进行监控,比如web浏览器是否正常运行;另一方面,对该分布式测试节点的运行状态进行监控,如该分布式测试节点的cpu(centralprocessingunit,中央处理单元)、内存以及io(input/output,输入/输出)等状态。这样,分布式测试节点对上述状态进行监控,并将监控结果上报给测试服务器,以便测试服务器的服务程序进行分析。

如图2所示,该方法的处理过程可以如下:

步骤201,测试服务器根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本。

在实施中,测试服务器中可以预先设置有样本生成模块(比如样本生成器),样本生成模块中可以存储有测试样本生成算法。当测试服务器接收到对应目标应用程序的测试指令时,测试服务器可以调用样本生成模块,生成目标应用程序对应的多个测试样本。本发明实施例中,根据测试样本生成算法生成的测试样本,均为遵守w3c(worldwidewebconsortium,万维网联盟)标准的测试样本,因此,可以适用于不同版本的应用程序。

步骤202,测试服务器将多个测试样本分发给多个分布式测试节点。

在实施中,测试服务器生成待测试的测试样本后,可以向各分布式测试节点下发测试任务,测试任务中包括需要该分布式测试节点执行的测试样本,以使该分布式测试节点通过待测试的应用程序(即目标应用程序)加载接收到的测试样本,并在加载的测试样本中确定使目标应用程序发生异常的异常测试样本。

需要说明的是,为了提高测试的效率,不同的分布式测试节点执行的测试样本是不同的,因此,测试服务器中还需要存储测试样本分发策略,以便为各分布式测试节点分配测试样本。相应的,步骤202的处理过程可以如下:针对每个分布式测试节点,根据预设的分布式测试节点的发送顺序,在生成的待测试的测试样本中确定分发给该分布式测试节点的测试样本,将确定出的测试样本发送给该分布式测试节点。

在实施中,测试样本分发策略可以由技术人员根据需要设定。在一种可行的方式中,测试服务器可以按照分布式测试节点的发送顺序,为各分布式测试节点分配测试样本,例如,生成的待测试的测试样本为:s1、s2、s3、s4、s5、s6,分布式测试节点为n1、n2、n3,则可以将s1分配给n1、s2分配给n2、s3分配给n3、s4分配给n1、s5分配给n2、s6分配给n3。在另一种可行的方式中,技术人员可以人工设置各分布式测试节点需要执行的测试样本,例如,对于性能较好的分布式测试节点,可以分配处理过较复杂的测试样本,对于性能较差的分布式测试节点,可以分配处理过程较简单的测试样本。

测试服务器确定各分布式测试节点对应的测试样本后,可以将该分布式测试节点对应的测试样本,发送给该分布式测试节点,以便该分布式测试节点通过目标应用程序加载测试样本,并确定使目标应用程序发生异常的异常测试样本。需要说明的是,测试服务器可以向分布式测试节点逐个下发测试样本,或者也可以向分布式测试节点批量下发测试样本,本发明实施例不做限定。

本发明实施例中,由于测试样本的数量通常比较大,因此,测试服务器可以采用边生成测试样本,边进行测试的处理方式,也即,测试服务器每生成预设数量的测试样本后,执行步骤202,以便将生成的测试样本分发给多个分布式测试节点进行测试。其中,预设数量可以大于或等于1。

步骤203,分布式测试节点接收测试服务器发送的测试样本。

在实施中,分布式测试节点可以接收测试服务下发的测试任务,并获取该测试任务中的测试样本。

步骤204,分布式测试节点通过目标应用程序加载测试样本,并判断目标应用程序是否发生异常。

在实施中,如上所述,分布式测试节点中可以预先存储有待测试的应用程序(即目标应用程序),分布式测试节点接收到测试样本后,会接收到测试服务器下发的应用程序控制指令,然后启动目标应用程序,进而通过目标应用程序加载测试样本。另外,分布式测试节点接收到测试样本后,还会接收到测试服务器下发的进程监控指令后,然后启动监控进程,以便对目标应用程序的运行状态和自身的运行状态进行监控。

分布式测试节点会逐个加载测试样本,并通过监控进程监测目标应用程序在执行该测试样本的过程中,是否发生异常,比如目标应用程序是否正常加载该测试样本。

步骤205,如果目标应用程序发生异常,则分布式测试节点将测试样本记录为异常测试样本,并将异常测试样本发送给测试服务器。

在实施中,如果未监测到目标应用程序发生异常,则分布式测试节点会读取并执行下一个测试样本;如果监测到目标应用程序发生异常,则分布式测试节点的监控进程会捕捉异常信息,并将当前执行的测试样本记录为异常测试样本(即crash样本),并将该异常测试样本发送给测试服务器。其中,异常信息可以包括目标应用程序发生崩溃的截图,以及目标应用程序发生崩溃时寄存器、堆栈存储的内容等信息。

可选的,分布式测试节点可以进一步确认该测试样本是否为异常测试样本,如果是,再将该异常测试样本上报给测试服务器,具体的处理过程可以如下:重新加载测试样本,并判断目标应用程序是否发生异常;如果目标应用程序发生异常,则将测试样本记录为异常测试样本。

在实施中,分布式测试节点判定目标应用程序发生异常后,可以再次调用目标应用程序的进程,然后通过目标应用程序重新加载该测试样本,并通过监控进程监测目标应用程序在执行该测试样本的过程中,是否发生异常。如果目标应用程序发生异常,则将该测试样本记录为异常测试样本,然后发送给测试服务器。如果未发生异常,则说明上一次加载该测试样本时,可能是由于其他原因导致目标应用程序发生异常,分布式测试节点不向测试服务上报该异常测试样本。

需要说明的是,分布式测试节点可以每检测到一个异常测试样本时,就向测试服务器上报该异常测试样本,或者,分布式测试节点也可以在执行完全部测试样本后,再向测试服务器统一上报异常测试样本。

为了节约分布式测试节点的存储资源,分布式测试节点在对某个测试样本完成测试(比如判定该测试样本为正常测试样本,或者,判定该测试样本为异常测试样本,并将该异常测试样本发送给测试服务器)后,会自动删除该测试样本。

步骤206,当接收到分布式测试节点发送的异常测试样本时,测试服务器输出异常测试样本。

在实施中,分布式测试节点向测试服务器上报该异常测试样本后,测试服务器会接收到异常测试样本。这样,测试服务器可以接收到各个分布式测试节点上报的异常测试样本。测试服务器可以将接收到的异常测试样本进行汇总,通过显示部件进行显示。另外,测试服务器还可以获取各异常测试样本对应的异常信息,相应的,测试服务器还可以显示各异常测试样本对应的异常信息,以便技术人员获知详细的测试情况。

技术人员可以查看各异常测试样本、以及各异常测试样本对应的异常信息。针对每个异常测试样本,技术人员可以通过人工操作再次执行该异常测试样本,以确认目标应用程序在执行该异常测试样本时,一定会发生异常。然后,技术人员可以在测试服务器中,删除该异常测试样本,。

或者,测试服务器接收到分布式测试节点发送的异常信息后,可以根据异常信息,自动判断是否发现目标应用程序中的漏洞,例如,可以通过异常信息中的预设调用栈信息来进行判断,如果预设调用栈信息表示内存越界,则说明可能存在漏洞。又如,该异常信息表示资源不足,则说明不存在漏洞。如果测试服务器判定发现目标应用程序中的漏洞,则可以输出该异常信息,以提示测试人员发现漏洞;如果判定未发现目标应用程序中的漏洞,则可以不进行处理。

可选的,测试服务器还可以根据每个各分布式测试节点的运行状态,动态调整每个分布式测试节点对应的测试样本的发送策略,具体的处理过程为:针对每个分布式测试节点,如果该分布式测试节点的运行状态信息满足预设的过载条件,则在多个测试样本中,确定代码量小于预设阈值的测试样本,将代码量小于预设阈值的测试样本发送给该分布式测试节点。

在实施中,在测试过程中,各分布式测试节点可以实时监控自身当前的运行状态,并获取运行状态信息,比如cpu利用率、内存利用率以及io速度等。分布式测试节点可以将获取到的运行状态信息发送给测试服务器,测试服务器接收到该运行状态信息后,可以根据各分布式测试节点的运行状态信息,确定过载的分布式测试节点,例如,测试服务器可以确定cpu利用率大于预设阈值,和/或内存利用率大于预设阈值,和/或io速度大于预设阈值的分布式测试节点。针对每个分布式测试节点,如果测试服务器判定该分布式测试节点的运行状态信息满足预设的过载条件,则测试服务器可以在生成的多个测试样本中,确定代码量小于预设阈值的测试样本,然后将该代码量小于预设阈值的测试样本,发送给该分布式测试节点。

例如,测试服务器生成测试样本x、y、z,如果分布式测试节点a当前的cpu利用率小于预设阈值,测试服务器则会按照轮训顺序,将x发送给分布式测试节点a,分布式测试节点a则会执行x。如果分布式测试节点a当前的cpu利用率大于预设阈值,测试服务器则会分别将x、y、z的代码量与预设阈值进行对比,如果测试样本z的代码量小于预设阈值,则会把z发送给分布式测试节点a,以使分布式测试节点a执行处理度较简单的测试样本z,降低分布式测试节点a的处理压力。其中,其余的测试样本可以按照轮训顺序分发。

需要说明的是,如果需要分发的测试样本中,存在多个代码量小于预设阈值的测试样本,测试服务器可以随机选择一个发送给该分布式测试节点;如果需要分发给该分布式测试节点的测试样本中,不存在代码量小于预设阈值的测试样本,则测试服务器可以确定代码量最小的测试样本,然后将代码量最小的测试样本,发送给该分布式测试节点。

基于本方案,当某分布式测试节点过载时,测试服务器可以优先将处理度较简单的测试样本,发送给该分布式测试节点,降低了分布式测试节点的处理压力。

在另一可能的实现方式中,测试服务器确定过载的分布式测试节点后,可以向该测试服务器下发停止测试的控制命令,以暂停该分布式测试节点的测试处理。当测试服务器根据该分布式测试节点的运行状态信息,判定该分布式测试节点处于非过载状态时,该测试服务器向该分布式测试节点下发开始测试的控制指令,以通知该分布式测试节点开始进行测试。

在另一种可能的实现方式中,分布式测试节点可以为某一主机上运行的多个虚拟机,当测试服务器检测到某个分布式测试节点过载时,测试服务器可以向用于管理多个分布式测试节点的管理服务器发送控制指令,以使该管理服务器为该分布式测试节点分配处理资源、内存资源等,以避免该分布式测试节点处于过载状态。

可选的,分布式测试节点还可以将测试样本执行信息发送给测试服务器,具体的处理过程为:获取当前已执行的测试样本的标识;根据已执行的测试样本的标识生成测试样本执行信息,并将测试样本执行信息发送给测试服务器,测试样本执行信息中包括分发给分布式测试节点的测试样本中已执行的测试样本的标识。

在实施中,对于每个分布式测试节点,当该分布式测试节点执行完一个测试样本后,该分布式测试节点可以将该测试样本记录为已执行的测试样本。该分布式测试节点可以获取当前已执行的测试样本的标识,然后根据已执行的测试样本的标识生成测试样本执行信息,进而将测试样本执行信息发送给测试服务器,测试样本执行信息中包括分发给分布式测试节点的测试样本中已执行的测试样本的标识。在分布式测试节点进行测试的过程中,分布式测试节点中的监控进程会实时向测试服务器发送测试样本执行信息。或者,也可以达到预设周期时,向测试服务器发送测试样本执行信息。

可选的,测试服务器可以基于各分布式测试节点发送的测试样本执行信息和运行状态信息,对各分布式测试节点进行动态调度,具体的处理过程可以如下:接收多个分布式测试节点中的每个分布式测试节点发送的测试样本执行信息,测试样本执行信息中包括分发给分布式测试节点的测试样本中已执行的测试样本的标识;当检测到多个分布式测试节点中的第一分布式测试节点故障时,根据预设的调度算法,在其他分布式测试节点中确定第二分布式测试节点;根据已存储的各分布式测试节点对应的测试样本、以及第一分布式测试节点发送的测试样本执行信息,确定第一分布式测试节点当前未执行的目标测试样本,并将第一分布式测试节点对应的目标测试样本发送给第二分布式测试节点,以使第二分布式测试节点执行目标测试样本。

在实施中,测试服务器会接收到多个分布式测试节点发送的测试样本执行信息,以确定各分布式测试节点对应的测试样本的执行进度。测试服务器还可以检测每个分布式测试节点是否发生故障。例如,每个分布式测试节点可以实时监控自身当前的运行状态,并获取运行状态信息,然后将获取到的运行状态信息发送给测试服务器,测试服务器可以根据各分布式测试节点上报的状态信息,判断各分布式测试节点是否正常运行。又如,测试服务器和每个分布式测试节点可以互相发送保活报文,对于任一分布式测试节点,如果测试服务器如果在预设时长内接收到该分布式测试节点发送的保活报文,则判定该分布式测试节点正常,否则,判定该分布式测试节点发生故障。

测试服务器中可以预先存储有调度算法,本发明实施例对该调度算法不做限定,例如,该调度算法可以是lvs(linuxvirtualserver,linux虚拟服务器)算法。当测试服务器检测到某个分布式测试节点(即第一分布式测试节点)故障时,测试服务器可以根据预设的调度算法,在其他分布式测试节点中确定第二分布式测试节点。例如,测试服务器可以随机选择一个分布式测试节点作为第二分布式测试节点,或者,也可以确定当前负载最小的分布式测试节点,作为第二分布式测试节点。测试服务器可以根据已存储的各分布式测试节点对应的测试样本、以及第一分布式测试节点发送的测试样本执行信息,确定第一分布式测试节点当前未执行的测试样本(即目标测试样本),然后将目标测试样本发送给第二分布式测试节点,以使第二分布式测试节点执行目标测试样本。

本发明实施例提供的一种测试方法,测试服务器可以根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本,然后将多个测试样本分发给多个分布式测试节点,以使每个分布式测试节点通过目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使目标应用程序发生异常的异常测试样本,当测试服务器接收到分布式测试节点发送的异常测试样本时,输出异常测试样本。基于本方案,可以实时自动测试应用程序,无需通过人工方式对应用程序进行检测,并且,基于分布式测试节点,可以对多种应用程序(比如不同版本的某应用程序)同时进行检测,提高了浏览器测试的效率。

基于相同的技术构思,如图3所示,本发明实施例还提供了一种测试装置,该装置应用于测试服务器,测试服务器与多个分布式测试节点连接,该装置包括:

生成模块310,用于用于根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本;

第一确定模块320,用于将所述多个测试样本分发给所述多个分布式测试节点,以使每个分布式测试节点通过所述目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使所述目标应用程序发生异常的异常测试样本;

输出模块330,用于当接收到分布式测试节点发送的异常测试样本时,输出异常测试样本。

可选的,如图4所示,该装置还包括:

第一接收模块340,用于接收所述多个分布式测试节点中的每个分布式测试节点发送的测试样本执行信息,所述测试样本执行信息中包括分发给所述分布式测试节点的测试样本中已执行的测试样本的标识;

第二确定模块350,用于当检测到多个分布式测试节点中的第一分布式测试节点故障时,根据预设的调度算法,在其他分布式测试节点中确定第二分布式测试节点;

发送模块360,用于根据已存储的各分布式测试节点对应的测试样本、以及第一分布式测试节点发送的测试样本执行信息,确定第一分布式测试节点当前未执行的目标测试样本,并将第一分布式测试节点对应的目标测试样本发送给第二分布式测试节点,以使第二分布式测试节点执行目标测试样本。

可选的,如图5所示,该装置还包括:

第二接收模块370,用于接收各分布式测试节点发送的运行状态信息;

第一确定模块320,具体用于:

针对每个分布式测试节点,如果该分布式测试节点的运行状态信息满足预设的过载条件,则在所述多个测试样本中,确定代码量小于预设阈值的测试样本,将所述代码量小于预设阈值的测试样本发送给该分布式测试节点。

基于相同的技术构思,如图6所示,本发明实施例还提供了一种测试装置,该装置应用于分布式测试节点,分布式测试节点中安装有待测试的目标应用程序,该装置包括:

接收模块610,用于接收测试服务器发送的测试样本;

判断模块620,用于通过目标应用程序加载测试样本,并判断目标应用程序是否发生异常;

记录模块630,用于如果目标应用程序发生异常,则将测试样本记录为异常测试样本;

第一发送模块640,用于将异常测试样本发送给测试服务器。

可选的,所述记录模块630,具体用于:

重新加载所述测试样本,并判断所述目标应用程序是否发生异常;

如果所述目标应用程序发生异常,则将所述测试样本记录为异常测试样本。

可选的,如图7所示,该装置还包括:

第二发送模块650,用于获取当前分布式测试节点的运行状态信息,并将运行状态信息发送给测试服务器。

可选的,如图8所示,该装置还包括:

删除模块660,用于从接收到的测试样本中,删除异常测试样本。

可选的,如图9所示,所述装置还包括:

获取模块670,用于获取当前已执行的测试样本的标识;

第三发送模块680,用于根据所述已执行的测试样本的标识生成测试样本执行信息,并将所述测试样本执行信息发送给所述测试服务器,所述测试样本执行信息中包括分发给所述分布式测试节点的测试样本中已执行的测试样本的标识。

本发明实施例中,测试服务器可以根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本,然后将多个测试样本分发给多个分布式测试节点,以使每个分布式测试节点通过目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使目标应用程序发生异常的异常测试样本,当测试服务器接收到分布式测试节点发送的异常测试样本时,输出异常测试样本。基于本方案,可以实时自动测试应用程序,无需通过人工方式对应用程序进行检测,并且,基于分布式测试节点,可以对多种应用程序(比如不同版本的某应用程序)同时进行检测,提高了浏览器测试的效率。

基于相同的技术构思,本发明实施例还提供了一种测试系统,该测试系统包括测试服务器和多个分布式测试节点,每个分布式测试节点中安装有待测试的目标应用程序,其中:

所述测试服务器包括上述图3~图5任一项所述的装置;

所述多个分布式测试节点中的每个分布式测试节点,包括上述图6~图9任一项所述的装置。

本发明实施例中,测试服务器可以根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本,然后将多个测试样本分发给多个分布式测试节点,以使每个分布式测试节点通过目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使目标应用程序发生异常的异常测试样本,当测试服务器接收到分布式测试节点发送的异常测试样本时,输出异常测试样本。基于本方案,可以实时自动测试应用程序,无需通过人工方式对应用程序进行检测,并且,基于分布式测试节点,可以对多种应用程序(比如不同版本的某应用程序)同时进行检测,提高了浏览器测试的效率。

本发明实施例还提供了一种测试服务器,如图10所示,包括处理器1001、通信接口1002、存储器1003和通信总线1004,其中,处理器1001,通信接口1002,存储器1003通过通信总线1004完成相互间的通信,

存储器1003,用于存放计算机程序;

处理器1001,用于执行存储器1003上所存放的程序时,以使该测试服务器执行如下步骤,该步骤包括:

根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本;

将所述多个测试样本分发给所述多个分布式测试节点,以使每个分布式测试节点通过所述目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使所述目标应用程序发生异常的异常测试样本;

当接收到所述分布式测试节点发送的异常测试样本时,输出所述异常测试样本。

可选的,所述方法还包括:

接收所述多个分布式测试节点中的每个分布式测试节点发送的测试样本执行信息,所述测试样本执行信息中包括分发给所述分布式测试节点的测试样本中已执行的测试样本的标识;

当检测到所述多个分布式测试节点中的第一分布式测试节点故障时,根据预设的调度算法,在其他分布式测试节点中确定第二分布式测试节点;

根据已存储的各分布式测试节点对应的测试样本、以及所述第一分布式测试节点发送的测试样本执行信息,确定所述第一分布式测试节点当前未执行的目标测试样本,并将所述第一分布式测试节点对应的目标测试样本发送给所述第二分布式测试节点,以使所述第二分布式测试节点执行所述目标测试样本。

可选的,所述方法还包括:

接收每个分布式测试节点发送的运行状态信息;

所述将所述多个测试样本分发给所述多个分布式测试节点,包括:

针对每个分布式测试节点,如果该分布式测试节点的运行状态信息满足预设的过载条件,则在所述多个测试样本中,确定代码量小于预设阈值的测试样本,将所述代码量小于预设阈值的测试样本发送给该分布式测试节点。

机器可读存储介质可以包括ram(randomaccessmemory,随机存取存储器),也可以包括nvm(non-volatilememory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。

上述处理器可以是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例还提供了一种分布式测试节点,如图11所示,包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101,通信接口1102,存储器1103通过通信总线1104完成相互间的通信,

存储器1103,用于存放计算机程序;

处理器1101,用于执行存储器1103上所存放的程序时,以使该分布式测试节点执行如下步骤,该步骤包括:

接收测试服务器发送的测试样本;

通过所述目标应用程序加载所述测试样本,并判断所述目标应用程序是否发生异常;

如果所述目标应用程序发生异常,则将所述测试样本记录为异常测试样本;

将所述异常测试样本发送给所述测试服务器。

可选的,所述将所述测试样本记录为异常测试样本,包括:

重新加载所述测试样本,并判断所述目标应用程序是否发生异常;

如果所述目标应用程序发生异常,则将所述测试样本记录为异常测试样本。

可选的,所述方法还包括:

获取当前所述分布式测试节点的运行状态信息,并将所述运行状态信息发送给所述测试服务器。

可选的,所述方法还包括:

从接收到的测试样本中,删除所述异常测试样本。

可选的,所述方法还包括:

获取当前已执行的测试样本的标识;

根据所述已执行的测试样本的标识生成测试样本执行信息,并将所述测试样本执行信息发送给所述测试服务器,所述测试样本执行信息中包括分发给所述分布式测试节点的测试样本中已执行的测试样本的标识。

机器可读存储介质可以包括ram(randomaccessmemory,随机存取存储器),也可以包括nvm(non-volatilememory,非易失性存储器),例如至少一个磁盘存储器。另外,机器可读存储介质还可以是至少一个位于远离前述处理器的存储装置。

上述处理器可以是通用处理器,包括cpu(centralprocessingunit,中央处理器)、np(networkprocessor,网络处理器)等;还可以是dsp(digitalsignalprocessing,数字信号处理器)、asic(applicationspecificintegratedcircuit,专用集成电路)、fpga(field-programmablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

本发明实施例中,测试服务器可以根据预设的测试样本生成算法,生成目标应用程序对应的多个测试样本,然后将多个测试样本分发给多个分布式测试节点,以使每个分布式测试节点通过目标应用程序加载接收到的测试样本,并在加载的测试样本中确定使目标应用程序发生异常的异常测试样本,当测试服务器接收到分布式测试节点发送的异常测试样本时,输出异常测试样本。基于本方案,可以实时自动测试应用程序,无需通过人工方式对应用程序进行检测,并且,基于分布式测试节点,可以对多种应用程序(比如不同版本的某应用程序)同时进行检测,提高了浏览器测试的效率。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

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