论文部分内容阅读
随着互联网、个人电脑及移动终端的普及,市场对各类软件的需求也与日俱增。由于开发过程中种种偏差,软件代码中总是存在着故障,给软件使用带来了不好的体验甚至安全上的隐患。因此,软件测试在软件开发过程中有着不可或缺的作用,自动化测试将程序员从枯燥的测试工作中解放出来,有着广阔的发展前景。单元覆盖测试是软件测试中的一个环节,其目标是尽可能全面地覆盖被测代码,从而发现问题。本文中提到的单元测试流程主要分为代码预处理、控制流图生成、测试路径生成和测试用例生成四个部分。测试路径生成直接决定了用例的生成与否,有效的测试路径会减少用例生成的次数,产生更高的覆盖率。本文围绕生成可达测试路径进行研究,做出了如下工作:(1)针对循环内执行路径难以选择的问题,本文提出一种判定循环类型的方法,针对不同种类的循环类型,采用不同的选路方法,从而提高了循环内的选路效率,更为有效地生成可达路径。(2)关于如何选择路径,本文提出了基于回溯法的可达路径选择框架,该框架面向目标覆盖元素,基于回溯法,遍历程序控制流图,选择可达路径。从函数入口节点开始,进行深度优先的路径遍历,以当前的部分路径是否可达和当前节点是否能够到达目标覆盖元素,作为回溯的条件进行回溯,最终获得一条经过目标覆盖元素的可达路径。最后针对Linux实际使用的C语言工程进行语句、分支、MCDC覆盖的选路实验,能够获得较高的覆盖率,验证了该方法能够适用于多种不同覆盖准则下的选路。(3)由于代码中条件约束的边界往往是产生错误的地方,提出在白盒测试中进行边界值覆盖测试,并对其进行选路。为后续生成边界值覆盖用例提供基础。