自动化工程师面试常见问题
-
Python相关的问题
- 语法基础知识,常见的数据类型、语句表达、异常处理等
- 常用的模块要熟悉,selenium的web自动化框架、unittest单元测试模块、appium模块、HTMLTestRunner模块、HTMLReport模块、操作系统相关os、platform模块、re模块
- 遇到其他的模块ini文件解析、csv文件读取、Excel文件读写模块(xlrd、xlwt等),如果不会,就必应搜索。
-
HTTP协议及其常用头信息。
- HTTP协议是一种超文本传输协议,处在OSI七层协议的应用层。是一种最常用的无状态协议。
- 主要涉及两种动作Get、Post,有什么区别?
- URL(网址)的地址格式是什么?协议名称、域名/ip、端口号、资源路径、多个参数,用&符合连接
- 访问一个网址,会经历什么状态转换?输入地址、域名解析、发送Get请求报文、等待、收取相应报文,考点包括Fiddler抓包、Httpwatch等抓包工具。
-
域名解析DNS做什么的?怎么查?本地域名解析应该怎么配置?配置C:\Windows\System32\drivers\etc\hosts文件
- 你经常使用哪些工具查看HTTP报文?Chrome检查、Fiddler、HttpWatch(只支持ie、Firefox)等工具。
-
发送Get请求,请举出一些报文的字段名,并解释其意义
原始格式:
GET / HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36
Upgrade-Insecure-Requests: 1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: BAIDUID=2104300EC605A9E08EA32612A01F262F:FG=1; BIDUPSID=2104300EC605A9E08EA32612A01F262F; PSTM=1509085581; FP_UID=fa3fdfd3b09abd048258f11bda75d52b; BD_UPN=12314353; ispeed_lsm=20
整理以后,如下图所示:
-
解析Response响应报文,主要包括响应头+响应体。请举出一些响应头字段。
- 请列举一些HTTP code(状态码),分别代表什么意义?
-
常见端口有哪些?
- HTTP协议80、HTTPS协议,443
- ssh协议默认是22
- Ftp协议默认是21
- Oracle默认端口1521
- MySQL默认端口3306
- SQL Server默认端口1433
-
接口测试如何批量造测试数据?(高频)
- 少量数据,用数据库的存储过程、SQL语句,适用于造的数据量比较小,(使用Excel做规划)
- (常用,有效)从生产环境导出以后做"脱敏"处理,再导入测试数据库。
- 使用Jmeter中JDBC Sampler,编写SQL语句,使用函数助手生成随机参数,设置迭代次数,执行。参考链接:使用Jmeter造数据 http://blog.csdn.net/benpaobagzb/article/details/48036905
- 大量数据,编写Python的脚本,生成一个sql的脚本,包括很多Insert into table_name (字段1,) values (值1,); 用sql语句或者工具,导入文件即可。MySQL里有load data infile *.sql文件
-
列举一个你印象中最深的bug。列举你在做自动化过程中遇到的问题,以及是怎么解决的?
- 印象中最深的bug,不代表是最难的,有可能是最近的。
- 低级错误。例如:配置文件配置错误、网络iptables防火墙端口被封、打包不完整。
-
高端的bug,例如:app耗电量比较高、内存使用比较高,内存泄漏、FPS手机流畅度,默认刷新频率60次/秒,20-30次/秒。
参考链接: https://tech.meituan.com/Dianping_Shortvideo_Battery_TestCase.html
- 重要的是把"奇怪问题"的排查思路、方法给出来,最后确定出问题(发现重要的bug)。
- 面试官考察的是,应聘者的解决问题的能力。
-
Postman工具做接口测试,主要用于做接口的功能测试。
- 接口测试的一般流程。确定接口文档:地址、输入参数、输出参数、错误参照码、接口用途、示例。
-
在没有接口文档的时候怎么做接口测试?
- 首先你要知道为什么必须需要接口文档。
- 如果没有的话,就需要协助开发人员把文档整理出来。
- 对接口进行优先级处理,并且使用适当的工具进行测试。
-
Jmeter做接口测试或者压力测试。
- 你经常用的Jmeter元件有哪些?Jmeter元件的作用域是什么?
- 需要设置什么类型的配置元件,设置cookies管理器、http头信息等。
- 设置项目结构,以及添加相应的Sampler(采样器)
- 添加断言与监听器,方便调试。
- 分布式环境的搭建(伪分布式)
- 命令行的使用并生成报告(jmeter3.1以后的版本)
- 如何与持续集成相结合
-
Robot Framework做自动化项目
- 搭建环境,一步一步搭建,平安、移动,环境部署是开发写的一键部署包。
- 优点:适合技术功底比较弱、项目周期比较短、也需要快速自动化一批用例。
- robot的项目目录的组织结构,测试计划、测试套件、测试用例的组织
- 资源文件的组织,三层架构的组织模型。
- 里面会涉及到常用库Selenium2Library、Database、Process等。
-
这个项目里写了多少条测试用例,几个人做的、用了多长时间,写的是什么类型的自动化。
冒烟测试:打出包来,先用冒烟测试跑一边。运行时间3~5分钟,测试用例(不同逻辑)50条以内、编写1~2周完成。
专项测试:对某一部分的功能逻辑、用例深度比较大,需要人力2人,测试用例100条左右。场景会更加丰富,比如垃圾清理功能会准备很多种环境、app启动时间的测试
全功能测试:回归测试,耗费时间可能要40分钟以上,测试用例数1000条以上,投入3~4人,周期3~4个月,主要完成所有测试用例的跑通,防止bug回归。
-
Python+Selenium+Unittest+HTMLReport做自动化项目。
- 项目间周期要足够长>=8个月,人力安排3~4人、技术积累。
- 后续的迭代很频繁。重复性劳动比较多。
- Python常用的数据结构有哪些?举出一些例子来。
- Python常用的模块有哪些?举例说明,怎么安装?pip在线安装/离线安装。发挥ddt在项目中应用,装饰器(语法糖);读Excel表格(xlrd)、csv文件到程序中、数据库的连接等。
- 写一个Python的脚本,打印9*9乘法表,算法。【杀伤指数*****】
- 写一个Python脚本,算法题
- Selenium常用API,并不难
- 异常处理,try … except …. 等等
- web元素的定位、使用了哪些工具?Chrome检查、Firefox查看元素/FirePath
- 定位常用的方法?xpath一定要熟练掌握。如://*[@id='username and @name='yonghuming']
-
单线程、多线程与多进程的区别
- 线程和进程的区别,线程优缺点:线程是cpu调度的最小单元,调度成本很低、线程共享变量也更加方便,创建线程的成本很低。缺点是,多线程程序一旦一个线程出现问题,很容易影响其他线程。
- 进程优缺点:进程是资源调度的最小单元,进程里至少包含一个线程,进程的独立性比较好。缺点:进程的创建成本比较高,占用资源也比较高、共享资源的时候不太方便。
-
Linux 查看CPU的使用情况
Top 、sar
参考资料: http://jingyan.baidu.com/article/4d58d5412917cb9dd4e9c0ed.html
-
Linux命令相关
-
用Linux命令操作另外一台服务器
Xshell工具使用的是SSH协议,
ssh root@192.168.2.37 连接
-
从一台Linux拷贝一个tar包到另外一台Linux机器上
scp ping.log root@192.168.2.171:/root/rs.log
-
如何查看进程监听的端口?
netstat -an | grep httpd
ss
-
如何查看进程的id,并杀死进程
ps -ef | grep httpd
Kill -9 pid
- 可能会要求你编写一些shell脚本(Linux命令有一定的语法规则等)
-
-
http与HTTPS的区别,加密的原理,怎么用抓包工具去看数据
- 区别:https(http+ssl)安全性更高、端口不一样,443,SSL加密
-
HTTPS的请求响应流程(SSL协议)
- 使用抓包工具(如Fiddler)去检查
- 如果要测试你自己的网站,https的加密方式,需要导入网站的证书。
参考链接: http://www.jianshu.com/p/54dd21c50f21
-
tcp/ip协议族,三次握手、四次握手原理和区别
-
数据库里索引的好处、如何创建、删除索引?考察语法、以及索引的优势。
创建/删除索引的语法:
CREATE INDEX 索引名称 on GC_DFSS(no);
DROP INDEX 索引名称;
创建索引的好处:
- 帮助用户提高查询速度
- 利用索引的唯一性来控制记录的唯一性
- 可以加速表与表之间的连接
- 降低查询中分组和排序的时间
创建索引的坏处:
- 存储索引占用磁盘空间
- 执行数据修改操作(INSERT、UPDATE、DELETE)增加索引维护成本
-
存储过程是怎么写的,考察语法规则
------------存储过程定义开始-------------------
CREATE OR REPLACE PROCEDURE sp_update_sal(name in varchar)
--通知Oracle数据库去创建一个名叫 sp_update_sal 的存储过程,如果已经存在,就覆盖
IS
-- is关键字表明后面跟随的是一个 PL/SQL 体
BEGIN
-- begin关键字表明 PL/SQL 体的开始
UPDATE emp SET sal = sal + 1 WHERE ename = name;
COMMIT;
END sp_update_sal;
--end关键字表明 PL/SQL 体 结束
------------存储过程定义结束-------------------
select * from emp;
---存储过程的执行,需要在命令窗口执行
exec sp_update_sal('andy');
-
cookies、sessionid,token的原理和区别
Cookies,指某些网站为了辨别用户身份,写在客户端浏览器的cookies里,每次请求都会自动添加到Request Header里。
Session:进行session跟踪而储存在用户本地终端上的数据(通常经过加密),服务器端也会存放session。
Token(类似于Appkey):是为了替代用户名、密码在传输中不安全,而特定生成的一串字符。每次登录后会动态生成一个token值,一般有效期30分钟,超时以后会自动化再生成一个值。
- HTTP和HTTPS的区别
-
Adb命令大全
https://blog.csdn.net/androidstar_cn/article/details/52782863
-
简述自动化测试框架
-
简述如何把自动化测试脚本集成到Jenkins系统中?