自动化测试的优势包括,测试自动化的主要特征有哪些
简介从2017年6月开始接触自动化,到现在已经两年多了。从17年到18年接触UI自动化(unittest selenium)到18年编写自己的自动化平台(后台用python的flask,前端用element vue,没有第三方自动化框架),我不断学习和成长,加深了对自动化测试的理解。在这里,我将总结一下自己对自动化测试的理解。
首先吐槽一大堆实际自动化经验不足一年的薄冷风,停留在度娘抄袭demo甚至度娘抄袭的代码的方式上,不知道问题出在哪里(神不理,我薄冷风只是吐槽行业现状)。相信很多人抄袭了度娘的uniitest(以下简称ut)、pytest、testNG甚至RF(robotframework),说自己精通自动化。你真的了解自动化吗?我用的是python语言(我不鄙视其他语言,任何语言都可以自动化,只要你有能力)。现在只问几个与python自动化相关的问题,很多都是企业在实战中会遇到的场景或者是企业领导的需求,也包括笔者采访的口头和手写问题。
先说一些基本问题。2018年1月从UI自动化面试辞职。作者使用了ut se。面试官的问题如下(注:不写答案的请伸手百度或者自己查资料。这些基本问题,如果在群里问,会被鄙视。很多人可能会觉得内容背后不舒服或者blx。如果你觉得不舒服,请自觉关闭本页。请绕道。没必要和你争论):
Q1:
请说出硒的八种常用定位方法。
Q2:
请描述一下Selenium的xpath的结构。
Q3:
请解释为什么不推荐xpath。
Q4:
当使用xpath找不到元素时,可能会出现什么情况?
注意:前四个问题只是一个基础问题,最基础的问题。如果前四个问题回答不了,直接进入下一个。Q5开始的问题是确定你有基础,开始问更深层次的问题来确定你的自动化知识。
主体
现在让我们正式开始提问:
Q5:
说你用过ut。请描述为什么ut荷载工况从test_开始。(这个测试你对自动化框架的熟悉程度,有领导问你,为什么所有的测试用例都是从test开始的?你:这是这个框架的设计。领导:不行,必须以我们公司名称的缩写开头。你:领导:你明天不用来了。)
Q6:
使用什么规则来执行ut用例序列?
等等,什么?这很难?这只是个开始~ ~ ~天啊。整天说自己熟练甚至精通自动化的人,连自动化框架的原理都不知道?你怎么敢说你精通自动化?如果要求你重新开发自动化框架,优化执行效率等。你会被祝福吗?你是为了自动化工程师这个职位来的,不是暗箱操作的职位~ ~ ~(有人说钱不到位,能力不够。我怎么给你钱?不要拿回订单,阿里P7的岗位会给你一年100万的一般合同。你能做到P7那样吗?事实就是如此。你有能力,才有谈判的资本。虽然ut在一线看不上链,但我看过一个度娘的帖子,改了ut源代码,执行效率提高了几十倍。你有那个能力吗?)
好了,基本上,如果你能看到这里,就可以确定你不是blx或者喷。现在给大家讲讲我今年7月份面试的几个职位。这些岗位真的需要你做自动化。坐标杭州,起薪15K,7月份面试5天。由于学历和能力不足,我一共拿到了8 offer8。职位的面试问题如下:
Q7:
你在上一家公司维护过多少自动化测试用例(看简历上写的任何UI/API/APP)。少于100基本上就上不了场了。如果下面的问题不能回答,你的评分将是初级自动化。
Q8:
自动化用例,你一次执行完所有用例需要多长时间(测试你的框架设计是否考虑了执行效率)?如何解决用例之间的关系?如何调试单个用例或者选择一些用例来执行?如果测试用例的数量少于100个,如果测试用例的维护量是5次(100或更多的两倍或3倍),你有什么计划来优化执行时间和效率?
问题9:
如果测试的环境是迁移的(比如从本地环境迁移到阿里云),你的用例中需要大量修改测试数据吗?(易于维护)
问题10:
编程问题:
Java一般会问一些关于线程安全、数据类型差异、设计模式等问题。作者是python,所以我只写python的常见问题:
Python和元组除了可变性和不变性还有什么区别?
Python列表和字典有什么区别?
Python生成器和迭代器有什么区别?
请描述一下多线程、多进程、协同进程其中一种的工作原理。(后续关于三者区别的问题,主要听听你对三者优缺点的理解)
请描述一下Python的垃圾收集机制和内存管理
问题11:
数据库相关问题(太笼统,从基础理论到手写语句,就不写了):
多刷刷,看基础就好。
问题12:
Linux基本操作
问题13:
网络相关(http/https)
问题14:
如果CI、CD、CI同时调用两个或两个以上环境的用例,用例数据是否会出现错乱?
问题15:
团队问题,这里重点描述一下。除了大厂的高级自动化工程师,所有新岗位都要求带一个自动化黑箱团队,所以团队问题会凸显出来:
编写用例的复杂性?也就是说,一个用例需要多少行代码?(其实我听到你答了多少行代码的时候,你就已经降了一级了。面试官更想要的是一个不懂代码,能轻松上手的小黑盒。)
组内用例的同步。如果N个团队成员同时编写自动化用例,如何解决团队成员之间用例的同步。
如果使用你的自动化,团队成员需要哪些能力和知识?如果你想维护你的自动化,维护人员应该具备哪些能力?(主要看你的自动化是否简单易维护。面试官想要的是,即使你不在了,你的代码依然可以稳定运行,维护尽量简单。并不是说你一走,自动化就废了。这样的自动化毫无意义,你的面试成功率会大打折扣。稳定且易于维护,至少要满足一个条件。)
这些都是笔者7月份采访的问题。看完这些问题,你真的了解自动化吗?有些人甚至与作者争论使用自动化工具,如postman/jmeter。诚然,一切都可以做到。作者只有一个问题。你在下一家公司维护过别人做的工具自动化吗?如果没有,先去保养,体验一下“前三大”的感觉。工具永远只是工具。笔者在一些测试群里闲逛,每个月都能收到N个细细的冷风问这些工具,如果要用md5/rsa加密数据,用base64解码该怎么办。我只能说一点:我自己写代码,然后会被一大堆单薄的冷风激怒。“如果我能写代码,我也会用编织工具。”我:呵呵。还有一股细细的冷风还在问,jme数据关联怎么做?Jme常规提取令牌如何提取?我连自己解决问题的能力都没有,更别说自动化了。
关于自动化的想法和感受:1。UI自动化可以用于许多小公司的简单回归。简单回归其实就是简单写几个小脚本,你用什么样的po ut关键字来驱动。成本上没有太大区别。真正需要UI自动化的公司,要从几百人或者几千人开始,满足需要自动化的部分足够稳定的场景。这种规模的自动化超出了大多数人的能力。高昂的维护成本和环境因素也是很多公司放弃UI自动化的原因。大的环境因素上,UI自动化已经开始被AI自动化和图像识别自动化所取代,AI自动化和基于图像识别的自动化在各大厂商开始流行。比如网易开源的airtest,只需要截图就可以生成自动化用例,脚本的维护也越来越简单。
2.应用程序自动化类似于ui自动化。App比UI多一个兼容性问题(混合开发),维护也很复杂。纯硒,appium,ua2都是自动化的,有很多问题需要解决。
3.现在很多中小公司流行界面自动化,界面测试向左移动(界面文档出来后,后端开发完成前,搭建mockserver实现前端联调)。接口自动化执行速度快,回归效率高,是目前中小公司的主流最爱。但是,如果要做好接口测试,对返回结果的断言是一个非常高的要求。设计者的能力和知识决定了断言的稳健性,设计者的能力相对较高。技术交流群(644956177)
4.目前大厂主要流行拨测、图形识别、AI。拨测是录音回放的意思(很多薄冷风嘲笑这个,其实早就淘汰了。作者:呵呵,这个操作不是那个操作)。作者大概知道阿里的doom系统(没有仔细研究,能力有限,错的地方请忽略)。记录在中间件上的流量数据被存储并在测试环境中回放。图像识别可以参考airtest。AI测试目前几乎没有流出,测试馆里有一些理论文章可供参考。
5.我不会写性能自动化。作者能力有限,连性能测试都说不上,更别说性能自动化了。(如果你能随便按一个工具,你就会。我什么都没说的时候,很容易按举报什么的。用代码写性能脚本问题不大。性能测试的本质在于瓶颈分析和系统调优。)
写到最后,17年UI自动化刚刚兴起的时候,一个自动化脚本可以评为中级工程师。18年,中级自动化需要自己的框架。在19年里,自动化脚本甚至都不是最基本的。基本上,使用第三方框架必须有成熟的方案。19年你要会写测试平台,测试薪资更高的岗位。19年,测试平台已经普及。技术行业,更新换代这么快。不会,有了度娘的基础教程,20年21年22年只会越来越难。随着年龄的增长,你的能力没有年轻人那么强,竞争力越来越弱,这将是你跳槽加薪的绊脚石。
总有一些工作时间长的人,认为自己经历了孝顺,对工作时间短的人嗤之以鼻。笔者遇到过一个有8年工作经验的人,总结只有一个。他8年的经验不过是在重复他第一年做的事情,只是多了一点技术。但是,他没能做好第一年做的黑匣子。这是很多油嘴滑舌的人常有的事。作者只能给一句话,还是放黑盒吧。
这些是我的收藏和整理。这些资料应该是我的软件测试朋友们最全面的仓库了。这个仓库也陪我走过了最艰难的旅程,希望也能帮到你。
关注【孤独老师】。微信微信官方账号海量资源免费获取~