敏捷开发模式下的自动化测试研究

敏捷测试过程中的自动化目前在国内来看基本上还只是停留在概念阶段,据我所知,目前不少公司也都在尝试过程中,而实际的实践中能取得比较理想成果的,极为有限。而国外不少同仁也都对此持观望甚至抵触的态度。比如advanced QTP论坛的administrator Meir大大 就认为敏捷过程中的自动化是完全不现实的,理由就是sprint间隔时间内没办法完成一个完整自动化过程的设计,而频繁的变更会导致自动化资源的大量浪费,ROI上无任何前景可言。

  从我个人观点来看,没必要保持如此的悲观,但更不能过于乐观。敏捷过程是IT发展的产物,自动化从概念上来看是确认一个sprint成功的重要一关。敏捷过程需要有自动化测试,但却不能盲目让自动化介入,否则很可能适得其反。

  个人略作了下小结,由于敏捷模式的种种特色,敏捷过程中的自动化实现所需要满足的条件比常规的自动化测试活动苟刻的多,除了普通自动化过程必须具备的条件之外,主要还有以下几点:

  1、对于自动化工程师的要求更高,除了解决种种突发异常的自动化技能以外,还需要对项目的业务知识有比较多的了解。

  在敏捷模式中,文档不会像传统的模式中那样完备,测试的case可能会相对简易,不少内容都只是口口相传,敏捷团队的成员也不可能专门派一个人出来辅助自动化工程师解决业务问题,那么就要求自动化工程师对于业务知识比较了解了,就算对项目了解有限,但至少要有背景知识,大多数情况下能理解一句话中所包含甚至是隐含的一系列业务操作。

  2、项目成员结构上,自动化工程师需要成为敏捷团队的一员,而不是编外人士。理由很简单,敏捷团队经常会召开类似头脑风暴的会议,一个短暂而激烈的会议足以决定一个变更,然后大家立马投入工作中。这时自动化工程师若作为编外人士,那很可能就得不到这第一手的消息了,很可能吭哧吭哧好不容易码完的脚本还没跑过就得改了。

  3、对于项目、产品的要求。被测系统必须是非常适合自动化的,在自动化脚本开发过程中不应当遇到被某个技术实现难倒的问题,敏捷模式下是没可能有几天甚至一周的时间去处理某个自动化的技术细节的。这就需要在接受项目前做自动化可行性评估的时候考虑周全,是否有某些核心的功能无法被自动化,可以接受多少功能不被自动化。

  另外各story间不能有太强的依赖,因为很可能自动化工程师无法完成对所有功能的自动化,而一个story的需求变更也不应导致其它story有太多变化。

  4、对于BA的要求。BA需要对产品的主要功能非常了解,非常清楚哪些功能是不太会变更,而哪些部分是不太有把握的,同时对客户也要有一定的掌控能力。这样除了提供主要的测试点以外,还能结合变更来给同为最高级别的测试点附加上自动化优先级,在很大的程度上避免自动化工程师的重复劳动。

  总的来说,要实施自动化,对团队的成员素质要求非常高,也要求成员间的配合比较默契。说实话,真的很难,但并不是不可实现。

会员 maguschen:

  这个问题有点大,我现在所处的公司也是应用了敏捷开发,下面分享一下我们公司做自动化测试的一些经验

  首先,敏捷开发并不是部分同学想象中的那样,没有文档没有需求,开发来了就干,干几个月就丢给客户一个版本让他们用去,我们公司一般6个星期是一个release周期,在这6个星期里面,可以做的事情是非常多的

  1、需求,需求通常来自于PM,在一个release周期的开始,QA通常没太多事情需要做,比较重要的工作就是跟PM沟通当前feature的一些情况,在这个时候,QA可以做一些自动化测试的准备。例如在某个release里面我知道在接下来的测试当中我需要频繁地比较CSV文件,那么作为QA就应该在项目还不是很紧张的时候就开支准备自动化测试的脚本,例如刚才说的这个CSV文件比较工作

  2、开始开发,如果公司是实时TDD开发,那么这个时候QA可以做的事情大概有2个,帮助开发写单元测试用例,并且实施自动化测试(主要是单元测试),另一个是review(虽然不是自动化测试的内容)

  3、正式提交测试,OK,这个时候是我们QA比较忙的时候了,这时候很有可能出现几个情况,1. 跟我的预想一样,我真的需要一个CSV文件比较工作,并且只需要这一个工具,并且我已经完成了,那么就可以进行测试了。2. 可能有一些新的自动化测试需求跑出来了,例如每天晚上自动比较几万个CSV文件并且把测试结果发给相关的人,这时候作为QA,在考虑资源允许的情况下,应该尽早完成这个工具,而不是每天晚上爬起来看结果并非法邮件

  4、发布完毕以后,回过头来看工具,是否有值得改进的地方,是否能够改进一下就能够给整个Team使用

  以上算是一个release周期里面的一些微观的工作,宏观上来说需要做点什么事情呢?

  现在提到的敏捷开发,都有一个很突出的特点,就是产品快速交付给客户,为了快速交付这个目的,公司里面每个团队都作出了努力,那么具体到QA团队,肯定就是要在保持测试质量得到保证的前提下,尽可能地缩减测试所需要的时间,使得产品按时按质交付。要达到这个目的,总靠一些AD-HOC的工作(例如刚才提到的突然写个CSV比较工具)是不可能达到要求的,那应该如何进行呢?

  敏捷开发也是开发,产品不是孙悟空,不会某一天就从石头里面爆出来了。在产品开发的前期(例如0.1, 0.2版本之类),尽可能地想办法搭建一个自动化回归测试的框架,这个框架的特点有:1. 快速完成回归测试; 2.能够快速地添加测试用例并且跑起来;3.能够随着产品的演化而不断改进(不能是那种用1~2个release就要扔的东西);4.维护的成本要低(在一个release周期里面如果自动化测试需求有变化,不应该需要超过1个星期的时间才能改好,当然翻天覆地的变化除外)

  综上所述, 我认为在敏捷开发里面的自动化测试是有2条路线,并且这2条路是并行的,缺一不可

  1、至少一个自动化回归测试框架,保证release前能够对产品进行覆盖较为全面的回归测试

  2、工作中*不断地*开发自动化测试工具,提高自己的生产率

  以上两点的目的很简单,就是要在保持产品质量处于一个较高水平的情况下,帮助公司尽可能地快速交付新版本的产品。

时间: 2024-10-12 04:47:08

敏捷开发模式下的自动化测试研究的相关文章

敏捷开发模式下的测试

敏捷开发 敏捷开发倡导的就是迭代式和增量式的开发模式,并且强调测试在开发过程中的重要性 .主要是围绕以用户为中心,以客户需求为导向的开发过程,这个过程有一个特点就是"随时有变化".虽然敏捷开发引入了灵活性,但其中的重点还是在于客户满意度.客户是敏捷过程的关键环节.如果,客户能够有所参与,并且客户了解到开发对于他们参与的欢迎,那么有助于增加客户对最终产品和开发team的信心和满意度.如果客户由于其他原因不愿意参与进来,那么选择传统的开发流程更好.敏捷开发有三个比较明显的特征:依赖客户完成

敏捷开发模式下的测试工作

在华为业务线上有近40天的时间了,参与了两个版本,华为的项目大多数走的都是敏捷迭代开发模式了,至于什么是敏捷,网上有很多的解释与资料,这里就不阐述了,就说说这期间华为的一个敏捷模式. 敏捷开发的最大特点是:积极响应用户的需求,快速高质量的交付软件.所以很多需求会按照用户需求程度以及模块之间的关联程度划分为多个迭代,这里的迭代你可以看做是一个小的完整的版本周期,每个迭代包含多个story,一个story相当于一个功能点,一个小的需求,而一个大的完整的发布版本一般由几个迭代版本组成.敏捷开发的周期一

新开发模式下自动化测试

关键字:自动化,测试, 功能测试 测试的目标是两个:"发现系统中存在的问题"和"证明系统能够满足用户的需求". 自动化测试既不单指某种工具,也不仅仅指某种测试技术,它是工具.过程.人员和方法的组合. 测试的现状Testing is dead 开发速度第一质量第二 新的敏捷开发模式 开发人员技能越来越高 测试在开发过程中起的作用越来越小 设计和框架缺陷更重要 敏捷开发强调尽早测试.自动测试.持续测试 自动化测试的难点 1.        脚本量.脚本的可维护性 2. 

敏捷开发模式

敏捷开发模式是一种从1990年代开始逐渐引起广泛关注的一些新型软件开发方法,是一种应对快速变化的需求的一种软件开发能力.它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用. 在敏捷方法其独特之处以外,他和其他的方法也有很多共同之处,比如迭代开发,关注互动沟通,减少中介过程

混合开发模式下主流移动开发平台分析

关键字:AppCan 移动开发平台 移动应用 Hybrid App在过去的两年中已经成为移动界的核心话题,但是作为一名Web开发者来说要如何站在移动互联网的浪潮之巅呢?是选择学习原生开发,研究Java.Object-C.C#等语言,还是选择继续使用网页开发,容忍HTML5功能的局限性?就在开发者左右为难的情况下Hybrid App作为一个折中的解决方案诞生了.那么究竟什么才是Hybrid App呢?HybridApp概念Hybrid App:Hybrid App is a mobile appl

MVC开发模式下的用户角色权限控制

前提: MVC开发模式 大概思想: 1.在MVC开发模式下,每个功能都对应着不同的控制器或操作方法名(如修改密码功能可能对应着User/changepd),把每个功能对应的控制器名和操作方法名存到数据库中,分别分配一个Id,这样,每个功能就都对应着一个Id. 2.在用户表中,每个用户都有一个用户角色(类似用户组)id 3.在角色表中,每个角色id都存放着他们自身角色所拥有的功能id的集合 然后在判断权限时,通过用户的角色Id获取相关功能id集合,然后判断当前访问的功能id是否在集合中,大致如此.

多平台移动开发背景下的自动化测试和QA

“app”一词表示我们在处理“小的应用程序”.尽管在一些情况下这或许是真的,但本文中它是指用于远程监控一个机器不同部分(比如:灯,气流和位置)状态的相当大的应用程序.机器使用一个可用后端服务器访问的(我们的app通过因特网访问的)移动通信网络.总之,其复杂程度和一个桌面app相同.app的一个重要方面体现在不同的管理上.不同的客户群接受不同的功能设备,而不同的机器类型需要特定的数据陈述.这就形成了一个充满变数的app——构建和运行期间其组件都是如此,这取决于我们想用哪一种机器.因此,这绝对不是一

cocos2d-x+lua开发模式下编辑器的选择

原本打算直接用CocosIDE的,毕竟是官方出品,而且支持Android远程调试,windows下的调试也很方便,调试的信息也很全,智能提示也不错.好了,一切看上去很完美,但是它有一个致命缺陷,就是继承了eclipse一贯的特性--"卡".基于java写的eclipse我一直使不惯,一方面是快捷键跟vs迥异,而我又懒得去配置(如果他能像IntelliJ IDEA一样,可以方便的删除重复快捷键,我还有兴致去配置一下,但是重复的快捷键没有任何提示,只是在使用的过程中会有各种问题),另一方面

springMVC前后端分离开发模式下支持跨域请求

1.web.xml中添加cors规则支持(请修改包名) <filter> <filter-name>cors</filter-name> <filter-class>com...common.filter.SimpleCORSFilter</filter-class> </filter> <filter-mapping> <filter-name>cors</filter-name> <url