论坛首页 综合技术论坛

也说回归测试regression testing

浏览 27675 次
精华帖 (0) :: 良好帖 (10) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-04-14  

开发人员对回归测试应该有所耳闻,但是并非都很清楚它的确切含义,比如我,以前老听到测试部门的头儿说回归回归,但也没具体去探讨什么叫回归测试,可能回归这个词太熟也太陌生吧,今天终于去探寻一番啥叫回归。

 

回归测试英文名叫regression testing,regression是复原退步的意思,当然不能想当然的理解为“退了步的测试”,描述为“对退步再进行测试”可能较为恰当。既然是退步,那就还存在“原地踏步”这种状态,相对于“原地”往后退才叫做“退步”,为什么会退步,也就是说测试的缘由是什么,缘由是因为系统、程序或代码的状态被改变了。在系统发布前通常会做多次回归测试,比如第n次发布测试发现了m个bugs(这里假定系统此时处于第n状态),程序被QA部门reject回到开发部门当中,开发人员根据bug系统进行缺陷修正,修正完毕后提交给QA部门进行回归测试,这次回归是针对第n次发布测试,测试目标是m个bugs将得到fixed,回归结果将得到系统的一个新的状态(这里假定系统处于第n+1状态),在第n状态到第n+1状态中间,由于开发人员对代码进行更改,因此这时候系统状态的未知系数(不稳定性)是非常高的,可以称之为“退步”(regresssion),因此第n+1次测试其实是针对这一“退步”状态进行,因而叫做回归,回归在这里可以有两重意思,一是回到系统的较低级状态,二是将系统的状态“拉回”到新的稳定状态(第n+1状态)。

 

回归测试并非局限于某一种测试,比如发布测试,它可以发生在单元测试(ut),功能测试(ft),集成测试(it)等等当中,当代码发生任何变动的时候,所执行的测试就可以说是一次回归测试,回归测试可以是自动的,也可以是手工的,比如前面所举的发布测试通常是手工完成,当回归测试可以自动执行的时候,系统可以较快地到达一个新的稳定状态,比如一个系统如果有良好的ut基础,那么代码的变更一旦检入代码库当中,就可以触发连续构建工具进行build and test(回归测试),失败的结果将在第一时间通知变更代码的程序员,或者通知配置管理员立即处理有问题的代码,这种just-in-time的处理方式将大大减少bug数目并提高代码质量,同时使团队的合作开发更加顺畅。

 

测试的自动化的程度越高,回归的周期就越短,效果越明显,软件的质量也越高,测试是否自动化也是开发是否敏捷的一个主要标志。

 

 

   发表时间:2009-04-14   最后修改:2009-04-14
简单的说,回归的意思就是:经过一番折腾后,错误被改正,同时,那些曾经正确的依然正确。
回归测试按理说是必须做的工作,否则不允许发布。
但是现实是,由于这个工作量十分巨大而且不是自动化的,导致很多时候都被简化成点几下鼠标没报错就了事,这是十分危险和不职业的。
由于敏捷提倡短迭代和频繁发布,因此,自动化的回归测试是必须的,是敏捷的重要标志。
0 请登录后投票
   发表时间:2009-04-15  
引用
测试是否自动化也是开发是否敏捷的一个主要标志

这就好像说,监狱是否人满为患是城市是否安全的一个主要表示。
0 请登录后投票
   发表时间:2009-04-15  
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

这就好像说,监狱是否人满为患是城市是否安全的一个主要表示。

人家又没说测出的bug多就代表敏捷,
你的比喻毫无道理!
0 请登录后投票
   发表时间:2009-04-15   最后修改:2009-04-15
daquan198163 写道
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

这就好像说,监狱是否人满为患是城市是否安全的一个主要表示。

人家又没说测出的bug多就代表敏捷,
你的比喻毫无道理!

好吧,既然你不理解我的意思,我换个比喻。这就好像说,是否到处有警车和电子眼是城市是否安全的一个主要标志。
0 请登录后投票
   发表时间:2009-04-15  
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

这就好像说,监狱是否人满为患是城市是否安全的一个主要表示。


还可以更简化的说监狱是城市的主要表示
0 请登录后投票
   发表时间:2009-04-15   最后修改:2009-04-15
mock1234 写道
如果把测试从事后变为事前,你就会自然而然地像 kent beck 一样勇敢和乐观。城市的主要标志不是监狱,而是人人都掌握自省的技术。

好的描述了面向系统集成需求的自动化测试技术,让用行政手段来协调开发变得多余,让技术人员随时保持注意到客户第三方价值观而开始有效的沟通而不是争吵。

对于使用敏捷方法来说,水平差一些的团队,最多只能实行每日构造、迭代开发。而水平高的团队,可以实行每日、随时进行自动化回归测试。


说得好。
测试不仅使系统自述,尤使开发人员自省(敏捷要求自发型团队)
测试实际解放了开发人员,而不是增加负担,测试使开发人员不再是过程中的某个“部件”,使他们更加关注于客户价值(这也是敏捷的宗旨)。
最后一句把我想说但是没能说出的说了 一个字:高

(另:说“监狱是城市的主要表示”,主要是为了回答夸夸其谈玩玩文字游戏的人)



0 请登录后投票
   发表时间:2009-04-15  
photon 写道
daquan198163 写道
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

这就好像说,监狱是否人满为患是城市是否安全的一个主要表示。

人家又没说测出的bug多就代表敏捷,
你的比喻毫无道理!

好吧,既然你不理解我的意思,我换个比喻。这就好像说,是否到处有警车和电子眼是城市是否安全的一个主要标志。

敏捷又不等于项目成功,因此不等于城市安全。
到处有警车和电子眼 是 城市安全设施是否完善 的一个主要标志
0 请登录后投票
   发表时间:2009-04-15   最后修改:2009-04-15
daquan198163 写道
photon 写道
daquan198163 写道
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

这就好像说,监狱是否人满为患是城市是否安全的一个主要表示。

人家又没说测出的bug多就代表敏捷,
你的比喻毫无道理!

好吧,既然你不理解我的意思,我换个比喻。这就好像说,是否到处有警车和电子眼是城市是否安全的一个主要标志。

敏捷又不等于项目成功,因此不等于城市安全。
到处有警车和电子眼 是 城市安全设施是否完善 的一个主要标志

先背一遍敏捷宣言的第一句话
0 请登录后投票
   发表时间:2009-04-15  
个体与交互重于过程和工具。
你想说什么?
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics