在国外,资深的软件测试人员大多是手动测试,他们厉害之处在于测试用例的设计,但在国内,很多测试人员都把自动化测试当成很厉害的资本,为什么?

我比较赞同前者
关注者
1,841
被浏览
720,589
登录后你可以
不限量看优质回答私信答主深度交流精彩内容一键收藏

测试最重要的还是对系统以及需求的理解吧。至于是不是自动化,更多是取决于产品的生命有多长,以及自动化后成本有没有减少。

关于对系统以及需求的理解,这个是测试工程师最基本的要求,但是很多测试工程师现在都只是知道怎么跑case,把自己变成一个自动化测试脚本,而不是去理解整个系统。好比你搞web测试,只是测那些页面跳转会如何之类的,那基本上测不出什么bug来的。即便能测出,也不过是运气问题。但是如果你理解了后台和前台的交互,有哪些数据,哪些地方可能会溢出之类的,那会更容易找到bug。

对需求的理解,也是很重要的,我见过做性能测试,有些测试工程师不理解产品需要的开机时间是多少,觉得反正没有具体的要求就没所谓。而有些则觉得很重要,拼命提CQ要求修改的。最后在客户验证的时候,发现后者的理解是正确的。这些很模糊的东西,更多需要个人理解才可以获得。或者说,这叫经验。

自动化测试的目的更多是减少测试时间,把更多的时间放在设计用例,以及理解需求和系统的阶段上。但是如果做一个以后都不会再做的产品,还开发了一堆自动化测试的脚本,并且在软件里面写了一堆log,那基本上是费时费力却得不到任何实质上的帮助,因为开发这堆脚本和log的时间,已经够测试几轮了。

国内对自动化测试的向往,无非是因为国内测试人员玩的都是苦力活,而不是技术活。你随便找一个测试的,你问他对系统了解多少,多半是只会执行case的人而已。甚至乎,这些人在完成了任务之后,基本上就不再学习了。

-----------分割一下,一些内容和题目有关系,但是不是太大。写得也很乱。------------

近年来国外有个叫做SBMT(Session based test management)的东西,建议大家看看。有条件的公司建议实行一下。这种测试方法严格得区分开了checking跟testing,对测试人员的要求很高。并且SBMT里面不存在固定的所谓的测试用例。

现存的测试用例的测试方法是按照ieee以及几本一九七几年写的老书确立起来的,虽然名曰为Best Practice,但是实际上是效率很低的。因为一个测试用例测过几遍之后,其信息量几乎为0。根据信息论,越确定的东西,其信息量越低。我实在搞不懂一个check了几百遍都没问题的东西为啥要用人来check而不用机器来check。

严格意义上来讲,自动化测试应该叫做自动化检查。它只是checking而已。什么叫做checking?checking就是按照需求文档一条条打勾。什么叫做testing?testing就是探索产品本身的结构以及分析产品可能的问题。

SBMT是通过认知论的方法,触发测试人员的思考,让测试人员自己去了解系统。

一般SBMT会有一个charter(即要测的功能),几个Mission(想要达到的目标)和一份note。格式如下:

Charter:

To test WORD

Mission:

1. To find out memory leak scenario in word.

2. To find out several boundary values of word.

Note:

1. I blah blah...

通过Mission,一般测试人员需要为了达到这个目标而想一些测试用例,而这些测试用例的建立则不得不依赖于思考,而不是之前已经写好的脚本。测试人员必须把自己的思考和测试步骤写成Note。当然这也解决了测试工作无聊的这个事实。

另外,testing的本质目的只是提供产品的信息而已,是一个“辅助”功能,不是一个生产功能。产品的质量完全不能通过testing来保证,所以才需要用到工具和流程,这才是测试需要进化的方向:想办法给工具和流程提意见,改进(或创造)有利的工具和流程,把测试本身提供的信息Build进产品里面去。


测试这个职业,这几十年来几乎没有啥进步,所有提升软件质量的方法都是dev提出来的。如果测试工程师再不把自己的testing build into code,我感觉这个职业很快会被dev或者某些工具所兼顾,平均薪水会越来越低(现在已经不高了)。