|
看到了一些高手对这篇文章的回答,感觉比较长见识,大家有兴趣也看看。
13 楼:omomo
看起来这个帖子里,楼主是微软的
peking2torento是前微软的, 目前在Google. 呵呵.
楼主, 你公布内部网站的内容,请小心! 这是Standard business contact不允许做的. 我觉得你应该删掉那部分引用和内部链接. 以避免给你自己带来麻烦
我读了peking2torento的反驳,觉得多数是在理的,可能语言有些激烈. 在楼主的后一篇回复中,于是变得讨论的理性些. 这个标题之下其实可以做很多理性的讨论,只是楼主的第一帖,为了证明这个标题,说的有些言过其实了.
楼主上面又说了.有个新来的,写了个自动化测试,但是没有找到那个bug. 还是回到我之前的看法,我认为测试人员的素质,我把深刻理解产品和产品的目标用户为第一,自动化为第二. 那个新人是因为没有做好第一条,所以自然工作做不好. 但这不能抹杀自动化的意思. 如果要我来说,那是test lead培养新人的失败. 我认为正确的ramp up策略是 让新人先手工测试,读spec,读dev design和尽可能的玩他要测得产品. 这样搞几个月以后,再叫他开始做自动化测试,如果按照这个顺序,我想新人的成长就会不错了. 这不是自动化测试的错. 不要把项目中的失误总是归结到自动化测试浪费了你们的时间. 说到底那是你们自己分析的问题. 不经过分析就执行的自动化策略,我也反对.
发表时间:2007-07-20 16:40:17 14 楼:omomo
我希望当测试人员来试图说服大家做一个自动化测试方案都要明确地告诉我收益/付出的比例有多大. (ROI)
能力不同的测试人员,分析出来的ROI基本上就可以看出他的水平了.有些人我听听他的分析,就知道这事情有没有谱.也可以看出他的技术水平到底怎么样.当然这也要求我们自己与时俱进,不断地追求技术进步.
做自动化测试计划,我们无非就是在quality/schedule/ROI中间平衡.
发表时间:2007-07-20 18:13:32 15 楼:papercrane
抄抄底,挑挑刺,原文就不贴了,说说个人见解而已:
有些做测试的人因为不正确的动因去做自动化,不能推断出做自动化的测试人员都有不正确的动因,哪怕这个比例是1-1.0e-100。很多人献血是为了卖钱,但不能说献血者都是不崇高的。这个立论会导致以偏概全。
后来接手项目的人喜欢重来,不管在测试还是开发领域都是普遍存在的“坏”现象,如果因此否定测试自动化的作用,估计大量的development framework也都难逃一劫了。
找bug只是测试工作的其中一个任务,哪怕再重要(当然是很重要),也不是唯一的令产品开发失败的风险。请注意“唯一”和“风险”:风险就是,搞不定就完蛋,不管其它方面做得多好,所以就是要做好!唯一就是,只弄好就行,其他别管。好了,解决了找bug的风险,其他的风险呢?如果有项目因为过于着重其他风险而没有处理好找bug的风险,似乎是时间管理或者风险管理没有搞好的原因居多喔。
分析变动影响(impact factor)也是需要代价的,从纯粹代码分析到纯粹回归测试之间,显然是有机可乘的。代码分析随代码覆盖量增长区分效果急剧下降;回归测试随代码覆盖量增长执行时间延长。那么作初步代码分析,定出范围后自动化回归测试,结果如何?
开发过程和工具都针对Agile Development做了大量改进和适应,自动化测试的实践跟不上是自动化测试的错呢?还是不思进取的错?从管理、设计到工具,开发人员不断降低行为粒度;自动化测试是天生就不能这么做还是没想到可以这样做呢?
找到很多的bug和找到难以重现的bug,使用的方法是不一样的。重负荷下处理特定序列的bug,race condition,dead lock,很多时只有依赖自动化才能容易重现。产品发布以后暴露的问题,很多也属于这一类。自动化测试除了发现这些bug,还能高效的确认修复是否成功。否则想象一下,修复之前折腾一次,修复之后又折腾一次,每次regression折腾两次......
功能设计freeze了才说有些功能不测?计划阶段和设计阶段复核的时候测试人员不参加的吗?早就应该跳起来啦。Test is the guard of the product!
发表时间:2007-07-20 19:52:11 16 楼:goldcattle
我觉得楼主的观点有点以偏概全。
自动化测试的目的一般有几个:
1、防止regression.
2、替代简单而重复的手工测试。
3、手工测试无法做到的测试。
如果你的项目有这样的需求,那么自动化测试是必要的。当然到底才用不采用自动化测试,自动化到什么程度和项目的预算和时间相关。
楼主主要在的测试是在“涉及网络安全认证与授权,是公认相当复杂的项目”
我想如果楼主接触的是嵌入式底层开发或者直接和电路打交道的话,那么楼主可能大声说,自动化测试根本是不必要的。
对于微软来说,很多组是提供一些二次开发的平台。这些平台往往会提供一堆API。这些API肯能会内部使用也可能会外部使用。有的team最后的产品就是一堆API和binary。这些东西根本没办法手工测试。这些项目组的测试压力是相当大的。他们必须要理解每个API究竟是干什么的,才能设计出好的case。然后还有设计一些黑盒的例子去测这些case.
对于有UI的产品来说,楼主很大程度上忽略了回归测试。
从接触到大的项目而言,很多人成百上千个人在开发一个产品。每个team可能会依赖好多个team。如果某个team新加的代码影响到你依赖的一个模块。如过没有回归测试来保证,我想测试team 根本没有时间来做ADhoc testing。
你用Adhoc 发现了一堆错误,不能把功劳完全归功于Adhoc testing。你应该看到,是因为有自动化测试在保证着产品的区ality让测试人员在防止regression bug的战斗的解放出来。
不能吃到第九个馒头饱了,就说前面8个馒头是没有用的。
本回复于:
2007-07-20 19:53:20 被【goldcattle】修改
发表时间:2007-07-20 23:22:57 17 楼:Skyfire1201
看了这篇文章以及回复之后深有感触,觉得真是不能用片面的例子否决全部。读过离散数学的人都知道,如果A是B的子集,而A是错误的,这并不能表明B全部是错误的。楼主根据自己对一种自动化测试失败的经历就否认了所有的自动化测试,而推理出“自动化测试无用”的理论,正是犯了基于一点否定全部的错误。其实自动化测试分很多种,有为了防止regression做的功能性自动化测试,有压力自动化测试,有为本地化做的自动化测试,更有exploratory自动化测试。就算automated regression在某些产品上作用不大(比方说生命周期只有1-2年甚至几个月的游戏),不能因此就否定所有的自动化测试。
发表时间:2007-07-22 18:00:04 18 楼:papercrane
关于API测试:
上次去总部出差遇到一老员工在庆祝二十年微软生涯。问及其经历,答曰基本上是测试两个Windows API;再问test case数量,答曰三千左右;最后问执行耗时,答曰全部平台的组合约需两天,幸好win98已不支持,否则无法按时完成。翻看其blog,原来是timer相关的API。归来后对三千之数不得要领,苦思冥想之下释然,此事牵涉甚广:
- 内核重入
- 与Windows Message Pump交互
- 与debugger交互
- 与Windows Time service交互
- 时间/时区变动
- 以往版本的regression |
|