The Value of Healthy Software.健康的软件比带有缺陷的软件更有优越性,它们有更好的结构和设计、扩展性、可重用性,健壮性和可测试性,能够开发健康软件的组织,他们能更快响映新的需求和需求的变化,更能够满足好客户的需要,操作的成本比起他们的竞争对手更低,他们能看到对软件质量的关注会以他们的商业成果的提高来回报。
2.The Role of Developer Testing .很多方案都被提议去帮助提升软件的质量,但是没有那一种方案象开发者测试那样对对软件的质量产生巨大的影响,开发人员创建了代码。这些代码包含了具体的设计,也同时隐含了缺陷,使开发人员在编写他们代码的时候就去验证他们代码的正确性,这是一种积极的影响,它会对软件质量的提升带来极大的好处。因为:
l 开发人员能够以很低的代价去修复那些简单的代码错误。
l 他们也能修复那些导致错误的设计缺陷,不也正好删除了对错误代码的维护。
l 他们使测试和代码一致,并经常去运行他们,任何改变所产生的错误都会马上被识别,并很容易去修复。
l 测试开发人员创建实施规格,从测试规格中,其他的开发人员就能理解每个开发人员的软件模块做的是什么,从而更有利于合理的设计。
当软件开发人员递交他们的软件产品的时候,也同时提供执行单元测试的资料,单元测试它覆盖所有的代码、分之和输出结果。开发人员将更加信任软件质量,更快的地依照确定的事情作出改变,以满足需求的变化。团队使用开发测试能够保证在整个开发周期中软件的健康,他们的项目将更早完成,有更高的可信度和更少的压力,最终的产品将有更高的重用性、可扩展性,对企业带来更多的价值和产品的健康。
3. What is Software Agitation?.Software Agitation 是一个自动的运行软件代码并提供软件代码行为观察报告的一种方法,它帮助开发人员单元测试他们的代码,而不用手动编写测试代码,使用该方法,开发人员将创造出更好、更容易维护和健康的软件,产生很少的bug,具有更高的生产效率,因为他们花了很少的时间去分析失败和改写他们的代码
4.Exercising the Code―Leave No Code Behind为了真正实现单元测试代码,每一 行、每个分之、每个输出都必须进行测试,这是一个让人畏惧的组合问题,人工去创建如此多的测试是不实际的,测试代码大大长于被测代码,并且在花费在写测试代码的时间和花费在实现必要的软件特性的时间要作出一种权衡。Agitator创建被测试类的实例,仔细调用每一个方法,动态创建一些输入数据并分析结果。当对象依赖其他对象时,Agitator也自动构造这些对象,使得代码的可能的行为都作全面的分析,即使他们依赖第三方的库。
5.Observations―“Just the Facts” About the Code.当Agitator执行代码的时候,它跟踪所有的测量变量,以及他们之间的关系,执行前和执行后的值,Agitator使用这些信息去创建一系列的观察报告,观察报告告诉开发者代码真正做了什么?不管这个软件规格和设计文档怎么说的,也不管开发者是否意识到,观察报告以Java表达式的方式去呈现代码所做的真正工作。
二.Agitar Management Dashboard
1.Detailed Metrics Across the Project.当开发者使用Agitator去创建测试资产的时候,Agitator Management目Dashboard 为项目的健康和团队开发测试的努力提供一个综合的视图,这使得开发团队可以基于风险去设定优先级,为团队和个体的开发人员确立目标、测量过程和适当的分配资源.
2.Outsourcing and Offshoring Agitar’s solution .使得对于软件外包管理非常容易和对于交付物具有更高的可信性,因为它对外包过程提供了空前的透明性、可视性和可信性。在你和你的商业伙伴之间,使用Agitar Management Dashboard去制定一个绑定的质量级别的协议。为每一个项目、Java包或者类指定语句行和条件覆盖的级别,有多少个测试被要求以及这些测试的质量.
3.Know Your Code, Trust Your Code.产品软件从来都不是一层不变的,在竞争的压力下,客户的需求、归并和许多其它条件要求产品具有新的特性和功能,Management Dashboard提供的可见度允许团队从第一时间去真正了解和信任他们的代码,并以高度的自信去修改它们与需求保持一致。
1.Summary of Project Data . 项目汇总信息包括核心的数据,比如类、方法和测试的数量以及整个时间里测试趋势图
2.Test Targets. Management Dashboard使得开发团队去定义目标和检查不同的过程,比如全面的测试质量、项目测试的总的数量、以及已经测试的类和方法所占的百分比。
3. Reports by Package, Class, and Developer. 当进行单元测试时,是很难去知道系统的那一部分已经被充分测试了,Agitar Management Dashboard对项目提供了空前的可视性,在一个非常详细的级别上提供了对于项目质量的全面控制。随着单元测试的数量和质量不断增加,对于新产生的bug去逃避检查,也变得越来越难。
4.Code Rules―Check for Standards Compliance. 代码规则就是让你为你的项目指定和强制代码标准,这种定制能力检查数百条已经定义好的代码标准和代码相容性问题,通过检查那些普遍导致错误或难以维护的代码模式,很多错误可能被预防。这种可扩展的能力很容易配置代码标准去支持公司或者团队的代码标准,允许开发人员去快速识别和解决问题。
5. Assertions―That’s What the Code Is Supposed to Do.只要轻轻一点鼠标,开发人员就能构造一个观测,它描述了断言(assertion)想要的行为,断言就是持久耐用的回归测试,好的断言描述了代码的行为,这些行为应当在所有情况下都发生,当代码随着时间在改变的时候,这些断言也应当能继续通过。
6.Bugs―That’s Not What the Code Is Supposed to Do. 当观测报告论证了有些行为不该发生时,开发者就能去修复代码,纠正这个问题,同样地,断言失败就可能暗示bug就在代码中,agitator提供多种方法帮助开发人员去跟踪这些问题源(see “Snapshots and Stack Traces”)
7. Outcome Partitions―Divide and Conquer.输出是一个方法调用的结果。一个正常的输出是没有异常抛出的结果。一个不正常的输出是有异常抛出的结果。
当在Agitaton时,Agitator尽力去使得所有的输出发生(100%的输出覆盖),Agitator为每一个输出提供隔离的关于代码行为的观察报告,通过分割输出,可以让开发人员获取粒度更小的观察报告。
Each outcome partition is defined by the conditions that cause that outcome to occur
8.Factories―Extend the Solution.在没有用户干预的情况下,Agtator以大量的时间,使用自动生成过程成功生成所有的必要的测试输入数据,开发者也可以使用factories去扩展这种能力,它指定怎样为特定的对象类型生成测试输入数据。
Agitator包括一个扩展的超过200个factories的库,这些库不需要写任何java代码就可以使用,开发者能够配置这些factories的实例去告诉agitator怎样去按要求的格式输入数据,Factoeies可以被重用,也可以被其他开发团队所共享,.这样开发人员重用其他开发人员已经创建好的 test scenarios,而不用再去创建而减少时间。
9.JUnit Support―Incorporate Existing Unit Tests.
Agitator完全支持以junit创建的测试,它能运行它们作为每个agitation的主要部分,报告输出和覆盖率,在junit测试类里观察测试方案,提供更进一步的探测测试的线索。如果使用Agile methodologies、the combination of test-first approaches和agitation一起使用,就能导致极低的缺陷率.
10.Snapshots and Stack Traces―Find Out What Happened. 当对软件进行agitation的时候,Agitator收集一系列快照,它们显示了采样值,这些采样值是在进行单元测试时发生的,Agitator也为每一个输出和断言失败存储快照,比如对于异常输出,Agitaor能显示相应快照的堆栈跟踪信息,这种方法非常容易跟踪bug或者可疑的行为,从而找出问题的原因。
Developers can use the stack trace to facilitate debugging when exceptions occur.
11. Source Control and Configuration Management―Share Test Assets.
Agitator以XML文件格式存储所有的信息,这使得非常容易配置标准的源码控制和配置管理系统去管理这些文件,就如同管理他们的源代码文件一样,这也使得开发团队更容易去控制他们的测试资产,这也使得团队领导能够去集成每个开发人员的测试去构建过程和创建一个基于项目应用质量的视图.
12.IDE Integration―Make Agitation Part of the Routine. Agitator能够和流行的Java IDE开发环境联合使用,比如Eclipse, JBuilder, WebSphere Application Developer, and IntelliJ IDEA,作为一个基于Eclipse的应用程序,Agitator是完全集成Eclipse开发环境,这种集成增加了开发者的开发效率和eases adoption by providing a familiar look and feel.Agitator的信息,比如断言的失败或者代码规则的违规,自动使用标准机制出现,例如代码标记和问题视图,开发人员在不用离开开发环境的情况下,就能很容易修复在代码中已经识别的问题和再次运行测试
三.Agitator Features
1、Test Automation
l 自动生成测试数据
l 强有力的观察引擎汇总了代码在测试时的行为。
l 自动创建智能的Mock 对象,提供尽可能多的代码覆盖
l 只需轻点鼠标,观察资料就变成断言(耐用的测试)。
l Java兼容的语法容许用户去制定关键的表达式去观察和(或者)断言
2.overage Analysis
l 测试的时候,自动跟踪代码覆盖率
l 报告方法、输出、语句行和条件覆盖率
l 与Management Dashboard集成
3、Outcome Partitions(输出分割)
l 自动识别基于代码行为的观察和断言的输出
l 用户定义等同的分割集
4、Factories
l 控制输入数据和转化数据格式
l Factory库包含超过200个不同的factory 类型
l 用户配置通过简单的GUI配置。
l 通过简单的Java API 延伸factory
5、Management Dashboard
l 标准的HTML表现形式使得易于使用和广泛存取。
l 一眼就可以看出软件的健康和测试努力的状态
l 项目汇总复杂、使用、风险、测试质量、覆盖、测试通过/失败的状态。
l 风险评估找出为更好测试具有更高价值的候选方案。
l 所有权的分配识别谁正在那个问题上工作
l 分等级的视图提供包和类的细节信息,只需一瞥,就一目了然。
l 检测点跟踪开发和测试活动的过程。
6、Agile, XP, and JUnit Friendly
l 自动关联Junit 测试和适当的项目代码
l 执行和监视Junit测试
l 为XP和Agile development methodologies 支持测试驱动开发(TDD)。
l Enhances TDD with exploratory testing, increasing coverage and uncovering unanticipated scenarios
l Keeps tests current as code evolves
7、Easy Adoption
l 存储信息在XML文件里
l 集成所有的流行的版本控制系统
l 并不需要数据库或者中央服务器
8、Regression Testing Support
l 在任何时候可再运行测试。
l Automatically detect test and code changes to streamline development
l 带Ant task和脚本支持的自动构建过程
l 使用详细的结果数据去跟踪失败
l 为项目状态跟踪设置检查点。
9、Powerful Code Rules
l 自动检测代码标准违规
l 易于配置自己的项目
l 易于配置规则去支持项目
l 在IDE和Management Dashboard里查看结果
转自:[url=http://www.testage.net/]测试时代[/url]
----------------解决方案--------------------------------------------------------