InfoQ

新闻

Flex、AIR、AS3 Flex拥有代码覆盖率工具

作者 Moxie Zhang译者 王丽娟 发布于 2008年5月8日 下午12时11分

社区
Java
主题
RIA
标签
Flex

上个月,AllurentJoe Berkovitz宣布了Flexcover初始试验版的发布,Flexcover是一个针对Flex、AIR和AS3的开源代码覆盖率工具套件

参与测试驱动开发(TDD)过程的Java开发人员利用代码覆盖率已经有一段时间了,以此来度量程序源码有多少进行了测试。但对Flex来说,这种功能还不可用。

Java使用的代码覆盖率工具包括CloverEMMACoberturaNoUnit。Windows.Net开发人员则使用NcoverCover for .NetPartCover

为了对Flexcover试验版有更多的了解,InfoQ对Berkovtz进行了采访,Berkovtz解释道:

Flexcover包含AS3编译器的修改版本,该修改版本在SWF或SWC输出文件的代码中插入了额外的函数调用。运行时,这些函数调用把应用代码覆盖率的相关信息发送给一个单独的工具。修改后的编译器也生成一个单独的覆盖率元数据文件,该文件描述所有可接受的包、类、函数、代码块和代码行,以及与之关联的源码文件的名称。

Berkovitz回顾了Flexcover的发展历史,说:

我认为测试是软件开发的一个基本方面,代码覆盖率则是衡量一个人测试质量的关键工具。代码覆盖率回答了一个更要的问题:“在测试时,我们的代码有多少被执行到了?”

对于其它语言,我都用代码覆盖率工具得到了很好的效果,但还没有Flex可用的工具,对此我感到很沮丧。有一天早晨我醒来,意识到由于Flex编译器已经开源,对其进行修改、给它产生的SWF字节码添加覆盖率测量功能会行得通。果不其然,这并不是很困难,因为我过去从事过编译器和代码生成器的工作。

据Berkovitz所说,Flexcover的设计主要出于以下目的:

    • 实时获取和查看AS3应用程序的覆盖率信息
    • 容易、迅速地识别出低覆盖率区域
    • 保存覆盖率信息报告
    • 查看保存的覆盖率报告
    • 既能从自动测试、又能从手动测试收集覆盖率数据
    • 逐项进行分析

在开发Flexcover的过程中,Berkovitz仔细地研究了用于其它语言的现存代码覆盖率工具。他特别提到:“我查看了大量Java的开源覆盖率工具,包括EmmaCovertura,以及这些工具显示信息的方式。接着,我试着去超越它们,并添加了相关的覆盖率功能,所以你在测试应用的时候能根据覆盖率观察到源码修正。”

Berkovitz表明Flexcover的结构由三部分组成:

    1. 一组用Java编写的ActionScript编译器的修改。结果是一组修改过的Java库,支持mxmlc和compc,带有代码覆盖率的附加选项。
    2. 一个运行时ActionScript库,用于测试时收集应用中的数据并输出。
    3. 一个AIR应用,用来读取被测试应用输出的数据。

Berkovitz并不是孤军奋战。Adobe咨询公司的Alex Uhlmann也一直致力于一组关于代码覆盖率的想法,他将合作参与到Flexcover以后的版本中。Berkovitz和Uhlmann目前正一起处理一些新的用户体验意见。

当被问及Adobe的参与情况时,Berkovitz告诉InfoQ的读者:“我不能对Adobe进行的任何事情加以评论,但我知道他们对代码覆盖率很感兴趣,Flex技术的团队成员也正在积极思考如何去支持它。他们对Flexcover的进展也大有帮助。我很感谢他们!”

查看英文原文:Flex, AIR and AS3 Flex Gain Code Coverage Utilities

没有回复

回复

独家内容

开发者眼中的Android手机平台

在四月份的Beijing Openparty上,InfoQ中文站特邀编辑仝健对三位开发者进行了采访,请他们从开发者角度谈一下对Android的认识和感觉。

智能服务契约带来的巨大伸缩性

可伸缩性并不是无状态设计倾向假设的那个布尔值(译注:一般都认为无状态设计的伸缩性好,此处暗示布尔值为True)。Udi的团队使用服务契约来处理多维度的伸缩性问题,避免了二次失败。

使用NetKerne实现REST风格的ESB

Jeremy Deane对使用NetKernel来编写REST风格的ESB应用做了一番深入的研究。他详细地剖析了选择商业ESB应用的决策过程,以及最终如何使用NetKernel来实现该应用。

多个敏捷团队之间的版本控制

当多个敏捷开发团队在同一个代码库上进行工作时,如何在保证混乱最小化的同时,还能在每个迭代结束时拥有一个干净的、可发布的软件版本?Henrik Kniberg在本文中罗列出了在“Scrum and XP from the Trenches”迷你书中所使用的策略要点。本文并非为版本控制专家编写,而是为我们这些希望进行简单、有效的协作的人所准备的。

想快快喝下Google果汁——Guice吗?

依赖注入出现已经有一段时间了,很多团队都在重构自己的应用以利用DI。但这是一件麻烦的事情。在这篇文章中,Paul Hammant说明了如何将现存应用从单件嵌套设计转为完全成熟的DI设计。

Scrum实施情况调查之案例分析

前不久,InfoQ中文站上发表了一篇文章:Scrum在中国——企业实施情况调查实录,引起了激烈争论。在本文中,作者通过对调查实录中案例的分析诊断,探讨了敏捷开发方法的概念及应用。

Jim Marino与Meeraj Kunnumpurath专访:关于SCA和Fabric3

BEA发布了在WebLogic 10.3中支持的SCA技术预览版,它是以开源的Fabric3运行时为基础构建的。InfoQ对Jim Marino和Meeraj Kunnumpurath进行了专访,前者是BEA Systems的技术主管,后者是VocaLink的首席技术人员。我们就他们对SOA和SCA的看法,VocaLink实施SOA的方法和这个技术的关键优势进行了讨论。

Ruby调试器一览

在Ruby世界中流行着一个误解:Ruby没有调试器。这是明显的错误——Ruby不但有调试器,还有供调试器用的GUI和API。InfoQ仔细调查了Ruby世界中调试器的现状——发现Ruby的调试功能支持已经很好了。