敏捷与测试

上一篇 / 下一篇  2008-02-20 18:42:49

敏捷这个话题,很多组织在谈,也有在实践的。我之前所在的组织,做过RUP和敏捷的整合尝试,有收到过一些效果。这里把我个人的实践以及一些体会整理一下,分享给大家。

首先,为什么要敏捷?

---为的是更好的迎合市场和客户的需要,能快速响应变化。之前的组织是做产品的,快速响应的要求来自于两个因素。1,竞争对手的。人家推陈出新,我们也不能落后。否则人家一做市场推广,江山就被他们占去一片了;2,客户的。潜在重要客户关注的需求,我们得尽早做出来好让他对我们的产品满意愿意掏钱买。

RUP不是不能接受变更,但是它的方式是控制变更,也就是变更是它不希望看到的。但是加入敏捷,就是要很好的适应变更。来了变更,不影响当前迭代,就自然而然将变更放到下一个迭代中去,原先规划的迭代任务可以根据优先级做退让。

其次,敏捷给测试带来的挑战。

很多时候,大家谈敏捷,很少谈到测试。从我的观点来看,敏捷之后,测试反而显得更重要。因为敏捷希望每个迭代出来的产物都是可运行可演示甚至可交付的,这绝对需要测试来保障。其实敏捷之后,对于尽早测试,全程测试反而支持的更充分了,是好事。只是对测试带来的压力就更大。体现在:

1. 管理迭代中开发结束与测试结束的时间差。

   每次迭代,我们的目标是可运行甚至可交付,那也就是说需要事先定义迭代成功标准,并且通过测试去校验该标准是否达成。但开发跟测试总是有个时间差的,你这边还在测,可能开发就需要投入到下一个迭代开发中去了,为了赶时间,不可能等待你完全测试结束,哪怕只相差一两天,虽然他们也还是会留人力处理后续的缺陷,但是你已经落后了,所以一定要能从前一个迭代中腾出人力来及时进入下一个迭代,并且他们要有能力将前期获取的信息有效传递至后面参与进来的测试人员,如此循环。另外作为测试负责人要事先控制时间差,要参与到迭代任务分配筛选计划中,尽量避免发生时间差过长的现象。

2. 管理讨论结果

   因为敏捷迭代有很高压力,就是在规定的时间内完成迭代目标。一般来说,开发人员还是做不到将需求做到够细、将设计做到够细再入手编码,于是很多时候会在白板上讨论比划来不断明确一些东西。有时候这就是我们测试的依据,这也涉及到RUP非常关注的输入输出原则,非常重要,所以我们不能轻易只将这些东西记在脑子里,但我们又不能做到每次要求他们文档化,于是我们想了个办法,那就是把黑板上的结论拍照片存档,这招很管用,既节约了时间又记录了讨论结果。

最后,我将我之前实践的流程图分享出来。

图一:整体研发计划,分若干迭代完成。

图二:每个迭代的子流程。

    

 


TAG:

测试是艺术 引用 删除 elliongong   /   2008-02-21 18:25:37
谢谢Jacky的关注。可以交流感觉很好!

关于RUP与敏捷的共存,你可以参考一下http://www-128.ibm.com/developerworks/cn/rational/rationaledge/content/apr05/krebs/。就我们自己的实践来看,其实流程上还是RUP的机制,只是为了敏捷,为了更好的适应变化,为了更好的提高投资回报率(我们能做的更多是节约人力成本),我们允许变更及时插入当前迭代的下一个迭代,同时我们提高每个迭代的严格执行度(一定要在迭代周期内完成迭代目标,压力很大,以前的话感觉反正这个迭代没完成还有下面迭代来缓冲,因为成果反正是要到最后再展现的),加大沟通频率(每日站立会议)。
关于daily testing,整个项目的前期几个迭代主要还是手工测试,到后期的迭代,系统越来越成型,就会引入一部分自动测试(主要是以冒烟测试的形式,即每次拿到新版本先校验之前的主体功能是否正常,确认新版本是否具备可测性)。自动冒烟的那部分,我们用的QTP,即一种GUI自动测试工具,每次版本出来我们就用个小工具自动获取到冒烟测试环境跑一遍(通过脚本控制是否失败了就跳过去跑到下一个),跑完自动mail出来一个报告告诉我们失败了几个成功了几个,如果情况还好就开始手工测试,如果一团糟失败了好多就打回去。你说的版本,倒还没能用到,每次都拿最新的跑了。等到几个迭代都结束,后面还有一个集中的回归测试,那个时候如果有能力的话,就扩大冒烟测试的范围,变成一个自动回归测试集。
但是实际上,自动化部分我们做的还不够成功,主要是脚本编写技巧的掌握还不够,另外,QTP是基于GUI的,系统有时候变化快,要求我们不停的改auto的用例,成本高。如果是完全自己写的白盒测试脚本来做auto测试,可能就好些。
满天飞舞的猪仔 引用 删除 jacky_zhuang   /   2008-02-21 17:30:21
RUP XP
居然可以共存,不可思议啊。。。。

我觉得两个观念是矛盾的,如何在实践上统一呢?哪一部分观念使用RUP,哪一部分观念使用XP呢?

指点指点吧。
满天飞舞的猪仔 引用 删除 jacky_zhuang   /   2008-02-21 17:25:15
可以分享一下你们daily testing的感受吗?
满天飞舞的猪仔 引用 删除 jacky_zhuang   /   2008-02-21 17:24:18
很好的,学习下。

探讨一下daily testing

我们没有实施daily testing,因为是重型系统,不过我自己考虑了一下daily testing的基本特点

。 监视自动build结果,自动移除老版本,自动install新版本功能
。 testing case应该使用配置文件定义,同时case使用应该基线化,使用执行结果文件记录
。 testing case失败应该可以自动记录错误状况,并退出
。 退出后,后台服务根据执行结果记录文件,自动进行下一个case
。 自动发送执行结果至邮件服务器
测试是艺术 引用 删除 elliongong   /   2008-02-21 11:34:06
谢谢你的关注。感谢!
我想我对敏捷的认识还是不够深入的,不管是原则、模式还是实践,还需要不断找机会去体会。
你说的时间差用daily build支持,不是很明白呢,我们也是有daily Build的,但这只是为了保证版本的可测试性,甚至我们还做过daily build的冒烟测试。
Make testing easy 引用 删除 zyawoo   /   2008-02-21 02:17:24
我所在的公司没有实行Agile,感谢楼主的日志使我对敏捷又加深了认识。
浏览过《敏捷软件开发》(原则,模式,实践)。
这里提到的应该偏重于原则部分吧?
模式部分对开发人员要求是比较高的,而在处理迭代中的时间差问题,是否由daily build支持呢?
我想这可能就是国内还没有多少企业实行Agile的原因之一吧!
 

评分:0

我来说两句

Open Toolbar