测开学习笔记——接口测试(接口测试基础、Jmeter安装及核心目录详解、Jmeter作用域和组件、Jmeter测试实战、接口关联)(一~五)

目录

一、接口测试基础

1. 为什么要做接口测试?

2. 接口测试测什么?

3. 接口测试的工具?

二、Jmeter安装配置以及核心目录详解

1. 安装

2. 目录

三、jmeter组件和作用域详解

1. 组件(元件):(记住)

2. 组件作用域:

四、jmeter接口测试实战

1. 场景一:我一个人负责所有的接口,项目规模不大

2. 场景二:多个测试人负责整个项目,我只负责其中几个模块的接口测试。协同接口测试

五、接口关联

1. json path实现接口关联

2. 正则表达式实现接口关联


一、接口测试基础

1. 为什么要做接口测试?

  1. 前后端分离架构

  2. 项目一般都不是独立的,经常要调用外部的项目。项目和项目之间交互数据,通过接口交换。

  3. 安全考虑。

2. 接口测试测什么?

  • 接口就是个函数

  • USB接口:数据传递的正确性(参数),输出结果的正确性,以及各种容错处理和权限控制。

  • 项目接口:参数,结果,容错处理,权限。

3. 接口测试的工具?

Jmeter、Postman,Apifox,Apipost,各种七七八八。

二、Jmeter安装配置以及核心目录详解

1. 安装

jmeter基于java语言来开发,java需要jdk环境:

  1. 安装jdk并且配置jdk的环境变量

  1. jmeter只需要解压就可以使用了

  2. 双击jmeter.bat文件就可以启动

2. 目录

  • backups:自动备份目录

  • bin:启动文件

    • jmeter.properties核心配置文件

  • docs:文档 不重要

  • extras:存放和第三方集成的构建文件

  • lib:存放jar包

  • licenses

  • printable_docs

  • LICENSE

  • NOTICE

  • README.md

三、jmeter组件和作用域详解

1. 组件(元件):(记住)

  1. 测试计划:容器

  2. 线程组:用户

  3. 配置元件:接口配置,协议,接口服务器IP,接口服务器端口

  4. 前置处理器:在接口请求之前的操作

  5. 逻辑控制器:判断条件成立才请求接口,循环请求

  6. 定时器:延迟请求接口

  7. 取样器:发送请求

  8. 后置处理器:在接口请求之后的操作

  9. 断言:判断接口是否成功

  10. 监听器:收集测试结果

2. 组件作用域:

  • 最基本的架构

  • 结论一:组件可以作用于父组件。如果我的组件(它)只想作用于一个组件,就把它放到组件的下面。

  • 结论二: 组件可以作用于平级组件。

  • 结论三:组件可以作用于平级组件之下的子组件。

四、jmeter接口测试实战

1. 场景一:我一个人负责所有的接口,项目规模不大

  • 接口文档示例(开发给):

  • 一下都是建立在【测试计划-》线程组-场景一-》】下

  • HTTP请求默认值

    • Web服务器:https

    • 服务器名称或ip:api.weixin.qq.com

    • 端口号:http:80 https:443

  • HTTP Cookie管理器

  • 用户定义的变量

  • HTTP请求(请求方式,请求路径,请求参数,响应查看结果)

    1. 获取鉴权码access token接口

      • Web服务器、服务器名称或ip、端口号 不用配置 默认

      • HTTP请求:GET

      • 路径:/cgi-bin/token?grant type=client credential&appid=appid&secret=secret(/cgi-bin/token?grant type=client credentia&appid=wx8a9de038e93f77ab&secret=8326fc915928dee3165720c910efb86)

      • 查询字符串参数:直接在路径后面?传,多个参数之间用&分开

    2. 编辑标签接口

      • Web服务器、服务器名称或ip、端口号 不用配置 默认

      • HTTP请求:POST

      • 路径:/cgi-bin/tags/update?access token=ACCESS TOKEN

        • ACCESS TOKEN是上个请求生成的token

        • 在运行这个接口测试前,把第一个接口请求禁用掉,否则每一次请求token会变

      • josn参数格式:消息体数据-》把文档中的参数复制进去

      • 文件参数:在文件上传传递

    3. 访问phpwind论坛首页接口

      • Web服务器、服务器名称或ip、端口号 不用配置 默认

      • HTTP请求:GET

      • 路径:和默认配置不一样的话输入完整路径就可以抵消掉http:/147.107.116.139/phpwind

      • 查看结果树-》JSON下的访问phpwind论坛首页接口-》响应数据(是网页格式)

        • 要从中提取参数的话只能用正则表达式

    4. 登录接口

      • Web服务器、服务器名称或ip、端口号 不用配置 默认

      • HTTP请求:POST

      • 路径:和默认配置不一样的话输入完整路径就可以抵消掉本站新帖 - 码尚教育 - Powered by phpwind

      • 参数:根据接口文档填写

        • 其中包括需要从上一个接口提取的信息 值为${aaa}

      • 要求是必须带请求头

        • 登录接口-》添加-》配置元件-》HTTP信息头管理器-》根据接口文档填写名称和值

        • Accept 只接受json格式

        • X-Requested-WVith 异步请求

        • cookies

      • 查看结果树-》RegExp Tester下的登录接口-》【RegExp Tester】查看参数是否符合接口文档要求

  • 查看结果树(可选josn格式)

    • 运行-》【响应数据】、【请求】中查看对还是错

    • 有text格式、json格式

  • 注意:

    • access token每一次请求之后都是会变的。不是固定的。

    • 接口关联:下一个接口需要用到上一个接口的access token参数

2. 场景二:多个测试人负责整个项目,我只负责其中几个模块的接口测试。协同接口测试

  • 什么是测试片段?

    • 就相当于只是项目的一部分用例,不能单独运行,必须要和控制器(include,模块)一起使用才能执行。

    • 默认禁用

    • 与线程组属于同一个级别

  • 如何使用测试片段?

    1. 新建一个测试片段,然后把所有的组件都放到这个测试片段下面,然后通过线程组下面的模块控制器去控制这个片段执行查看结果。

    2. 组长leader:张三,李四,王五三个人的用例都拿过来,然后一起执行。

      (1)组员启动测试片段,把测试片段保存为jmx文件,然后发给组长leader(一般通过SVN或者GIT版本控制工具发送)

      (2)Leader新建一个线程组,然后再线程组下新建include控制器去控制上面的脚本运行。


已下为我是张三 我的目录结构

  • 测试计划-》线程组-场景二

  • 测试计划-》线程组-》添加-》逻辑控制器-》模块控制器(命名:模块控制器-商品管理)-》选中所需测试片段(命名:商品管理模块-张三测试)

  • 测试计划-》测试片段(命名:商品管理模块-张三测试)

    • HTTP请求默认值

    • HTTP Cookie管理器

    • 用户定义的变量

      1. 获取鉴权码access token接口

      2. 编辑标签接口

    • 查看结果树

步骤:

  1. 进行测试

  2. 测试完成后 启用测试片段

  3. 商品管理模块-张三测试-》选中部分保存为jmx文件


已下为我是leader 我的目录结构

  • 测试计划-》线程组-》添加-》逻辑控制器-》include控制器-》文件名选择组员的文件

  • 测试计划-》线程组-》添加-》监听器-》查看结果树

步骤:

  1. 把组员文件添加进来

  2. 运行

  3. 在【查看结果树】中查看运行结果


五、接口关联

  • 应用场景:下一个接口需要用到上一个接口的参数

1. json path实现接口关联

  1. 测试一下:查看结果树-》JSON Path Tester(是json提取器的测试工具)-》填写JSON Path Expression

    • JSON Path Expression表达式写法:

      • $ 根节点(大括号)

      • . 取子节点的值

      • 例:$.access token

  2. 第一个接口-》添加-》后置处理器-》正则表达式提取器/json提取器

    • json提取器 取值

      • Names of created variables:表达式取到的值保存的位置 给它起个名字

      • JSON Path expressions:$.access token

      • Match No. (0 for Random):取到的值的个数 1

      • Compute concatenation var (suffix _ALL):

      • Default Values:没有取到值的情况下的默认值 default

  3. 下一个接口(也就是要用到上一个接口参数的关联接口)-》路径-》使用${变量名}使用值(/cgi-bin/tags/update?access_token=${www}

  • 查看是否关联成功:

    • 查看结果树-》JSON Path Tester-》前一个接口get的【响应数据】和下一个接口post的【请求】是否对应

    • 场景一-》取样器-》debug sampler-》运行后在调试取样器的【响应数据】中查看www是否取到值

2. 正则表达式实现接口关联

  1. 测试一下:查看结果树-》RegExp Tester(是正则表达式提取器的测试工具)-》填写Regular Expression

    • Regular Expression表达式写法:

      • <input type="hidden" name="csrf token" value="647c43e98dfa90e7"/>

      • 取值:647c4ae98dfa90e7

      • 左边界+取值+右边界(必须唯一):name="csrf token" value="647c4ae98dfa90e7"

      • 例如:name="csrf token" value="(.*?)"

  2. 当前需要用正则表达式的接口-》添加-》后置处理器-》正则表达式提取器

    • 引用名称:aaa

    • 正则表达式:name="csrf token" value="(.*?)"

    • 模板:$1$(固定写法 表示用第一个正则去取值)

    • 匹配数字(0代表随机):匹配到的第几个

    • 缺省值:default

查看是否关联成功:

  • 场景一-》取样器-》RegExp Tester-》运行后 在调试取样器的【RegExp Tester】中查看aaa是否取到值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值