大话自动化测试:我眼中的自动化测试工程师,如何成功自动化测试工程师

自动化测试工程师是不是自动化工程师都是使用代码来实现自动化的?

对于这一点我要说明一点,自动化工程师并不是这样的。

自动化分为工具的自动化和代码的自动化。自动化测试有很多工具,例如postman,soapUI,jmeter等等。并不是所有的都要用代码来实现自动化,如果所有的东西都要用自动化来实现,那么它的性价比太低了,结合一部分自动化的工具来实现,可以大大提高投入产出比,当然,在条件允许的情况下,最好是能够用代码实现,因为封装好的代码维护起来比较方便。

自动化工程师都在做什么?

相信很多小伙伴都在好奇,自动化工程师都在做些什么呀!其实自动化测试工程师也没有什么神秘的,他们在功能的基础上使用工具或者代码来提高测试效率和准确度,从而获得更多的时间来保证产品的质量。

就我个人而言,我做了一下几点:

  1. 编写shell脚本,当测试环境服务挂掉之后,执行脚本一键启动。
  2. 搭建了UI自动化框架,实现了精准测试。
  3. 每周取出测试环境的awr日报和微服务日志进行分析,找出需要优化的sql和生产上出现的问题。
  4. 每个批次使用appsan进行漏洞扫描,保证系统没有中高级别的漏洞。
  5. 使用charles和python制造mock,方便测试。

自动化测试的优势和缺陷各是什么?

优势:

  1. 减少人工成本(大量的回归测试:越复杂的系统越有效)
  2. 构建功能防护网,大大提高了测试的效率(敏捷迭代开发)
  3. 能够有效的避免人为的不确定性(人毕竟不是机器,是人就会犯错,会误操作)
  4. 完成一些人工很难完成的或者无法完成的工作(性能等)

劣势:

  1. 开发和维护的成本比较高,且前期的投入较大,收益不能够马上凸显出来。
  2. 对测试人员的技能要求比较高,例如:编程语言:python/java/node.js/shell等,
  3. 对基础设备的要求比较高,例如电脑配置等
  4. 自动化测试工程师的工作量不容易度量且自动化工程师的代码没有人来确定正确性。

自动化测试的本质是什么?

说实话我也不知道自动化测试的本质是什么。但是听一位大佬的书中写道,自动化测试的本质就是软件开发。仔细想来也是很有道理的。例如:我为微服务启动编写了shell脚本,实现了微服务一键启动。这算不算是软件开发呢?如果说算,但是他没有软件开发的整个流程,只是开发阶段。然而,以后我们每次使用它一键启动服务,第一次不正是测试的过程吗?

如何学习自动化,成为一个自动化测试工程师?

 个人认为,要想学习自动化不能好高骛远,一口吃成大胖子,要循序渐进。

首先要从自动化测试工具出发,例如:能够做接口自动化的postman,SoapUI,UI自动化的各种开源录制工具:Selenium IDE ,Kakalot等,性能测试工具Jmeter,抓包工具:charles,fiddler不一定要都弄懂。但是至少要会一个测试工具。等熟悉工具之后,你就会发现虽然这些工具都能够实现自动化,但是操作起来是真的不太方便,例如:UI录制脚本刚录制完就发现跑不起来,jmeter无法实现复杂的场景,postman断言编写需要熟悉JS等等的问题,为了解决这些不方便。我们就可以着手使用代码来实现自动化了。

第一步:选择一门合适的语言:当然学习使用代码需要从多方面考虑:例如:语言的难度,团队人员的使用情况,参考资料等。选择之后就需要做大量的练习,推荐学习参考菜鸟教程,对于初学者来说菜鸟教程是一个不错的平台,遇到问题百度一下基本上什么问题都解决了。此外B站上也有大量的视频可以学习,而且B站上的很多视频质量都特别高。

第二步:尝试做一些单元测试的:做一些简单的单元测试能够帮助我们更好的理解单元测试框架。而且无论是API,UI,都是在单元测试框架的基础上来进行的。以python的unittest为例说明一下:我们在编写用例的时候,都会有前置条件,操作步骤,期望结果,实际结果,在unittest中就能够很好的体现,前置条件对应setupClass和setup,同事每个类和用例执行完还有teardownClass,teardown操作,期望结果和实际结果有比较方法对照来实现,此外还有数据驱动的ddt框架或者paramunittest来实现数据驱动。paramunittest可以看我的这一篇博客:https://blog.csdn.net/pingsha_luoyan/article/details/105439035     ddt数据驱动框架可以看我的这一片博客:https://blog.csdn.net/pingsha_luoyan/article/details/100012256   这两篇博客都是最简单的代码实现的,完全可以当做入门来进行参考。

第三步:学习一个UI自动化的框架:现在最常见的UI自动化测试框架就是selenium和appium了。能够实现最基出的UI自动化,这个阶段不要追求代码的完美,封装多少层,只要求能够实现UI自动化就行。在此时,一般能够遇到UI的各种各样的坑了。例如:JS的定位问题,非input的附件的上传,等待机制,验证码等各种问题。

js定位问题的我的解决办法:https://blog.csdn.net/pingsha_luoyan/article/details/105880043

非input文件上传我的解决办法:https://blog.csdn.net/pingsha_luoyan/article/details/105624072

等待机制:推荐使用显示等待机制,而非sleep

第四步:学习API自动化:API自动化没有固定的框架,一般开发是用什么样的框架,我们就跟着他们使用一样的框架。总而言之一句话,跟开发保持一致。就python而言,API自动化的时候需要构建大量的数据,同时也需要链接到数据库中查看数据库中的数据,接口得到的结果可能与数据库中的数值做比较,也可能使用数据库中的值做参数,需要我们使用代码链接数据库并且能够使用熟练的使用代码操作数据。

第五步:工程优化进阶:举一个例子:一个大型系统进行精准测试,它的UI自动化精准测试用例达到了两万三千多条,如果没有对UI进行封装,每隔用例相同的代码都是copy来的,那么每次发生改变的时候,该怎么办呢?想一想就害怕,这可不是加班能够解决的,因此需要我们对代码进行封装,常用的是PageObject设计模式,ddt数据驱动等。

下面是我对UI的四层封装:

大话自动化测试:我眼中的自动化测试工程师,如何成功自动化测试工程师_第1张图片

大话自动化测试:我眼中的自动化测试工程师,如何成功自动化测试工程师_第2张图片

 

你可能感兴趣的:(自动化测试,测试开发,自动化测试)