一种软件测试方法和系统的制作方法

文档序号:6500880阅读:164来源:国知局
一种软件测试方法和系统的制作方法
【专利摘要】本发明实施例公开了一种软件测试方法和系统。本发明技术方案采用在对测试对象的控件进行测试时,记录测试过程,并在发现测试对象存在缺陷时,记录发现缺陷的次数,然后根据发现缺陷的次数将测试用例移入相应的进阶测试用例库中,其中,进阶测试用例库的阶数与测试用例的执行概率成正比,从而在一定程度上可以反映出测试用例的价值,以便用户选择具有高价值的测试用例来进行测试,提高测试时发现问题的能力;而且,由于记录了测试过程,所以提供了一种可以回归验证软件缺陷的能力。
【专利说明】一种软件测试方法和系统

【技术领域】
[0001] 本发明涉及通信【技术领域】,具体涉及一种软件测试方法和系统。

【背景技术】
[0002] 随着互联网技术的飞速发展,各种软件的应用也日益繁多。每一款软件或多或少 都会存在漏洞(bug),为了进一步改善和优化这些软件,提高软件应用的稳定性,需要将这 些漏洞找出,并予于解决。
[0003] 软件测试,正是针对该问题所提出的一种方案,它可以利用测试工具按照测试方 案对软件进行功能和性能测试,并对测试方案可能出现的问题进行分析和评估。现有的软 件测试方法包括有多种形式,猴子测试(Monkey Test),即搞怪测试,就是其中的一种。在猴 子测试中,测试者可以进行各种稀奇古怪的操作模式,用以测试软件的稳定度。当前应用的 猴子测试基本上以随机性测试为主,而且,一般会采用较为复杂的测试,因为复杂的测试会 比简单的测试找到更多的漏洞。
[0004] 在对现有技术的研究和实践过程中,本发明的发明人发现,在现有的猴子测试方 法中,当发现被测试的软件存在缺陷时,无法再次通过相同的方式测试出该缺陷。此外,当 发现缺陷已经被解决时,也无法去验证该缺陷是否真的被解决了。


【发明内容】

[0005] 本发明实施例提供一种软件测试方法和系统,在发现被测试的软件存在缺陷时, 可以通过相同的方式测试出现该缺陷,并进化该相同的测试方式,而且,在发现缺陷已经被 解决时,可以验证该缺陷是否已经被解决。
[0006] 一种软件测试方法,包括:
[0007] 获取测试对象中所有控件;
[0008] 从基本测试用例库和/或进阶测试用例库中获取测试用例(Test Case);
[0009] 利用所述测试用例对所述控件进行测试,并记录测试过程;
[0010] 若发现测试对象存在缺陷,则记录发现缺陷的次数;
[0011] 根据所述发现缺陷的次数将所述测试用例移入相应的进阶测试用例库中,所述进 阶测试用例库的阶数与测试用例的执行概率成正比。
[0012] 一种软件测试系统,包括:
[0013] 控件获取单元,用于获取测试对象中所有控件;
[0014] 测试用例获取单元,用于从基本测试用例库和/或进阶测试用例库中获取测试用 例;
[0015] 测试单元,用于利用所述测试用例对所述控件进行测试;
[0016] 记录单元,用于记录测试过程,若发现测试对象存在缺陷,则记录发现缺陷的次 数;
[0017] 处理单元,用于根据所述发现缺陷的次数将所述测试用例移入相应的进阶测试用 例库中,所述进阶测试用例库的阶数与测试用例的执行概率成正比。
[0018] 本发明实施例采用在对测试对象的控件进行测试时,记录测试过程,并在发现测 试对象存在缺陷时,记录发现缺陷的次数,然后根据发现缺陷的次数将测试用例移入相应 的进阶测试用例库中,其中,进阶测试用例库的阶数与测试用例的执行概率成正比,从而在 一定程度上可以反映出测试用例的价值,以便用户选择具有高价值的测试用例来进行测 试,提高测试时发现问题的能力;而且,由于记录了测试过程,所以提供了一种可以回归验 证软件缺陷的能力,即在发现被测试的软件存在缺陷时,可以通过相同的方式测试出现该 缺陷,并进化该相同的测试方式,此外,在发现缺陷已经被解决时,还可以验证该缺陷是否 已经被解决。

【专利附图】

【附图说明】
[0019] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附 图。
[0020] 图1是本发明实施例提供的软件测试方法的流程图;
[0021] 图2是本发明实施例提供的软件测试方法的流程图;
[0022] 图3是本发明实施例提供的软件测试系统的结构示意图。

【具体实施方式】
[0023] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于 本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施 例,都属于本发明保护的范围。
[0024] 本发明实施例提供一种软件测试方法和系统。以下分别进行详细说明。
[0025] 实施例一、
[0026] 本实施例将从软件测试系统的角度进行描述。
[0027] -种软件测试方法,包括:获取测试对象中所有控件,从基本测试用例库和/或进 阶测试用例库中获取测试用例,利用该测试用例对这些控件进行测试,并记录测试过程;若 发现测试对象存在缺陷,则记录发现缺陷的次数;根据发现缺陷的次数将所述测试用例移 入相应的进阶测试用例库中,其中,进阶测试用例库的阶数与测试用例的执行概率成正比。
[0028] 如图1所示,具体流程可以如下:
[0029] 101、获取测试对象中所有控件;
[0030] 其中,测试对象具体可以为各种软件,比如客户端软件等;控件可以包括按钮控 件、静态链接控件、勾选框控件和/或列表控件等,在此不再列举。
[0031] 102、从基本测试用例库和/或进阶测试用例库中获取测试用例(Test Case);
[0032] 其中,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结 果,其可以测试某个程序路径或核实是否满足某个特定需求。
[0033] 基本测试用例库和进阶测试用例库中的测试用例是以前进行软件测试时自动保 存的测试用例,其中,基本测试用例库保存的是最基本的测试用例,而进阶测试用例库保存 的是发现了测试对象存在缺陷的测试用例,进阶测试用例库可以包括多个不同阶数的测试 用例库,不同的阶数对应不同的"发现缺陷的次数"阈值,阶数越高代表测试用例可以发现 测试对象的缺陷的次数越多。这是因为,如果测试用例测试对象存在缺陷的次数越多,就代 表该测试用例越容易发现被测试对象所存在的缺陷,也就是说,该测试用例的价值就越高, 其对应被执行的次数应该越多(即被执行的概率越高),所以,其对应的进阶测试用例库的 阶数(或者称为层次)越高。
[0034] 此外,在步骤101,即"获取测试对象中所有控件"之后,该软件测试方法还可以包 括:
[0035] 建立基本测试用例库,例如,具体可以如下:
[0036] 按照预置步长模拟点击这些控件,记录每一个步长内的点击过程,并作为测试用 例保存在基本测试用例库中。
[0037] 其中,步长指的是每个周期所能点击控件的次数,即点击周期;该步长的大小可以 根据实际应用的需求进行设置,比如,可以设置为每个点击周期为30次,等等。
[0038] 可选的,为了避免基本测试用例库中存在重复的测试用例,节省存储空间,以及提 高处理效率,在将测试用例库保存在基本测试用例库之前,还可以对测试用例作一个判断, 即判断基本测试用例库中是否存在该测试用例,若存在,则无需将该测试用例保存在基本 测试用例库中,若不存在,才将所述测试用例保存在基本测试用例库中。即:
[0039] 步骤"作为测试用例保存在基本测试用例库中"具体可以为:确定基本测试用例库 中不存在该测试用例时,将该测试用例保存在基本测试用例库中。
[0040] 103、利用测试用例对控件进行测试,并记录测试过程;
[0041] 例如,具体可以以本地日志的形式来记录测试过程,这样,既方便用户随时进行查 看,也方便系统随时进行调用。
[0042] 104、若发现测试对象存在缺陷,则记录发现缺陷的次数;
[0043] 其中,测试对象存在缺陷,指的是能被该软件测试系统明显感知为漏洞(bug)的缺 陷,比如程序崩溃等。
[0044] 105、根据发现缺陷的次数将该测试用例移入相应的进阶测试用例库中,其中,进 阶测试用例库的阶数(或者称为层数)与测试用例的执行概率成正比,具体可参见步骤102 中的说明,例如,具体可以如下:
[0045] 如果发现测试对象存在缺陷,则可以将该测试用例从基本测试用例库移入进阶1 测试用例库,即,将该测试用例加入进阶1测试用例库,并将该测试用例从基本测试用例库 删除;
[0046] 如果发现测试对象存在缺陷的次数超过第一阈值,比如5次,则可以将该测试用 例从进阶1测试用例库移入进阶2测试用例库,S卩,将该测试用例加入进阶2测试用例库, 并将该测试用例从进阶1测试用例库删除;
[0047] 如果发现测试对象存在缺陷的次数超过第二阈值,比如10次,则可以将该测试用 例从进阶2测试用例库移入进阶3测试用例库,S卩,将该测试用例加入进阶3测试用例库, 并将该测试用例从进阶2测试用例库删除;
[0048] 同理,如果发现测试对象存在缺陷的次数超过第三阈值,比如15次,则可以将该 测试用例从进阶3测试用例库移入进阶4测试用例库,S卩,将该测试用例加入进阶4测试用 例库,并将该测试用例从进阶3测试用例库删除,等等,以此类推。
[0049] 其中,进阶测试用例库的阶数可以由测试策略进行定制,而各个阶数所对应的阈 值,比如第一阈值、第二阈值和第三阈值等,可以根据实际应用的需求进行设置,在此不再 赘述。
[0050] 由上可知,本实施例采用在对测试对象的控件进行测试时,记录测试过程,并在发 现测试对象存在缺陷时,记录发现缺陷的次数,然后根据发现缺陷的次数将测试用例移入 相应的进阶测试用例库中,其中,进阶测试用例库的阶数与测试用例的执行概率成正比,从 而在一定程度上可以反映出测试用例的价值,以便用户选择具有高价值的测试用例来进行 测试,提高测试时发现问题的能力;而且,由于记录了测试过程,所以提供了一种可以回归 验证软件缺陷的能力,即在发现被测试的软件存在缺陷时,可以通过相同的方式测试出现 该缺陷,并进化该相同的测试方式,此外,在发现缺陷已经被解决时,还可以验证该缺陷是 否已经被解决。
[0051] 实施例二、
[0052] 根据实施例一所描述的方法,以下将举例作进一步详细说明。
[0053] 在本实施例中,将以进阶测试用例库的阶数具体为"3"为例进行说明,即进阶测试 用例库包括进阶1测试用例库、进阶2测试用例库和进阶3测试用例库。应当理解的是,进 阶测试用例库的阶数也可以为其他的数值,比如4、5、6、....或N,等等,其中,N可以由测试 策略进行定制,如果阶数为其他的数值,其实施与此也类似,在此不再赘述。
[0054] 如图2所示,一种软件测试方法,具体流程可以如下:
[0055] 201、软件测试系统获取测试对象中所有控件;
[0056] 其中,测试对象具体可以为各种软件,比如客户端软件等;控件可以包括按钮控 件、静态链接控件、勾选框控件和/或列表控件等,在此不再列举。
[0057] 202、软件测试系统从步骤201获取到的所有控件中随机获取一些控件,并按照预 置步长模拟点击这些控件。
[0058] 其中,步长指的是每个周期所能点击控件的次数,即点击周期;该步长的大小可以 根据实际应用的需求进行设置,比如,可以设置为每个点击周期为30次,等等。
[0059] 203、软件测试系统记录每一个步长内的点击过程,并作为测试用例保存在基本测 试用例库中。
[0060] 其中,为了避免基本测试用例库中存在重复的测试用例,节省存储空间,以及提高 处理效率,在将测试用例库保存在基本测试用例库之前,还可以对测试用例作一个判断,即 判断基本测试用例库中是否存在该测试用例,若存在,则无需将该测试用例保存在基本测 试用例库中,若不存在,才将所述测试用例保存在基本测试用例库中。
[0061] 204、若在测试过程中,软件测试系统发现测试对象存在缺陷,则将该测试用例从 基本测试用例库移入进阶1测试用例库,即,将该测试用例加入进阶1测试用例库,并将该 测试用例从基本测试用例库删除。
[0062] 其中,测试对象存在缺陷,指的是能被该软件测试系统明显感知为漏洞(bug)的缺 陷,比如程序崩溃等。
[0063] 205、若发现测试对象存在缺陷的次数超过第一阈值,比如5次,则可以将该测试 用例从进阶1测试用例库移入进阶2测试用例库,S卩,将该测试用例加入进阶2测试用例 库,并将该测试用例从进阶1测试用例库删除。
[0064] 其中,第一阈值可以根据实际应用的需求进行设置,在此不再赘述。
[0065] 206、若发现测试对象存在缺陷的次数超过第二阈值,比如10次,则将该测试用例 从进阶2测试用例库移入进阶3测试用例库,S卩,将该测试用例加入进阶3测试用例库,并 将该测试用例从进阶2测试用例库删除。
[0066] 其中,第二阈值可以根据实际应用的需求进行设置,在此不再赘述。
[0067] 需说明的是,进阶测试用例库的阶数越高代表测试用例可以发现测试对象的缺陷 的次数越多,也就是说,该测试用例的价值就越高,其对应被执行的次数应该越多(即被执 行的概率越高)。
[0068] 此后,软件测试系统就可以从基本测试用例库和/或进阶测试用例库中获取这些 保存的测试用例对测试对象进行测试,并根据测试结果及时对这些测试用例进行进化,t匕 如从基本测试用例库移入进阶测试用例库,或者从低阶数的进阶测试用例库移入高阶数的 进阶测试用例库,等等。需说明的是,本发明实施例中所举例的"测试用例进入基本测试用 例库"的步骤(步骤202和203)为可选步骤,应当理解的是,也可以直接从基本测试用例库 和/或进阶测试用例库中获取之前保存的测试用例对测试对象进行测试,其后续步骤的执 行与此类似,在此不再赘述。
[0069] 此外,还需说明的是,每个阶段的测试过程可以以本地日志的形式记录下来,这 样,既方便用户随时进行查看,也方便系统随时进行调用。
[0070] 由上可知,本实施例的软件测试系统采用在对测试对象的控件进行测试时,以本 地日志的形式记录测试过程,并在发现测试对象存在缺陷时,记录发现缺陷的次数,然后根 据发现缺陷的次数将测试用例移入相应的进阶测试用例库中,其中,进阶测试用例库的阶 数与测试用例的执行概率成正比,从而在一定程度上可以反映出测试用例的价值,以便用 户选择具有高价值的测试用例来进行测试,提高测试时发现问题的能力;而且,由于记录了 测试过程,所以提供了一种可以回归验证软件缺陷的能力,即在发现被测试的软件存在缺 陷时,可以通过相同的方式测试出现该缺陷,并进化该相同的测试方式,此外,在发现缺陷 已经被解决时,还可以验证该缺陷是否已经被解决。
[0071] 实施例三、
[0072] 为了更好地实施以上方法,本发明实施例还提供一种软件测试系统,如图3所示, 该软件测试系统包括控件获取单元301、测试用例获取单元302、测试单元303、记录单元 304和处理单元305 ;
[0073] 控件获取单元301,用于获取测试对象中所有控件;
[0074] 其中,测试对象具体可以为各种软件,比如客户端软件等;控件可以包括按钮控 件、静态链接控件、勾选框控件和/或列表控件等,在此不再列举。
[0075] 测试用例获取单元302,用于从基本测试用例库和/或进阶测试用例库中获取测 试用例;
[0076] 其中,基本测试用例库和进阶测试用例库中的测试用例是以前进行软件测试时自 动保存的测试用例,其中,基本测试用例库保存的是最基本的测试用例,而进阶测试用例库 保存的是发现了测试对象存在缺陷的测试用例,进阶测试用例库可以包括多个不同阶数的 测试用例库,不同的阶数对应不同的"发现缺陷的次数"阈值,阶数越高代表测试用例可以 发现测试对象的缺陷的次数越多。这是因为,如果测试用例测试对象存在缺陷的次数越多, 就代表该测试用例越容易发现被测试对象所存在的缺陷,也就是说,该测试用例的价值就 越高,其对应被执行的次数应该越多(即被执行的概率越高),所以,其对应的进阶测试用例 库的阶数(或者称为层次)越高。
[0077] 测试单元303,用于利用测试用例对这些控件进行测试;
[0078] 例如,测试单元303,具体可以从获取到的所有控件中随机获取一些控件,并利用 测试用例对这些控件进行测试。
[0079] 记录单元304,用于记录测试过程,若发现测试对象存在缺陷,则记录发现缺陷的 次数;
[0080] 例如,记录单元304具体可以以本地日志的形式来记录测试过程,这样,既方便用 户随时进行查看,也方便系统随时进行调用。
[0081] 其中,测试对象存在缺陷,指的是能被该软件测试系统明显感知为漏洞(bug)的缺 陷,比如程序崩溃等。
[0082] 处理单元305,用于根据发现缺陷的次数将测试用例移入相应的进阶测试用例库 中。
[0083] 其中,进阶测试用例库的阶数与测试用例的执行概率成正比。例如,具体可以如 下:
[0084] 如果发现测试对象存在缺陷,则可以将该测试用例从基本测试用例库移入进阶1 测试用例库,即,将该测试用例加入进阶1测试用例库,并将该测试用例从基本测试用例库 删除;
[0085] 如果处理单元305发现测试对象存在缺陷的次数超过第一阈值,比如5次,则处理 单元305可以将该测试用例从进阶1测试用例库移入进阶2测试用例库,S卩,将该测试用例 加入进阶2测试用例库,并将该测试用例从进阶1测试用例库删除;
[0086] 如果处理单元305发现测试对象存在缺陷的次数超过第二阈值,比如10次,则处 理单元305可以将该测试用例从进阶2测试用例库移入进阶3测试用例库,S卩,将该测试用 例加入进阶3测试用例库,并将该测试用例从进阶2测试用例库删除;
[0087] 同理,如果处理单元305发现测试对象存在缺陷的次数超过第三阈值,比如15次, 则处理单元305可以将该测试用例从进阶3测试用例库移入进阶4测试用例库,S卩,将该测 试用例加入进阶4测试用例库,并将该测试用例从进阶3测试用例库删除,等等,以此类推。
[0088] 其中,进阶测试用例库的阶数可以由测试策略进行定制,而各个阶数所对应的阈 值,比如第一阈值、第二阈值和第三阈值等,可以根据实际应用的需求进行设置,在此不再 赘述。
[0089] 此外,该软件测试系统还可以包括保存单元;
[0090] 保存单元,可以用于按照预置步长模拟点击所述控件,记录每一个步长内的点击 过程,并作为测试用例保存在基本测试用例库中。
[0091] 其中,步长指的是每个周期所能点击控件的次数,即点击周期;该步长的大小可以 根据实际应用的需求进行设置,比如,可以设置为每个点击周期为30次,等等。
[0092] 可选的,为了避免基本测试用例库中存在重复的测试用例,节省存储空间,以及提 高处理效率,在将测试用例库保存在基本测试用例库之前,还可以对测试用例作一个判断, 即判断基本测试用例库中是否存在该测试用例,若存在,则无需将该测试用例保存在基本 测试用例库中,若不存在,才将所述测试用例保存在基本测试用例库中。即:
[0093] 该保存单元,具体可以用于确定基本测试用例库中不存在该测试用例时,将该测 试用例保存在基本测试用例库中。
[0094] 具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作 为同一或若干个实体来实现,在此不再赘述。
[0095] 该软件测试系统具体可以集成在个人计算机等设备。
[0096] 由上可知,本实施例的软件测试系统采用在测试单元303对测试对象的控件进行 测试时,由记录单元304记录测试过程,并在发现测试对象存在缺陷时,记录发现缺陷的次 数,然后由处理单元305根据发现缺陷的次数将测试用例移入相应的进阶测试用例库中, 其中,进阶测试用例库的阶数与测试用例的执行概率成正比,从而在一定程度上可以反映 出测试用例的价值,以便用户选择具有高价值的测试用例来进行测试,提高测试时发现问 题的能力;而且,由于记录了测试过程,所以提供了一种可以回归验证软件缺陷的能力,即 在发现被测试的软件存在缺陷时,可以通过相同的方式测试出现该缺陷,并进化该相同的 测试方式,此外,在发现缺陷已经被解决时,还可以验证该缺陷是否已经被解决。
[0097] 本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可 以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存 储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM, Random Access Memory)、磁盘或光盘等。
[0098] 以上对本发明实施例所提供的一种软件测试方法和系统进行了详细介绍,本文中 应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助 理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具 体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明 的限制。
【权利要求】
1. 一种软件测试方法,其特征在于,包括: 获取测试对象中所有控件; 从基本测试用例库和/或进阶测试用例库中获取测试用例; 利用所述测试用例对所述控件进行测试,并记录测试过程; 若发现测试对象存在缺陷,则记录发现缺陷的次数; 根据所述发现缺陷的次数将所述测试用例移入相应的进阶测试用例库中,所述进阶测 试用例库的阶数与测试用例的执行概率成正比。
2. 根据权利要求1所述的方法,其特征在于,所述获取测试对象中所有控件之后,还包 括: 按照预置步长模拟点击所述控件; 记录每一个步长内的点击过程,并作为测试用例保存在基本测试用例库中。
3. 根据权利要求2所述的方法,其特征在于,所述作为测试用例保存在基本测试用例 库中具体为: 确定基本测试用例库中不存在所述测试用例时,将所述测试用例保存在基本测试用例 库中。
4. 根据权利要求1至3任一项所述的方法,其特征在于,所述记录测试过程,包括: 以本地日志的形式记录测试过程。
5. 根据权利要求1至3任一项所述的方法,其特征在于,所述控件包括: 按钮控件、静态链接控件、勾选框控件和/或列表控件。
6. -种软件测试系统,其特征在于,包括: 控件获取单元,用于获取测试对象中所有控件; 测试用例获取单元,用于从基本测试用例库和/或进阶测试用例库中获取测试用例; 测试单元,用于利用所述测试用例对所述控件进行测试; 记录单元,用于记录测试过程,若发现测试对象存在缺陷,则记录发现缺陷的次数; 处理单元,用于根据所述发现缺陷的次数将所述测试用例移入相应的进阶测试用例库 中,所述进阶测试用例库的阶数与测试用例的执行概率成正比。
7. 根据权利要求6所述的软件测试系统,其特征在于,还包括保存单元; 保存单元,用于按照预置步长模拟点击所述控件,记录每一个步长内的点击过程,并作 为测试用例保存在基本测试用例库中。
8. 根据权利要求7所述的软件测试系统,其特征在于, 所述保存单元,具体用于确定基本测试用例库中不存在所述测试用例时,将所述测试 用例保存在基本测试用例库中。
9. 根据权利要求6至8任一项所述的软件测试系统,其特征在于, 记录单元,具体用于以本地日志的形式记录测试过程。
10. 根据权利要求6至8任一项所述的软件测试系统,其特征在于,所述控件包括: 按钮控件、静态链接控件、勾选框控件和/或列表控件。
【文档编号】G06F11/36GK104063307SQ201310088226
【公开日】2014年9月24日 申请日期:2013年3月19日 优先权日:2013年3月19日
【发明者】徐志广, 李叶 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1