覆盖率测试方法及系统技术方案

技术编号:9863913 阅读:201 留言:0更新日期:2014-04-02 20:41
本发明专利技术提出一种覆盖率测试方法及系统,其包括:编译源代码,在每一段代码中均插入探针函数;记录所有探针函数的位置信息;运行程序,记录探针函数的计数信息;根据已经运行的程序中探针函数的位置信息以及相应探针函数的计数信息,生成第一覆盖信息;根据没有调用到的程序中探针函数的位置信息,生成第二覆盖信息;将所述第一覆盖信息和所述第二覆盖信息合并,计算获得最终覆盖率结果。本发明专利技术更准确客观地反映出程序代码的真实覆盖率,且适用于后台服务类程序的测试。

【技术实现步骤摘要】
覆盖率测试方法及系统
本专利技术涉及软件测试技术,特别涉及一种软件代码的覆盖率测试方法及系统。
技术介绍
在C/C++软件开发的质量保证体系中,覆盖率(软件中代码的运行比率)测试通常是一种有效发现问题的手段,通过代码覆盖率的分析,可以快速定位到哪些代码是没有运行的,从而构造相应的测试案例来覆盖这些代码,以发现软件设计中的错误。目前软件代码覆盖率测试广泛使用的是开源gcov工具,gcov工具是集成在gcc(GNU Compiler Collection, GUN编译器套件)中的一个检测代码覆盖率的工具,它通过编译阶段(即将源代码编译成可执行代码),在源代码中插入探针函数(插入探针函数也称为插桩,用来标识代码的运行次数),来记录代码是否运行,并根据记录的运行信息分析出软件代码行、函数、分支的覆 盖情况。测试时,运行程序,首先将探针函数的位置信息记录在一个文件中(例如通常将探针信息记录在以.gcno结尾的文件中,后面简称为gcno文件)。其次,在程序运行过程中对每段代码的覆盖率进行统计,覆盖率的数值可以利用探针函数本身的计数功能来获得,即运行过的代码,相应的探针函数便会计数,并在程本文档来自技高网...

【技术保护点】
一种覆盖率测试方法,其特征在于,包括:编译源代码,在每一段代码中均插入探针函数;记录所有探针函数的位置信息;运行程序,记录探针函数的计数信息;根据已经运行的程序中探针函数的位置信息以及相应探针函数的计数信息,生成第一覆盖信息;根据没有调用到的程序中探针函数的位置信息,生成第二覆盖信息;将所述第一覆盖信息和所述第二覆盖信息合并,计算获得最终覆盖率结果。

【技术特征摘要】
1.一种覆盖率测试方法,其特征在于,包括: 编译源代码,在每一段代码中均插入探针函数; 记录所有探针函数的位置信息; 运行程序,记录探针函数的计数信息; 根据已经运行的程序中探针函数的位置信息以及相应探针函数的计数信息,生成第一覆盖信息; 根据没有调用到的程序中探针函数的位置信息,生成第二覆盖信息; 将所述第一覆盖信息和所述第二覆盖信息合并,计算获得最终覆盖率结果。2.如权利要求1所述的覆盖率测试方法,其特征在于,还包括: 运行程序过程中,定时对已经运行的程序中探针函数的计数信息进行记录,并获取已经运行的程序中代码的覆盖信息。3.如权利要求2所述的覆盖率测试方法,其特征在于,还包括: 注册调用函数和信号处理函数; 运行程序过程中,在所述调用函数接收到调用信号后,调用所述处理函数获取已经运行的程序中代码的覆盖信息。4.如权利要求3所述的覆盖率测试方法,其特征在于,所述注册调用函数和信号处理函数的步骤包括:利用动态库预加载的特性注册所述注册调用函数和所述信号处理函数。5.如权利要求1所述的覆盖率测试方法,其特征在于,在程序运行正常退出时,对已经运行的程序中探针函数的计数信息进行记录。6.如权利要求1所述的覆盖率测试方法,其特征在于,还包括: 将探针函数的位置信息写入第一文件; 根据已经运行的程序中探针函数的位置信息以及相应探针函数的计数信息,获得已经运行的程序中代码覆盖信息,并写入第二文件; 所述根据已经运行的程序中探针函数的位置信息以及相应探针函数的计数信息,生成第一覆盖信息的步骤包括:扫描所述第一文件获得已经运行的程序中探针函数的位置信息,扫描所述第二文件获得已经运行的程序中探针函数的计数信息,并根据已经运行的程序中探针函数的位置信息以及相应探针函数的计数信息,生成第一覆盖信息。7.如权利要求6所述的覆盖率测试方法,其特征在于,所述根据没有调用到的程序中探针函数的位置信息,生成第二覆盖信息的步骤包括: 扫描所述第一文件,获得没有调...

【专利技术属性】
技术研发人员:吴云佳
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1