自动化测试,特别是UI级的自动化测试是一件费力而不讨好的事情。自动化测试使得测试人员疲于应付,朝不顾夕,如坐针毡,苟延残喘。UI级的自动化测试看起来很美好,就像罂粟,如果你经不住诱惑冒然尝试,那么后果很严重,下场很惨淡。
也许这个世界上就不应该出现自动化测试这个东西,起码在中国不应该出现,因为这个是无效的,无用的,宿命是失败的东西。
应该怪罪于一小撮别有用心的积极分子,他们推广敏捷,推广自动化测试,推崇人应该追求挑战,追求自由,应该把重复性的工作交给机器去完成。他们也许目的是崇高的,是正确的,但是在中国推广这个,他们是不合时宜的,是注定失败的,因为自动化测试是无用的东西,我们看到过太多的尝试,太多的失败,太多的先驱变成先烈,太多的媳妇熬不成婆,所以我们可以自豪的说,中国是没有自动化测试滋生的土壤的,一切妄图进行自动化测试的行为最终都会以失败告终,被遗忘在历史的角落。
让我们回到没有自动化测试的那遗失的美好的时代中吧。那时候没有自动化发布,没有自动化打包,800台机器一台一台人工发布,修改配置文件。尽管效率不高,但好在可控;尽管人工操作会犯错(笔者曾经以root身份rm -rf /*过),但人非圣贤孰能无过,大不了影响一下用户或客户,这总比绞尽脑汁写发布脚本,搭建发布框架要好的多。脚本和框架写起来是很费时间的,有那个时间我们早就发完800台机器了。
那时候也没有自动化测试回归。回归时间紧张?没关系,中国别的不多,就人多,我多招几个来点,加班加点的点,总能勉强完成赶上deadline;回归时人会出错,从而遗漏bug,没关系,大不了影响一下用户和客户,这总比费尽心力去写自动化测试脚本要好,有那个时间去写脚本,我们早就回归完好几轮了。而且这个项目是一锤子买卖,一咬牙,一闭眼,一个项目就交付了,一闭眼,一咬牙,一个版本就发布了。尽管回归很痛苦,但是忍过去总会守得云开见月明。
没有自动化测试的时代确实是测试人员的黄金时代!从业三年的测试人员,除了点来点去还会什么?
会写测试用例?可以不客气的说,刚毕业的大学生也会写,价钱便宜还主动加班,用例写的一坨一坨的,价钱便宜量又足;
懂业务逻辑?不好意思,现代社会变化太快,业务逻辑这东西也不是一成不变的。搞不好哪一天一觉醒来,原先的既定业务逻辑就变成了过去时,懂的越多反而越是负累;
有经验,做过项目?很可惜,这种经验不是核心竞争力。但有人成本比你低的时候,经验完全就是奥尼尔的罚球———可以随意忽略。
那这个测试人员到底会什么?答案很简单————点来点去。除了点来点去,录一个bug,跟开发人员争论,与客户周璇(很可惜,最底层的测试人员连客户的影子都见不到),会写一些项目必须的文档(测试策略,测试计划。很可惜,低级的测试人员连写这些文档的权利都没),除了这些,到底还有什么呢?
有时候现实就是这么残酷,静下心来仔细想想,除了点来点去,很多测试人员真的什么都不会。
我不是说写测试用例,懂业务逻辑是一文不值,这些技能是不错的,而且经验有时候确实很重要,但这些都不是核心技能。就像LOL和dota里的英雄,如果他们没有大招那会怎么样?没有大招的英雄就是万年陨石坑!同样没有核心技能的测试人员自然就不太那么值钱了。于是只能叹息自己入错了行,鄙视开发高薪低能(拿那么多钱写的代码还全是bug),自怨自艾,不思进取。
让这样的一个群体去做自动化测试,不失败才是见了鬼。
让无能之人去做一些有技术含量,甚至是很有挑战的事情,这才是自动化测试在中国注定失败的原因。
这就像是让潘长江去扣篮,让林黛玉去举重一样,能力不足,自然事倍功半,功败垂成。
说到这里,我们终于从众多的流言蜚语中发掘到了一丝事情的真相,确实,在中国,这是国情使然。
其实自动化测试的作用是很明显的。自动化测试是敏捷的一个实践,敏捷提倡让一切能自动化的工作都自动化起来,比如部署,发布,测试等等。这些都是重复劳动的重灾区,解决了这些环节的自动化能很大程度上提升整个项目团队的能力与生产率。记住一点,生产率是与能力相关,不太与流程相关。说形象一点,让林黛玉举重,你的流程再规范,你教给她的动作再标准,恐怕她也举不起几十斤的杠铃。能力只有一瓢,怎能指望他去充当弱水三千?
所以在这里我反而不想讨论自动化测试真正的意义与实践,存在即是合理,这点已经足够说明问题。
在这里我想要讨论的是测试人员怎么才能真正的去提高自己的水平。放大招很爽,也很厉害,但是6级之前,在那些没有大招的日子里,辛苦一点是无法避免的。
开发之所以赚的多说白了就是他们会的多。如果你想赚的比他们多,其实也很容易,比他们会的多就成。当然你也可以完全逆袭,自己开个公司,请一批开发做测试,招一票测试做开发,让开发也尝尝痛苦的滋味,这个也可以,但不在本文讨论的范畴之内了。
其实做自动化测试是提升自己的一个很好的契机,哪怕你所在的团队没有正式的提出要进行自动化,你也可以尝试着自己去一些这样的工作,因为一旦你的重复劳动被机器分担,那么你完全可以省下不少的时间去自我充电。
混开发也好,做测试也罢,其实都是逆水行舟,不进则退。技术是一条学无止尽的不归路,如果你没做好这个准备,请移步,这里没有一劳永逸,只有不断学习,无限循环。
于是我的观点也很清楚了,自动化测试其实是每个测试人员都值得去尝试的一件事情。开始总是会很痛苦,但是先苦后甜。不要忘了在什么什么的时候,女生起初也很痛苦,后来反复实践才会有快感出现。所以开始挫折一点是可以接受的。大招总在6级后,阳光总在风雨后,这个道理人人都懂。
web自动化测试是需要一定能力的。
会一门语言。当然我推荐python和ruby,原因不言自喻。
会一些语言。比如js,比如css比如html。
会一些工具。比如我最喜欢的watir-webdriver,selenium等。
会测试。很多人会写测试用例但是连断言都不知道,这恐怕不能算是懂测试之人吧。
怎么开始?
我分享过一些资料,尽管有些已经年事已高,但还是比较有帮助的
watir-webdriver中文官网
webdriver从入门到精通
watir-webdriver公开课
webdriver实用指南
lazyman:一个还算可以的自动化测试框架
case_parser:用中文写自动化测试用例
我的微博