本文系统介绍了接口测试的核心概念与方法。主要内容包括1.接口定义与分类2.接口测试要点3.常用测试工具及测试用例设计方法4.Postman工具详解5.接口测试与功能测试的区别。文章还详细说明了如何通过newman工具生成HTML测试报告的具体操作流程。目录一、接口1、什么是接口2、分类3、接口测试4、接口测试文档规范5、接口测试要点6、接口测试工具二、接口测试用例1、接口测试和功能测试的区别2、接口用例测试的方法三、Postman工具1、构造HTTP请求2、JSON简介3、Postman 全局变量、局部变量3.1 全局变量 {{ 变量名 }}3.2 环境变量3.3 其他变量3.4 变量的优先级4、批量执行用例5、postman生成测试报告5.1 newman 缺点接口实名认证、短信、快递程序内部接口——一般不需要单独测试、集成测试程序对外的接口——需要专门测试支付宝支付请求、退款、查询对账...——一系列业务页面状态未达到没有相应操作按钮快递接口订单号是否已经存在是否已支付权限控制开通某某接口才能用、用多少次、期限一、接口1、什么是接口接口是一组定义、程序及协议的集合通过 API 接口实现计算机软件之间的相互通信。或指软件系统不同组成部分衔接的预先的约定2、分类对象分程序内部的接口同一个项目内如模块与模块之间的接口叫内部接口前后端分离项目前端需要调用后端的接口手机 APP 程序程序对外的接口项目与项目之间获取资源和信息所采用的接口叫外部接口淘宝网调用各个快递公司的物流信息物流公司提供查看快递接口12306 购票支付需要支付宝、银联提供银行接口很多网址显示天气预报需要天气预报接口按协议划分webService接口走 soap 协议通过 http 传输请求报文和响应报文都是 XML 格式。少数行业还在使用这种方式。如银行系统、医院系统http api 接口走 http 协议通过路径来区分调用的方法请求的报文一般都是 Key-value 形式返回报文一般都是 json 字符串。目前来讲是最常用的。3、接口测试接口测试是测试系统组件间接口的一种测试。接口测试最主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换传递和控制管理过程以及系统间的相互逻辑依赖关系等。4、接口测试文档规范接口说明接口请求方法POST、GET、PUT、DELETE等调用URL请求参数、参数类型、请求参数说明请求头返回参数说明5、接口测试要点了解接口的功能接口的提交方式get 还是 post 接口的 URL、接口参数那些是必填参数。那些是可选参数明确接口正常请求正常情况接口会返回那些响应参数通过性验证首先肯定要保证这个接口功能是通的也就是正常的通过性测试按照接口文档上的参数正常传参数值是否可以返回正确的结果检查接口的容错性假如传递数据的类型错误时是否可以处理。例如支持整数传递的是小数或字符串呢接口参数的边界值。例如传递的参数足够大或为负数时接口是否可以正常处理接口的性能接口处理数据的时间也是测试的一个测试方向接口的安全性如果是外部接口的话这点尤为重要6、接口测试工具Postman —— 只能做接口i测试Jmeter——既能做接口测试、又能做性能测试偏向性能测试soupUIJava httpclientpython 写自动化测试代码进行测试二、接口测试用例1、接口测试和功能测试的区别角度不同功能测试主要是站在用户角度在前端页面上进行操作由前端进行数据的控制不关注系统的内部实现而接口是跳过了前端直接与服务器进行交互检验后端是否对异常数据进行处理输入范围不同比如说前端在输入月份时采用下拉框的形式固定数据而接口可以输入任意值接口请求无界面接口测试偏向于对请求方法、url 、请求参数和授权等一个黑盒功能一个灰盒2、接口用例测试的方法边界值设置等价类设计语句、条件、逻辑覆盖异常场景考虑输入——服务器进行逻辑处理——返回响应输入字符、数字、数组字符长度、特殊字符、空字符、数字、重复数字长度、小数点、特殊字符、0、空、字符、重复数组0、个数限制边界值、不合规、有部分元素不合规、重复的数组元素服务器进行逻辑处理——重点业务条件如 添加老师课程必须存在授权如登录认证启用所有接口测一遍数量限制接口使用次数用户权限控制管理员 / 普通用户状态执行接口1执行接口2如支付完成后订单的状态变化返回响应根据响应设计测试用例参数不正确必填为空请求方法不正确授权不正确余额 / 数量的控制无效元素 / 控制类型 / 业务类型授权状态过期服务器错误状态正常返回成功三、Postman工具1、构造HTTP请求请求方法POST / GET / PUT / DELETEurl 的构建请求头的构建 Content-Type请求体的构建→用最多的是 application/x-www-form-urlencoded 和 application/json 格式、xml 慢慢变少、multipart /form-data 文件上传时用url 的构建关键在于以下三个符合的理解# 号代表网页的一个位置就是锚点后面的内容不会被发送到服务器一般不会出现在接口文档里起连接的作用url 问号后面的术语叫参数英文名queryString不同参数的间隔符2、JSON简介什么是JSON lJSON 是存储和交换文本信息的语法。类似XMLJSON 比 XML 更小、更快更容易解析JSON 是独立语言SON 具有自我描述性更容易理解JSON的两种结构对象和数组对象用大括号表示 “ { } ”对象由属性组成属性由键值对组成键必须用双引号 “ ”如{ 姓名 : 张三 , 年龄 : 23 }数组用中括号 “ [ ] ” 表示如[ 小鸡 , 小鸭 , 小狗 ]如[ { 姓名 : 张三 , 年龄 : 23 } ]嵌套对象中可再嵌套对象和数组例如{ 姓名 : 张三 , 年龄 : 23 , 家禽 : [ 小鸡 , 小鸭 , 小狗 ] }{ ​ name : 米大圈, ​ age : 35, ​ smoke :false, ​ book : [语文 , 数学 , 英语], ​ leader: { name : 小猪, age : 35 } ​ sons : [ {name : 米小圈 , age : 3} , {name : 米圈圈 , age : 5} ] }3、Postman 全局变量、局部变量3.1 全局变量 {{ 变量名 }}针对全局有效全局唯一的不可以重复全局范围不存在同名的变量一个全局变量只能对应一个值。可以设置多个全局变量类型Globals典型例子token3.2 环境变量环境地址ip、域名、授权、账号、密码环境内有效一个环境变量可以包含多个变量一组变量的集合在一个环境内不可以重复定义变量在环境与环境之间可以重复定义变量一次只能激活一个环境典型例子host3.3 其他变量集合变量可在集合中的整个请求中使用并且独立于环境因此不要根据所选环境而更改。局部变量是临时的只能用于您的请求脚本中访问。局部变量值的范围仅限于单个请求或收集运行并且在运行完成后不再可用用一次失效单个请求执行只对当前请求有效集合一起执行对集合下面的所有请求有效3.4 变量的优先级如果在两个不同的范围内声明了具有相同名称的变量则将使用范围最窄的变量中存储的值。例如如果有一个全局变量和一个局部变量都名为username则在请求时将使用局部值运行变量引用{{变量名}}4、批量执行用例ACSII编码汉字互转 ACSII编码汉字互转准备数据文件利用Postman迭代执行测试结果导出测试结果导入5、postman生成测试报告第一步安装Nodejs下载地址第二步安装后打开cmd输入node -v 看到输出node的版本信息即代表安装成功环境变量设置也正确。第三步 安装newman命令行输入指令 npm install -g newman 安装完成后输入指令 newman -v 查看版本检测是否安装成功第四步安装html测试报告执行命令npm install -g newman-reporter-html准备测试脚本和数据一行命令快速自动化执行newman命令把接口测试脚本和环境变量脚本导出放到一个目录中在cmd窗口中切换到该目录执行如下命令C:\Users\Lenovo\Desktop\nodenewman run教师管理.postman_collection.json-gworkspace.postman_globals.json-etest01.postman_environment.json-dcsv.csv --reporters html --reporter-html-export C:\Users\Lenovo\Desktop\node\node.html教师管理.postman_collection.json——表示接口测试脚本文件/ 集合名workspace.postman_globals.json——全局变量路径文件test01.postman_environment.json——环境变量路径文件csv.csv——测试数据源文件路径--reporters html --reporter-html-export表示生成html格式的报告C:\Users\Lenovo\Desktop\node\node.html——报告存储路径5.1 newman 缺点不能在脚本设置变量不能带cookie