`
ioio
  • 浏览: 138322 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论
阅读更多

JAVA开发的单元测试最新王牌工具-Agitator



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里查看结果

 

分享到:
评论

相关推荐

    野狗优化算法DOA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    野狗优化算法DOA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    2107381120 王孟丽 实验2 (1).docx

    2107381120 王孟丽 实验2 (1).docx

    JavaScript_其他Meta JS项目使用的工具库集合.zip

    JavaScript

    asm-4.2.jar

    asm.jar的作用: 提到asm.jar的作用,那么最显著的莫过于计算机显示Android手机屏幕了;其次可以调整计算机上显示Android手机屏幕的大小。ASM 是一个Java字节码操纵框架。它可以直接以二进制形式动态地生成 stub 类或其他代理类,或者在装载时动态地修改类。ASM 提供类似于 BCEL 和 SERP 之类的工具包

    node-v14.17.6-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    JavaScript_GitHub上的类固醇.zip

    JavaScript

    JavaScript_Brian Holt在Frontend Masters上讲授的完整React入门.zip

    JavaScript

    node-v18.19.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    汇编语言实现三款数字电压表

    智能控制-AD0832数字电压表1602液晶程序(汇编语言).zip 智能控制-AD0832数字电压表LED灯实验程序(汇编语言).zip 智能控制-AD0832数字电压表数码管实验程序(汇编语言).zip

    基于STM8S单片机PWM口编程输出不同频率的方波来驱动蜂鸣器鸣响音乐旋律软件源码.zip

    基于STM8S单片机PWM口编程输出不同频率的方波来驱动蜂鸣器鸣响音乐旋律软件源码 int main(void) { //MCU初始化 Driver_MCU_Init(); //播放指针初始化 Voice_pVD = NULL; //开启定时中断 Driver_Time10msON(); Driver_OpenEA(); //run.. while(True); }

    node-v16.11.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    JavaScript_通过在一个有趣的模拟项目中贡献代码来学习GitHub工作流程.zip

    JavaScript

    JavaScript_将数据保护放在首位的通信平台.zip

    JavaScript

    JavaScript_基于承诺的HTTP客户端,用于浏览器和nodejs.zip

    JavaScript

    node-v17.4.0-headers.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v5.10.0-headers.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    JavaScript_把这该死的新信号换成旧的.zip

    JavaScript

    JavaScript_刺激控制器的可组合行为集合.zip

    JavaScript

    基于Best Dimension Search分类Cytokine蛋白质之Web Server.zip

    基于Best Dimension Search分类Cytokine蛋白质之Web Server蛋白质是生物体中普遍存在的一类重要生物大分子,由天然氨基酸通过肽键连接而成。它具有复杂的分子结构和特定的生物功能,是表达生物遗传性状的一类主要物质。 蛋白质的结构可分为四级:一级结构是组成蛋白质多肽链的线性氨基酸序列;二级结构是依靠不同氨基酸之间的C=O和N-H基团间的氢键形成的稳定结构,主要为α螺旋和β折叠;三级结构是通过多个二级结构元素在三维空间的排列所形成的一个蛋白质分子的三维结构;四级结构用于描述由不同多肽链(亚基)间相互作用形成具有功能的蛋白质复合物分子。 蛋白质在生物体内具有多种功能,包括提供能量、维持电解质平衡、信息交流、构成人的身体以及免疫等。例如,蛋白质分解可以为人体提供能量,每克蛋白质能产生4千卡的热能;血液里的蛋白质能帮助维持体内的酸碱平衡和血液的渗透压;蛋白质是组成人体器官组织的重要物质,可以修复受损的器官功能,以及维持细胞的生长和更新;蛋白质也是构成多种生理活性的物质,如免疫球蛋白,具有维持机体正常免疫功能的作用。 蛋白质的合成是指生物按照从脱氧核糖核酸(DNA)转录得到的信使核糖核酸(mRNA)上的遗传信息合成蛋白质的过程。这个过程包括氨基酸的活化、多肽链合成的起始、肽链的延长、肽链的终止和释放以及蛋白质合成后的加工修饰等步骤。 蛋白质降解是指食物中的蛋白质经过蛋白质降解酶的作用降解为多肽和氨基酸然后被人体吸收的过程。这个过程在细胞的生理活动中发挥着极其重要的作用,例如将蛋白质降解后成为小分子的氨基酸,并被循环利用;处理错误折叠的蛋白质以及多余组分,使之降解,以防机体产生错误应答。 总的来说,蛋白质是生物体内不可或缺的一类重要物质,对于维持生物体的正常生理功能具有至关重要的作用。

    JavaScript_交互式代码示例的文档教育和乐趣.zip

    JavaScript

Global site tag (gtag.js) - Google Analytics