当前位置: 首页>后端>正文

自动化测试面试题

1、接口自动化和web自动化有多少case?覆盖率是多少?全部执行完要多久?
接口自动化测试case数是根据接口数而定,100个接口,接口自动化case大概在2000-3000之间。接口自动化覆盖率可达100%;web自动化测试case根据业务用例而定,10000个功能测试用例,web自动化用例大概2000-3000个左右,覆盖率一般在30%左右。所有用例全部执行完成30-60分钟左右;
根据自己具体项目回答

2、接口自动化测试怎么做?web自动化测试怎么做?或者自动化测试怎么做?
(1)项目组做自动化的可行性分析,自动化率能够实施到什么程度
(2)调研测试团队对于自动化技术的程度,一般会伴随着demo演示(selenium, rf, requests等)
(3)计划制定,自动化测试框架搭建,逐步实施,发现框架问题并改善
制定计划,提取或编写自动化测试用例,leader编写自动化测试框架,组员编写和调试自动化测试脚本,无人值守jenkins,脚本维护
(4)把自动化流程化,框架出使用文档和规范文档
(5)持续不断的完善框架
(6)把自动化标准推广到其他项目上

3、什么是POM模式?为什么要使用它?
PMO模式:全称page object model,简称PO,页面对象模型。意思是把一个页面当成一个对象,页面的元素就是对象的属性,页面的操作就是对象的行为(方法)。一般情况下PO分三层架构:基础封装层Basepage、PO页面对象层、TestCase测试用例层。
使测试用例更简单,更清晰,把很多的业务操作封闭到PO页面对象层,用例只需要调用即可。如果页面有变动,只需要修改PO页面对象层的属性即可。增加代码的可维护性。

4、对数据驱动和关键字驱动的理解?
数据驱动是从数据文件(excel、CSV、YAML、数据库)读取输入、输出数据,然后通过变量传入自动化用例中。在整个过程中,数据的读取、测试状态、测试信息全部在测试用例里面,测试数据都在数据文件中,通过修改数据达到驱动自动化测试用例执行的方式叫数据驱动。
关键字驱动是从面向对象的思维出发,同样的业务逻辑会封装成一个函数,这个函数名就叫关键字,不同的关键字实现不同的业务逻辑,当所有的业务逻辑都可以通过关键字来实现的时候,就是关键字驱动框架。
RF就是关键词驱动;
一般情况下企业都是数据驱动+关键字驱动一起使用

5、web自动化测试用例如何设计?如何提高web自动化用例脚本的稳定性?
自动化用例主要是从功能测试用例中提取的冒烟用例和回归测试用例,提取需求遵循以下原则:
(1)优先覆盖核心功能用例,核心流程用例(最重要)
(2)尽量不要选复杂的用例
(3)选取一些重复执行的用例
(4)一般选取正向用例

如何提高稳定性:
(1)尽量使用相对路径定位元素
(2)定位元素需要封闭显示等待
(3)用例和用例之间尽量避免依赖
(4)加入用例失败重跑机制
(5)自动化测试环境与其他环境分开

6、举例说明在自动化测试过程中碰到过哪些异常?用到了哪些python库?

异常:
NoSuchElementException 没有如此元素
NoSuchAttributeException 没有如此属性
NoSuchoFrameException 没有如此框架
ElementNotVisibleException 元素不可见(style.display:none)
ElementNotSelectException 元素不可选
TimeOutException 元素超时
ArrayIndexOutofException 数组下标异常
TypeException 类型异常

Python库
Webdriver, webdriverWait, Os, xlrd(用于读取Excel文件), xlwt(用于写入Excel文), time, unitest, logging, sys, htmltestrunner, json, CSV, jsonpath, yaml, requests, re, pytest, allure, pymysql

https://zhuanlan.zhihu.com/p/670628843

7、自动化测试过程中,遇到了哪些问题?如何解决的?
(1)元素定位不到
(2)自动化测试用例出现误报(解决参考上面提高稳定性)
(3)每一次自动化测试的结果会被覆盖
(4)数据库校验(对数据库结构非常清晰)

8、ui行货用什么方式定位元素?当元素定位不到时如何处理?
8大定位方式:id, class, xpath, css, link text, partial link text, tag name, name

9、在上一家公司做自动化测试用的什么框架?
python + selenium + unittest/pytest + ddt/parameters + htmltestrunner/allure + jenkins
rf + selenium2library
python + requests + pytest + parameters + allure +jenkins + yaml

10、自动化中有哪三类等待?它们有什么特点 ?
线程等待: thread,建议少用,容易降低代码运行速度
隐式等待:全局等待
显示等待:一般会和一个匿名函数一起使用,一般用于结合定位元素的封装

11、在执行脚本过程,如何实现当前元素高亮显示?
必做,利用javascript去修改当前定位元素的style,在style里面加入border:3px red solid样式

12、在现在基础上给你一个新的业务线,怎么做接口自动化?
首先熟悉新的业务线接口的业务,然后熟悉已搭建好的接口自动化测试框架,在当前的框架里加入符合框架的接口自动化的测试用例即可,并根据实际情况可以提出一些对框架的改进建议。

13、接口自动化测试框架中,接口关联是怎么处理的?
(1)通过一个yaml文件来独立的保存所有的中间提取的变量,这个变量在执行用例之前清空。conftest
(2)在测试用例的yaml文件中通过关键字extract提取变量:json提取和正则表达式提取
(3)在一下个接口通过{{}}或${}或热加载(yaml文件可以直接调用python方法)方式取值

14、Requests中的Session会话管理的作用是什么?
因为很多接口都需要使用cookie或session来记录登录状态,而很多接口必须要有这个登录状态才可以请求成功,Requests中的Session会话管理的作用就是自动记录cookie和session的登录状态

15、接口自动化测试中断言是如何实现的?
把断言封装成一个方法,这个方法会读取yaml文件中的validate字段,包括断言的方式和断言的数据,然后在后台实现了断言,并且体现在报告中。框架封装完成后不需要写任何python代码就可以实现断言。
功能测试不需要写任何python脚本,只需要写yaml格式的测试用例即可实现接口自动化。

16、接口自动化测试框架中动态参数接口、加密接口、签名接口是怎么处理的?
热加载

17、接口自动化测试框架是如何搭建的?

(1)框架文件架构
commons 封装公共的方法,比如请求、日志、yaml文件的处理等
datas 用于数据驱动
hotloads 热加载文件
reports
log
testcase 分模块管理
config.yaml 配置文件
extract.yaml 中间变量
run.py 全局的执行文件

(2)优势
a.采用yaml作用测试用例,对用例做了严格的规范,name,request(method, url), validate
b.支持多种请求方式和传参方式
get:params
post:表单和json
文件上传
同时内置MD5,base64,签名加密算法
c.支持轻量级的接口关联,并且支持正则和Json提取
d.支持热加载(在代码执行过程中自动的去yaml里面执行外部函数)
e.支持多种断言方式:相等、包含、数据库断言
f.支持yaml数据驱动
g.支持多环境切换

18、接口自动化回归过程中有没有发现什么问题?取得了怎样的效果和收益?


https://www.xamrdz.com/backend/3s61942699.html

相关文章: