从2017年6月开始接触自动化至今,已经有2年多了,从17年接触UI自动化(unittest+selenium)到18年接触接口自动化(unittest+requests)再到18年自己编写自动化平台(后台使用python的flask,前端使用element+vue,没有第三方自动化框架),不断的学习成长,加深了对自动化测试的理解,这边就总结下自己对自动化测试的认识。

  首先,吐槽一下很多实际自动化经验不到1年的而且停留在靠度娘抄袭demo的甚至度娘抄袭的代码都不知道问题出在哪的小白,大神忽略,本人小白,只是吐槽一下行业现状,相信很多人从度娘上抄袭个uniitest(下文简称ut),pytest,testNG甚至是RF(robotframework)就说自己熟练使用自动化了,你们真的了解自动化么?笔者使用的是python语言,不鄙视其他语言,任何语言都可以做自动化,只要你有能力,现在随便找几个python自动化相关的问题问一下,很多是企业真实实战会遇到的场景或者企业领导的需求,也包含笔者面试的口述和手写题。

  先来些个基础的问题,18年1月辞职面的UI自动化面试题,笔者使用ut+se,面试官的问题如下(注:不写答案,伸手党请自行百度或查询资料,这些基础问题丢群里问是会被人鄙视的。后面的内容可能很多人会玻璃心或者感到不适,如果感到不适,请自觉关闭本页面,喷子请绕道,没有必要和你争论):

  Q1:请说出selenium常用的八大定位法。

  Q2:请描述Selenium的xpath的结构。

  Q3:请说明为什么不推荐使用xpath?

  Q4:当使用xpath无法定位到一个元素时,可能的情况有哪些?

  注:前4个问题只是问个基础,最最基础的问题,如果前4个都回答不了,直接下一位,Q5开始的问题,是确定你有基础了,开始往深一点的问,确定你对自动化的了解程度。

正文

  

  现在我们正式开始提问:

  Q5:你说你使用过ut,请描述一下ut加载用例为什么以test_开头?

此考验你对自动化框架的熟悉程度,某些领导就问你,测试用例为什么都是以test 开头的?

你:这是这个框架的设计。

领导:不行,必须改成以我们公司名称的缩写开头。

你:?????

领导:你明天不用来了。

  Q6:ut执行用例的顺序是以什么规则执行的?

  等等,什么?这就难了?这才刚起步歪 ~ ~ ~ 我天。。。整天说自己熟练甚至精通自动化的,连自动化框架原理都不知道?你好意思说你自己精通自动化?要是让你二次开发自动化框架,优化执行效率之类的,你是不是得上天?你来面的是自动化工程师岗位,不是黑盒点点点岗位歪 ~ ~ ~ (有人说钱不到位,你能力都不够,我怎么给你钱?不要把顺序搞返了,阿里P7的岗位,给你一年100万的总包,你能做的了P7做的事么?道理就是这样,先有能力,才有谈判的资本。ut虽然在一线鄙视链,但是我在度娘上看到过一个帖子,改ut源码,把执行效率提升了几十倍,你有那能力不?)

  Ok,能看到这里的基本上也可以确定你不是玻璃心或者喷子了,现在我讲述一下我今年7月面试的几个岗位,这些岗位是真实要求你能做起自动化的,坐标杭州,起薪15K,7月面试5天,由于学历限制以及能力不足,总收获offer8个,岗位的面试题如下:

  Q7:你在上一家公司维护过多少自动化测试用例(看你简历上写的UI/API/APP任意一个)。

小于100的基本上上不了场面,如果后面的问题回答不上来,你的定级就是初级自动化了。

  Q8:自动化用例,你们全用例执行一次需要多少时间(考验你框架设计时是否考虑到执行效率问题)?用例之间的关联怎么解决?调试单个用例或者选择某几个用例执行你是怎么进行的?数量100以内的测试用例,如果用例维护量翻5倍(100以上double或者3倍),你有什么方案优化执行时间和效率?

  Q9:如果被测试环境迁移了(例子:从本地环境迁移到阿里云机了),你用例是否要大量修改测试数据。(易维护性)

  Q10:编程语言问题:

  Java一般问一些线程安全,数据类型的区别,设计模式等等问题,笔者是python,故只写python常问的问题:

  Python列表和元组除了可变不可变以外的区别?

  Python列表和字典的区别?

  Python生成器和迭代器的区别?

  请描述多线程,多进程,协程其中之一的工作原理。(后续追问一个三者的区别,主要是想听听你对这三者的优缺点的了解程度)

  请描述Python的垃圾回收机制以及内存管理

  Q11:数据库相关问题(太泛,从基础理论到手写语句,不写了):

  多刷度娘,多看基础就是了。

  Q12:Linux基操

  Q13:网络相关(http/https)

  Q14:对接CI、CD,CI同时调用2个甚至多个环境的用例,用例数据会不会错乱。

  Q15:团队问题,这里重点描述一下,入职的岗位除了大厂高级自动化工程师以外,都要求带黑盒组一起进行自动化,所以团队问题会被着重提问:

  编写用例的复杂程度?即一个用例需要多少行代码?(其实听到你回答多少行代码的时候,你已经降了一级,面试官更想要的是一个不懂代码的小黑盒也能轻松上手。)

  组内用例的同步问题,如果N个组员同时编写自动化用例,组员间的用例同步问题怎么解决。

  如果使用你的自动化,组员需要具备哪些能力和知识?如果要维护你的自动化,维护人员又要具备什么能力?(主要是看你的自动化是否简单易维护,面试官要的是哪怕你人走了,你的代码依然能稳定运行,维护也尽可能简单,而不是你一走,自动化就废了,这样的自动化毫无意义,你面试的成功率也会大大降低,稳定和易维护,至少得满足一个条件。)

  以上,就是笔者7月面试的问题,看完这些问题,你真的还了解自动化么?有甚者甚至与笔者争论过使用工具做自动化,例如postman/jmeter,诚然,都可以做,笔者只有一个问题,你维护过下一家公司别人做的工具自动化么?没有的话,先去维护一次,体验一下什么叫一个头三个大的感觉,工具始终只是一个工具,笔者混迹在一些测试群里,每个月都能收到N个小白问这些工具要对数据进行md5/rsa加密,要base64编码解码,要怎么做?笔者只能说一句,自己写代码,随后会遭到不少小白怒喷“我要是会写代码,我还用毛线工具”,笔者:呵呵。还有小白还在问,jme数据关联怎么做?jme正则提取token怎么提取?连自己解决问题的能力都没有,更不用谈自动化了。

对自动化的想法和感受

  

下面笔者讲述一下笔者自己对于自动化的想法和感受:

  1、UI自动化在很多小公司用于简单的回归是可以的,简单的回归其实单纯写几个小脚本,和你用什么po+ut+关键字驱动之类的,成本上没有多大区别,真正需要UI自动化的公司,起步也得有几百人上千人,且满足需要自动化的部分已经足够稳定的场景,这种规模的自动化,大多数人涉及不到,维护成本高,受环境影响因素大也是很多公司放弃UI自动化的原因,大环境因素上,UI自动化已经开始被AI自动化和图片识别自动化代替了,各大厂内部已经开始流行AI自动化和基于图片识别的自动化,例如网易开源的airtest,只需要截图即可生成自动化用例,脚本的维护也越来越简单。

  2、App自动化和UI自动化差不多,app比ui多一个兼容问题(混合开发),维护同样非常复杂,单纯的selenium,appium,ua2实现自动化,要解决的问题非常多。

  3、现在很多中小公司流行接口自动化,以及接口测试左移(在接口文档出来之后,后端开发完成之前,搭建mockserver,实现前端联调)接口自动化的执行速度快,回归效率高,是目前中小公司主流的喜爱。但是接口测试要想做好,对返回结果的断言是个非常高的要求,设计人员的能力和知识决定了断言的健壮性,对于设计人员的能力要求相对较高。

  4、大厂目前主要流行的是拨测、图形识别、AI,拨测即录制和回放(很多小白看到这估计笑了,这不是早就被淘汰了么,笔者:呵呵,此操作非彼操作),笔者大概了解过阿里的doom系统(没有仔细研究,能力有限,说的不对的请忽略),通过中间件录制线上的流量数据储存起来,在被测试环境进行重放操作,以验证本次修改是否对线上数据产生影响,这中间涉及非常多的技术实现。图像识别可以参考airtest,AI测试目前几乎没有流出,测试之家里有一些理论文章可以参考。

  5、性能自动化就不写了,笔者的能力有限,连性能测试都不敢说会更何况性能自动化。要是会个工具随便打个压就算会的,当我没说,打个压看个报告啥的还是轻松的,代码写个性能脚本问题也不大,性能测试的精髓在于分析瓶颈、系统调优。

  写在最后,17年UI自动化刚兴起的时候,会个自动化脚本能评级到中级工程师,18年中级自动化需要自带框架了,到了19年,会个自动化脚本连初级都算不上,用第三方框架的基本上要有成熟的方案了,19年的薪资高一点的测开岗位都要你会写测试平台了,19年测试平台已经开始流行了,技术行业,更新就是这么快,不学习,不进取,仅靠度娘那点基础的教程,在20年21年22年只会越来越难走,年纪越来越大,能力却没年轻的强,竞争力越来越弱,才是你跳槽涨薪的绊脚石,总有一些工作年限久的人,自以为自己经验老道而对工作年限低的人嗤之以鼻,笔者面过一个8年工作经验的人,只有一个总结,他的8年经验,只是在重复他第一年的事,只不过做的更熟练了一点,但是他又没能把第一年做的黑盒做到很好,这是很多老油条的常事,笔者只能送一句,要么把黑盒做好,要么发展自己的能力,大中华的行业情况就是如此,往后N年,好自为之。

用我这些年的经历告诉你无力吐槽的自动化现状……相关推荐

  1. 中宽通讯行靠谱吗_通讯录防爆技术到底靠谱吗?能不能拦截“骚扰电话”?真实经历告诉你!...

    很多人都不相信有这个技术!但很多人说这个技术也有真的,只是真的少假的多,那么防爆通讯录是真是假?!下面我用真实经历告诉大家! 我是被这个骗过的人,以前我也是一个高炮受害者,有40多个口子,过着每天都是 ...

  2. 崩坏3九游服务器稳定吗,崩坏3:大佬亲身经历告诉你,玩崩坏3到底该不该压等级!...

    原标题:崩坏3:大佬亲身经历告诉你,玩崩坏3到底该不该压等级! 我入坑的时候差不多刚好三国活动吧,到现在大概两个月了.因为是新人,对游戏很感兴趣,可以说是爆肝.除了战场,太难了,我不会秒BOSS,也懒 ...

  3. 亲身经历告诉你,学好英语的正确姿势(文末附自建英语学习网站)

    亲身经历告诉你,学好英语的正确姿势(文末附自建英语学习网站) 为什么要学英语? 你学英语的契机是什么? 缺乏坚持的动力怎么办? 为什么学了好多年英语收效甚微? 如何学好英语? 如何快速构建知识体系? ...

  4. 应届生如何准备校招,用我这一年的校招经历告诉你

    前期准备 校招在我看来是一件时间特别长的战争,为什么这么说呢,因为从你开始准备校招的那一刻开始,到你正式拿到offer的,并且确定去哪一家公司时,时间差不多一年左右,这个时间其实比考研.公务员等都要长 ...

  5. 我用维权失败经历告诉你,在淘宝上买到假货只能忍气吞声

    淘宝上的假货问题由来与久了,马云一直喊着要打击假货,可是呢,淘宝是怎么打击假货的,我用我的亲身经历告诉你,当你在淘宝上买到假货,很多时候,你只能忍气吞声. 2018年7月10日,我在淘宝店" ...

  6. 英语不好,英语不好真的可以学编程吗?亲身经历告诉你

    最近老是看到这样的问题,但回答问题的人总是草草了事 点击跳转 什么是编程 英语不好真的可以学习编程吗? 英语不好在学习编程中,会承担什么样的风险 如有帮助到您 请支持一下 多谢 结语 点赞就送精美40 ...

  7. 珍爱网服务怎么样?我的真实经历告诉你!

    我是一名90后,从小就挺过很多关于90后的评价,比如我们是垮掉的一带,我们是不能吃苦的一代.正是因为这样我为了摆脱自己身上的标签,也为了更好的生活,从毕业开始我就将所有的精力放到了工作上,经过自己不断 ...

  8. 学计算机有纹身影响吗,亲身经历告诉你“纹身影响工作吗”?

    原标题:亲身经历告诉你"纹身影响工作吗"? 亲身经历告诉你纹身影响工作吗? 你觉得纹身会影响你的工作吗?这个烦恼不止你有,就连国外的小伙子们也有. 一位程序员就将他的纹身故事分享在 ...

  9. 四十五岁学计算机编程,小学生应该学编程吗?三四十岁还能学编程吗?用我的亲身经历告诉你...

    原标题:小学生应该学编程吗?三四十岁还能学编程吗?用我的亲身经历告诉你 以下内容适合的读者: 看到少儿编程广告后感到疑惑和焦虑的父母 打算零基础入门学习编程的爱好者 最近看了B站的"小学生V ...

最新文章

  1. 关于实验中的makefile相关知识
  2. VC++ 鼠标非显示区域命中测试消息WM_NCHITTEST和相关编程问题学习1
  3. wxWidgets:wxSplitterWindow概述
  4. windows 禁用ipv6服务_在 Windows 7 中禁用IPv6协议/IPv6隧道
  5. 带你学 Redis: 基本命令 String 操作(三)
  6. python字典长度可变吗_关于在Python3中:字典在迭代过程中,字典的长度是不允许改变的...
  7. kubernetes发布tomcat服务,通过deployment,service布署
  8. 开机后网络连接迟迟没有反映是怎么回事?
  9. android 银行卡号 4位,Android中的EditText输入银行卡号四位空一格
  10. kotlin的Viewpage2+Fragment的简单使用(setUserVisibleHint方法过时)
  11. jnlp文件服务器数据提取,jnlp 项目示例
  12. 腾讯词向量下载链接(Tencent_AILab_ChineseEmbedding.txt)
  13. C# 获取每年春节对应的公历日期
  14. 信源编码课程实验一:基于Audacity的浊音、清音和爆破音信号的时域及频域特性分析
  15. vue-动态加载图片
  16. 解决bug问题,查找bug的方法
  17. 真丶深入理解 JavaScript 原型和原型链(二):原型和原型链
  18. wow怀旧服新开服务器最新消息,魔兽世界怀旧服服务器开放进展3月24日更新
  19. hihoCoder:#1082 然而沼跃鱼早就看穿了一切
  20. USB 3G网卡驱动流程

热门文章

  1. 【已解决】vagrant up下载box速度太慢的解决方法
  2. 微信扫码支付:此公众号并没有这些scope的权限,错误码:10005
  3. IDEA中怎么创建xml文件
  4. 【C++】-- AVL树详解
  5. 单工通信、半双工通信、全双工通信 的概念
  6. 杂牌机搞机之旅最终章————刷入Xposed框架
  7. Unity秒表计时器
  8. 汉语拼音工具包相关实用方法
  9. C语言 数组中插入一个数
  10. ipad 开源协议_开源iPad替代品,创用CC满12岁,甚至更多