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

深度内容

和Google互补的搜索引擎Wolfram|Alpha

Wolfram|Alpha与Google究竟是什么关系,Wolfram|Alpha自己是如何定位的?Wolfram|Alaph在多大程度上是语义网搜索呢?InfoQ中文站就等等这些问题采访了Wolfram研究公司中国区商务经理王翔。

SOA契约成熟度模型

本文说明了所推荐的契约版本管理设计策略是如何与SOA成熟度模型发生联系的。文章目的是为实现版本管理和可组合性提供一个路线图。

数据服务简介

Vijay Narayanan在这篇文章中对数据服务的几个方面进行了介绍,它们都是SOA实践者和数据架构师感兴趣的内容。本文对数据服务的几个方面进行了介绍,包括需求定义,基本原理和好处、范围、开发以及消费模式。

分块云计算

在本文中,Jimmy Nilsson描述了一种他在过去数年间观察到的一种正在缓慢成长的架构风格,他把这种风格称为“分块云计算”。

豆瓣网技术架构变迁

罗马不是一天建成的,豆瓣的技术架构也是随着用户规模的增长一直在持续变化中。在本次演讲中,豆瓣的首席架构师洪强宁将与大家一起分享从上线时的单台服务器架构开始一直到现在的豆瓣架构变迁历程。

融合思想:深入探索S#arp架构

Billy McCafferty展示了S#arp架构,它在ASP.NET MVC框架的基础上,荟萃了当今的最佳实践,应用在ASP.NET Web应用程序的架构设计中。

王雷谈开源以及新兴市场计划

中国作为新兴市场中的新兴市场,是Sun在美国之外实施SSE(SUN Startup Essentials)项目重点关注的地区。在QCon Beijing 2009期间,InfoQ中文站有幸对此项目的负责人王雷先生进行了采访,探讨了关于开源、新兴市场、SSE等话题。

使用HTML5构建下一代的Web Form

HTML5 是由 WHATWG发起的,最开始的名称叫做Web Application 1.0,而后这个标准吸纳了Web Forms 2.0的标准,并一同被W3C组织所采用,合并成为下一代的HTML5标准。