`
seemoon
  • 浏览: 159468 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

也说回归测试regression testing

阅读更多

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

 

回归测试英文名叫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数目并提高代码质量,同时使团队的合作开发更加顺畅。

 

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

 

 

分享到:
评论
23 楼 RCFans 2009-06-02  
学习了
对于那些容易在回归测试中出错的模块,设计时尽量把它们分割开来互不影响
22 楼 icefishc 2009-06-02  
mock1234 写道
thinkinnight 写道
自动化工具其实并不是银弹,自动化的结果总归还是要有人来分析吧。而且很多人以为自动化测试就是让它不停的跑啊跑,结果那一堆的结果文件,分析起来头疼阿

为什么会产生“一堆”bug呢?自己好好反思项目管理问题。

自动化测试只是工具,它只能给你尽量提前反映问题。你应该在看到“一堆”问题时扪心自问为什么在只有1、2个问题时自己却在那里整天聊天和休闲?

可以预先做一个断言,好的项目管理即使面对极其复杂的大型项目也如行云流水,非常顺畅简练。


你把测试想简单了
1。并不是只有失败才产生有用报告。
2。并不是测试没通过就意味着bug
3。也不是所有的东西都可以简单的判断通过或失败。
比如性能测试 产生的那一堆报告你不分析谁分析。

21 楼 xly_971223 2009-05-01  
回归必须要自动化才有价值。
单纯的靠人力回归, 成本太高、 速度太慢,根本跟不上敏捷开发的速度

20 楼 老菜刀 2009-04-28  
跑题太严重,本来楼主介绍回归挺好的。可总有人要跳出来形而上,太虚了。

务实,务实,同志们,要牢记啊。
19 楼 daquan198163 2009-04-24  
thinkinnight 写道
自动化工具其实并不是银弹,自动化的结果总归还是要有人来分析吧。而且很多人以为自动化测试就是让它不停的跑啊跑,结果那一堆的结果文件,分析起来头疼阿

测试运行的结果要么通过,要么失败,
只有失败的时候需要分析一下日志而已啊。
18 楼 thinkinnight 2009-04-24  
自动化工具其实并不是银弹,自动化的结果总归还是要有人来分析吧。而且很多人以为自动化测试就是让它不停的跑啊跑,结果那一堆的结果文件,分析起来头疼阿
17 楼 seemoon 2009-04-19  
pipilu 写道
whaosoft 写道
到底什么是敏捷呢~~
我有个同事说是不用设计 拿起来就写 用代码对付~


好像在《Joel说软件》中,Joel就专门这么批评过敏捷(强调必须要有设计),已经记不清在哪一章了,也不知道自己当时是不是误解人家的意思了。
我理解的敏捷就是软件开发过程中要快速的得到反馈。
不是没有设计,但从做事方法上,是尽快的让程序跑起来(或尽快的通过单元测试),不要“长考出臭棋”。


皮皮鲁的“长考出臭棋”比较形象,过度计划和过度设计都是过程式开发的严重弊端,所以称之为heavyweight。
让程序尽快跑起来的好处有让问题尽早暴露出来,让客户尽早能参与进来,得到良性反馈和循环。

16 楼 pipilu 2009-04-18  
whaosoft 写道
到底什么是敏捷呢~~
我有个同事说是不用设计 拿起来就写 用代码对付~


好像在《Joel说软件》中,Joel就专门这么批评过敏捷(强调必须要有设计),已经记不清在哪一章了,也不知道自己当时是不是误解人家的意思了。
我理解的敏捷就是软件开发过程中要快速的得到反馈。
不是没有设计,但从做事方法上,是尽快的让程序跑起来(或尽快的通过单元测试),不要“长考出臭棋”。
15 楼 seemoon 2009-04-17  
whaosoft 写道
到底什么是敏捷呢~~
我有个同事说是不用设计 拿起来就写 用代码对付~


JimHighSmith:
引用

敏捷是促进变革响应变化以便在动荡的商业环境中创造利润能力
敏捷是平衡灵活性和稳定性的能力
敏捷更多的是一种态度而不是一个流程,是一种氛围而不是方法。


敏捷宣言:http://agilemanifesto.org/
14 楼 whaosoft 2009-04-17  
到底什么是敏捷呢~~
我有个同事说是不用设计 拿起来就写 用代码对付~
13 楼 pipilu 2009-04-16  
敏捷当然不一定非要自动化测试。功能测试,一百个测试用例,一个人带报bug也就两天时间差不就完成了。如果每晚能跑一遍自动化测试,开发人员早上上班时就能看到新的测试结果,这样当然更理想、更敏捷。回归周期尽量短也是我们追求的目标。

感觉自动化测试没法完全取代人工测试吧?
12 楼 agurick 2009-04-15  
其实听想听听大家所谓的敏捷经历的…… 整点儿实在的。
11 楼 seemoon 2009-04-15  
photon 写道
注意红色字体部分。
到处有警车和电子眼=>城市安全设施是否完善
城市安全设施是否完善=>安全城市?

好多大城市的安全设施比乡村先进多了,但是好多大城市里的人们的安全感要差的多。

回到最开始,瀑布模型同样能导致完善的自动化测试。所以自动化测试只是敏捷的一个结果。同样,没有自动化测试就未必不敏捷。


很好,回到正题了,不然你再搞一个“面朝大海,春暖花开”那大众就又被悠忽了。呵呵,开个玩笑

如果自动化测试不敏捷,那么手把手地debug和测试那叫敏捷?


10 楼 photon 2009-04-15  
注意红色字体部分。
到处有警车和电子眼=>城市安全设施是否完善
城市安全设施是否完善=>安全城市?

好多大城市的安全设施比乡村先进多了,但是好多大城市里的人们的安全感要差的多。

回到最开始,瀑布模型同样能导致完善的自动化测试。所以自动化测试只是敏捷的一个结果。同样,没有自动化测试就未必不敏捷。
9 楼 daquan198163 2009-04-15  
个体与交互重于过程和工具。
你想说什么?
8 楼 photon 2009-04-15  
daquan198163 写道
photon 写道
daquan198163 写道
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

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

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

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

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

先背一遍敏捷宣言的第一句话
7 楼 daquan198163 2009-04-15  
photon 写道
daquan198163 写道
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

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

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

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

敏捷又不等于项目成功,因此不等于城市安全。
到处有警车和电子眼 是 城市安全设施是否完善 的一个主要标志
6 楼 seemoon 2009-04-15  
mock1234 写道
如果把测试从事后变为事前,你就会自然而然地像 kent beck 一样勇敢和乐观。城市的主要标志不是监狱,而是人人都掌握自省的技术。

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

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


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

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



5 楼 seemoon 2009-04-15  
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

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


还可以更简化的说监狱是城市的主要表示
4 楼 photon 2009-04-15  
daquan198163 写道
photon 写道
引用
测试是否自动化也是开发是否敏捷的一个主要标志

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

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

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

相关推荐

    Regression Testing With JMeter

    在IT领域,回归测试(Regression Testing)是一种重要的软件测试方法,用于确保软件更新或修改后,原有的功能没有受到影响,即应用程序仍然能够按照预期的方式运行。本文将深入探讨如何使用Apache JMeter进行回归...

    《软件回归测试报告》.doc

    - **RT**: Regression Testing(回归测试) - **AI**: Artificial Intelligence(人工智能) - **ML**: Machine Learning(机器学习) - **DM**: Data Mining(数据挖掘) ### 2.1 测试安排和进度 本次回归测试...

    Regression testing of GUIs

    然而,随着软件功能的不断迭代与升级,GUI的结构也会随之变化,这便引发了回归测试的需求。回归测试是一种确保修改后的软件仍然能够正确运行,并且原有的功能没有被破坏的测试方法。传统的回归测试技术主要针对非GUI...

    第9章 regression testing[兼容模式]1

    总的来说,回归测试是保证软件质量的重要手段,其有效执行需要良好的测试用例管理、明智的测试用例选择策略以及对软件修改的深入理解。在实际操作中,团队应结合自身资源和项目需求,灵活选择合适的回归测试策略。

    Expect - Regression testing and conformance testing interactive programs

    ### 使用Expect进行交互式程序的回归测试与符合性测试 #### 概述 本文由Don Libes撰写,主要介绍如何通过使用Expect工具来测试交互式程序,特别关注于回归测试。交互式程序因其特性通常需要人机交互来进行测试,这...

    How to choose a regression testing strategy.doc

    回归测试策略选择指南 回归测试是软件开发过程中不可或缺的一环,尤其在迭代开发模式下,其重要性不言而喻。然而,随着软件系统的复杂度增加,回归测试往往成为耗时最长、资源消耗最大的环节。本文将探讨如何选择...

    论文研究-Research and application of keyword driven automated testing framework in regression testing.pdf

    本文将重点讨论在回归测试中关键字驱动自动化测试框架的研究与应用,旨在通过自动化测试框架提升回归测试的效率。 回归测试的目的是在软件发生变更后,重新测试软件先前已经测试过的区域,以验证变更的正确性以及...

    回归测试,有什么高效的测试方法-.docx

    回归测试(Regression testing)是指在发生修改之后重新测试先前的测试以保证修改的正确性。理论上,软件产生新版本,都需要进行回归测试,验证以前发现和修复的错误是否在新软件版本上再次出现。 回归测试的策略 ...

    visual-regression-testing-framework:免费的视觉回归测试框架(CSS测试或图像比较工具)-随时可用

    视觉回归测试框架 免费的可视化回归测试框架-即用型使用库创建并可以使用的可视化测试框架。 您只需添加要测试的URL,它将进行测试。 内容 安装 克隆此仓库git clone ...

    hands-on-visual-regression-testing-源码.rar

    本资源"hands-on-visual-regression-testing-源码.rar"包含了实现这一过程的相关源码,提供了一个实践性的学习平台,帮助开发者深入理解视觉回归测试的原理与应用。 一、视觉回归测试简介 视觉回归测试是通过比较...

    基于FitNesse的自动化回归测试工具的设计与实现

    本文介绍了一种基于FitNesse的自动化回归测试工具(Automated Regression Testing Tool, ARTT)的设计与实现。 #### 2. FitNesse的测试流程 FitNesse提供了一个集成化的测试环境,支持多种类型的测试,包括单元...

    hands-on-visual-regression-testing:视觉回归测试入门

    动手视觉回归测试用。欢迎投稿! 虽然我已经付出了很多努力来完善一切,但不可避免地会出现错误或可以更清楚地解释的事情。 我会喜欢任何和所有的帮助/建议。 如果您看到此处未涵盖的工具,请随时将或者更好的是,!...

    软件回归测试自动化框架的开发与应用

    在IT行业的软件开发过程中,回归测试(Regression Testing)是一项至关重要的环节,旨在确保软件更新或修改后原有的功能依然正常运行,没有引入新的错误。回归测试自动化框架的开发与应用是提高测试效率、减少人力...

    visual-regression-testing:使用PhantomCSS进行视觉回归测试

    视觉回归测试 使用PhantomCSS进行视觉回归测试的基本分布。 PhantomCSS ( ):一个CasperJS模块,用于使用PhantomJS或SlimerJS和Resemble.js自动化视觉回归测试。 对于测试Web应用程序,请使用实时样式指南和响应...

    软件测试常识和自动测试理论

    2. 测试类型:包括单元测试(Unit Testing)、集成测试(Integration Testing)、系统测试(System Testing)、验收测试(Acceptance Testing)和回归测试(Regression Testing)。单元测试针对最小可测试单元,如...

    软件质量保证与测试 - 课程实验代码+期末复习资料+期末实验大作业测试报告

    软件质量保证与测试(Software Quality Assurance and Testing)是一门...4. **回归测试(Regression Testing)**:在软件更改后进行测试,以确保新代码没有引入新的缺陷。 每个实验代码包含详细的注释和说明,帮助

    visual-regression-testing:这将捕获图像作为第一次运行的基准,然后与下一次运行的图像进行比较

    使用WebDriverIO和WebDriverCSS进行视觉回归测试 这将捕获图像作为第一次运行的基准,并与下一次运行的图像进行比较。 该项目基于WebdriverIO,带有Mocha Testing Framework和Spe​​c报表的WebdriverCSS。 需要...

    软件测试的14种类型

    5. 回归测试(Regression Testing):当软件或系统发生变化时,回归测试确保改动没有引入新的错误或导致原有功能失效。 6. 压力测试(Stress Testing):压力测试是模拟超出正常工作负载的情况,检查系统在极限条件...

    LoadFocus:可视化回归测试「LoadFocus: Visual Regression Testing」-crx插件

    如果两页之间的差异高于设定的阈值(“容差”可以从0%到90%),则可视化回归测试将失败。 查看屏幕截图并排 - 浏览网站截图并比较生成的图像,并逐个像素地识别差异 比较图像将显示在结果的屏幕截图旁边,突出显示...

Global site tag (gtag.js) - Google Analytics