刚入行做QA时,只要一听到“自动化”三字,小编就立马开始脑补出一部科幻大片,在一个廖无人烟的工厂里,无数个机器人相互协作,通过信号传递,自动生产,自动包装,自动运输,自动售卖,自动完成任何一个工作,而人们的双手再也不用被束缚,双手被解放,人们只需在工厂外的休息室呼呼大睡的场面... 每幻想到这里,看着手边测不完的功能用例,执行不完的测试模块,心里总是莫明对“自动化测试”保持着神一般的崇拜和向往,以及遥不可及的距离。总是疑惑自动化测试到底是什么样的,我该如何才能学到,心里总是会幻想要是会自动化,就再也不用每天重复地做测试工作,那该多好啊!
就这样带着问题,默默在测试行业前行,直到在一次面试中,打破了我对自动化测试的美好幻想:
面试官:“你为什么要换工作?”
我:“因为之前一直在做手工测试,想转行自动化测试,这样才能实现我的宏伟测试梦想,达到人生的测试水平高峰,实现最高标准的人生规划。”
待我说完,不出3秒就被面试官给怼了回来:“那我们这还是手工测试,我想我们这的工作并不适合你,那今天的面试就这样吧。”
听完很丧的我拿起了百度,浏览了几个小时的关于“自动化测试”的文章,意识到其实自动化测试并不能完全取代手工测试,看来我对自动化抱着太深的幻想,其实自动化并没有那么神秘高能。
继续带着这份认知,我慢慢在测试工作中不断地学习和思考每一个具体可以用到自动化的地方,从这些点着手研究适合的自动化测试方法和工具。
01
其实自动化测试有很多种,当我们想要去快速地回归接口功能、定时地监控接口功能是否有异常,那么这就是接口自动化的运用。当然,接口自动化所基于的测试工具有很多,可以通过带UI的工具,如Postman、Jmeter、甚至是咱们每天都在用的IE360火狐Chrome浏览器;也可以通过更高效、非UI界面的方式,也就是编写代码脚本去进行,如利用Python的UnitTest测试框架、用第三方Requests库发送我们需要测的每一个请求,甚至可以使用Flask库Restful模块去编写一个我们待测的接口或是用Mockserver编写一个假接口,让我们能提前写好每一个接口测试用例。
02
除了接口自动化,对于咱们带UI界面的Web项目测试用到最多的是UI自动化测试,那么相信大家耳濡目染的就是用Python语言/Java语言+Selenium库来控制咱们的浏览器做UI自动化测试,当然,对于网页,学会元素定位的方法非常重要,使用频率比较高的XPath、CSS定位方法。这些其实只实现了我们平时所说的“点页面”的自动化,如果想要这些自动化脚本能每年每天每时每分每秒/某年某天某时某分某秒去自动执行,当然少不了Jenkins定时执行任务脚本的功能。
03
不过仅仅对自动化测试脚本的学习也是不够的,对数据库的学习也需要同步进行,就正如我们在执行一个自动化脚本前,都需要清数据,或是当我们去发送任意一种Restful风格的请求时,改变我们资源池中的资源时,都是需要借助于数据库的知识。
然而真实的测试工作,也不仅仅只有自动化测试,因为只有手工测试和自动测试相结合,再结合数据库、中间件、操作系统的知识,所有这些知识环环相扣,相互运用,才能发挥机器最高效的力量。也许大家在自动化测试环境搭建、工具下载、环境配置中踩过很多坑,遇见很多阻碍性的困难,导致咱们无力,不想继续学习高大上知识的步伐,这个时候还是需要咱们静下心来,通过各种方式一个个消灭它!不仅成就感倍增,幸福感也会爆棚!哈哈哈。说到这,仿佛有点夸大其词了,不过学习的过程即痛苦也快乐,小编也希望与大家一起在工作之中坚持这个即“折磨”又幸福的习惯,继续在测试行业这个知识大缸里遨游!
源自公众号 晓春测略