自动化工程师面试常见问题

  • Python相关的问题
    • 语法基础知识,常见的数据类型、语句表达、异常处理等
    • 常用的模块要熟悉,seleniumweb自动化框架、unittest单元测试模块、appium模块、HTMLTestRunner模块、HTMLReport模块、操作系统相关osplatform模块、re模块
    • 遇到其他的模块ini文件解析、csv文件读取、Excel文件读写模块(xlrd、xlwt等),如果不会,就必应搜索。
  • HTTP协议及其常用头信息。
    • HTTP协议是一种超文本传输协议,处在OSI七层协议的应用层。是一种最常用的无状态协议。
    • 主要涉及两种动作GetPost,有什么区别?
    • URL(网址)的地址格式是什么?协议名称、域名/ip、端口号、资源路径、多个参数,用&符合连接
    • 访问一个网址,会经历什么状态转换?输入地址、域名解析、发送Get请求报文、等待、收取相应报文,考点包括Fiddler抓包、Httpwatch等抓包工具。
    • 域名解析DNS做什么的?怎么查?本地域名解析应该怎么配置?配置C:\Windows\System32\drivers\etc\hosts文件

    • 你经常使用哪些工具查看HTTP报文?Chrome检查、FiddlerHttpWatch(只支持ieFirefox)等工具。
    • 发送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协议80HTTPS协议,443
    • ssh协议默认是22
    • Ftp协议默认是21
    • Oracle默认端口1521
    • MySQL默认端口3306
    • SQL Server默认端口1433
  • 接口测试如何批量造测试数据?(高频)
    • 少量数据,用数据库的存储过程、SQL语句,适用于造的数据量比较小,(使用Excel做规划)
    • (常用,有效)从生产环境导出以后做"脱敏"处理,再导入测试数据库。
    • 使用JmeterJDBC 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的项目目录的组织结构,测试计划、测试套件、测试用例的组织
    • 资源文件的组织,三层架构的组织模型。
    • 里面会涉及到常用库Selenium2LibraryDatabaseProcess等。
    • 这个项目里写了多少条测试用例,几个人做的、用了多长时间,写的是什么类型的自动化。

      冒烟测试:打出包来,先用冒烟测试跑一边。运行时间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的区别,加密的原理,怎么用抓包工具去看数据
    • 区别:httpshttp+ssl)安全性更高、端口不一样,443SSL加密
    • 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分钟,超时以后会自动化再生成一个值。

  • HTTPHTTPS的区别
  • Adb命令大全

    https://blog.csdn.net/androidstar_cn/article/details/52782863

  • 简述自动化测试框架

  • 简述如何把自动化测试脚本集成到Jenkins系统中?

       

posted @ 2018-11-07 19:59  牛棚琐思  阅读(7518)  评论(1编辑  收藏  举报

牛棚锁思 | 改变习惯的一点点