一种软件测试方法、装置及系统的制作方法

文档序号:10686977阅读:277来源:国知局
一种软件测试方法、装置及系统的制作方法
【专利摘要】本发明提供了一种软件测试方法、装置及系统,该方法包括:控制端预先确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则以及确定包括死循环语句的测试程序;根据CPU负载程度处理规则,确定出目标CPU负载程度对应的服务器线程数和测试程序的第一数目;生成通过启动第一数目的测试程序并运行死循环语句以测试目标软件的控制指令,并将控制指令发送给所述服务器线程数对应的目标服务器。由于可以通过特定服务器线程数的服务器运行特定数目的包括死循环语句的测试程序,故可以建立稳定在目标CPU负载程度的测试环境,并在该测试环境下测试目标软件。因此,本方案能够制造稳定的CPU负载以测试软件。
【专利说明】
一种软件测试方法、装置及系统
技术领域
[0001]本发明涉及计算机技术领域,特别涉及一种软件测试方法、装置及系统。
【背景技术】
[0002]在软件开发过程中,需要在一定的负载环境下对软件进行压力测试,以确定软件的运行情况是否存在问题,故可以通过制造CPU负载以提供软件测试的测试环境。
[0003]目前,可以利用测试工具以制造CPU负载,并在相应测试环境下运行被测试软件。
[0004]由于测试工具在制造CPU负载时通常会出现较大波动,使测试环境多变,故不便于对测试过程中出现的问题进行定位。因此,现有的实现方式不能制造稳定的CPU负载以测试软件。

【发明内容】

[0005]本发明提供了一种软件测试方法、装置及系统,能够制造稳定的CPU负载以测试软件。
[0006]为了达到上述目的,本发明是通过如下技术方案实现的:
[0007]第一方面,本发明提供了一种软件测试方法,应用于控制端,预先与至少一个服务器相连;预先确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则,以及确定包括死循环语句的测试程序,还包括:
[0008]根据所述CPU负载程度处理规则,确定出所述目标CPU负载程度对应的服务器线程数和所述测试程序的第一数目;
[0009]生成通过启动第一数目的所述测试程序并运行所述死循环语句以测试所述目标软件的控制指令;
[0010]将所述控制指令发送给所述服务器线程数对应的目标服务器。
[0011 ] 进一步地,所述死循环语句包括:while(l);语句、for(;;;);语句、do() Uwhile
(I);语句中的任意一种。
[0012]进一步地,所述CPU负载程度处理规则,包括:每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,且所述服务器线程数和所述测试程序的第一数目符合下述条件:
[0013]O 彡(X-Xi)彡 K,其中,X = N2/Ni,
[0014]见为所述服务器线程数,仏为所述测试程序的第一数目,X为理论CPU负载程度,X1为所述目标CR]负载程度,K为设定阈值。
[0015]进一步地,所述K包括:10%;
[0016]所述每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,包括:
[0017]当Xi 彡 12% 时,Ni = 8、N2 = 1;
[0018]当12%<Xi 彡 16% 时,Ni = 12、N2 = 2;
[0019]当16%<父1彡25%时,沁=4、吣=1,沁=8、吣=2或沁=12、吣=3;
[0020]当25%<Xi 彡 33% 时,Ni = 12、N2 = 4;
[0021]当33%<Xi 彡 37% 时,Ni = 8、N2 = 3;
[0022]当37%<Xi 彡 41% 时,Ni = 12、N2 = 5;
[0023]当41%<Xi 彡50% 时,Ni = 4、N2 = 2,Ni = 8、N2 = 4SNi = 12、N2 = 6;
[0024]当50%<Xi 彡 58% 时,Ni = 12、N2 = 7;
[0025]当58%<Xi 彡 62% 时,Ni = 8、N2 = 5;
[0026]当62%<Xi 彡 66% 时,Ni = 12、N2 = 8;
[0027]当66%<Xi 彡 75% 时,Ni = 4、N2 = 3,Ni = 8、N2 = 6 或 Ni = 12、N2 = 9;
[0028]当75%<Xi 彡83% 时,Ni = 12、N2 = 10;
[0029]当83%<Xi 彡 87% 时,Ni = 8、N2 = 7;
[0030]当87%<Xi 彡91%时,Ni = 12、N2 = 11。
[0031]第二方面,本发明提供了一种软件测试方法,应用于服务器,预先与控制端相连,预先确定目标软件和包括死循环语句的测试程序,还包括:
[0032]接收所述控制端发来的控制指令;
[0033]通过执行所述控制指令,以启动第一数目的所述测试程序并运行所述测试程序中的死循环语句,建立测试环境;
[0034]利用所述测试环境测试所述目标软件。
[0035]进一步地,所述服务器的操作系统包括:Linux操作系统;
[0036]在所述启动第一数目的所述测试程序之前,还包括:利用gcctest.c-ο test编译所述测试程序;输入./test,以及继续执行当前流程;
[0037]所述启动第一数目的所述测试程序,包括:在所述Linux操作系统下,启动第一数目的编译后的所述测试程序。
[0038]进一步地,所述服务器的操作系统包括:Windows操作系统;
[0039]在所述启动第一数目的所述测试程序之前,还包括:利用visualstud1编译所述测试程序,生成test.exe文件,以及继续执行当前流程;
[0040]所述启动第一数目的所述测试程序,包括:在所述Windows操作系统下,通过运行所述test.exe文件,启动第一数目的编译后的所述测试程序。
[0041 ]第三方面,本发明提供了一种控制端,预先与至少一个服务器相连,包括:
[0042]第一确定单元,用于确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则,以及确定包括死循环语句的测试程序;
[0043]处理单元,用于根据所述CPU负载程度处理规则,确定出所述目标CPU负载程度对应的服务器线程数和所述测试程序的第一数目;
[0044]生成单元,用于生成通过启动第一数目的所述测试程序并运行所述死循环语句以测试所述目标软件的控制指令;
[0045]发送单元,用于将所述控制指令发送给所述服务器线程数对应的目标服务器。
[0046]进一步地,所述第一确定单元,具体用于获取包括while(l);语句、for(;;;);语句、doOUwhiled);语句中的任意一种死循环语句的测试程序。
[0047]进一步地,所述第一确定单元,具体用于确定包括每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目的CPU负载程度处理规则,且所述服务器线程数和所述测试程序的第一数目符合下述条件:
[0048]O 彡(X-Xi)彡 K,其中,X = N2/Ni,
[0049]见为所述服务器线程数,犯为所述测试程序的第一数目,X为理论CPU负载程度,X1为所述目标CHJ负载程度,K为设定阈值。
[0050]第四方面,本发明提供了一种服务器,预先与控制端相连,包括:
[0051 ]第二确定单元,用于确定目标软件和包括死循环语句的测试程序;
[0052]接收单元,用于接收所述控制端发来的控制指令;
[0053]测试单元,用于通过执行所述控制指令,以启动第一数目的所述测试程序并运行所述测试程序中的死循环语句,建立测试环境;以及利用所述测试环境测试所述目标软件。
[0054]第五方面,本发明提供了一种软件测试系统,包括:上述任一所述的控制端,以及至少一个上述的服务器;
[0055]所述控制端分别与每一个所述服务器相连;
[0056]所述至少一个服务器对应于至少一种服务器线程数。
[0057]本发明提供了一种软件测试方法、装置及系统,控制端预先确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则以及确定包括死循环语句的测试程序;根据CPU负载程度处理规则,确定出目标CPU负载程度对应的服务器线程数和测试程序的第一数目;生成通过启动第一数目的测试程序并运行死循环语句以测试目标软件的控制指令,并将控制指令发送给所述服务器线程数对应的目标服务器。由于可以通过特定服务器线程数的服务器运行特定数目的包括死循环语句的测试程序,故可以建立稳定在目标CPU负载程度的测试环境,并在该测试环境下测试目标软件。因此,本发明能够制造稳定的CPU负载以测试软件。
【附图说明】
[0058]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0059]图1是本发明一实施例提供的一种软件测试方法的流程图;
[0060]图2是本发明一实施例提供的另一种软件测试方法的流程图;
[0061 ]图3是本发明一实施例提供的再一种软件测试方法的流程图;
[0062]图4是本发明一实施例提供的一种控制端的示意图;
[0063]图5是本发明一实施例提供的一种服务器的示意图;
[0064]图6是本发明一实施例提供的一种软件测试系统的示意图。
【具体实施方式】
[0065]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0066]如图1所示,本发明实施例提供了一种软件测试方法,应用于控制端,预先与至少一个服务器相连,可以包括以下步骤:
[0067]步骤101:预先确定目标软件对应的目标CHJ负载程度,确定CHJ负载程度处理规则,以及确定包括死循环语句的测试程序。
[0068]步骤102:根据所述CPU负载程度处理规则,确定出所述目标CPU负载程度对应的服务器线程数和所述测试程序的第一数目。
[0069]步骤103:生成通过启动第一数目的所述测试程序并运行所述死循环语句以测试所述目标软件的控制指令。
[0070]步骤104:将所述控制指令发送给所述服务器线程数对应的目标服务器。
[0071]本发明实施例提供了一种软件测试方法,控制端预先确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则以及确定包括死循环语句的测试程序;根据CPU负载程度处理规则,确定出目标CPU负载程度对应的服务器线程数和测试程序的第一数目;生成通过启动第一数目的测试程序并运行死循环语句以测试目标软件的控制指令,并将控制指令发送给所述服务器线程数对应的目标服务器。由于可以通过特定服务器线程数的服务器运行特定数目的包括死循环语句的测试程序,故可以建立稳定在目标CPU负载程度的测试环境,并在该测试环境下测试目标软件。因此,本发明实施例能够制造稳定的CPU负载以测试软件。
[0072]在本发明的一个实施例中,为了能够通过运行死循环语句以提供稳定的CPU负载,所以,所述死循环语句包括:while(l);语句、for(;;;);语句、do() {}while(I);语句中的任意一种。
[0073]在本发明的一个实施例中,为了能够针对目标CPU负载程度,提供相应的用于提供稳定CPU负载的优选方案,所以,所述CPU负载程度处理规则,包括:每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,且所述服务器线程数和所述测试程序的第一数目符合下述条件:
[0074]O 彡(X-Xi)彡 K,其中,X = N2/Ni,
[0075]见为所述服务器线程数,犯为所述测试程序的第一数目,X为理论CPU负载程度,X1为所述目标CHJ负载程度,K为设定阈值。
[0076]在本发明的一个实施例中,为了能够利用常用配置服务器,如4线程服务器、8线程服务器、12线程服务器,建立符合目标CPU负载程度的测试环境以测试软件,所以,所述K包括:10% ;
[0077]所述每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,包括:
[0078]当Xi<12% 时,Νι = 8、Ν2 = 1;
[0079]当12%<Xi 彡 16% 时,Ni = 12、N2 = 2;
[0080]当16%<父1彡25%时小1 = 4、吣=1,沁=8、吣=2或沁=12、吣=3;
[0081]当25%<Xi 彡 33% 时,Ni = 12、N2 = 4;
[0082]当33%<Xi 彡 37% 时,Ni = 8、N2 = 3;
[0083]当37%<Xi 彡 41% 时,Ni = 12、N2 = 5;
[0084]当41%<Xi 彡 50% 时,Ni = 4、N2 = 2,Ni = 8、N2 = 4 或 Ni = 12、N2 = 6;
[0085]当50%<Xi 彡 58% 时,Ni = 12、N2 = 7;
[0086]当58%<Xi 彡 62% 时,Ni = 8、N2 = 5;
[0087]当62%<Xi 彡 66% 时,Ni = 12、N2 = 8;
[0088]当66%<Xi 彡 75% 时,Ni = 4、N2 = 3,Ni = 8、N2 = 6 或 Ni = 12、N2 = 9;
[0089]当75%<Xi 彡83% 时,Ni = 12、N2 = 10;
[0090]当83%<Xi 彡 87% 时,Ni = 8、N2 = 7;
[0091]当87%<Xi 彡91%时,Ni = 12、N2 = 11。
[0092]如图2所示,本发明实施例提供了另一种软件测试方法,应用于服务器,预先与控制端相连,可以包括以下步骤:
[0093]步骤201:预先确定目标软件和包括死循环语句的测试程序。
[0094]步骤202:接收所述控制端发来的控制指令。
[0095]步骤203:通过执行所述控制指令,以启动第一数目的所述测试程序并运行所述测试程序中的死循环语句,建立测试环境。
[0096]步骤204:利用所述测试环境测试所述目标软件。
[0097]本发明实施例提供了一种软件测试方法,服务器在接收到控制端发来的控制指令时,通过执行该控制指令以启动第一数目的测试程序并运行测试程序中的死循环语句,建立测试环境;以及利用这一测试环境测试预先确定的目标软件。由于该服务器可以为控制端所确定出的具有特定服务器线程数的目标服务器,且通过执行控制端发来的控制指令,可以建立特定(PU负载程度的稳定测试环境以进行软件测试。因此,本发明实施例能够制造稳定的CPU负载以测试软件。
[0098]在本发明的一个实施例中,为了说明具有Linux操作系统的服务器启动测试程序的可能实现方式,所以,
[0099]所述服务器的操作系统包括:Linux操作系统;
[0?00]在所述启动第一数目的所述测试程序之前,进一步包括:利用gcc test.c-o test编译所述测试程序;输入./test,以及继续执行当前流程;
[0101 ]所述启动第一数目的所述测试程序,包括:在所述Linux操作系统下,启动第一数目的编译后的所述测试程序。
[0102]在本发明的一个实施例中,为了说明具有Windows操作系统的服务器启动测试程序的可能实现方式,所以,
[0103]所述服务器的操作系统包括=Windows操作系统;
[0104]在所述启动第一数目的所述测试程序之前,进一步包括:利用visualstud1编译所述测试程序,生成test.exe文件,以及继续执行当前流程;
[0105]所述启动第一数目的所述测试程序,包括:在所述Windows操作系统下,通过运行所述test.exe文件,启动第一数目的编译后的所述测试程序。
[0106]如图3所示,本发明一个实施例提供了再一种软件测试方法,该方法以结合控制端和服务器共同作用并进行软件测试为例,具体包括以下步骤:
[0107]步骤301:控制端分别与每一个服务器相连。
[0108]详细地,每一个服务器均可以对应于一种服务器线程数。例如,在本发明一个实施例中,与控制端相连的每一个服务器的线程数可以为2、4、6、8、12、16、20、24、28、32、36、40
中的任意一种。
[0109]由于4线程、8线程和12线程的服务器较为常用,配置成本适宜,且能够创建多种不同CPU负载程度的软件测试环境,故优选的,在本发明实施例中,控制端可以与双核心4线程服务器、4核心8线程服务器、6核心12线程服务器这三个服务器分别相连。
[0110]步骤302:控制端确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则,以及确定包括死循环语句的测试程序。
[0111]举例来说,当用户端服务器的CPU负载程度较为稳定,比如通常维持在60%的CPU负载情况下,且需要在该CR]负载程度下使用某一目标软件时,软件测试人员可以利用自身的服务器,建立一个类似的软件运行环境,并维持稳定的相同CPU负载程度以进行软件测试。
[0112]无需亲临用户端现场及无需利用用户端服务器,软件测试人员可以利用自身的服务器进行软件测试,从而确定目标软件在测试过程中是否存在问题,并对出现的问题进行及时解决,从而保证目标软件能够在用户端服务器上正常运行。为实现这一目的,首先需要明确用户端服务器的这一CHJ负载程度,即确定目标软件对应的目标CPU负载程度。比如,控制端首先确定目标CPU负载程度为60%。
[0113]为了能够建立与用户端服务器运行环境相类似的软件测试环境,可以在特定服务器线程数的目标服务器上运行特定数目的测试程序。基于这一实现方式,可以预先确定一个CPU负载程度处理规则,以确定出与目标CPU负载程度相对应的服务器线程数和测试程序的数目。
[0114]因此,在本发明一个实施例中,CPU负载程度处理规则可以包括每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,且服务器线程数和测试程序的第一数目符合下述条件:
[0115]O 彡(X-Xi)彡 K,其中,X = N2/Ni,
[0116]N1为服务器线程数,他为测试程序的第一数目,X为理论CPU负载程度,X1为目标CPU负载程度,K为设定阈值。
[0117]详细地,K可以为任一正数,如5%、10%等。
[0118]由于本发明实施例中,与控制端相连的三个服务器的线程数分别为4线程、8线程和12线程,故利用其中一个服务器所建立的测试环境的理论CPU负载程度与相应目标CPU负载程度的差值可以不大于10%。此外,为保证经软件测试人员进行验证后的测试软件能够在用户端服务器上正常运行,一般选择理论(PU负载程度不小于目标CPU负载程度。
[0119]因此,在本实施例中,当K = 10%时,这一CPU负载程度处理规则可以如下所示:
[0120]当Xi 彡 12% 时,Ni = 8、N2 = 1;
[0121]当12%<Xi 彡 16% 时,Ni = 12、N2 = 2;
[0122]当16%<父1彡25%时,沁=4、吣=1,沁=8、吣=2或沁=12、吣=3;
[0123]当25%<Xi 彡 33% 时,Ni = 12、N2 = 4;
[0124]当33%<Xi 彡 37% 时,Ni = 8、N2 = 3;
[0125]当37%<Xi 彡 41% 时,Ni = 12、N2 = 5;
[0126]当41%<Xi 彡50% 时,Ni = 4、N2 = 2,Ni = 8、N2 = 4SNi = 12、N2 = 6;
[0127]当50%<Xi 彡 58% 时,Ni = 12、N2 = 7;
[0128]当58%<Xi 彡 62% 时,Ni = 8、N2 = 5;
[0129]当62%<Xi 彡 66% 时,Ni = 12、N2 = 8;
[0130]当66%<Xi 彡75% 时,Ni = 4、N2 = 3,Ni = 8、N2 = 6SNi = 12、N2 = 9;
[0131]当75%<Xi 彡83% 时,Ni = 12、N2 = 10;
[0132]当83%<Xi 彡 87% 时,Ni = 8、N2 = 7;
[0133]当87%<Xi 彡91%时,Ni = 12、N2 = 11。
[0134]在本发明一个实施例中,利用特定线程数的服务器运行特定数目的测试程序,可以制造特定的CPU负载程度。为了保证制造的这一特定CPU负载程度能够稳定,以便于目标软件的准确测试和测试中所出现问题的准确定位,这一测试程序可以为包括死循环语句的测试程序。
[0135]在本发明一个实施例中,包括死循环语句的测试程序可以通过C语言编写而成,且理论上可通过运行死循环语句以造成单线程CPU负载达到100%,且利用多线程服务器运行多个测试程序时,所整体造成的CPU负载可以平均分配至每一个线程。
[0136]详细地,死循环语句可以包括while(l);语句、for(;;;);语句、do() {}while(I);语句中的任意一种。
[0137]在本发明一个实施例中,以whiIe(I)为例,包括死循环语句的测试程序的一种实现代码可以如下所示:
[0138]#include〈stud1.h>
[0139]#include<unistd.h>
[0140]int main(int argc,char*argv[])
[0141]{
[0142]while(l)
[0143]return 0;
[0144]}
[0145]在本发明实施例中,通过运行测试程序中的死循环语句,可以建立稳定的CHJ负载,便于目标软件的稳定测试,且易于对软件测试过程中出现的异常问题进行定位及解决。这一实现方式可以避免因使用测试工具所造成的CPU负载不稳定、CPU负载制造过程不循环进行、不同服务器配置下制造的负载情况不同等问题。此外,包含死循环语句的测试程序简单易编写,且运行速度快,以及基于该测试程序,能够通过调节服务器线程数和测试程序的运行个数以灵活调整(PU负载程度,从而可以提高本发明实施例的适用范围。
[0146]步骤303:控制端根据CPU负载程度处理规则,确定出目标CPU负载程度对应的服务器线程数和测试程序的第一数目。
[0147]例如,由于确定的目标CPU负载程度为60%,通过查看上述CPU负载程度处理规则,可以确定出相应的服务器线程数为8线程,且需要运行5个测试程序。利用上述4核心8线程服务器同时运行5个包含死循环语句的测试程序,理论上可以制造CPU负载程度为62.5%的测试环境,与用户端服务器的60 %这一目标CPU负载程度相接近。
[0148]步骤304:控制端生成通过启动第一数目的测试程序并运行死循环语句以测试目标软件的控制指令,并将控制指令和测试程序发送给服务器线程数对应的目标服务器。
[0149]由上可知,控制端可以确定目标服务器为4核心8线程服务器。控制端可以生成一个控制指令,以命令该目标服务器同时运行5个包含死循环语句的测试程序以测试目标软件。因此,控制端可以生成通过启动5个测试程序并运行测试程序中的死循环语句以测试目标软件的控制指令,并将该控制指令发送给目标服务器:4核心8线程服务器。
[0150]由于测试程序占用空间极小,故在本发明实施例中,控制端在将控制指令发送给目标服务器时,可以将预先确定的包含死循环语句的测试程序同时发送给目标服务器。
[0151]当然,在本发明一个实施例中,同样可以在每一个服务器中均预先安装包含死循环语句的测试程序,并在有需要时进行调用即可,而无需由控制端发送给目标服务器。
[0152]步骤305:4核心8线程服务器在接收到控制端发来的控制指令和测试程序时,利用gcc test.c-o test编译测试程序,并在编译完成时输入./test。
[0153]在本发明实施例中,由于目标服务器:4核心8线程服务器的操作系统为Linux操作系统,故服务器在接收到控制端发来的控制指令和测试程序时,可以利用gcc test.c-otest编译测试程序,并在编译完成时于命令行窗口中执行./test,并继续执行当前流程以运行编译后的测试程序。
[0154]此外,在本发明一个实施例中,当目标服务器的操作系统为Windows操作系统时,可以利用vi sual stud1编译测试程序,生成test.exe文件,并继续执行当前流程,以运行该test.exe文件。
[0155]步骤306:4核心8线程服务器在Linux操作系统下通过执行控制指令,以启动第一数目的编译后的测试程序并运行测试程序中的死循环语句,建立测试环境。
[0156]理论上来说,服务器通过启动第一数目的测试程序,可以产生一定程度的CHJ负载,且该CPU负载可以平均分配在每一个服务器线程上。因此,4核心8线程服务器通过启动5个测试程序并运行测试程序中的死循环语句,可以建立一个理论CPU负载程度为62.5%的测试环境,这一测试环境与用户端服务器的日常运行环境相接近,在该测试环境中测试目标软件可以达到在用户端服务器运行目标软件基本相同的效果。
[0157]此外,由于用户访问量、内存、磁盘空间、网络带宽等因素同样会影响所创建的测试环境的稳定性和实际负载程度,故在本发明实施例中,可以将这些影响因素设置为标准值,或与用户端服务器的日常运行环境相接近的实际值。
[0158]步骤307:4核心8线程服务器利用测试环境测试预先确定的目标软件。
[0159]在本发明一个实施例中,目标服务器中预先确定的目标软件,可以为控制端发来的软件。例如,控制端确定目标软件,以及在确定出需要向4核心8线程服务器发送控制指令和测试程序时,同时将确定的目标软件发送给该目标服务器。
[0160]4核心8线程服务器利用上述建立的测试环境,可以测试目标软件。若目标软件在该测试环境下运行正常,则说明其在用户端服务器的日常应用中通常同样可以正常运行。若目标软件在该测试环境下运行异常,则工作人员可以针对异常问题进行调试、debug处理以解除异常,解除异常后的目标软件同样可以在用户端服务器的日常应用中正常运行。
[0161]在本发明一个实施例中,针对软件开发过程来说,同样可以利用本发明实施例提供的软件测试方法,以在不同阶段CHJ负载程度下均对该开发软件进行测试,以检测开发软件在不同CPU负载程度下的运行情况是否正常,从而定位异常运行问题、解决异常运行问题及明确运行开发软件的极限CPU负载程度。
[0162]由上可知,在本发明实施例中,控制端可以根据用户端服务器的实际运行情况,命令具有特定线程数的服务器运行特定数目的包括死循环语句的测试程序,以建立稳定地预期测试环境进行软件测试,从而可以达到与在用户端服务器运行目标软件相类似的实现效果。通过对软件测试的运行情况进行考察,并对异常运行问题进行解决,有益于保证目标软件能够在用户端服务器上正常运行。此外,这一软件测试实现方式可以自动进行,应用灵活且易于实现。
[0163]如图4所示,本发明一个实施例提供了一种控制端40,预先与至少一个服务器50相连,包括:
[0164]第一确定单元401,用于确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则,以及确定包括死循环语句的测试程序;
[0165]处理单元402,用于根据所述CPU负载程度处理规则,确定出所述目标CPU负载程度对应的服务器线程数和所述测试程序的第一数目;
[0166]生成单元403,用于生成通过启动第一数目的所述测试程序并运行所述死循环语句以测试所述目标软件的控制指令;
[0167]发送单元404,用于将所述控制指令发送给所述服务器线程数对应的目标服务器。
[0168]在本发明的一个实施例中,所述控制端40可以为服务器。
[0169]在本发明的一个实施例中,所述第一确定单元401,具体用于获取包括while(l);语句、for(;;;);语句、doOUwhiled);语句中的任意一种死循环语句的测试程序。
[0170]在本发明的一个实施例中,所述第一确定单元401,具体用于确定包括每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目的CPU负载程度处理规则,且所述服务器线程数和所述测试程序的第一数目符合下述条件:
[0171]O 彡(X-Xi)彡 K,其中,X = N2/Ni,
[0172]见为所述服务器线程数,犯为所述测试程序的第一数目,X为理论CPU负载程度,X1为所述目标CR]负载程度,K为设定阈值。
[0173]如图5所示,本发明一个实施例提供了一种服务器50,预先与控制端40相连,包括:
[0174]第二确定单元501,用于确定目标软件和包括死循环语句的测试程序;
[0175]接收单元502,用于接收所述控制端40发来的控制指令;
[0176]测试单元503,用于通过执行所述控制指令,以启动第一数目的所述测试程序并运行所述测试程序中的死循环语句,建立测试环境;以及利用所述测试环境测试所述目标软件。
[0177]如图6所示,本发明实施例提供了一种软件测试系统,包括:上述控制端40,以及至少一个上述服务器50;
[0178]所述控制端40分别与每一个所述服务器50相连;
[0179]所述至少一个服务器50对应于至少一种服务器线程数。
[0180]在本发明一个实施例中,所述至少一个服务器50可以包括:2线程服务器、4线程服务器、8线程服务器、12线程服务器、16线程服务器、20线程服务器、24线程服务器、28线程服务器、32线程服务器、36线程服务器、40线程服务器中的任意一个或多个。
[0181]优选的,在本发明一个实施例中,所述至少一个服务器50可以包括:4线程服务器、8线程服务器、12线程服务器这三个服务器。
[0182]上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
[0183]综上所述,本发明的各个实施例至少具有如下有益效果:
[0184]1、本发明实施例中,控制端预先确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则以及确定包括死循环语句的测试程序;根据CPU负载程度处理规则,确定出目标CPU负载程度对应的服务器线程数和测试程序的第一数目;生成通过启动第一数目的测试程序并运行死循环语句以测试目标软件的控制指令,并将控制指令发送给所述服务器线程数对应的目标服务器。由于可以通过特定服务器线程数的服务器运行特定数目的包括死循环语句的测试程序,故可以建立稳定在目标CPU负载程度的测试环境,并在该测试环境下测试目标软件。因此,本发明实施例能够制造稳定的(PU负载以测试软件。
[0185]2、本发明实施例中,服务器在接收到控制端发来的控制指令时,通过执行该控制指令以启动第一数目的测试程序并运行测试程序中的死循环语句,建立测试环境;以及利用这一测试环境测试预先确定的目标软件。由于该服务器可以为控制端所确定出的具有特定服务器线程数的目标服务器,且通过执行控制端发来的控制指令,可以建立特定(PU负载程度的稳定测试环境以进行软件测试。因此,本发明实施例能够制造稳定的CPU负载以测试软件。
[0186]3、本发明实施例中,通过运行测试程序中的死循环语句,可以建立稳定的CHJ负载,便于目标软件的稳定测试,且易于对软件测试过程中出现的异常问题进行定位及解决。这一实现方式可以避免因使用测试工具所造成的CPU负载不稳定、CPU负载制造过程不循环进行、不同服务器配置下制造的负载情况不同等问题。此外,包含死循环语句的测试程序简单易编写,且运行速度快,以及基于该测试程序,能够通过调节服务器线程数和测试程序的运行个数以灵活调整(PU负载程度,从而可以提高本发明实施例的适用范围。
[0187]4、本发明实施例中,针对任一软件开发过程,同样可以利用本发明实施例提供的软件测试方法,以在不同阶段(PU负载程度下均对该开发软件进行测试,以检测开发软件在不同CPU负载程度下的运行情况是否正常,从而定位异常运行问题、解决异常运行问题及明确运行开发软件的极限CPU负载程度。
[0188]5、本发明实施例中,控制端可以根据用户端服务器的实际运行情况,命令具有特定线程数的服务器运行特定数目的包括死循环语句的测试程序,以建立稳定地预期测试环境进行软件测试,从而可以达到与在用户端服务器运行目标软件相类似的实现效果。通过对软件测试的运行情况进行考察,并对异常运行问题进行解决,有益于保证目标软件能够在用户端服务器上正常运行。此外,这一软件测试实现方式可以自动进行,应用灵活且易于实现。
[0189]需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个......”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
[0190]本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
[0191]最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
【主权项】
1.一种软件测试方法,其特征在于,应用于控制端,预先与至少一个服务器相连;预先确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则,以及确定包括死循环语句的测试程序,还包括: 根据所述CHJ负载程度处理规则,确定出所述目标CPU负载程度对应的服务器线程数和所述测试程序的第一数目; 生成通过启动第一数目的所述测试程序并运行所述死循环语句以测试所述目标软件的控制指令; 将所述控制指令发送给所述服务器线程数对应的目标服务器。2.根据权利要求1所述的方法,其特征在于, 所述死循环语句包括:while(l);语句、for(;;;);语句、do() {}while( I);语句中的任意一种。3.根据权利要求1或2所述的方法,其特征在于, 所述CHJ负载程度处理规则,包括:每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,且所述服务器线程数和所述测试程序的第一数目符合下述条件: O 彡(X-Xi)彡 K,其中,X = N^N1, 犯为所述服务器线程数,犯为所述测试程序的第一数目,X为理论CPU负载程度,X1为所述目标CPU负载程度,K为设定阈值。4.根据权利要求3所述的方法,其特征在于, 所述K包括:10%; 所述每一个目标CPU负载程度对应的服务器线程数和测试程序的第一数目,包括: 当 Xi 彡 12% 时,Ni = 8、N2=1; 当 12%<Xi 彡 16% 时,Ni=12、N2 = 2; 当16%<父1彡25%时小1 = 4、吣=1,沁=8、吣=2或沁=12、吣=3; 当 25%<Xi 彡 33% 时,Ni=12、N2 = 4; 当 33%<Xi 彡 37% 时,Ni = 8、N2 = 3; 当 37%<Xi 彡 41% 时,Ni=12、N2 = 5; 当41%<父土彡50%时,沁=4、吣=2,沁=8、吣=4或沁=12、吣=6; 当 50%<Xi 彡 58% 时,Ni=12、N2 = 7; 当 58%<Xi 彡 62% 时,Ni = 8、N2 = 5; 当 62%<Xi 彡 66% 时,Ni=12、N2 = 8; 当66%<父土彡75%时,沁=4、吣=3,沁=8、吣=6或沁=12、吣=9; 当 75%<Xi 彡 83% 时,Ni=12、N2=10; 当 83%<Xi 彡 87% 时,Ni = 8、N2 = 7; 当 87%<Xi 彡 91%时,Ni=12、N2=11。5.—种软件测试方法,其特征在于,应用于服务器,预先与控制端相连,预先确定目标软件和包括死循环语句的测试程序,还包括: 接收所述控制端发来的控制指令; 通过执行所述控制指令,以启动第一数目的所述测试程序并运行所述测试程序中的死循环语句,建立测试环境; 利用所述测试环境测试所述目标软件。6.根据权利要求5所述的方法,其特征在于, 所述服务器的操作系统包括:Linux操作系统; 在所述启动第一数目的所述测试程序之前,进一步包括:利用gcc test.c-ο test编译所述测试程序;输入./test,以及继续执行当前流程; 所述启动第一数目的所述测试程序,包括:在所述Linux操作系统下,启动第一数目的编译后的所述测试程序; 或, 所述服务器的操作系统包括= Windows操作系统; 在所述启动第一数目的所述测试程序之前,进一步包括:利用visual stud1编译所述测试程序,生成test.exe文件,以及继续执行当前流程; 所述启动第一数目的所述测试程序,包括:在所述Windows操作系统下,通过运行所述test.exe文件,启动第一数目的编译后的所述测试程序。7.一种控制端,其特征在于,预先与至少一个服务器相连,包括: 第一确定单元,用于确定目标软件对应的目标CPU负载程度,确定CPU负载程度处理规则,以及确定包括死循环语句的测试程序; 处理单元,用于根据所述CPU负载程度处理规则,确定出所述目标CPU负载程度对应的服务器线程数和所述测试程序的第一数目; 生成单元,用于生成通过启动第一数目的所述测试程序并运行所述死循环语句以测试所述目标软件的控制指令; 发送单元,用于将所述控制指令发送给所述服务器线程数对应的目标服务器。8.根据权利要求7所述的控制端,其特征在于, 所述第一确定单元,具体用于获取包括while(l);语句、for(;;;);语句、do() {}while(I);语句中的任意一种死循环语句的测试程序; 和/或, 所述第一确定单元,具体用于确定包括每一个目标CHJ负载程度对应的服务器线程数和测试程序的第一数目的CPU负载程度处理规则,且所述服务器线程数和所述测试程序的第一数目符合下述条件: O彡(X-Xi)彡 K,其中,X = N^N1, 犯为所述服务器线程数,犯为所述测试程序的第一数目,X为理论CPU负载程度,X1为所述目标CPU负载程度,K为设定阈值。9.一种服务器,其特征在于,预先与控制端相连,包括: 第二确定单元,用于确定目标软件和包括死循环语句的测试程序; 接收单元,用于接收所述控制端发来的控制指令; 测试单元,用于通过执行所述控制指令,以启动第一数目的所述测试程序并运行所述测试程序中的死循环语句,建立测试环境;以及利用所述测试环境测试所述目标软件。10.—种软件测试系统,其特征在于,包括:如权利要求7或8所述的控制端,以及至少一个如权利要求9所述的服务器; 所述控制端分别与每一个所述服务器相连;所述至少一个服务器对应于至少一种服务器线程数。
【文档编号】G06F11/36GK106055477SQ201610375695
【公开日】2016年10月26日
【申请日】2016年5月31日
【发明人】赵慧
【申请人】浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1