从5月初开始找工作到现在,先后面试了阿里巴巴、字节跳动、网易、快手的测试开发岗。
大公司对于测试开发的要求相比来说高很多,要求掌握的知识点的广度和深度层次也比较高,遂整理了这两个月的面试题目文档供大家参考,同时也是为了方便以后自己需要的时候刷一刷,不用再去到处找题。希望大家都能找到满意的工作,共勉之!
一、Web自动化测试面试题
1.Selenium中hidden或者是display = none的元素是否可以定位到?
不能,可以写JavaScript将标签中的hidden先改为0,再定位元素。
2.Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?
- 添加元素智能等待时间 driver.implicitly_wait(30)
- 添加强制等待时间(比如python中写 sleep)
- try 方式进行 id,name,clas,x path, css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种
3.如何提高Selenium脚本的执行速度?
代码优化,多任务,分布式部署都是可以提升脚本执行速度的。
4.用例在运行过程中经常会出现不稳定的情况,也就是说这次可以通过,下次就没办法通过了,如何去提升用例的稳定性?
- time.sleep( )
- driver.implicitly_wait(30)
- 多用 try 捕捉,处理异常
5.你的自动化用例的执行策略是什么?
自动化测试与软件开发本质上是一样的,利用自动化测试工具,经过测试需求分析,设计出自动化测试用例,从而搭建自动化测试的框架,设计与编写自动化脚本,验证测试脚本的正确性,最终完成自动化测试测试脚本(即主要功能为测试的应用软件)并输出测试结果。
6.自动化测试的时候是不是需要连接数据库做数据校验?
从数据库层面来进行数据校验可以更方便验证系统的数据处理方面是否正确,数据处理逻辑正常后,UI层面上的校验也是需要做的。
7.id,name,class,xpath, css selector这些属性,你最偏爱哪一种,为什么?
css 、xpath 几乎所有的元素都可以定位到,但是它们的短处在于页面上更改了元素后位置很容易改变,所以首先使用的还是id或者name等。
8.如何去定位页面上动态加载的元素?
9.如何去定位属性动态变化的元素?
10.点击链接以后,Selenium是否会自动等待该页面加载完毕?
11.什么是page object设计模式?
12.如何在定位元素后高亮元素(以调试为目的)?
13.什么是断言?
14.你觉得自动化测试最大的缺陷是什么?
二、APPUI自动化测试面试题
1.Android APP 内存不足时, 系统如何结束进程获得内存?
系统优先结束被挂起(暂停)的进程,释放内存。
2.APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?
常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄漏、代码编写错误。
3.请简单介绍你曾使用过的一款 APP 自动化测试工具 ?
开放性问题,带点主观意见
- 对比其他熟悉的自动化工具的优缺点。
- 自动化的简要方案(简要的同时关键内容请具体)。(提示: appnium 等)
4.Android 测试与 web 测试有什么区别?
5.app 测试有哪几种环境?
6.简单介绍一下 Android SDK 的安装步骤
7.请简要介绍一下移动应用及其服务端的测试点?
8.如何判断 app 的 bug 是客户端问题还是后台问题
9.安卓中如何取出日志信息?
10.常见的 adb 命令
11.APP 这么多主流机型如何测试 ?
12.App 崩溃(闪退),可能是什么原因导致的?
13.Appium 都有哪些启动方式
14.请简单介绍一下使用过的安卓 UI 自动化测试工具?
15.请说明 Android 手机和 IOS 手机,系统有什么区别?
三、接口自动化测试面试题
1.Webdriver可以用来做接口测试吗?
接口测试有现成的模块来处理,WebDriver是用于做WebUI自动化测试的。如果要实现接口测试,可以使用Requests模块来实现
2.按你的理解,软件接口是什么?
就是指程序中具体负责在不同模块之间传输或接受数据的并做处理的类或者函数。
3.HTTP 和 HTTPS 协议区别?
https 协议需要到 CA(Certificate Authority,证书颁发机构)申请证书,一般免费证书 较少,因而需要一定费用;
http 是超文本传输协议,信息是明文传输,Https 协议是由 SSL+Http 协议构建的可进行加 密传输、身份认证的网络协议,比http 协议安全;
http 和 https 使用的是完全不同的连接方式,用的端口也不一样,前者是 80,后者是 443;
4.HTTPS 在哪一层?
HTTPS 在应用层与传输层之间
5.get 和 post 区别是什么?
POST 和 GET 都是向服务器提交数据,并且都会从服务器获取数据。
区别:
- 传送方式:get 通过地址栏传输,post 通过报文传输
- 传送长度:get 参数有长度限制(受限于 url 长度),而 post 无限制
- GET 产生一个 TCP 数据包(对于 GET 方式的请求,浏览器会把 http header 和 data 一并 发送出去,服务器响应200 返回数据),POST 产生两个 TCP 数据包(对于 POST,浏览器先 发送 header,服务器响应 100continue,浏览器再发送 data,服务器响应 200 ok 返回数 据)
- get 请求参数会被完整保留在浏览历史记录里,而 post 中的参数不会被保留
- 在做数据查询时,建议用 GET 方式;而在做数据添加、修改或删除时,建议用 post 方式
6.常见的 POST 提交数据方式
7.什么是 Http 协议无状态协议?怎么解决 HTTP 协议无状态协议
8.cookie 和 session 的区别
9.请求接口中常见的返回状态码
10.什么是 DNS?
11.请问你们公司是如何做接口测试的?
12.怎么设计接口测试用例?
13.你做接口测试,测什么?
14.平常用什么工具测接口的?
15.没有接口文档,如果做接口测试?
16.在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?
17.依赖于第三方数据的接口如何进行测试?
18.接口测试中,依赖登录状态的接口如何测试?
19.你平常做接口测试的过程中发现过哪些 bug?
……
最后感谢每一个认真阅读我文章的人,作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的学习资源,如果你用得到的话可以直接拿走,希望能给你前进的路上带来帮助。(包括Python编程、WEB自动化测试、app自动化测试、接口自动化测试、测试框架、持续集成、自动化测试开发、性能测试、安全测试、大厂面试真题、简历模板等等、当然还有一些测试基础、工具、app测试、接口测试、linux、mysql数据库等基础知识),相信能使你更好的进步!这些学习资料我都放在我的测试学习交流裙:1033482984里面了,同时还有几千个行业大佬相互进行技术交流、经验分享,如果你也感兴趣,那么期待你的加入。