接口自动化用例设计总结

序言

这篇文章主要是接口测试时如果去完善的设计用例,达到不漏测,提升产品质量。

接口常见得bug:
1)传入不合规参数,导致程序crash;
2)数据类型溢出,导致数据读出和写入不一致;
3)因对象权限未进行校验,可以访问其他用户敏感信息;
4)状态处理不当,导致逻辑出现错乱;
5)逻辑校验不完善,可以利用漏洞获取非法利益;

1. 功能测试

1.1 正常场景

1.1.1 有效等价类 + 边界值

1)边界值:可以在有效范围内取上点和内点,如:取值区间在(-99,99】之间,可以取-98,0,99。边界值包含:取值范围和长度,数量类型的边界值。
2) 数据类型:有些参数可能规定了是int,也可以传null、或者str,这里包括传参和返回值
3)返回值:内容校验
4)默认值:默认值可以全部设置默认值,要测时再修改

1.1.2 遍历法

1)对有效范围内得值进行遍历。
2)对不同的请求类型遍历:一般有post\get\put\delete
3) 请求体的类型

1.2 异常场景

1.2.1 无效等价类 + 边界值

1)边界值:可以在有效范围内取离点,如:取值区间在(-99,99】之间,可以取-99,100。边界值包含:取值范围和长度,数量类型的边界值。
2)必填值:必填值为空、缺失
3)非必填值:非必填值为空、缺失
4)key错误:如username变成user
5) 数据类型:规定int传str,这里包括传参和返回值
6)返回值:除了状态码,错误场景下可能回返回错误原因。
7)传参类型:一般都是json,如果不是json呢?或者json内嵌套list有格式错误,如:{“node_list”: [“a”,],},明明后面没有内容了,却多加了一个逗号,这种有些语言是分辨不出来的。
8)默认值:有些默认值时变动的,比如分页,可能必须是10,20 。。。,可以尝试一下其他值

1.2.2 特殊值

一般是0或负数

2. 逻辑业务

1)业务依赖:
场景一:所有的接口都依赖登录
2)业务逻辑
场景一:增删改的操作后需要验证结果,一般可能会有接口查询任务进度,或者列表可查询
3)异常测试
- - 参数异常
关键字:将参数改为开发语言中的关键字
参数多或少:去掉某个参数,或者多传了某个没有的参数,一般开发不会对多出的不必要参数进行校验
错误参数:比如将username参数写为了user等看是否能返回相应的error?code
- - 数据异常
关键字数据:将参数的值填为开发语言中的关键字
数据为空:将参数的额值填为空
长度不一致:因为数据库中每个字段都设置有字段长度,填写不符合的长度进行验证
错误数据:就是将参数的值任意填写,或填写不存在的数值
4)针对逻辑设计
约束条件分析:
数值限制:分数限制,金币限制,等级限制等(满足条件才可以执行)
状态限制:需要先登录等(同步信息等)
关系限制:绑定的关系,好友关系等
权限限制:管理员等
风险:约束条件判断不足,用户可以特殊手段获利等

操作对象分析:
操作通常是针对对象的,针对合法和不合法对象进行操作,后台处理会如何
风险:用户可以非权限的操作

状态转换分析:
被测逻辑抽象成状态机,各个状态之间根据各功能逻辑切换,如果打乱这个顺序,跳转操作,就会有逻辑问题,验证正确性
风险:通过特殊手段达到原本不能的状态,从而获利等

时序分析:
在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,只有按照顺序依次执行完成,才能得到预期结果。正常的流程里,动作依次按序执行,不会打乱,但在接口测试时,需要考虑如果不按时序执行,是否会有问题。

例如:客户端数据同步是由客户端触发执行的,期间用户无法干预。功能测试的时候见到的就是,是否能正常同步,进一步拆解,同步流程就是一些列动作。

例如:获取用户信息,发起请求,后台返回登录信息,本地在上传本地数据,后台校验数据,生成diff和对应新增号,返回增量数据及编号,本地在上报冲突,后台处理冲突,返回客户端同步完成的信息。

接口需要依次调用才可以同步完成,但是接口测试的时候就可以测试打乱这个顺序的执行情况,是否异常等。
风险:非顺序执行后,数据出现异常,可能还有其他程序问题

针对输出设计:
针对输出结果:正确结果可能只有一个,但是错误的情况很多。可以根据返回结果列表或者类型,进行用例设计。

风险:
错误前端处理不足,导致前端异常;
错误提示处理不当,用户看到晦涩的程序码;
错误提示不当,用户不知道哪出现问题,如何解决

接口超时:
接口正常情况下是有返回的,如果接受不到返回呢?接口超时处理也是需要考虑的部分,如果处理不当,造成整个流程阻塞,超时后又接收到返回值,导致逻辑错乱。

其他测试合计:
已废弃接口测试:
废弃的接口,存在没有及时删除的情况,需要做好相关废弃接口的检查,以免出现问题。

接口设计合理性分析:
以下几个方面分析:
接口字段是否冗余;
接口是否冗余;
接口是否返回了调用方期望得到的信息;
接口定义是否可满足所有的调用需求;
接口定义调用是否方便;

5)补充
重复提交,并发测试,分布式测试(负载均衡测试),环境异常测试,大数据量测试

3.性能测试

1)响应时间
2)吞吐量
3)并发用户数
4)占用内存,CPU等

4. 安全测试

敏感信息是否加密
必要参数是否后端也进行校验(现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证)
接口是否防恶意请求(SQL注入)
cookie:就是将header中的cookie修改或删除后看是否能返回相应的error?code
header:就是删除或修改header中部分参数的值,看是否能返回相应的error code
唯一识别码:删除修改唯一识别码测试

5. 环境清理

不管进行什么操作都要考虑会不会影响环境,或影响其他用例的执行,所以恢复环境是重中之重。

6.实战经验

1)查询类接口,很多涉及id,id其实也是有取值范围的,一般id都是主键,取值是大于0
2)异步接口同任务压测报错,原因是超时,后端读取异常。
3)查询类接口,一般列表都会有id,一般人思维都是从1开始排序,所以如果有字段是查询的页数和个数,是不是想着第1页,1页10个,就是id1~10呢?
经验:如果你是这么想的就错了,看看页面上的查询列表,是不是最新的数据才会展示在第一页,所以这是个思维误区。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、linux 1,linux常用命令 2,某个时间段日志的查询 3,linux文件的上传和下载 二、功能测试 1,工作中所遇到的错误 2,测试流程: 3,测试计划元素: 4,测试报告元素: 5,测试点: 6,测试方法: 7,bug相关问题 8,adb常用命令 9,软件测试原则 10,测试用例编写的要素 11,测试用例设计原则 12,软件产品质量特性 13,android四大组件 14,web测试和app测试的区别 15,app的anr的根本原因 16,app的crash的原因 17,h5页面图片未加载出来问题排查 18,区分原生和h5页面 19,为什么不能用jenkins打包 三、性能测试 1,了解jmeter 2,性能指标 3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,自动化测试的场景 5,元素定位的8种方式 6,如果一个元素无法定位,一般会考虑哪些原因 7,driver.close()和driver.quit()的区别 8,自动化脚本断言 9,判断页面元素是否存在 10,js在web自动化中的作用展示 11,自动化代码优化 12,selenium对比RF 13,自动化测试脚本三种等待 14,PO模式 六、HTTP协议 1,HTTP协议特点: 2,HTTP传输原理 3,get和post的区别 4,HTTP响应代码 5,osi七层模型 6,三次握手过程 7,session和cookie的区别 8,tcp和udp的区别 9,sockect通信原理 10,post的三种请求方式 七、数据库 1,sql分类 2,数据库事务特性:ACID 3,mysql索引的类型 4,池化思想 5,redis 6,如何提高数据库运行效率 八、java 1,面向对象的三个特征 2,重写和重载 3,比较sping,sping mvc 4,进程和线程的区别 5,java三层架构 6,处理异常 九、python 1,字符串反转的7种方法 2,new 和 _init_ 3,不使用中间变量交换两个变量的值 4,python四大内置高阶函数 5,python带颜色输出 6,python *args,**kargs用法 7,python常用模块 8,python多线程 9,python发送邮件 10,python操作图像 11,python的replace()方法的使用
本文总结介绍接口测试框架开发,环境使用python3+selenium3+unittest测试框架及ddt数据驱动,采用Excel管理测试用例等集成测试数据功能,以及使用HTMLTestRunner来生成测试报告,目前有开源的poman、Jmeter等接口测试工具,为什么还要开发接口测试框架呢?因接口测试工具也有存在几点不足。 * 测试数据不可控制。比如接口返回数据不可控,就无法自动断言接口返回的数据,不能断定是接口程序引起,还是测试数据变化引起的错误,所以需要做一些初始化测试数据。接口工具没有具备初始化测试数据功能,无法做到真正的接口测试自动化。 * 无法测试加密接口。实际项目中,多数接口不是可以随便调用,一般情况无法摸拟和生成加密算法。如时间戳和MDB加密算法,一般接口工具无法摸拟。 * 扩展能力不足。开源的接口测试工具无法实现扩展功能。比如,我们想生成不同格式的测试报告,想将测试报告发送到指定邮箱,又想让接口测试集成到CI中,做持续集成定时任务。 测试框架处理过程如下: * 首先初始化清空数据库表的数据,向数据库插入测试数据; * 调用被测试系统提供的接口,先数据驱动读取excel用例一行数据; * 发送请求数据,根据传参数据,向数据库查询得到对应的数据; * 将查询的结果组装成JSON格式的数据,同时根据返回的数据值与Excel的值对比判断,并写入结果至指定Excel测试用例表格; * 通过单元测试框架断言接口返回的数据,并生成测试报告,最后把生成最新的测试报告HTML文件发送指定的邮箱。 ## 测试框架结构目录介绍 目录结构介绍如下: * config/: 文件路径配置 * database/: 测试用例模板文件及数据库和发送邮箱配置文件 * db_fixture/: 初始化接口测试数据 * lib/: 程序核心模块。包含有excel解析读写、发送邮箱、发送请求、生成最新测试报告文件 * package/: 存放第三方库包。如HTMLTestRunner,用于生成HTML格式测试报告 * report/: 生成接口自动化测试报告 * testcase/: 用于编写接口自动化测试用例 * run_demo.py: 执行所有接口测试用例的主程序 -------- 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! <项目介绍> 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 --------
第1章 测试脚本开发从零开始 5 1.1 自动化测试从零开始 5 1.1.1 什么是自动化测试 5 1.1.1.1 引言 5 1.1.1.2 自动化测试能做到什么及其优势,你心知肚明吗 6 1.1.1.3 自动化测试无法做到的事及其劣势分析 7 1.1.1.4 何时适合引入自动化测试 8 1.1.1.5 何时避免展开自动化测试 9 1.1.2 严格的自动化测试流程 11 1.1.2.1 影响自动化测试成功与否的关键因素是流程 11 1.1.2.2 自动化测试项目“标配” 18 1.1.3 自动化测试用例设计详解 19 1.1.4 教父级自动化测试工具QTP 22 1.1.5 总结 24 1.2 帮助文档(HELP)-QTP的说明书 25 1.2.1 永远任劳任怨的良师益友“F1” 25 1.2.1.1 “F1”的简单介绍 25 1.2.1.2 如何获取最新的帮助文档 27 1.2.2 妙用F1可事半功倍 29 1.2.2.1 焦点功能引导 29 1.2.2.2 脚本定位跟踪 31 1.2.3 请遗忘脑中的代码,掌握查阅Example实例技巧 33 1.2.3.1 封装方法实例查阅 33 1.2.3.2 VBScript方法函数查阅 35 1.2.4 总结 36 1.3 录制与回放—QTP的开关 37 1.3.1 请拒绝“录制”,再开始你的实际项目之旅 37 1.3.1.1 引言 37 1.3.2 录制功能更多的只是新人学习时的利器 39 1.3.2.1 录制相关功能只需把握几个重点 39 1.3.2.2 为什么说录制是学习利器,有根有据,请听我细细道来 52 1.3.3 录制时需注意模式的切换 54 1.3.3.1 3种录制模式的基本介绍 54 1.3.3.2 Analog Recording和Low Level Recording的区别与规则 56 1.3.4 有必要让你掌握尤其重要的QTP回放机制 58 1.3.5 总结 68 1.4 认清并请远离QTP的脚本录制模式 70 1.4.1 QTP的两种视图及思维转换 70 1.4.2 总结 74 1.5 QTP精华—对象库(上)之基础攻略篇 75 1.5.1 引言 76 1.5.2 对象库的出现改写了软件测试历史 76 1.5.3 一个简单的实例介绍对象库原理、机制及操作流程 77 1.5.3.1 对象模型的老大Object Identification和对象库的暧昧关系 77 1.5.3.2 以一个实例囊括对象库的原理机制与操作流程并揭开整个篇章 85 1.5.4 对象库基本操作 86 1.5.5 Object Spy让对象无处藏身 110 1.5.5.1 结交新朋友—侦探Jack 110 1.5.5.2 捕获对象时的模式切换 117 1.5.6 对象库的最高指挥官(Object Repository Manager) 120 1.5.6.1 使用公共对象库更有利于项目管理 120 1.5.6.2 对象库的对比与合并 123 1.5.7 总结 130 1.6 对象库(下)之进阶编程篇 131 1.6.1 引言 131 1.6.2 基于Expert View的对象库编程必备知识 132 1.6.2.1 手写代码的3种方式 132 1.6.2.2 其他补充知识点 144 1.6.3 封装对象模型—Test Objects VS Run-time Objects 151 1.6.3.1 解密测试对象与运行时对象 151 1.6.3.2 三兄弟GETRO、GETTO、SETTO各显神通 152 1.6.3.3 对象封装属性的真正源头 160 1.6.4 梳理运行时对象的封装与自身接口的属性区别 163 1.6.4.1 解读对象的自身接口 163 1.6.4.2 教你如何成为一名黑客 163 1.6.5 几种常见对象无法识别或识别错误的原因 168 1.6.6 总结 170 1.7 描述性编程(Descriptive Programming) 171 1.7.1 一点都不高深的描述性编程技术 172 1.7.2 掌握描述性编程的两种写法 173 1.7.3 Object Identification与Spy结合DP的妙用 177 1.7.4 描述性编程的妙用以及与对象库编程的混搭 180 1.7.5 终极对决—对象库编程(OP)?VS描述性编程(DP) 186 1.7.6 总结 186 1.8 数据池(Data Table)的应用 187 1.8.1 引言 187 1.8.2 学会使用DataTable进行参数化 188 1.8.2.1 为什么要进行参数化 188 1.8.2.2 如何具体操作 191 1.8.2.3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值