多平台统一管理软件接口,如何实现多平台统一管理软件接口
242
2023-07-04
本文讲了接口自动化测试的测试用例,接口自动化测试项目实战。
我们先来说说设计测试用例常用的七大方法。
设计测试用例的七大方法
一、等价类划分
等价类:是指具有相同属性或方法的事物集合,也就是说,这个集合中的每个个体所表现的特征与其他个体完全一致。在软件测试中,同一被测对象,集合中的一个个体被接受或者被拒绝,其他任意个体都应该被接受或者被拒绝。
等价类划分又分为:有效等价类和无效等价类。
有效等价类:是指针对被测对象而言,输入是合理的、有意义的、系统所接受的。
无效等价类:是指针对被测对象而言,输入是不合理的、无意义的、系统所不接受的。
二 、 边界值
边界值的三点:
上点:是指边界上的点,无论此时的域是开区间还是闭区间。开区间的话,上点就是在域外,闭区间的话,上点就是在域内。
离点:是指离上点最近的点,这里就跟是闭区间还是开区间就有关系了,如果是开区间,那么离点就在域内,如果是闭区间,那么离点就在域外。
内点:域内的任意点都是内点。
举例:
区间 | 上点 | 离点 | 内点 |
[6,20] | 6,20 | 5,21 | 13 |
(6,20] | 6,20 | 7,21 | 13 |
(6,20) | 6,20 | 7,19 | 13 |
三、判定表
判定表:是指分析和表述若干输入情况下,被测对象针对这些输入做出的响应的一种工具。
优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测试用例集合。
四、因果图
因果图:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
等价类划分和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数组,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图。
采用应该图设计测试用例的步骤:
• 根据程序规格说明书描述,分析并确定因(输入条件)果(输出结果),画出因果图。
• 将得到的因果图转换为判定表
• 为判定表中每一列所表示的情况设计一个测试用例
五、正交试验法
正交试验设计法(Orthogonal Experimental Design)是从大量的试验点中挑选出适量的、有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理地安排试验的一种科学的试验设计方法,是研究多因素、多水平的一种设计方法。
它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备“均匀分散、齐整可比”的特点,正交试验是一种基于正交表的,高效率、快速、经济的试验设计方法。
正交试验分析法包括以下常用术语:
• 指标:通常把判断试验结果优劣的标准叫做试验的指标。
• 因子:是指所有影响试验指标的条件。
• 因子的状态:是指影响试验因子的因素,也称之为因子的水平。
六、状态迁移
状态迁移:是指关注被测对象的状态变化,需求文档中是否有不可达的状态或非法的状态,是否产生非法的状态转移。它的优点是:保证每一个功能/状态的可达项都被覆盖。缺点是:对无效的路径无法覆盖。
测试方法:
• 根据需求明确状态节点
• 绘制状态迁移图
• 绘制状态迁移树
• 抽取测试用例
举例:
机票预定系统:
• 顾客电话/网址预定机票,此时机票处于预定状态
• 顾客支付后,机票处于已支付状态
• 顾客到达机场,取票后,此时机票处于已出票状态
• 登机检票后,机票状态变为已使用状态
• 除已使用状态外,其他状态均可以取消订票,状态为已取消状态。
迁移图如下:
状态迁移树如下:
测试用例如下:
• 已预定-已取消
• 已预定-已支付-已取消
• 已预定-已支付-已出票-已取消
• 已预定-已支付-已出票-已使用
七、场景设计法
在实际测试中,经常有这种情况,像安装程序向导,它是由多个界面组成的,并且他们之间彼此有联系,而且他们之间是有流程顺序的,在面对这种测试时,就可以使用场景法了。
场景法中,有几个基本概念:
基本流程:指按照正确的事件流来实现的流程,最后能够达到目标的流程
备选流程:指通过实现业务流程时,因错误操作或者异常输入,导致流程存在反复,但最终能够完成期望业务的流程
异常流程:通过实现业务流程时,因错误操作或异常输入,导致业务没有正确完成
例子:
ATM取款:
基本流程:插入卡,输入密码,输入金额,取款,取卡
备选流程:插入卡,输入密码错误,重新输入后完成剩余操作
异常流程:插入卡,输入密码,错误3次,吞卡
由于之前我对自动化接口不是太熟悉,所以我直接在github上找了一个项目例子下载下来自己研究他的结构。然后我就把我自己的项目也按照这种结构来部署。
一、需安装的库
pip install pytest
pip install allure
pip install subprocess
pip install pythonping
具体安装方法,见项目部署第一条
二、该项目采用的是:Python+Requests+csv+Pytest+Allure,
主要针对公司某产品来开展的,通过Python+Request来发送和处理HTTP协议的请求接口;使用Pytest作为测试执行器,使用CVS格式的文件来管理测试数据;使用Allure来生成测试报告。
三、本项目在实现过程中,把整个项目拆分成:
请求方法封装
HTTP接口封装,
操作动作封装
测试用例等模块。
四、执行流程
1、首先利用Python把HTTP接口封装成Python接口,
2、接着把这些Python接口组成一个个的测试功能接口,(这一步就是把我们需要发送的请求,发送出去,再把需要的返回值返给函数,方便后面测试用例直接使用判断)
3、再把功能接口装成测试用例;(测试用例只需调用功能接口,然后判断是否符合预期即可)
五、项目部署
1、首先,下载项目源码后,在根目录下找到:requirement.txt文件;然后通过pip 工具安装,执行命令:
pip3 install -r requirements.txt
2、接着,修改 ```config/setting.ini``` 配置文件,
3、修改data\info.csv,修改成测试版本的版本信息
4、在Windows环境下,安装相应依赖之后,在命令行窗口执行命令:
pytest
或者选择“run all.py"文件,右键执行
六、项目结构
- api ====>> 接口封装层,如封装HTTP接口为Python接口
- common ====>> 各种工具类
- core ====>> requests请求方法封装
- config ====>> 配置文件
- data ====>> 测试数据文件管理
- operation ====>> 关键字封装层,如把多个Python接口封装为关键字
- pytest.ini ====>> pytest配置文件
- requirements.txt ====>> 相关依赖包文件
- testcases ====>> 测试用例
接口自动化测试实战
一. 接口关键性名词透析
1.token-令牌
Token也是由服务器产生的,存在服务器的内存或硬盘中
由一套产生规则,会涉及到加密算法
【用Token 来实现登录】
开发提供一个获取Token接口,根据用户名+密码,获取一个Token值-返回一个Token(字符串)
Token值服务器通过什么客户端的呢?
通过响应头给客户端。 ------ 次要
通过响应消息体传给客户端。 ---- 主要
通过Cookie传递给客户端 — 很少
获取token值
# 02 获取token值
import requests
import hashlib
# 1.项目的服务器地址+端口号
# from configs.config import HOST 报错
from config import HOST
# md5加密
def get_md5(password):
# 1.示例化md5加密对象
md5 = hashlib.md5()
md5.update(password.encode('utf-8'))
return md5.hexdigest()
"""
登录接口的特性:
1- 作为普通的接口测试
2- 需要获取token给后续接口关联
"""
# 接口自动化项目实战
class Login:
# 2.封装登录函数
def login(self,inData,getToken=False):
# 1. url
url = f'{HOST}/account/sLogin'
# 2. 请求体---- 字典格式编辑
# 调用加密函数 字典修改值:字典名【键名】 = 新的值
inData['password'] = get_md5(inData['password'])
payload = inData # 可以不写
resp = requests.post(url, data=payload)
if getToken == True: #获取token值
return resp.json()['data']['token'] #token值
else:
return resp.json() #接口的响应值
if __name__ == '__main__':
res = Login().login({'username':'xxxx','password':'xxxx'},getToken=False)
print(res)
2. Cookie
Cookie是分站点的,站点和站点之间的Cookie是相互独立的
浏览器的Cookies是保存在浏览器的某个位置的
服务器端可以通过:响应头中的set-Cookie参数,对客户端的Cookie进行管理
浏览器的每次请求,都会把该站点的Cookie发送给服务器
实现登录:Cookie + Session 配合使用的。
3. SessionId -翻译为会话
session 是一个对象,是服务器产生的,保存在服务器的内存中的
session有自己的管理机制:包括session产生、销毁、超市等
sessionID是session对象的一个属性,是全局唯一的,永远都不会重复的
总结:
1.token:
一般需要账号与密码通过特定的接口(登录/获取token接口)去服务器访问,才能返回一个token
2.cookie—sessionID
会话id,只要访问这个应用浏览器就会返回一个session–一般在响应头里 set-cookies:jsessionid=xxxxxx
Cookie&sessionId合作
一. 快速理解
用户登录成功服务器创建session,返回给客户端。客户端浏览器把session保存在它的cookie中。
二. 过程描述
登录成功服务器立马创建session,并通过【响应头】中的set-Cookie属性把session返回给客户端
浏览器把响应头中的set-cookie内容存起来,存在浏览器自己的cookie中
以后浏览器每次发送请求时,都会把该站点的全部cookie通过请求头中,传递给服务器。
上文就是小编为大家整理的接口自动化测试的测试用例,接口自动化测试项目实战。
国内(北京、上海、广州、深圳、成都、重庆、杭州、西安、武汉、苏州、郑州、南京、天津、长沙、东莞、宁波、佛山、合肥、青岛)接口自动化测试分析、比较及推荐。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~