前言
从年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的岗位,给你一年万的总包,你能做的了P7做的事么?道理就是这样,先有能力,才有谈判的资本。ut虽然在一线鄙视链,但是我在度娘上看到过一个帖子,改ut源码,把执行效率提升了几十倍,你有那能力不?)
Ok,能看到这里的基本上也可以确定你不是玻璃心或者喷子了,现在我讲述一下我今年7月面试的几个岗位,这些岗位是真实要求你能做起自动化的,坐标杭州,起薪15K,7月面试5天,由于学历限制以及能力不足,总收获offer8个,岗位的面试题如下:
Q7:
你在上一家公司维护过多少自动化测试用例(看你简历上写的UI/API/APP任意一个)。小于的基本上上不了场面,如果后面的问题回答不上来,你的定级就是初级自动化了。
Q8:
自动化用例,你们全用例执行一次需要多少时间(考验你框架设计时是否考虑到执行效率问题)?用例之间的关联怎么解决?调试单个用例或者选择某几个用例执行你是怎么进行的?数量以内的测试用例,如果用例维护量翻5倍(以上double或者3倍),你有什么方案优化执行时间和效率?
Q9:
如果被测试环境迁移了(例子:从本地环境迁移到阿里云机了),你用例是否要大量修改测试数据。(易维护性)
Q10:
编程语言问题:
Java一般问一些线程安全,数据类型的区别,设计模式等等问题,笔者是python,故只写python常问的问题:
Python列表和元组除了可变不可变以外的区别?
Python列表和字典的区别?
Python生成器和迭代器的区别?
请描述多线程,多进程,协程其中之一的工作原理。(后续追问一个三者的区别,主要是想听听你对这三者的优缺点的了解程度)
请描述Python的垃圾回收机制以及内存管理
Q11:
数据库相关问题(太泛,从基础理论到手写语句,不写了):
多刷度娘,多看基础就是了。
Q12:
Linux基操
Q13:
网络相关(
转载请注明:http://www.0431gb208.com/sjslczl/4855.html