自动化测试终究会取代手工测试?(2008-11-03 )获奖名单已公布
背景描述:[color=red]随着测试工具的逐步发展,我们越来越多的依赖于各种测试工具来完成我们的测试工作,那么未来还会有手工测试的天地么?[/color][size=4][color=#ff0000][/color][/size]
[size=4][color=#ff0000][/color][/size]
[table=400][tr][td][b]奖项[/b][/td][td][b]获奖名单[/b][/td][td][b]奖励[/b][/td][td][b]答案连接[/b][/td][/tr][tr][td]最佳话题PK手[/td][td]尛蟲蟲[/td][td][align=center]当当购物卡50元+最佳PK手勋章[/align][/td][td][url=http://bbs.51testing.com/viewthread.php?tid=131402&page=2#pid1105860]29#[/url][/td][/tr][/table] 万变不离其宗 无论自动化测试技术如何先进,始终不能超越人工测试。我觉得一个主要的原因在于目前的技术局限性。除非未来在AI方面有较大的提升,才可能模拟出人类的行为,但是仅仅限于模拟,很多人类行为是没有逻辑性的。 人家说的终究会取代,这是一定的,但取代的只会是人工执行测试用例这一部份,而对于设计方法部份很难取代,所以这就是我为什么在不会编程就做不好测试的PK问题中认为:不会编程也能做好测试的原因所在,当你用编程取代人工执行测试用例后,编程者的地位其实就是取代了执行用例者的地位,这也是测试的编程的价值所在,但是真正的核心价值在与设计与方法,所以自动化终究会取代测试执行的! 自动化测试在基于在程序相对稳定和回归测试上,对于一个程序不稳定的情况下去做自动化测试是比较难的。手工测试能用高智能方法去测。而自动化测试在低智能的情况下用,才能显示出它的好处。非要在高智能的情况下用也不是不可能,但是这个成本会好高。对企业不利。 自动化测试可以将繁琐的测试变得简单,但是只在一般不用太多逻辑思维的测试用例上,自动化测试根据给定的测试步骤或者测试方法来执行测试用例,不可能将所有的人思维方式程序化来测试软件。毕竟人类的思维不一样。 虽然自动测试工具有很多好处,但它不能解决所有测试工作中的问题,永远无法代替手工测试。应看做是对手工测试过程的一个补充。
★ 工具也是软件,只能按照指令执行,而人可以运用想象力和创造力采用不同的方式改进和完成测试。而且人工测试可以处理意外事件,如网络中断,必须重新建立连接,手工测试在测试期间就可以尽可能地解决问题。然而这样的意外事件却可以中止自动测试的执行。
★ 自动测试并不是对所有的程序都适用。如:确认打印输出的结果。测试人员为了验证结果,必须走到打印机前确认文档确实打印下来了,纸上打印的内容也必须要用眼睛来验证,这不可能用工具进行吧~~还有类似的:测试彩色模式的合适程度、屏幕轮廓的直观效果,或指定的屏幕对象是否能播放正确的声音等,用自动化测试都比较困难或者不可能
★ 如果软件版本不稳定时,用户界面和功能频繁变化,那么修改相应的自动化测试脚本的开销也会比较大
★ 测试工具本身也是复杂的应用程序,也需要提供补丁,也可能是不可预测的。如:数据库损坏,基线不能恢复,或工具行为本身并不总是与预期一致。定位问题或将损坏的库从备份中恢复也需要花费很多时间
★ 还有就是自动测试的费用和维护问题。自动测试的费用包括了工具购买费用,培训费用,自动测试脚本的开发和维护费用。维护自动测试脚本的工作量有时非常繁重
~~~~~随着测试工具的发展,越来越多的测试人员对自动化测试抱很高的期望,甚至认为自动测试能够完成从测试规划到测试执行期间的所有工作,不需要过多的人工干预。从技术角度上分析,这样的需求几乎是不可能实现的。
在一个项目中任何工具都不可能完全代替所有的手工测试!! 发错了,见正方观点,呵呵。。。
[[i] 本帖最后由 lantianwei 于 2008-11-4 11:16 编辑 [/i]] 人有多大胆,地有多大产! :lol 因此自动化代替手工更不在话下,唯一的问题只是时间问题,可能这需要10年,几十年。。。
为何我会如此确定自动化必将替代手工?
1. 随着软硬件领域的更加规范标准,这将大大降低自动化替代手工的难度
2. 随着人工智能的不断发展,让机器也有思想将不是问题,而用人工智能正可以用到自动化替代手工上来
3. 人类总是很懒,因为懒的走路,发明了汽车;因为懒的做饭,发明了肯德基;因此,终将有一天人将懒的去手动测试!
4. 在速度,成本方面人跟机器没发比,而跟有思想的机器更加没法比,为了降低成本,提高效率,这也是将来企业的必然选择
5. 在一两百年前,让个破铜烂铁帮咱算题,整理文件,聊QQ是不可想象的,但我们现在做到了;而自动化现在已经有一部分替代了手工,那么他的完全替代更加不是梦!
当然,在现阶段自动化替代手工将只是一个梦,更有少数公司因为自动化的不成熟导致自动化的成本比手工还高,效率却低。因此我觉得手工测试在未来几年或更长点的时间还是非常有市场了,但自动化将是一个趋势,谁也无法改变这点!
我相信,在未来软件高度成熟时代,如果我们想开发一个软件产品只要需要输入这个软件产品的一些特性描述,包括软件产品的设计,开发,测试等一系列过程将会自动完成,然后我们就可以得到我们想要的软件产品。也许将来也会出现无错软件,那么测试就根本没有必要了。可能有很多人会反问,让软件无错怎么可能啊?当然可能按现在的软件,计算机模式,根本无法实现无错软件,但如果我们对计算机领域进行一个大的变革,包括计算机硬件,软件开发等 比如计算机的表示不在是1,0,而是更加复杂的字符。。。
人有多大胆,科技就有多牛!
呵呵。。。
[[i] 本帖最后由 lantianwei 于 2008-11-5 09:29 编辑 [/i]] 自动化只是辅助手工测试的一种工具,但是它没有手工测试思维性。就像机器人只能为人类服务而无法代替人类一样。 自动化测试的目的是替代繁琐的手工测试,将测试人员从手工测试中解脱出来,将精力用在测试用例设计,挖掘更深入的bug.但也并非所有手工测试都需要自动化,这需要进行ROI的评估
而且,自动化测试主要是用在回归方面,保障之前的功能正确,发现bug极少.bug还是要通过手工测试来挖掘 无论自动化测试技术如何进步,有很多人工操作是取代不了的。测试脚本是没有思维的,在执行过程中是不能根据实际情况做适时反应的。 自动化测试是永远不可能取代手工测试的,试想一个用户量很大的网站经常要做一些活动,用了自动化需求一边叫本不能复用无论人力财力都是很大的消耗。 手工测试是软件测试过程中的基础,现有的自动化测试工具必须在系统软件各个方面都完善以后,才有可能比较完善的运用到系统测试中。
如果一个软件对于手工测试的操作都无法完成,更不用说自动化测试了。
自动化测试工具的优势在回归的过程中,才能够显示出来。 工具的思维始终不能代替人的思维,自动工具是为我们保证软件质量而服务的 手工测试永远是不可取代的。
自动测试应该说在特定的时候比手工测试要快速而且反应问题准确。但是不要忘记了,机器永远在执行固定的代码。
而一些BUG是需要一系列操作才能被发现的,那就带有很大的偶然性,机器里面没有偶然。
自动测试的BUG,手工一定可以,但是手工发现的BUG,可能机器可能永远也发现不了。
除非机器能和人脑一样工作。 虽然我一直做自动化测试,但是自动化测试真的是不可能取代手动测试的,自动化测试发现的BUG是有限di~
有梦想才能成真
只有敢于大胆的梦想,才会有发展的可能。而且任何事务的发展是建立在梦想的基础之上的,因为有梦想我们才会竭尽全力去想办法达到。明知不可为而为之,这才是突破。自动化测试终将与手工测试和谐共存!
俗语说的好“没有永久的敌人,只有永久的利益”,手工测试和自动化测试最终都是为了保障软件质量,在人力、时间、Money等等因素的约束下找到一个最佳的平衡点。1.初期单元测试前,代码走读的作用我想是任何自动化不能代替的,而且这对于发现初期隐藏的代码隐患,算法设计缺陷,以及公司的编程规范是不可或缺的。
2.中期软件GUI稳定前,功能测试还很依赖于手工,这将提供在此开发阶段产出的Build的在功能方面的稳定性。如果这时就用自动化,将会事倍功半。
3.后期回归测试中,虽主要依赖功能自动化测试工具,但在验证已修复的BUG及做一些复杂的Exploratory Testing(ET)任务时,手工仍然是最佳选择。
最后我衷心的祝福手工和自动化测试能够携手共创趋于无穷完美的软件,为人类的明天打造更美好的生活品质!
Vinly Zhao [quote]原帖由 [i]momoANDmonica[/i] 于 2008-11-3 17:43 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=1101016&ptid=131402][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
虽然自动测试工具有很多好处,但它不能解决所有测试工作中的问题,永远无法代替手工测试。应看做是对手工测试过程的一个补充。
★ 工具也是软件,只能按照指令执行,而人可以运用想象力和创造力采用不同的方式改进 ... [/quote]
支持momoANDmonica的观点。
1.自动化测试的适用范围是有限制的,例如小型的系统,完全采用自动化测试将是得不偿失的。但是像大型系统的性能,如通信、银行等则必须使用自动化测试进行。
2.自动化测试只有在版本稳定且功能实现的基础上进行,做回归测试的长处显而易见。
3.自动化测试也需要编写相应的测试工具或者测试代码,而只要是通过代码编辑出来的无论工具还是脚本,都可能存在自身的缺陷,而这有可能导致自动执行的误判;
4.再有就是成本问题,现在多数公司测试都采用人工测试和自动化测试结合的方式进行。这样一可以节省回归测试的人力,二可以复用已有的代码。但是如果自动化测试完全取代手工测试,那么成本开销将大于手工测试与自动化测试结合。
因此,自动化测试是测试的一个发展趋势,但是不可能完全取代手工测试。
未来手工测试和自动化测试并存
自动化测试永远不能完全取代手工测试,未来也是两者并存,两者需要结合使用才能测试完美。 再发达的自动化测试也是基于手动测试的过程和方法的。除非有了完全不同于手动测试的理论和方法出现,否则自动化测试永远无法替代手动测试。就像机器人永远无法完全替代人类工作一样。 这个问题就好像在问,机器人能取代人吗?程序都是人编的,等你啥时候搞清楚人自己再说取代吧
机器会思考
:hug:自动化工具要代替手工测试 ?怎么代替 ?我给你列举几个看看
场景1:如果自动化测试可以代替手工测试,自动化工具自身的代码工具自己可以完成
场景2:自动化工具自身的代码工具自己可以完成 ,是不是说软件开发完成后自动交给工具进行测试 ,其中测试各个阶段的plan和case谁来写?工具自动生成,那么参数化?工具自己搞定,
这样就是说机器不但会思考,还可以自己搭建测试环境,自动生成脚本,自己开发脚本,自己执行,开发完成后软件自动运行????
场景3:如果上面成立,社会是什么社会,无论是物质文明还是精神文明要达到多高的高度:lol
你难道没有听说过最危险的不是杀人犯,而是知识分子吗?如果社会发展到那一步,社会上还有人存在吗???人类又在做什么?
其实这个题目出题者本身就知道,无论是工具如何先进都不可能代替手工测试的,出这个题目就是叫大家把自己的测试理论串接起来 ,当然你们也可以反驳我,不过:loveliness: 下面的场景 是我辩论的,支持指教 ,鄙人QQ 515931121
论点1:界面测试 怎么测?自动化工具怎么代替手工测试
论点2:文档测试 怎么测?自动化工具能发现文档里面的错误?这个怎么发现?中国那么多没有加标点符号可以说的通的句子你用自动化工具给我能测出来?比如: 下雨天留客天留人不留
麻烦你帮我测下
论点3:白盒测试 怎么测? 针对白盒测试,目前流行的流图 工具可以帮你搞定不 ?基本路径法?工具怎么判断?老兄你不是要用工具做完美的路径覆盖吧0 0,那么下面的语句帮我分析下 看看工具怎么分析
if((i>10||a>1||b>2||c>3||d<4)||(i+a>12||b+c>4||c+d>5))
论点4:单元测试 怎么测? 单元测试你别说不用桩模块,你也不用驱动模块哦 ,这些谁来搞?工具?那么代码岂不是也有工具来搞了 ?
论点5:集成测试 怎么测? 嘿嘿单元测试你搞定了,我问你 集成测试呢? 你怎么知道这些都吸怎么集成在一起 ?怎么集成出来的模块是我们要的?
论点6:系统测试呢 ??????机器不是能自动的给我们把系统搞定吧
哈哈,本人今天就说这么多,希望大家顶顶 !!!
这已是一个有定论的议题
这已是一个有定论的议题,业内众多专家学者已明确提出于“自动化测试永远也不可能取代手工测试”。这一观点在很多本测试书籍中也给予了说明,所以我不想在此反复讨论了。不要拿工具当饭吃
这个地球上还有比人的脑袋更聪明的东西吗?人的思维是没有逻辑性的,AI能行吗?你说也许几百年后、几千年后行,谁知道到那时候,还会不会有软件测试这行当。所以说,自动化测试拿来做做回归测试或者已经比较稳定的系统测试就OK啦,提高一下效率,也就实现它的价值了了。不要拿工具当饭吃,一个Tester关键在于思维是否够良好、够宽阔。:handshake自动化测试不可能完全代替手工测试
自动化测试不可能完全代替手工测试自动测试的用例脚本都是人工写出来的,如果程序会自己编写测试用例脚本,那就可以取代. 现在科技这么发达,以后的事情谁也说不定.
自动化测试工具与手工测试并存
从目前的情况来看,即使是有多么多么好用的自动化工具,也需要我们测试人员来编写测试脚本,不断完善和维护脚本。如果使用测试工具运行脚本时出现故障,不能确定是脚本的原因还是被测试软件的bug,我想首先最好的办法就是手工测试看一下,这样节省我们的时间。有些时候,由于各种因素,在软件开发初期,还是使用手工测试要比自动化测试更节约成本和时间,在开发中、后期再引入自动化测试会更好一些。 首先我明确一个立场自动化取代手工是一种必然趋势
虽然种种目前现象,让许多人以为自动化不能完全取代手工
但是这其实只是一个假象,只能说的一点是目前的自动化不够完善,不够智能
但是随着我们认知以及技术的进步这种全自动化的测试方式会被更多人了解跟使用
又有人说了,自动化不是也要编脚本呢?
请他明白,编写脚本,录制脚本这些操作都是属于自动化的范畴的,因为其 目的是要为自动化的工作进行铺垫。
这里讨论的是自动化测试能够代替手工测试
并不是说机器能够代替人脑
请某些观点论者不要混淆自己的思路
另外请注意本期话题的问题中心
管理员说的是“终究会取代”这是一定的,但取代的只会是人工执行测试用例这一部份,而对于设计方法部份很难取代,所以这就是我为什么在不会编程就做不好测试的PK问题中认为:不会编程也能做好测试的原因所在,当你用编程取代人工执行测试用例后,编程者的地位其实就是取代了执行用例者的地位,这也是测试的编程的价值所在,但是真正的核心价值在与设计与方法,所以自动化终究会取代测试执行的!
[[i] 本帖最后由 尛蟲蟲 于 2008-11-10 11:41 编辑 [/i]]
中立观点
这个问题本身就有问题,一段没有上下文关联,没有具体应用背景介绍,没有概念解释的论述是不可能有明确答案的。正方和反方都可以从自己的角度来理解这段论述,并加以证明。自动化测试首先要解决技术上可实现性的问题,再解决企业组织中成本收益的可实施性问题,最后才能真正成为对我们有益有利的自动化测试。夸大任何一个因素,都是纸上谈兵,空中楼阁。
1. 技术上可实现性问题
自动化测试包含两个要素,第一自动化,即软件本质,第二测试,为测试本质。说白了,其实我们是在开发一个软件去测试另外一个软件。但和一般软件开发不同的而且也最关键的是,我们不光是要开发一个测试软件,而且由于被测软件在生命周期内始终会发生变化,我们还要保证测试软件与被测软件相适应。所以自动化测试的最重要特征,是自动化测试的工作量=开发工作量+维护工作量。开发工作量可以一次性完成,而维护工作量却始终不断,直到被测软件在市场上消亡。(不少人总爱拿开发的可实现性来偷梁换柱做自动化测试的可实现性,这不是无知,就是狡辩)。 因此,如果实现完全的自动化测试,必须有两个要素要控制:
1. 开发技术,使得测试软件能够通过接口来完全获知被测软件的信息,并进行操控,比如你要让脚本去操作一个web页面,你必须获得这个DOM接口。如果DOM不给你提供相应的接口,你就无法自动化来完成所有的工作(比如很多人反映,使用QTP无法获知某段文字或图像的颜色color 属性)
2. 测试技术,主要是被测软件的变化问题。想想:被测软件是永远不变化的么?或者它的变化是完全可控的么?
上面两个问题的无解,导致软件自动化测试只是在某个阶段,某个范围内才具有技术上的可实现性。 因此,可以得出,这样的一个论断“自动化测试完全替代手工测试”无论过多少年,技术再如何发达,也是不可能实现的。只要软件规模不断发展,软件始终在变化。 本来还想写第二个收益成本的考虑,但觉得这个问题实在没必要再去论证了。算了。对自动化测试有兴趣的朋友,可以发我的mail:sunshinelius@gmail.com 测试是一种人为参与的活动。工具终归是工具吧,只是提高效率而已,不能替代手工测试 机器永远是机器,永远只能做那些人们设定好的东西. 如果哪天机器人能代替人去思考,也许有可能吧。 也有可能性,就是软件技术发展到能像人类一样思考的时候。