[发明专利]一种基于关键点引导的数据流测试方法及其测试系统在审
申请号: | 201610956731.2 | 申请日: | 2016-11-03 |
公开(公告)号: | CN107656863A | 公开(公告)日: | 2018-02-02 |
发明(设计)人: | 蒲戈光;苏亭;张枨宇;武轲;姚银波;周寒茹 | 申请(专利权)人: | 华东师范大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 上海麦其知识产权代理事务所(普通合伙)31257 | 代理人: | 董红曼 |
地址: | 200062 上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 关键 引导 数据流 测试 方法 及其 系统 | ||
技术领域
本发明涉及计算机软件测试领域,具体涉及一种基于关键点引导的数据流测试方法及其测试系统。
背景技术
随着互联网的发展,计算机在各行各业中的应用逐步深入。计算机软件不但在大型的商业系统中发挥着不可替代的作用,还在各种工业系统里扮演着重要的的角色。随着计算机软件系统的规模不断增长,大型电商、核电、航空航天、轨道控制等领域对软件系统的可靠性提出了更高的要求。剑桥大学在2013年的一份调研中指出,全球一年在解决软件错误上的花费高达3120亿美元,平均每个程序员会花50%的时间去找到并且解决软件错误。由此可见,避免产生软件错误、提高软件可靠性可以减少因为软件错误所导致的巨额经济损失,而软件测试技术是保证软件可靠性的重要手段之一。
软件测试是一个分析程序,发现程序中所存在的问题,并验证程序特性的过程。如今,计算机软件越来越需要保证正确性与可靠性,而保证软件可靠性的手段也从之前的静态技术(如:模型检查、静态分析技术),过渡到动态技术(如:软件测试)。这些保证软件可靠性的手段有不同的缺点,比如,模型检查技术虽然自动化程度高,而且全面,但是却难以处理代码量庞大的项目;静态分析技术,在某些大型项目中,很容易造成大量的错误误报;普通的测试又容易遗漏一些严重的错误。而符号执行技术在保证了测试强度的同时,也克服了一些缺点。
数据流测试是一直以来一种经典的测试方法,但也不乏许多优秀的工具以及优秀的研究,比如可以生成数据流测试集的ATAC,应用于web应用的数据流测试工具WATM。同时也有很多针对数据流测试的研究,比如有使用数据流测试对面向切面程序的研究,或者使用数据流测试去测试面向对象的库等等。原本数据流测试是用来测试面向过程的语言,但是近年来,数据流测试在面向对象的语言中通过检查对象的状态是否存在错误,也取得了很好的效果,被很多研究者所关注。
为了解决目前数据流测试存在覆盖率低、测试耗时长等问题,本发明提高了一种基于关键点引导的数据流测试方法及其系统,在数据流测试覆盖率、缩短数据流测试耗时,该方法能够自动的生成测试用例,节省人工成本。
发明内容
本发明提出了一种基于关键点引导的数据流测试方法,包括:
步骤一:通过标准的数据流分析方法获得待测程序中的定义-使用对,所述定义-使用对是指存在一条控制流路径总从变量的定义控制流节点到相同变量的使用控制流节点,并且所述定义控制流节点与所述使用控制流节点之间不存在关于所述变量的重定义;
步骤二:根据控制流分析方法分析所述定义-使用对中的关键点;所述关键点是覆盖所述定义-使用对时必须经过的控制流路径的节点;
步骤三:将所述定义-使用对和所述关键点输入符号执行器;
步骤四:所述符号执行器使用基于关键点的路径搜索器引导符号执行;
步骤五:如果符号执行路径覆盖所述定义-使用对,那么就返回所述符号执行路径对应的测试用例,否则继续执行步骤四,直至对于所有定义-使用对都产生了对应的测试用例,或者所有的符号执行路径均执行结束,则结束所述符号执行器的执行;
步骤六:根据符号执行的结果,统计覆盖率。
本发明提出的所述基于关键点引导的数据流测试方法中,所述定义-使用对以如下方式获得:
步骤A1:获取所述待测程序中每一个变量的定义;
步骤A2:获取每一个变量的使用所对应的定义,构建初级的定义-使用对;所述初级的定义-使用对为有序对,其表示一语句包含一个变量并且通过路径到达使用所述变量的另一语句;如定义-使用对记为(d,u),一个(d,u)是一个有序对,表示语句d包含对变量x的定义,它可以通过某路径到达包含对变量x的使用的语句u;
步骤A3:构建控制流路径,在控制流路径上从所述初级的定义-使用对中排除包含重定义的定义-使用对;
步骤A4:获得所述待测程序中的定义-使用对。
本发明提出的所述基于关键点引导的数据流测试方法中,步骤二中所述控制流分析方法分析关键点包含以下步骤:
步骤B1:构建程序的控制流图;
步骤B2:读取所述定义-使用对的信息;
步骤B3:对于每一个定义-使用对,在控制流图上找到到达所述变量的定义节点与该变量的使用的必经节点,存入关键点列表;
步骤B4:对于所述关键点列表中的每一个关键点,重复步骤B3,直到找到的必经点为程序入口;
步骤B5:输出与定义-使用对相对应的关键点列表。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华东师范大学,未经华东师范大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610956731.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:高速铁路桥梁与隧道过渡段无砟轨道温度场自动监测装置
- 下一篇:摆动式抽芯机构