InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

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

作者 Moxie Zhang 译者 王丽娟 发布于 2008年5月8日

领域
语言 & 开发
主题
RIA ,
Java
标签
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

译者 王丽娟 王丽娟,04年大学毕业后持续从事Java EE中间件产品的开发,现在主要关注Java技术及中间件产品在云计算环境中的发展趋势和应用。

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。