[发明专利]测试用例选择方法和装置在审
| 申请号: | 201810102858.7 | 申请日: | 2018-02-01 |
| 公开(公告)号: | CN110109816A | 公开(公告)日: | 2019-08-09 |
| 发明(设计)人: | 柴东;贺竞;蒋华平;赵华 | 申请(专利权)人: | 华为技术有限公司 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 北京中博世达专利商标代理有限公司 11274 | 代理人: | 申健 |
| 地址: | 518129 广东*** | 国省代码: | 广东;44 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 测试 测试用例选择 方法和装置 程序调用 函数向量 有向图 导出 向量 源代码 程序运行 静态编译 软件测试 选择测试 基本块 插桩 申请 解析 自动化 变更 应用 | ||
本申请公开了一种测试用例选择方法和装置,涉及软件测试领域,用于提高测试用例选择精度。测试用例选择方法,包括:对包含插桩的程序运行全部测试用例并解析,得到测试用例函数向量;对程序的源代码进行静态编译和解析,得到程序调用有向图;从程序调用有向图中得到发生变更的函数或基本块的顶点导出子图;根据测试用例函数向量与顶点导出子图得到测试用例子图向量;从测试用例子图向量中的测试用例中选择测试用例。本申请实施例应用于自动化精准测试。
技术领域
本申请涉及软件测试领域,尤其涉及一种测试用例选择方法和装置。
背景技术
在软件工程中,测试者通过测试用例(例如设定一定条件或输入变量)来测试应用软件或软件系统是否正确工作。现有技术中一种方式通过运行全部测试用例来进行测试,但是这种方式对于软件系统较大时耗时较长。另一种方式为自动化精准测试,具体的是通过优选部分测试用例来进行测试,通常以测试用例对发生变更的函数的覆盖范围为选择条件,但是这种方式仅考虑了发生变更的函数对测试结果的影响,还有其他函数会调用这些发生变更的函数,这些函数同样会对测试结果产生影响。
发明内容
本申请实施例提供一种测试用例选择方法和装置,用于提高测试用例选择精度。
为达到上述目的,本申请的实施例采用如下技术方案:
第一方面,提供了一种测试用例选择方法,该方法包括:对包含插桩的程序运行全部测试用例并解析,得到测试用例函数向量,其中,测试用例函数向量包括全部测试用例对程序中函数和基本块的覆盖范围;对程序的源代码进行静态编译和解析,得到程序调用有向图,程序调用有向图包括程序中函数和基本块相互之间的静态调用关系;从程序调用有向图中得到发生变更的函数或基本块的顶点导出子图,顶点导出子图中包括发生变更的函数或基本块、与发生变更的函数或基本块之间有静态调用关系的函数或基本块;根据测试用例函数向量与顶点导出子图得到测试用例子图向量,其中,测试用例子图向量中包括覆盖顶点导出子图中的函数或基本块的测试用例;从测试用例子图向量中的测试用例中选择测试用例。本申请提供的测试用例选择方法,以对程序的源代码进行静态分析为主,结合图论得到发生变更的函数或基本块的顶点导出子图;对包含插桩的程序进行动态分析为辅,得到测试用例与函数的覆盖关系,再结合顶点导出子图得到覆盖发生变更的函数或基本块、与所述发生变更的函数或基本块之间有静态调用关系的函数或基本块的测试用例,最后再从中优选测试用例,使得最终选择的测试用例能够仅覆盖发生变更的函数或基本块以及与发生变更的函数或基本块之间有静态调用关系的函数或基本块,因此提高了测试用例选择精度。
在一种可能的设计中,根据测试用例函数向量与顶点导出子图得到测试用例子图向量,包括:从顶点导出子图中,去掉测试用例函数向量中的测试用例不能覆盖的函数或基本块,以得到测试用例子图向量。该设计使得顶点导出子图中去掉了测试用例不能覆盖的函数或基本块。
在一种可能的设计中,从测试用例子图向量中的测试用例中选择测试用例,包括:A:从测试用例子图向量中的测试用例中随机选择覆盖率最大的测试用例,其中,覆盖率指覆盖测试用例子图向量中的函数或基本块的比率;B:从剩余测试用例中选择额外增益最大的测试用例,其中,额外增益指在步骤A基础上有助于增加覆盖率;C:如果额外增益为0,则跳转到步骤A;如果额外增益不为0,则跳转到步骤B,直到满足预设条件。该设计使得最终选择的测试用例是最优的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810102858.7/2.html,转载请声明来源钻瓜专利网。





