自动化
一、pytest都有哪些特性
1、前置和后置处理
- setup,在测试函数或类之前执行,完成准备工作,例如数据库链接、测试数据、打开文件等
- teardown,在测试函数或类之后执行,完成收尾工作,例如断开数据库链接、回收内存资源等
- 也可以通过在fixture函数中通过yield实现setup和teardown功能
2、可以控制用例执行顺序
参考pytest控制用例执行顺序_51CTO博客_pytest用例执行顺序
- 安装pytest_ordering,通过装饰器@pytest.mark.run(order=1)来进行控制,数字越小,越前执行
- 安装pytest-dependency 在对应的方法A上添加@pytest.mark.dependency()对所依赖的方法进行标记设置为被依赖方法,在依赖方法使用@pytest.mark.dependency(depends=["被依赖方法名"])引用依赖 可添加name=参数 官网说明地址 https://pytest-dependency.readthedocs.io/en/latest/usage.html#basic-usage
- @pytest.fixture装饰,包括session、module、class、function
- @pytest.mark.skip() 可以装饰方法与类,用于跳过该用例
3、可以进行失败重试:pytest-rerunfailures,
4、可以做到数据参数化:@pytest.mark.parametrize实现参数化
5、能够做到数据驱动:@pytest.mark.parametrize("test_info", data)
6、分布式测试:pytest-xdist(多CPU分发)
7、能够生成html测试报告:pytest-html,生成测试报告(--html=report.html)
8、集成CI:pytest可以非常方便与CI工具集成,如Jenkins。
二、Selenium自动化测试面试题
1、什么是自动化测试、自动化测试的优势是什么?
通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。
自动化测试的优势:
1、减少回归测试成本
2、减少兼容性测试成本
3、提高测试反馈速度
4、提高测试覆盖率
5、让测试工程师做更有意义的测试
2、什么样的项目比较适合做自动化测试,什么样的不适合做自动化测试?
适合做的项目:
a.项目周期长且相对稳定
b.需要做频繁的冒烟测试
c.需要经常做回归测试
d.需要进行大数据量的数据驱动测试
不适合做的项目:
a.项目周期短用例不会多次重复执行
b.被测项目不稳定变化太频繁
3、说一下开展自动化工作的主要流程是怎样的?
1、选择合适的测试工具
2、定义自动化测试覆盖的范围
3、制定测试计划
4、自动化测试环境搭建
5、脚本开发
6、测试执行
7、测试脚本维护
4、在制定自动化测试计划的时候一般要考虑哪些点?
1、选择适合的测试工具或分析当前的工具是否适合新项目
2、选择合适的自动化测试框架
3、确定要做自动化测试的范围和不做自动化测试的范围
4、测试环境的准备与搭建
5、制定一个粗略的脚本开发的时间表
6、制定脚本执行的一些策略,如冒烟测试的频率,回归测试的时间点及频率等
7、定义自动化测试的输出,比如脚本,测试数据,发现的缺陷,测试报告等
5、编写自动化脚本时的一些规范?
1、统一的命名约定,如用例名,方法名等
2、良好的脚本注释
3、遵循代码规范,使用适当的缩进
4、对异常进行处理
6、你一般一天能编写多少个自动化脚本?
这个取决于测试用例场景的复杂度,一般一天能写2~5个左右,复杂的话一天只能写一个
yaml
UI自动化写的过程,推广过程
假如让你设计一个接口自动化框架从哪些方面考虑
在ui自动化的过程中遇到过什么问题
git怎么解决代码上传的冲突
最近的版本做了啥
如何解决数据测试用例变动问题
定位方式里面哪个最好为什么
怎么优化框架
webdriver为什么能驱动浏览器
UI自动化,页面有一个弹窗,没弹出的时候如何判断结果是失败的
显式等待和隐式等待的区别
如何管理用例的
数据库
查询每个学生的总成绩
select 学生名, sum(语,数,英)
from 学生表
group by 学生名
逻辑思维
一天24小时时针和分针重复多少次
python
手写代码判断一串字符串是不是ip地址
测试基础类
还有接口,性能,功能
还有就是post和get的区别
还有就是post参数数据格式有哪些
再有就是给一个开始时间下拉框,结束时间下拉框,一个搜索按钮,搜索数据的页面,分析测试点
错误状态码
如何构造压测场景、压测流程
功能测试的负向场景
Linux命令
Linux查看进程接口、查看日志
接口类
如和判断是前端问题还是后端问题
抓包分析
- 如果页面请求的接口少了就是前端的问题
- 或者传的参数和接口文档里面定义的不一样也是前端的问题
- 如果接口返回的信息和接口文档定义的不同就是后端的问题
比如一个商品列表 筛选了 下架、时间、商品名称,然后前端没有传下架这个参数 那就是前端的问题要是前端传递的参数都正确了 列表的数据不对 那就是后端的问题