接口测试系列

接口概念
1. 接口是啥  ---传递数据的通道

接口测试:是测试系统组件间接口的一种测试
接口主要包括:同一个系统中模块与模块间的接口/前后端接口,另一个是跨系统平台的对接(内部接口、外部接口)

PS:属于黑盒测试(功能测试)、前端or中间部分
原理:模拟客户端向服务器发送请求,没有页面的

1.1 服务器的构架

测试左移:尽可能尽早地介入 ---代码完成功能,去测试 ---接口测试一个点

测试右移:确保产品上线后的正确运行,并建立一套机制,让线上的bug能尽早或先于用户发现并处理

1.2 接口测试:请求url+参数/条件,通过工具/代码实现

2. 接口分类  ---功能模块对外可以访问的地址

1)接口的分类:
内部接口:登录接口 注册接口 查询接口
外部接口:登录接口(第三方) 支付接口  ---产品之间的调用

2)常见接口类型/协议

HTTP类型/协议:通过GET或POST来获取数据,在数据处理上效率比较高

Webservice类型/协议:通过soap协议来获取数据,比起http来说处理更加复杂的数据类型,本质上也是http协议       【Websocket dubbo 这种类型的 → 后期做拓展

3)http常见接口请求方式:get、post

   两者区别:微信订阅号    https://www.cnblogs.com/zymnstlm/p/9479634.html

3. 为啥要做接口测试

1)如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案  

2)接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试测试人力成本与时间,缩短测试周期,支持后端快速发版需求,接口持续集成是为什么能低成本高收益的根源。

3)现在很多系统前后端构架是分离的,从安全层面来说:
①只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易),需要后端同样进行控制,在这种情况下就需要从接口层面进行验证   

②前后端传输、日志打印等信息是否加密传输也需要验证的,特别帅涉及到用户的隐私信息,如身份证、银行卡

4 如何查看接口

  1. 需求文档:必须学习和掌握的内容
  2. 抓包:F12 OR fiddler

5常见的http状态码:服务器返回的14种常见HTTP状态码_刻刻帝丶的博客-CSDN博客

200(正常):表示一切正常,到了服务器,并且服务器正常的响应了你的请求

302(临时重定向):指出被请求的文档已被临时移动到别处,此文档的新的URL在Location响应头中给出

304(未修改):表示客户机缓存的版本是最新的,客户机应该继续使用它,比如:前端Js   ---性能测试

403(禁止):服务器理解客户端请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置所致

404(找不到):服务器上不存在客户机所请求的资源   --not found 地址错误

500(内部服务器错误):服务器的CGI、ASO、JSP等程序发生错误

504:超时

  • 接口文档分析

1.接口测试流程/步骤---接口测试怎么做?

1)获取接口需求并分析

2)编写接口测试用例&评审测试用例

3)项目环境部署(公司有要求就做

4)执行测试&工具选用

5)提交bug并跟进

6)单独需要整理接口测试报告(公司有要求就做

知识储备

  1. 软件测试基础知识:编写用例/设计方法
  2. Linux命令---查看日志
  3. Tomcat框架---查看日志
  4. 数据库知识/观察数据表中的数据流---分析业务
  5. 接口概念的掌握
  6. 工具的掌握:浏览器/插件/Jmeter/soapui原理及具体操作步骤
  7. 分析能力:需求业务/日志分析

2.获取接口需求并分析

2.1 获取接口需求

1)开发提供接口文档

2)通过抓包工具fiddler或F12获取(前端界面),并找开发确认
2.2 分析接口内容  ---前程贷接口文档v1.3为例,开发提供
1)修订记录表:版本记录;追责;方便管理   ---看公司

2)接口概述:怎样组成,包含内容,返回结果,请求结果

①接口URL格式:http:// ip:port/futureloan/apiName   --port端口号一般为1-65535

②请求头  (注:红色字体标记的请求头必须设置

http常见请求:http常见7种请求 - zhouwenfan - 博客园 
③响应体:为json对象,包含code、msg、data三个字段

Ps:请求体:请求头  响应头  响应体(响应内容/响应报文-response)

④通用返回码/错误码对照表:code=0表示成功,code>0表示失败   ---看开发定

⑤接口token鉴权

3)接口说明:关于每个功能的接口进行详细说明

注意:  Json:{ user_name”:”xxx”,”pwd”:”123666”}

xml标签:<user_name>xxx</user_name>

          <pwd>123666</pwd>

用例包含:序号接口模块用例标题、请求头、请求方式(Get/Post)、接口地址、参数输入期望返回结果、数据库结果、实际结果、备注

接口文档特殊数据类型:

  1. string字符串””
  2. int 整数
  3. float浮点数
  4. [1,2,3,4]列表
  5. {“age”:18,”title”:ceo} 字典!--json
  • jmeter工具
  1. 接口测试工具介绍

Firefox插件  ---http requester---插件已经不维护,很多不能使用

Chrome插件  ---Postman---用的多

Soapui  ---比较少用

Jmeter  ---用的多,重点讲解  性能测试

Loadrunner  ---性能测试 ---接口

代码实现【后面讲--0.02元的Python视频/Java】--python学前课

浏览器:http请求get请求方式

  1. Jmeter的基础使用详解

1)常用测试元件

 测试计划: 默认

 线程组:   并发用户数、并发时间、请求循环次数

 采样器:   较常用HTTP请求、JDBC Request、soap/websrvice

 监听器:   查看树结果

 配置元件: http请求默认值、HTTP信息头管理器、JDBC Connection Configuration
 断言:    响应断言。通过对比服务器返回的响应数据,判断请求是否成功

 参数化:  用户定义参数、CVS Data Set Config、函数参数化

 关联:    后置处理器:正则表达式、json表达式
2)补充知识:content-type

数据传递格式:

Json:{键值对}

{“mobile_phone”:”1886666888”,”password”:”lemon123456”}

xml:一对标签包裹传递的数据

<mobile_phone>1886666888</mobile_phone>

<password>lemon123456</password>

form表单:application/x-www-form-urlencoded

禅道提交bug【后面抓包演示+脚本演示】

  1. 参数化的三种方式(必问)

${变量名}
① 配置元件:用户定义的变量

② 配置元件:CSV Data Config

③ 函数助手中的函数获取参数值  _Random函数 _RandomString函数
例如:y=a+b  去找a,b的值可以为(0,8)(1,7)(2,6)(3,5)(4,4)

2)附加了解:

①如何设置循环次数

②根据参数化设计测试用例以及测试点

  1. 关联

关联概念:两个请求,上一个请求的响应结果,作为下一个请求的参数传入

关联运行的场景:下一个请求的参数值是变化的

关联方式:Jmeter中的关联是通过“添加-后置处理器”来获取数据,传给后面的请求使用

          ①正则表达式提取器

          ②json提取器

注意:后置处理器,放在请求的子级,数据一般从“查看结果树”的响应数据提取

4.1 正则表达式提取器

1)要检查的响应字段:样本数据源

2)引用名称:可自定义设置,引用方法:${引用名称}

3)正则表达式:数据提取器,()括号里为你要获取的值。常见的性质(.*?)

4)模板:$$对应正则表达式提取器类型,
$1$$2$:{“token_type”:”(.*)”,”expires_in”:”(.*)”,“token”:”(.*)”}}

→ 匹配数字:-1表全部,0岁,1第一个,2第二个,以此类推,一般写1

→ 缺省值:匹配失败时的默认值,可不写

4.2正则表达式

概念:匹配内容的一个表达式,*.log==帮我匹配出所有.log后缀的文件

如何判断自己的正则表达式是否正确,可在线检验:在线正则表达式测试

百度:30分钟入门正则表达式

课外小知识:

打开工具 → 函数助手对话框 → 选择功能RandomString(可点击帮助选择查询自己需要的)→length选择名字长度、generation类型 → 生成字符串后copy到值里

Json Path Tester → Json Path Expression → 输入$.({}里所需要的内容)

http请求  →添加后置处理器 → Json提取器 →从请求响应结果里获取到值 → 可通过查看结果树/线程组添加取样器Debug Sampler(调试取样器)→ 运行   ---只适用Json格式

正则表达式  
参考手机号码的正则表达式:手机号码正则表达式_lz3301413033的博客-CSDN博客_手机号码的正则表达式怎么写

  1. Json提取器

1)要检查的响应字段:样本数据源

2)引用名称:可自定义设置,引用方法:${引用名称}

3)json路径表达式:http://lemfix.com/topocs/63

4)匹配数字:-1表全部,0岁,1第一个,2第二个,以此类推,一般写1

5)缺省值:匹配失败时的默认值,可不写

  1. Jemter断言

通过添加 → 断言 → 响应断言;还需要在监听器 →断言结果,才能在执行后查看断言结果是否正确

如果请求成功,则断言结果会正常显示的结构,否则会报错,显示为红色

Jmeter使用

1.配置jmete

①添加线程组

②配置http请求(可设置线程组中默认请求)

③添加查看结果(可用json格式)

思考: 

  1. 什么时候要做接口测试
  2. 为什么要做接口测试
  3. 接口测试原理
  4. 前端已经界面出来,已经通过前端界面进行了测试,后端接口是否还需要测试
  5. 做完接口测试,还需要做前端功能测试吗
  6. 接口测试一般属于执行哪个阶段?集成、系统

答案:

  1. 1)项目要求做接口测试才做,无要求就可以不做、
  1. 一般后端接口开发出来,我们就可以尽早介入进行测试
  1. 1)提升效率降低成本  
       2)安全  
       3)接口比较稳定
  2. 模拟客户端向服务器发送请求
  3. 前端测试完,后端要做接口测试(从安全性出发考虑)
  4. 做完接口测试,还需要做前端功能测试
       1)验证前端功能按钮的正确性(UI、URL、下拉框等)
       2)页面输入限制
       3)前端是否提交数据到服务器
    6. 属于集成和系统两个阶段

猜你喜欢

转载自blog.csdn.net/cxxc980322/article/details/129007874