Emma覆盖率工具研究(一)

发表于:2009-2-26 14:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:lucksender    来源:51Testing博客

  引子

  目前我所负责的测试团队主要以功能测试黑盒测试为主,使用测试需求覆盖率作为测试结果评估的指标。但是随着软件测试成熟度的日益增长,需求覆盖率已经无法为测试改进提供指导和方向了,因此最近在研究更加合适的覆盖率指标来指引功能测试的改进方向。

  测试覆盖率的作用

  测试覆盖率可以提供给我们两个方面的信息:测试覆盖率低的模块 和重要模块的测试覆盖率。这些数据可以帮助我们快速定位需要更多测试的模块,可以帮助我们了解重要模块的测试情况,以此来衡量我们测试用例的质量乃至测试的质量。这里需要重点关注的是模块的粒度,因为我们需要该数据指导功能测试,所以需要模块具有一定的功能含义,而类覆盖率在测试过程中较容易达成,所以我倾向于使用方法级别的覆盖率数据来指导功能测试。

  覆盖率误区:100%覆盖率能说明什么?

  无论哪种粒度的覆盖率数据都无法说明被测对象没有缺陷了,它只能从某种粒度上说明我们已经做了较充分的测试,以此来增强开发人员和测试人员对项目上线的信心。

  Emma简介

  EMMA 是一个开源、面向 Java 程序测试覆盖率收集和报告工具。在测试过程中,使用 EMMA 能使收集和报告测试覆盖率的过程更加灵活、简单。它通过对编译后的 Java 字节码文件进行插装,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。 EMMA 所使用的字节码插装不仅保证 EMMA 不会给源代码带来“脏代码”,还确保 EMMA 摆脱了源代码的束缚,这一特点使 EMMA 应用于功能测试成为了可能。另外初步研究了emma字节码插装的原理,对于加深对class的结构理解,有挺大作用。

  Emma工作原理

  EMMA对编译过的class文件作一个叫做插装(instrument)的处理,并生成一个插装信息文件coverage.em,这个文件记录了代码的版本信息,包、类、方法、块、行信息等;被插装过的class文件,在运行时,会触发EMMA中的方法运行,将代码运行的信息记录在JVM中,当JVM关闭时,EMMA将JVM中的代码运行信息输出到外部文件(如coverage.ec),然后用EMMA的生成覆盖率报告功能生成报告。

  后续将着重探讨在weblogic服务器上设置emma获取覆盖率数据的过程。

版权声明:原创作品,转载时请务必以超链接形式标明文章原始出处作者信息本声明,否则将追究法律责任。

本文出自lucksender的51Testing软件测试博客:http://www.51testing.com/?245320

相关阅读:

软件测试度量

测试度量

测试度量的切身体会

(二)测试度量指标介绍

(一)测试度量指标介绍

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号