掌桥专利:专业的专利平台
掌桥专利
首页

对计算机程序进行测试的方法和设备

文献发布时间:2023-06-19 12:10:19


对计算机程序进行测试的方法和设备

技术领域

本发明涉及程序测试技术领域,具体涉及对计算机程序进行测试的方法和设备。

背景技术

随着信息化技术与人类社会的不断结合,人类与软件之间也越来越密不可分。而自从软件问世以来,其质量问题一直是困扰人们的一大难题,每年因为软件质量造成的损失更是数以亿万计。为此,众多研究者们不断探索,希望找到一种切实有效的测试方法。

在中国专利申请号为CN105512045A的专利文件中公开了《一种应用程序的测试方法、装置及测试设备》,上述专利文件所提供的测试方法、装置及测试设备虽然具有一定的程序测试功能,但是其检测软件缺陷的效率不佳,同时,具有较大的时间开销,无法满足使用者的使用需求。

综上所述,研发对计算机程序进行测试的方法和设备,仍是程序测试技术领域中急需解决的关键问题。

发明内容

针对现有技术所存在的上述缺点,本发明在于提供对计算机程序进行测试的方法和设备,本发明随机生成大量的测试用例并执行,通过获取它们的分支覆盖信息,之后在回归测试中,进行挑选测试用例,提高了检测软件缺陷的效率,同时,在不降低检测效果的情况下,具有较少的时间开销。

为实现上述目的,本发明提供了如下技术方案:

对计算机程序进行测试的设备,包括:

程序读取单元,所述程序读取单元用于读取任意面向对象类型程序,并对读取的待测程序的类信息进行存储。

配置参数单元,所述配置参数单元用于面向对象程序配置对象信息,所述配置参数单元与程序读取单元电性连接。

运算单元,所述运算单元用于生成边缘测试用例以及执行候选测试用例,挑选测试用例并执行,得到的测试结果,所述运算单元与配置参数单元电性连接。

结果输出模块,所述结果输出模块用于获取测试的实验结果,并输出测试结果,所述结果输出模块与运算单元电性连接。

本发明进一步设置为:所述程序读取单元包括程序写入模块、程序读取模块和信息存储模块,其中,

所述程序写入模块用于测试人员输入待测程序的类信息。

所述程序读取模块用于读取写入的待测程序的类信息,所述程序读取模块与程序写入模块电性连接。

所述信息存储模块用于存储待测程序的类信息,并以XML文件形式进行存储,所述信息存储模块与程序读取模块电性连接。

本发明进一步设置为:所述配置参数单元包括结构识别模块、第一试用例生成模块和参数赋值模块,其中,

所述结构识别模块用于生成边缘测试用例,所述边缘测试用例与结构识别模块电性连接。

所述参数赋值模块用于向对象中的成员进行赋值,所述参数赋值模块与第一试用例生成模块电性连接。

本发明进一步设置为:所述运算单元包括执行模块、判定模块和第二试用例生成模块,其中,

所述执行模块用于执行测试用例。

所述判定模块用于验证执行结果,判定是否终止执行,所述判定模块与执行模块电性连接。

所述第二试用例生成模块用于挑选下一个测试用例,所述第二试用例生成模块与执行模块和判定模块均电性连接。

对计算机程序进行测试的方法,包括以下步骤:

S1、测试人员输入待测程序的类信息,并将待测程序的类信息保存配置到XML文件中。

S2、根据范围以及面向对象测试用例的结构,在输入域中生成一个边缘测试用例。

S3、通过类的构造函数生成实例,利用随机函数为对象中的成员进行赋值。

S4、执行测试用例并验证结果是否满足终止条件。

S5、在执行完第一个随机的测试用例后,若未满足终止条件则进行挑选下一个测试用例,直到终止条件满足为止。

S6、在对程序测试结束后,记录相应测试结果,将结果统计并保存。

本发明进一步设置为:所述终止条件为当己执行测试用例集中的测试用例数达到预定的上限。

本发明进一步设置为:在所述步骤S1中,所述待测程序的类信息包括当前类是否为基类或当前类所继承的类的信息,以及当前类的基本成员信息。

本发明进一步设置为:在所述步骤S5中,进行挑选下一个测试用例,包括以下步骤:

S501、根据被测程序随机生成一定数量的测试用例,执行测试用例,并获得语句覆盖率和分支覆盖率信息,将测试用例保存在集合E中。

S502、利用执行过的相同的测试用例进行回归测试。

S503、从测试用例中随机挑选一个进行测试,并将机挑选的进行测试添加到己执行测试用例集TS中,若未满足终止条件则根据该测试用例生成概率密度函数。

S504、利用逆变换法k次得到k个值,从集合TS中选择与这k个值最为接近的k个测试用例,将它们添加到候选测试用例集TC中。

S505、从TC中挑选出相应的测试用例作为下一个执行的测试用例并添加到集合TS中。

本发明进一步设置为:在所述步骤S505中,根据分支覆盖率进行挑选测试用例。

本发明进一步设置为:在所述步骤S505中,所述分支覆盖率挑选测试用例的方法为:

计算k个测试用例到TS集合的距离;记录其中的最短距离,并以最短距离最大的作为下一个测试用例。

有益效果

采用本发明提供的技术方案,与已知的公有技术相比,具有如下有益效果:

本发明由程序读取单元输入待测程序的类信息,并将待测程序的类信息保存配置到XML文件中,再由配置参数单元生成一个边缘测试用例,并为对象中的成员进行赋值,运算单元执行测试用例并验证结果是否满足终止条件,通过判定当己执行测试用例集中的测试用例数达到预定的上限,确定是否终止,在不终止时,进行挑选下一个测试用例,直到终止条件满足为止,由结果输出模块输出测试结果,随机生成大量的测试用例并执行,通过获取它们的分支覆盖信息,之后在回归测试中,进行挑选测试用例,从而进一步提高检测软件缺陷的效率,同时在输入域边缘生成一个测试用例,利用面向对象测试用例间的距离,通过距离生成概率密度函数,从而能够挑选测试用例进行测试,实现了在面向对象程序中的应用,在不降低检测效果的情况下,具有较少的时间开销。

附图说明

图1为对计算机程序进行测试的设备的系统图;

图2为对计算机程序进行测试的设备中程序读取单元内部的系统图;

图3为对计算机程序进行测试的设备中配置参数单元内部的系统图;

图4为对计算机程序进行测试的设备中运算单元内部的系统图;

图5为对计算机程序进行测试的方法的流程图。

图中标号说明:

1、程序读取单元;101、程序写入模块;102、程序读取模块;103、信息存储模块;2、配置参数单元;201、结构识别模块;202、第一试用例生成模块;203、参数赋值模块;3、运算单元;301、执行模块;302、判定模块;303、第二试用例生成模块;4、结果输出模块。

具体实施方式

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

在本发明的描述中,需要说明的是,术语“上”、“下”、“内”、“外”、“顶/底端”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“设置有”、“套设/接”、“连接”等,应做广义理解,例如“连接”,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通;对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

实施例1:

请参照图1-4所示,对计算机程序进行测试的设备,包括:

程序读取单元1,程序读取单元1用于读取任意面向对象类型程序,并对读取的待测程序的类信息进行存储。

配置参数单元2,配置参数单元2用于面向对象程序配置对象信息,配置参数单元2与程序读取单元1电性连接。

运算单元3,运算单元3用于生成边缘测试用例以及执行候选测试用例,挑选测试用例并执行,得到的测试结果,运算单元3与配置参数单元2电性连接。

结果输出模块4,结果输出模块4用于获取测试的实验结果,并输出测试结果,结果输出模块4与运算单元3电性连接。

本发明由程序读取单元1输入待测程序的类信息,并将待测程序的类信息保存配置到XML文件中,再由配置参数单元2生成一个边缘测试用例,并为对象中的成员进行赋值,运算单元3执行测试用例并验证结果是否满足终止条件,通过判定当己执行测试用例集中的测试用例数达到预定的上限,确定是否终止,在不终止时,进行挑选下一个测试用例,直到终止条件满足为止,由结果输出模块4输出测试结果,提高了检测软件缺陷的效率,在不降低检测效果的情况下,具有较少的时间开销。

程序读取单元1包括程序写入模块101、程序读取模块102和信息存储模块103,其中,

程序写入模块101用于测试人员输入待测程序的类信息。

程序读取模块102用于读取写入的待测程序的类信息,程序读取模块102与程序写入模块101电性连接。

信息存储模块103用于存储待测程序的类信息,并以XML文件形式进行存储,信息存储模块103与程序读取模块102电性连接。

本发明由程序写入模块101输入待测程序的类信息,再由程序读取模块102读取写入的待测程序的类信息,将读取的待测程序的类信息存储到信息存储模块103内,采用XML文件形式进行存储,能够方便下次进行读取,减少了系统的运行占用空间。

配置参数单元2包括结构识别模块201、第一试用例生成模块202和参数赋值模块203,其中,

结构识别模块201用于识别测试用例的结构。

第一试用例生成模块202用于生成边缘测试用例,边缘测试用例与结构识别模块201电性连接。

参数赋值模块203用于向对象中的成员进行赋值,参数赋值模块203与第一试用例生成模块202电性连接。

本发明结构识别模块201根据范围以及面向对象测试用例的结构,识别测试用例的结构,由第一试用例生成模块202在输入域中生成一个边缘测试用例,由参数赋值模块203通过类的构造函数生成实例,利用随机函数为对象中的成员进行赋值。

运算单元3包括执行模块301、判定模块302和第二试用例生成模块303,其中,

执行模块301用于执行测试用例。

判定模块302用于验证执行结果,判定是否终止执行,判定模块302与执行模块301电性连接。

第二试用例生成模块303用于挑选下一个测试用例,第二试用例生成模块303与执行模块301和判定模块302均电性连接。

本发明执行模块301执行测试用例,由判定模块302验证执行结果,若满足终止条件,则对程序测试结束后,记录相应测试结果,将结果统计并保存,若未满足终止条件,则第二试用例生成模块303进行挑选下一个测试用例,将挑选的测试用例重新送入执行模块301进行程序测试执行,直到终止条件满足为止。

实施例2:

在实施例1的基础上,请参照图5所示,本发明还提供了对计算机程序进行测试的方法,包括以下步骤:

步骤一、测试人员输入待测程序的类信息,并将待测程序的类信息保存配置到XML文件中。

步骤二、根据范围以及面向对象测试用例的结构,在输入域中生成一个边缘测试用例。

步骤三、通过类的构造函数生成实例,利用随机函数为对象中的成员进行赋值。

步骤四、执行测试用例并验证结果是否满足终止条件。

步骤五、在执行完第一个随机的测试用例后,若未满足终止条件则进行挑选下一个测试用例,直到终止条件满足为止。

步骤六、在对程序测试结束后,记录相应测试结果,将结果统计并保存。

终止条件为当己执行测试用例集中的测试用例数达到预定的上限。

待测程序的类信息包括当前类是否为基类或当前类所继承的类的信息,以及当前类的基本成员信息。

进行挑选下一个测试用例,包括以下步骤:

501)、根据被测程序随机生成一定数量的测试用例,执行测试用例,并获得语句覆盖率和分支覆盖率信息,将测试用例保存在集合E中。

502)、利用执行过的相同的测试用例进行回归测试。

503)、从测试用例中随机挑选一个进行测试,并将机挑选的进行测试添加到己执行测试用例集TS中,若未满足终止条件则根据该测试用例生成概率密度函数。

504)、利用逆变换法k次得到k个值,从集合TS中选择与这k个值最为接近的k个测试用例,将它们添加到候选测试用例集TC中。

505)、从TC中挑选出相应的测试用例作为下一个执行的测试用例并添加到集合TS中。

根据分支覆盖率进行挑选测试用例。

分支覆盖率挑选测试用例的方法为:

计算k个测试用例到TS集合的距离;记录其中的最短距离,并以最短距离最大的作为下一个测试用例。

本发明随机生成大量的测试用例并执行,通过获取它们的分支覆盖信息,之后在回归测试中,进行挑选测试用例,从而进一步提高检测软件缺陷的效率,同时在输入域边缘生成一个测试用例,利用面向对象测试用例间的距离,通过距离生成概率密度函数,从而能够挑选测试用例进行测试,实现了在面向对象程序中的应用,在不降低检测效果的情况下,具有较少的时间开销。

本发明的各部分可以用硬件、软件、固件或他们的组合来实现,在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现,例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不会使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

相关技术
  • 用于对待测设备进行测试的测试器、方法和计算机程序
  • 对计算机程序进行测试的方法和设备
技术分类

06120113195616