logo好方法网

PHP代码覆盖率报告的生成方法及装置


技术摘要:
本发明实施例提供一种PHP代码覆盖率报告的生成方法及装置,其中方法应用于代码覆盖率工具,代码覆盖率工具集成有代码覆盖率分析的功能和代码覆盖率报告生成的功能,代码覆盖率分析的功能被封装为第一任务,代码覆盖率报告生成的功能被封装为第二任务,方法包括:获取被  全部
背景技术:
代码覆盖率是一种用于衡量特定测试套件对程序源代码测试程度的指标。拥有高 代码覆盖率的程序相较于覆盖率低的程序而言测试的更加彻底、包含软件漏洞(bug)的可 能性更低。衡量代码覆盖率有很多种层次,比如行覆盖率,函数/方法覆盖率,类覆盖率,分 支覆盖率等等。无论功能测试、自动化测试中均可使用代码覆盖程度衡量测试效果。因此, 代码覆盖率统计工具应运而生。 目前基于PHP代码覆盖率统计工具有很多,但均存在不同程度的问题,比如: 1、Woojean\PHPCoverage,是一种开源的覆盖率分析软件,设计简洁,但只能统计 测试执行过的php文件,而不能统计未执行过的php文件。 2、PHPCodeCoverage(PCC),是一种开源的覆盖率分析软件,但同样只能统计测试 所执行过的php文件,而不能统计未执行过的php文件。 3、PHPUNIT自带的php-code-coverage项目,仅支持单元测试,对于自动化测试和 手工测试均无法支持。
技术实现要素:
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的PHP代码覆 盖率报告的生成方法及装置。 第一个方面,本发明实施例提供一种PHP代码覆盖率报告的生成方法,所述方法应 用于代码覆盖率工具,所述代码覆盖率工具集成有代码覆盖率分析的功能和代码覆盖率报 告生成的功能,所述代码覆盖率分析的功能被封装为第一任务,所述代码覆盖率报告生成 的功能被封装为第二任务,所述方法包括: 获取被测代码; 调用并执行所述代码覆盖率工具中封装的第一任务,对所述被测代码进行代码覆 盖率分析处理,获得代码覆盖率分析的结果集; 调用并执行所述代码覆盖率工具中封装的第二任务,读取所述结果集,根据所述 结果集生成代码覆盖率报告。 进一步地,第一任务由预先安装在所述代码覆盖率工具中的Xdebug完成。 进一步地,所述获得代码覆盖率分析的结果集,之后还包括:通过注册关闭回调的 方式关闭Xdebug。 进一步地,所述第二任务由预先安装在所述代码覆盖率工具中的phpunit测试框 架完成; 相应的,在所述调用并执行所述代码覆盖率工具中封装的第二任务,之前还包括: 4 CN 111723001 A 说 明 书 2/9 页 创建空PHP代码,调用所述phpunit测试框架对所述空PHP代码进行单元测试; 将所述phpunit测试框架执行所述空PHP代码后的覆盖率结果文件替换为所述结 果集。 进一步地,所述代码覆盖率工具还集成有清除历史数据的功能,所述清除历史数 据的功能被封装为第三任务;所述方法还包括: 在调用所述第一任务之前,调用并执行所述代码覆盖率工具中封装的第三任务, 删除历史生成的结果集及报告。 进一步地,所述代码覆盖率工具还集成有创建并开启覆盖率开关的功能,所述创 建并开启覆盖率开关的功能被封装为第四任务; 所述方法还包括:在删除历史生成的结果集及报告后,调用并执行所述代码覆盖 率工具中封装的第四任务,创建并开启覆盖率开关; 相应的,所述代码覆盖率工具还集成有关闭覆盖率开关的功能,所述关闭覆盖率 开关的功能被封装为第五任务; 所述方法还包括:在执行第二任务前,调用并执行所述代码覆盖率工具中封装的 第五任务,关闭覆盖率开关。 进一步地,所述代码覆盖率报告包含行覆盖率、函数/方法覆盖率、类覆盖率及各 文件代码覆盖情况。 第二个方面,本发明实施例提供一种PHP代码覆盖率报告的生成装置,所述装置应 用于代码覆盖率工具,所述代码覆盖率工具集成有代码覆盖率分析的功能和代码覆盖率报 告生成的功能,所述代码覆盖率分析的功能被封装为第一任务,所述代码覆盖率报告生成 的功能被封装为第二任务,所述装置包括: 代码获取模块,用于获取被测代码; 分析模块,用于调用并执行所述代码覆盖率工具中封装的第一任务,对所述被测 代码进行代码覆盖率分析处理,获得代码覆盖率分析的结果集; 报告生成模块,用于调用并执行所述代码覆盖率工具中封装的第二任务,读取所 述结果集,根据所述结果集生成代码覆盖率报告。 进一步地,所述第一任务由预先安装在所述代码覆盖率工具中的Xdebug完成。 进一步地,所述分析模块还用于:在获得代码覆盖率分析的结果集之后通过注册 关闭回调的方式关闭Xdebug。 进一步地,所述第二任务由预先安装在所述代码覆盖率工具中的phpunit测试框 架完成; 相应的,所述生成装置还包括: 单元测试模块,用于在所述调用并执行所述代码覆盖率工具中封装的第二任务之 前,创建空PHP代码,调用所述phpunit测试框架对所述空PHP代码进行单元测试; 替换模块,用于将所述phpunit测试框架执行所述空PHP代码后的覆盖率结果文件 替换为所述结果集。 进一步地,所述代码覆盖率工具还集成有清除历史数据的功能,所述清除历史数 据的功能被封装为第三任务;所述装置还包括: 删除模块,用于在调用所述第一任务之前,调用并执行所述代码覆盖率工具中封 5 CN 111723001 A 说 明 书 3/9 页 装的第三任务,删除历史生成的结果集及报告。 进一步地,所述代码覆盖率工具还集成有创建并开启覆盖率开关的功能,所述创 建并开启覆盖率开关的功能被封装为第四任务; 所述生成装置还包括: 开关开启模块,用于在删除历史生成的结果集及报告后,调用并执行所述代码覆 盖率工具中封装的第四任务,创建并开启覆盖率开关; 相应的,所述代码覆盖率工具还集成有关闭覆盖率开关的功能,所述关闭覆盖率 开关的功能被封装为第五任务; 所述生成装置还包括: 开关关闭模块,用于在执行第二任务前,调用并执行所述代码覆盖率工具中封装 的第五任务,关闭覆盖率开关。 进一步地,所述代码覆盖率报告包含行覆盖率、函数/方法覆盖率、类覆盖率及各 文件代码覆盖情况。 第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器 上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供 的方法的步骤。 第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算 机程序,该计算机程序被处理器执行时实现如第一方面所提供的方法的步骤。 本发明实施例提供的PHP代码覆盖率报告的生成方法及装置,将能够分析代码覆 盖率的功能封装为第一任务,将能够根据代码覆盖率分析结果生成代码覆盖率报告的功能 封装为第二任务,将第一任务和第二任务封装于代码覆盖率工具中,就能够实现代码覆盖 率报告的生成,本发明实施例能够直接调用代码覆盖率工具中封装的功能自动生成代码覆 盖率报告,克服了现有技术要么只能获得代码覆盖率分析结果,要么只能获得仅支持单元 测试的覆盖率统计报告的缺陷,整个方案操作简单,提高了代码覆盖率的检测效率。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根 据这些附图获得其他的附图。 图1为本发明实施例的PHP代码覆盖率报告的生成方法的流程示意图; 图2为本发明另一个实施例的PHP代码覆盖率报告的生成方法的流程示意图; 图3为本发明另一个实施例的PHP代码覆盖率报告的生成方法的流程示意图; 图4为本发明实施例提供的PHP代码覆盖率报告的生成装置的结构示意图; 图5为本发明实施例提供的电子设备的实体结构示意图。
分享到:
收藏