软件测试知识点和面试题--接口测试篇

软件测试知识点和面试题--性能测试篇

软件测试知识点和面试题--手工测试篇(功能测试)

软件测试知识点和面试题--app测试篇

接口规范

接口测试流程

测试用例的思路和方法

pymysql操作数据库

#导入pymysql
	import pymysql
#建立连接
	conn = pymysql.connect(host='ip', port=3306,user='账号', password='密码',database='数据库名',arset='utf8')
#获取游标
	cursor = conn.cursor()
	
#执行查询语句
	cursor.execute('select version();') #返回受影响行数
#查看查询结果
	resp = cursor.fetchall()
	resp = cursor.fetchone()
	resp = cursor.fetchmany(6)
#关闭游标和连接对象
	cursor.close()
	conn.close()

#执行dml语句
try:
    n = cursor.execute('delete from table where id = '1';')
except Exception as e:
    # 有异常,回滚事务
    logging.info(e)
    conn.rollback()
else:
    # 没有异常,提交事务
    conn.commit()
finally:
    # 关闭游标和连接对象
    cursor.close()
    conn.close()

读取JSON方法

import json
import logging
​
def param_data(cls, path):
    '''
    用于参数化,解析json文件
    :param path: json文件路径
    :return:返回元组型列表[(),(),...]
    '''
    with open(path, 'r', encoding='utf-8') as f:
    json_data = json.load(f)
​
    json_list = []
    for i in json_data:
        json_list.append(tuple(i.values()))
    return json_list

读取XLSX方法

import json
from openpyxl import load_workbook
​
def read_xlsx(cls, file_path, sheet_name):
    '''
    :param file_path: xlsx文件路径
    :param sheet_name: xlsx底部的工作表名称
    :return: [(),(),(),...]
    '''
    
    wb = load_workbook(file_path)
    sheet = wb.get_sheet_by_name(sheet_name)
​
    case_data = []
    i = 2
    while i <= sheet.max_row:
        # C表格中【标题】的列名,K表格中【请求参数】的列名,L表格中【状态码】的列名,M表格中【预期结果】的列名
        tuple_data = sheet[f'C{i}'].value, json.loads(sheet[f'K{i}'].value), sheet[f'L{i}'].value,                          json.loads(sheet[f'M{i}'].value)
        case_data.append(tuple_data)
        i += 1
    return case_data

Requests使用

导库
    import requests
    
发送请求
    resp = requests.请求方式(url,params=查询参数,data=表单请求体,json=json请求体,headers=请求头,cookies=cookies的信息)
    multiply表单的请求方式:
    resp = requests.请求方式(url,data=表单请求体,files={'x': 'y'})
    
响应内容获取
    状态码
        resp.status_code
    查看响应头部字符编码
        resp.encoding
    请求头信息
        resp.headers 
    cookie信息
        resp.cookies
    请求url
        resp.url
    返回内容为网页
        resp.text
    返回内容为json
        resp.json()
    字节形式的响应内容
        resp.content
        resp.content.decode('utf-8')
token机制

token机制
    获取token后带入请求头内
    headers_data={
        'Authorization': token值
    }
    requests.请求方式(url,json=json请求体,headers=请求头)
Session+cookes机制

方式一:
    cookie带入请求内,发送请求后获取cookies
        response.cookies
    将cookies放入请求参数内
        requests.请求方式(url,cookies=cookies信息)
​
方式二:Session对象发送请求
    1.创建Session实例对象
        session=requests.Session()
    2.多个请求使用session发送
        resp = session.post('xxx')
    3.关闭session
        session.close()

日志初始化配置

日志级别

只显示大于等于设置的级别信息
DEBUG
INFO
WARNING
ERROR
CRITICAL

内部实现原理

创建日志器对象
    logger = logging.getLogger()
设置日志打印级别
    logger.setLevel(logging.INFO)
创建处理器对象
    输出到控制台
    st = logging.StreamHandler()
    输出到日志文件
    fh = logging.handlers.TimedRotatingFileHandler('a.log',when='midnight',interval=1,
    backupCount=7,encoding='utf-8')
创建格式化器
    fmt = "%(asctime)s %(levelname)s [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
给处理器设置格式化器
    st.setFormatter(formatter)
    fh.setFormatter(formatter)
给日志器添加处理器
    logger.addHandler(st)
    logger.addHandler(fh)

日志调用

logging.debug('debug')

Dubbo接口测试

概念

RPC协议

Dubbo架构

Dubbo是什么
	Dubbo是一款高性能、 轻量级、 基于Java的开源RPC框架
为什么使用Dubbo
    开源,使用的人比较多
    把核心业务抽离出来,通过内部接口通信,提高业务的灵活性
    通过分布式提高并发

telnet调用Dubbo接口

连接服务
	telnet IP 端口
查看服务列表
	ls
显示指定服务中包含的方法
	ls -l 服务名
调用服务接口
	invoke 服务名.方法(参数)

Python调用Dubbo接口

创建telnet 实例对象
    import telnetlib
    telnet = telnetlib.Telnet(host, port)
调用接口
	telnet.write('invoke 服务名.方法名(参数列表)'.encode())
读取响应数据
	telnet.read_until("dubbo>".encode())

第三方接口测试

接口Mock

定义:
	跟开发一样去编写一个接口(虚拟一个接口)
接口Mock测试
	使用场景:当针对业务流程进行接口测试时,其中某一个接口无法被获取,为了确保流程能够执行完成,将无法实现的接口进行Mock
项目组常出现无法获取接口的原因:
    1. 开发没有完成
    2. 第三方接口(测试环境)
会针对Mock的接口,进行专门的单接口测试嘛?
        不会

代码实现Mock服务

工具:flask
安装:pip install flas
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值