java接口自动化(二) - 接口测试的用例设计
1.简介
在这篇文章里,我们来学习一下接口测试用例设计,主要是来学习一些用例设计要点。其实说白了,接口用例设计和功能用例设计差不多,照猫画虎即可。不要把它想象的多么高大上,多么的难,其实一样,以前怎么设计,现在就怎么设计,和黑盒测试设计测试用例半斤八两。这里不再赘述,想详细了解的可以看一下Python的接口自动化用例设计。宏哥在这里,换一个角度来说接口测试的用例设计,首先我们看一下接口测试的范围。
2.接口测试范围
2.1功能测试:验证产品逻辑是否正确
功能测试是我们接口测试时候相当重要的一部分,接口的功能都没实现,后边的异常、性能就更加谈不上了。其实接口测试和在web页面、或者移动端操作那些按钮、输入框是一样的。按钮将绑定的参数通过接口传过去,而输入框是将你输入的参数通过接口传过去。接口测试是在产品还没有开发好按钮和输入框,你手动写参数通过工具或者其他方法传过去,验证是否可以得到期望的。
下边的这八种接口功能测试的8种方法和web页面的测试用例的设计方法一模一样的,这个都是测试的基础知识,不知道的自己可以单独查询一下各种方法的概念及其的用法。

2.2异常测试

null : 是开发过程中特定指的一个对象为空的端符,就是一个空对象,不指向任何内存地址
" " : 指一个空字符串,代表该对象有值,指向一个空地址
数据类型:例如我们有个年龄的字段要求传的是ini类型的值,我们给它传的是字符串。这就是数据类型异常。8中基本数据类型,我们传一个不符合规定的数据类型。
负载均衡架构:测试某一个后台(Tomcat 4)挂了,挂了之后 Tomcat4的请求会直接返回一个错误(前台1个nginx ,后台多个 Tomcat),测试是否会返回这个错误,能否会使用户访问失败;一段时间后,想让 Tomcat4 重新加入,判断能否重新加入集群中并正确处理所有请求。
冷热备份:冷备份不常见,热备份:前面有4个Tomca,后面有4个Tomca备份,如果Tomca4挂了,判断Tomca4的备份能否顶替之前的,仍然保持4个服务器存活;当Tomca4 正常后,判断能够成为Tomca4的备份。
1.3性能测试(狭义)

负载测试:我发了好多请求,看看能不能正常发出去,再看看服务器端能不能正常处理这些发过来的请求。
稳定性测试:比如我跑服务跑了好长时间,比如24h、一周等,看看能不能将程序压垮等等。
3.自动化接口测试范围

为什么在这里没有涉及到前边接口测试的环境异常和功能测试。在这里宏哥做了细分,这部分主要是有其他的测试负责的,比如:环境异常测试,一般需要我们协调和运维配合。需要他们把环境部署成和线上一样的架构,以及硬件、内存等等。由于各个公司的资源和重视不一样,但是最差了也得是等比例缩小的一个初始化的模型。这样做的接口测试才有意义。性能测试也可以自动化测试,这个也有专门的测试,当然了,你也可以进行一些简单的测试,如果你是全栈测试,那么这三部分你都精通那最好了。这里宏哥主要介绍的围绕的功能测试和数据异常测试。
4.自动化接口测试用例设计
这里宏哥通过具体实例说明一下。自动化接口测试原则:你能够把你设计的接口测试用例映射成一张表。因为映射成一张表你才可以更好的方便的操作,并且可以自动加载它。
4.1接口自动化用例设计示例:登录
环境异常测试时需要运维小伙伴配合测试的,此暂时不做描述
以常见的登录界面为例
输入:用户名:邮箱或者手机号码
输入:密码:6-16位的长度,区分大小写,不能用空格
首先,我们先要知道接口测试用例的规则,与功能测试用例不同,不需要描述测试步骤。我们需要描述id(序号)、目标URL、username、password、协议状态码(可写可不写)、程序状态码(开发返回成功的状态码)、返回内容(例如success)、实际结果、执行状态(自定义,例如0:失败。1:成功)。根据如上内容,可以把这个整理成一个表中,如上字段作为表头。按照正常数据和异常数据维护成Excel就可以。

数据异常:null、“”、特殊符号(&、*)
PS:红色框圈住的针对执行SQL时数据截断的情况。
select username,password from user where username = """ 中间的单引号将会截断,抛出异常。
设计用例表头时,将中文转换成英文,方便程序做映射时处理,同时也方便写入代码中。
5.环境异常测试
前边虽然说需要协调运维的小伙伴配合测试环境异常,但是在这里你可以提前考虑一下,什么事情都要向到前边,未雨绸缪。不要等出事了临时抱佛脚。
5.1简单web架构集群

上图是一个简单的web部署架构。接口测试主要是前台传递参数,后台接口参数并处理返回期望的结果。简单的描述一下上边的架构:用户通过web页面发送请求到nginx,nginx接收到请求不作任何处理,将请求分发到后台的tomcat1、tomcat2、tomcat3服务器上。服务器处理请求后,将结果返回到web页面,用户看到结果。
这里分发是有规律的,不是一同乱分发,那样还不得有的服务器先得没事干,有的服务器累死了,分发原则:根据userid来进行区分。
例如:取余,当余数为0时,分发到1,当余数为1时,分发到2,到余数为2时,分发到3。
环境异常条件:tomcat2服务器挂掉了,专业点就是宕机了。假如此时有9个用户,他们的userid分别是:1,2,3,4,5,6,7,8,9。此时恰好是1用户把tomcat2给玩挂了。
5.2环境异常测试示例:

结合上图:宏哥来描述一下,这个环境异常的场景,根据这个场景设计的测试用例。用户1将服务器tomcat2玩挂机了,恰好此时用户1又发出请求,所以此时用户1的请求期望结果只能发送到tomcat1或者tomcat3上。服务器挂机以后运维团队收到告警,快速修复tomcat2服务器(例如重启),当下一次用户4发送请求的时候,由于tomcat2正常所以预期结果还是正常环境了分发到tomcat2上。这里我们主要是观察一下tomcat2是否可以正常加入到集群中。这些策略可以提前和运维的小伙伴定好了进行测试。
5.3如何确定分发到那台服务器
方法:通过日志查看有没有分发到,例如:用户1分发2上,即使访问成功但是没有日志,那么这就是一个bug,和我们之前定好的均衡策略有冲突。其他的都类似。
6.小结
好了,以上就是今天分享的知识,宏哥这里只是做了简单的讲解。希望大家喜欢。
您的肯定就是我进步的动力。如果你感觉还不错,就请鼓励一下吧!记得随手点波 推荐 不要忘记哦!!!
别忘了点 推荐 留下您来过的痕迹

java接口自动化(二) - 接口测试的用例设计的更多相关文章
- java接口自动化(三) - 手工接口测试到自动化框架设计之鸟枪换炮
1.简介 上一篇宏哥介绍完了接口用例设计,那么这一章节,宏哥就趁热打铁介绍一下,接口测试工具.然后小伙伴们或者童鞋们就可以用接口测试工具按照设计好的测试用例开始执行用例进行接口手动测试了.关于手动测试 ...
- java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)
简介 了解什么是接口和为什么要做接口测试.并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程.其实这些基本上在python接口自动化的文章中已经详细的介绍过了,不清楚的可以过去看看.了 ...
- 想在java接口自动化里用上Python的requests?这样做就可以了
相信现在很多的公司自动化测试重点都在接口层,因为接口测试更加接近代码底层,相对于UI自动化,接口自动化有着开发更快.覆盖更全.回报率高等优点. 接口自动化代码实现不难,本质上就是代码模拟发送请求,然后 ...
- java接口自动化基础知识(二)
二.HttpClient+testNG实现对接口的测试及校验 在上面第一篇中已经实现了基础配置和测试用例数据准备,本篇文章将以登录举例进行测试执行. 这是之前login接口的代码 @Test(grou ...
- Java接口自动化测试之TestNG学习(二)
在maven项目的pom.xml文件中导入TestNG <?xml version="1.0" encoding="UTF-8"?> <pro ...
- 【亲测】Java 接口自动化步骤
GET请求(Maven) 一. src/main/java 1.[地址--HOST]创建并设置配置文件(后缀名.properties的文本文件):存放接口请求的host地址 2.[地址]TestBas ...
- java接口自动化基础知识(一)
一.TestNG+MySQL+MyBatis实现对测试用例数据的读取 本篇文章讲解TestNG+MySQL+MyBatis+ExtentReports实现对测试用例数据的读取,下面放出所有配置文件的目 ...
- 【转】JAVA接口自动化测试之一个测试方法对应多条测试数据的实现方式
一.痛点:一条测试数据对应一个测试方法 前面的章节中我们已经写代码实现了登录接口的处理调用,但是一个接口往往是需要多条测试用例才能完整的覆盖到每一种情况. 针对于单接口多条测试用例需要执行的情况,该如 ...
- Java接口自动化测试之集成MyBatis和MySQL (五)
pom.xml新增dependency <dependency> <groupId>org.mybatis</groupId> <artifactId> ...
随机推荐
- 配置github——每次提交后使contributions有记录(有小绿格子)
# 配置github--每次提交后使contributions有记录(有小绿格子) 这几天都有将自己的代码提交到github上,但是在profile里的contributions的表格中没有我提交的记 ...
- Java 设置Excel数据验证
数据验证是Excel 2013版本中,数据功能组下面的一个功能,在Excel2013之前的版本,包含Excel2010 Excel2007称为数据有效性.通过在excel表格中设置数据验证可有效规范数 ...
- [红日安全]Web安全Day8 - XXE实战攻防
本文由红日安全成员: ruanruan 编写,如有不当,还望斧正. 大家好,我们是红日安全-Web安全攻防小组.此项目是关于Web安全的系列文章分享,还包含一个HTB靶场供大家练习,我们给这个项目起了 ...
- 前端每日实战:113# 视频演示如何用纯 CSS 创作一个赛车 loader
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/mGdXGJ 可交互视频 此视频是可 ...
- 前端每日实战:123# 视频演示如何用纯 CSS 创作一架双冀飞机
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/yxVYRL 可交互视频 此视频是可 ...
- 《高性能javascript》阅读摘要
最近在阅读这本Nicholas C.Zakas(javascript高级程序设计作者)写的最佳实践.性能优化类的书.记录下主要知识. 加载和执行 脚本位置 放在<head>中的javasc ...
- Jsp页面中动态的引入另一个jsp,jsp:include路径是变量的实现
1 问题描述 在页面搭建时,会有这样的需求,希望局部页面动态的引用另一个jsp.这里的"动态"的意思引用的jsp的路径是个变量.举个例子,我们希望局部页面可能是page1.jsp或 ...
- disruptor 链路实战 三
一.创建Event类 Trade import java.util.concurrent.atomic.AtomicInteger; public class Trade { private Stri ...
- Vue项目二、vue-cli2.x脚手架搭建build文件夹及config文件夹详解
build文件夹下 build.js 'use strict' // js的严格模式 require('./check-versions')() // node和npm的版本检查 process.en ...
- 备份Oracl数据库.bat
=========================== @echo off echo ================================================ echo Win ...