当前位置: 首页 > news >正文

项目总结之常问的一些问题

1.项目功能介绍,重难点

重难点:

  • mock工具使用(涉及到的三方接口过多,由于网络等原因无法调通,所以测试的时候,采用mock工具来模拟返回接口真正调用后响应数据)

2.项目负责哪部分?如何测试?测试用例如何设计的?如何保证测试用例没有遗漏?业务流程是怎么样?

3.负责项目的架构?
三个子系统,web、app、后台

4.数据库经常使用吗?
数据库使用,有两种情况,第一种情况,验证测试结果的正确,通过页面操作,查看落库是否正确;第二种情况,造测试数据,验证某些场景的时候,需要初始化或者删除数据,需要修改数据库。

5.印象最深刻的bug?

6.mock工具使用?

  • 使用场景:三方接口调不通
  • 使用步骤:
  • (1)下载moco的jar包,并且确保自己电脑上已经配置了正确的java环境;
  • (2)创建json文件,文件中按照json文件格式,编写要请求的数据,url、接口请求方式、参数(form、json数据)、响应结果、请求头等;
  • (3)将json文件和jar包存在同一目录下;
  • (4)cmd上启动脚本 java -jar mock的jar包 http -p 端口号 -c json文件
  • (5)通过jemter或者浏览器或postman进行访问。

7.linux考察:常用命令

  • 查看包含Error的日志 grep “Error” test.log
  • 查看包含Error的日志以及它的后10行:grep -A 10 “Error” test.log
  • 查看昨天的包含login的接口的日志:cat test.log |grep “昨天日期” |grep “login”
  • 查看端口号 netstat -anp|grep 8080
  • 查看进程 ps -ef|grep tomcat
  • 查看ip ip addr
  • 根目录下查找a.log文件 find / -name a.log
  • 文件设置权限 chmod 777 text.txt
  • 查看内存使用 free -m
  • 查看磁盘使用 df -h

8.接口自动化怎么做的?(目录,参数化,参数驱动,断言,三方数据返回处理,session管理cookie、log)

  • 难点:处理三方接口返回的数据:三方接口请求的url和参数都来源于后端接口返回的结果,返回的结果是html格式,需要从html提取数据。所有的请求参数都在input标签中,name属性值为参数名,value属性值为参数值。
  • 提取html内容:通过一个beautifulsoup4,进行处理的。
# 提取html
def html_parser(result):# 1、提取htmlhtml = result.json().get("description").get("form")# 2、获取bs对象bs = BeautifulSoup(html, "html.parser")# 3、提取urlurl = bs.form.get("action")print("提取的三方url为:", url)data = {}# 4、提取所有input数据for input in bs.find_all("input"):data[input.get("name")] = input.get("value")return url, data
参数化:
parametrize关键字(@pytest.mark.parametrize("x1,x2,except",data))要求传的数据格式为[(),{}]
数据驱动:json文件构造测试数据({})字典格式
数据格式:x1,x2,expect,响应数据
(1)要将json文件中的数据处理为参数化需要的[()huo{}]格式
先获取json文件路径,拿到文件,定义一个空列表,之后读取json文件内容,
json文件中内容都是以键值对的形式存储的,遍历每一个键,将值存储到空列表中
(提取出来的value值是一个列表,将其处理为tuple)
def read_json(filename, key):filepath = DIR_PATH + os.sep + "data" + os.sep + filenamearrs = []with open(filepath, "r", encoding="utf-8")as f:for data in json.load(f).get(key):arrs.append(tuple(data.values())[1:])#切片,只要将列表位置1后面的元素添加到arr里面,1位置是描述信息return arrs
日志:
接口自动化中通过代码设置日志的级别,debug级别(级别最高)或者info级别的,
低于设置的日志级别的日志都会进行打印。
怎么调用的?
在自动化代码Tool.py中对获取日志的内容、参数、输出日志格式、日志文件路径封装成一个方法,
在网上搜的这串代码,封装好之后,在测试用例脚本中进行调用,
通过log.info("登录接口测试结果为:{}".format(result.text))进行调用。
pytest代码运行顺序:默认按照从上向下的执行顺序,改变默认的执行顺序:使用mark标记, 标记测试用例执行顺序,例如:@pytest.mark.run(order=1),1代表第一个执行,2代表第二个执行,使用到的插件为pytest-ordering 

9.保证接口自动化测试脚本的稳定性?

  • 按顺序执行
  • 清除数据

10.jemter使用?断言怎么写的?

(1)python代码中最简单的断言:assert 200==resp.status_code
(2)jemter中设置断言,加一个响应断言,可以设置断言的字段(响应文本、
响应代码、响应头、响应信息),匹配模式选择包含、相等、字符串等。
(3)UI自动化代码中设置断言的方式:

11.数据库工具封装的使用场景都有哪些?怎么封装的?

将增删改查的常用操作用python代码进行封装,写成一个类方法,
比如测试一个项目需要造数据或者清除数据的时候,只需要提供对应的sql语句,
就可以进行调用。以及在数据库插入大量数据的时候,也可以使用该代码。流程:
(1)导包import pymysql
(2)创建连接conn=pymysql.connect()
(3)创建游标conn.cursor()
(4)根据传入sql,分辨是增删改操作还是查看操作:
增删改操作:执行sql,pymysql.excute(sql),执行成功则提交commit,
失败则进行回滚操作rollback,并将异常错误进行打印
查询操作:
查询单条数据还是多条数据,fentchone或者fetchmany方法进行提取结果集

http://www.mrgr.cn/news/97406.html

相关文章:

  • uniapp如何接入星火大模型
  • Java面试34-Kafka的零拷贝原理
  • 国产芯片解析:龙讯USB Type-C/DP Transmitter多场景覆盖,定义高速互联新标杆
  • Java面试32-对Spring Cloud的理解
  • LeetCode 热题 100 堆
  • 从零搭建微服务项目Pro(第7-1章——分布式雪花算法)
  • 1. Qt信号与槽
  • C语言跳表(Skip List)算法(附链表与跳表实现源码)
  • 从奖励到最优决策:动作价值函数与价值学习
  • Opencv之dilib库:表情识别
  • 人大金仓数据库dum文件进行备份数据和恢复数据
  • 使用OpenSceneGraph生成3D数据格式文件
  • 某碰瓷国赛美赛,号称第三赛事的数模竞赛
  • HarmonyOS 基础组件和基础布局的介绍
  • LeetCode Hot100 刷题笔记(3)—— 链表
  • spring boot 整合redis
  • MySQL窗口函数学习
  • AI爬虫?爬!
  • [ctfshow web入门] 零基础版题解 目录(持续更新中)
  • Nginx-keepalived-高可用