[发明专利]软件测试中循环代码的处理方法与系统有效
申请号: | 201310113328.X | 申请日: | 2013-04-02 |
公开(公告)号: | CN103207833A | 公开(公告)日: | 2013-07-17 |
发明(设计)人: | 宫云战;黄俊飞;王雅文;王强;金大海 | 申请(专利权)人: | 北京邮电大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 北京派特恩知识产权代理事务所(普通合伙) 11270 | 代理人: | 张振伟;王黎延 |
地址: | 100876 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 软件 测试 循环 代码 处理 方法 系统 | ||
技术领域
本发明涉及软件测试技术,具体涉及一种软件测试中循环代码的处理方法与系统。
背景技术
软件测试是在一个可控的环境中进行源程序(被测代码)分析或执行的过程,其根本目的是以尽可能少的时间和人力发现并改正软件中潜在的故障及缺陷,进而提高软件质量。软件测试的准确率与测试路径生成的全面性息息相关。
现有技术中,通过遍历程序控制流图中的节点,生成测试路径,沿着测试路径利用测试用例执行源程序。当程序控制流图中的节点均为顺序节点即源程序均为顺序语句时,则可生成一条明确的测试路径;但是当程序控制流图中出现分支节点即源程序中出现循环语句时,现有常规处理方法如0-1策略或0-K策略,将循环语句看成判断语句进行处理,无形当中遗漏了部分测试路径的生成,测试路径生成得不全面令软件测试的准确率下降。除此之外,还可通过人工方法如人工指定测试路径对循环语句进行处理,这样便增加了人力成本;况且人工方法灵活性较差,很难适应不同工程项目的需求。
发明内容
有鉴于此,本发明的主要目的在于提供一种软件测试中循环代码的处理方法与系统,能够保证测试路径生成的全面性、灵活性高、可节省人力成本。
为达到上述目的,本发明的技术方案是这样实现的:
本发明提供了一种软件测试中循环代码的处理方法,所述方法包括:
依据程序控制流图,查找被测代码的循环体;
确定当前循环体的循环体前子路径;
确定当前循环体的所有单条子路径,组合所述单条子路径为组合子路径,所述循环体前子路径与所述组合子路径的集合路径为可达时,确定所述组合子路径为当前循环体的确定子路径;
确定所述循环体前子路径与所述确定子路径的集合路径为可达时,生成测试用例;
依据所述测试用例,执行被测代码,捕获所述当前循环体的实际执行路径。
上述方案中,所述方法还包括:
被测代码的所有循环体的实际执行路径被捕获后,生成被测代码的完整测试路径,生成完整测试用例,并利用预设的覆盖测试准则对被测代码执行完整测试用例的覆盖测试。
上述方案中,所述确定当前循环体的循环体前子路径,包括:
确定当前循环体为被测代码的第一个循环体且被测代码的程序控制流图的入口节点至当前循环体起始点之间的路径为可达时,确定所述程序控制流图的入口节点至当前循环体起始点之间的路径为循环体前子路径;
确定当前循环体为被测代码的第一个循环体且被测代码的程序控制流图的入口节点至当前循环体起始点之间的路径为不可达时,将所述不可达路径改造成可达路径,确定所述可达路径为循环体前子路径;
确定当前循环体为被测代码的非第一个循环体且集合被测代码的上一个循环体的循环体前子路径、捕获到的上一个循环体的实际执行路径、被测代码的上一个循环体至当前循环体之间的路径为新的循环体前子路径,所述新的循环体前子路径为可达时,确定所述新的循环体前子路径为循环体前子路径;
确定当前循环体为被测代码的非第一个循环体且集合被测代码的上一个循环体的循环体前子路径、捕获到的上一个循环体的实际执行路径、被测代码的上一个循环体至当前循环体之间的路径为新的循环体前子路径,所述新的循环体前子路径为不可达时,将所述新的循环体前子路径改造成可达路径,确定所述新的循环体前子路径为循环体前子路径。
上述方案中,所述确定当前循环体的所有单条子路径,包括:
按序遍历被测代码程序控制流图上的节点,遍历到的循环体起始节点至循环体结束节点之间的路径的集合为循环体的所有单条子路径。
上述方案中,所述组合所述单条子路径为组合子路径,确定所述组合子路径为当前循环体的确定子路径,包括:
依次选取所述所有单条子路径中的一个单条子路径为目标子路径,其他单条子路径为参考子路径,集合至少一个所述参考子路径与所述目标子路径为所述组合子路径、或集合所述目标子路径为所述组合子路径,并利用循环的路径生成策略生成所述目标子路径的确定子路径。
上述方案中,所述确定所述循环体前子路径与所述确定子路径的集合路径为可达时,生成测试用例,包括:
依次选取确定子路径,集合循环体前子路径和所述确定子路径为半条子路径,确定所述半条子路径为可达时,生成所述半条子路径的测试用例。
上述方案中,所述生成被测代码的完整测试路径,生成完整测试用例,并利用预设的覆盖测试准则对被测代码执行所述完整测试用例的覆盖测试,包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京邮电大学,未经北京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310113328.X/2.html,转载请声明来源钻瓜专利网。