在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

  • 2008-05-08
  • 本文字数:1256 字

    阅读完需:约 4 分钟

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

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

Java 使用的代码覆盖率工具包括 Clover EMMA Cobertura NoUnit 。Windows.Net 开发人员则使用 Ncover Cover for .Net PartCover

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

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

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

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

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

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

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

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

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

2008-05-08 12:111568
用户头像

发布了 151 篇内容, 共 69.9 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

浪潮云:以数据云IBP释放数据要素力量

云计算 数据云

易观千帆 | 12月用户体验GX评测:国有行及股份行持续领跑,农信社用户体验关注提升

易观分析

金融 手机银行

全球化安全生产 & 质量保障体系建设探索

阿里技术

质量保障 安全生产 全球化技术能力

架构实战营第10期模块六

刘博

富士康CDO史喆:数字化和智能化为何要打造开放系统,引入外部合作?

B Impact

新年新气象,老兵开新坑

致知Fighting

Java Go 服务器

全景剖析阿里云容器网络数据链路(三):Terway ENIIP

阿里巴巴云原生

阿里云 云原生 云原生容器

智能合约佛萨奇系统开发,佛萨奇2.0源码搭建

薇電13242772558

成为海上霸总,全靠5G?

脑极体

5G

IntelliJ IDEA 的 Code Coverage 测试

HoneyMoose

单线程 Redis 如此之快的 4 个原因

C++后台开发

redis 中间件 后端开发 单线程 C++开发

谈谈我工作中的23个设计模式

阿里巴巴中间件

阿里云 云原生

linux 磁盘挂载

平凡人生

2023最新H5前端阅读书单推荐

kcodez

前端 H5 React

linux 查看操作系统版本

平凡人生

文件打开标识O_CLOEXEC简介

SkyFire

Linux 文件描述符

APISIX Ingress 如何使用 Cert Manager 管理证书

API7.ai 技术团队

证书 api 网关 APISIX Ingress Controller

RocketMQ Streams拓扑构建与数据处理过程

Apache RocketMQ

RocketMQ 消息列队

统一观测丨如何使用 Prometheus 监控 MySQL

阿里巴巴云原生

MySQL 阿里云 云原生 #Prometheus

四点聚焦亚马逊2022财报,AWS收入801亿美元,同比增长20%,年度增长率29%

B Impact

单体应用、SOA架构、微服务架构有哪些优劣势?

FN0

微服务架构 组件化 SOA

来看一个 ChatGPT 有关程序员的笑话

HoneyMoose

LeaRun快速开发平台:自由搭建个性化门户

力软低代码开发平台

订单流量录制与回放探索实践

得物技术

Java 运维 后端 稳定生产

微博系统中”微博评论“的高性能高可用计算架构

Geek_e5f2e5

泰山众筹sun4.0矩阵合约系统开发搭建

开发微hkkf5566

一文教你如何重新认识用户

蔡农曰

互联网 产品经理 消费者 需求设计

Flex、AIR、AS3 Flex拥有代码覆盖率工具_Java_Moxie Zhang_InfoQ精选文章