接口测试学习之旅

Posted 赵jc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试学习之旅相关的知识,希望对你有一定的参考价值。

接口测试的重点

检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性以及对各种异常情况的容错处理,权限控制等。

接口测试的分类

  • 内部接口:测试被测系统各个子模块之间的接口,或者被测系统提供给内部系统使用的接口
  • 外部接口:1.被测系统调用外部的接口 2.系统对外提供的接口

一级目录

  • backups:脚本备份目录,格式JMX
  • bin目录:存放jmeter的启动脚本,配置文件,模板文件(jmeter.bat 启动jmeter jmeter.properties
    核心配置文件 )
  • docs:离线帮助文档
  • extras:存放与第三方的集成构建文件,集成Ant,Jenkins
  • lib目录:存放jar包
  • license:许可证文件

Jmeter常用组件

1.测试计划:所有组件的容器(起点)
2.线程组:代表一定数量的用户
3.取样器:向服务器发送请求的最小单元
4.逻辑控制器:结合取样器实现一些复杂的逻辑
5.前置处理器:在请求之前的工作
6.后置处理器:在请求之后工作
7.断言:用于判断请求是否成功
8.定时器:负责在请求之间的延迟间隔,固定,高斯,随机
9.配置文件:配置信息
10.监听器:负责收集结果

执行顺序:

  • 测试计划–>线程组–>配置元件–>前置处理器–>定时器–>取样器(请求)–>后置处理器–>断言–>监听器

作用域:

  • 必须组件:测试计划,线程组,取样器
  • 辅助组件:逻辑控制器、前置处理器、后置处理器、断言、定时器、配置文件、监听器(除必须组件外)

作用于父组件,同级组件,以及同级组件下的所有组件

Jmeter执行接口测试

1.拿到api文档(Fiddler),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码
2.编写接口测试用例
测试思路:

  • 正例:输入正常入参,查看接口成功返回
  • 反例:鉴权:空,错误,鉴权过期,健全次数限制 参数:空,类型错误,长度错误,错误码的覆盖 其他:黑名单,分页

3.执行接口测试工具执行
4.Jmeter+Ant+ins实现持续集成输出接口测试报告

接口关联

1.使用正则表达式实现接口关联(如果说一个请求里面有多次请求服务器)

2.使用Jsonpath表达式实现接口关联(只能作用于返回值为json的值)
从根目录开始查找(绝对路径): . e x p l i r e s i n 从 任 意 目 录 开 始 查 找 ( 相 对 路 劲 ) : .explires_in 从任意目录开始查找(相对路劲): .expliresin…explires_in

实现接口业务的闭环

增,改,删,查

Jmeter动态参数处理

随机数字
随机字符串

Jmeter接口测试断言

相应版本:返回的json数据
相应代码:200 404
相应信息:OK
响应头
请求头
URL
文档(文本):返回的JSON数据以文本的方式去判断
忽略状态:当有多个断言时。如果有一个断言失败了,另一个成功了,那么结果是成功了
请求数据

  • 字符串:相应内容包含需要匹配的字符串,大小写敏感,不支持正则
  • 包含:相应内容包含需要匹配的字符串,大小写敏感,支持正则
  • 匹配:相应内容完全等于需要匹配的字符串,大小写敏感,支持正则
  • 相等:相应内容完全等于需要匹配的字符串,大小写敏感,不支持正则

Jmeter接口测试调试方案

通过查看结果树里面的请求信息和相应信息
使用调试取样器
jmeter结合fiddler实现调试

csv参数化的处理

必须带请求头的接口

使用Jmeter自带的http代码服务器实现(把jmeter作为代理)

  • 设置端口和目录的位置

  • 设置本机的请求通过代理去发送

Jmeter中的Bean Shell组件和语法规则

BeanShell是一种完全符合java语法规则的脚本语言,同时他还有自己的语法规则

  • Jmeter有哪些BeanShell
    1.前置处理器:BeanShell预处理器
    2.定时器:BeanShell
    3.采样器:BeanShell
    4.后置处理器:BeanShell
    5.断言:BeanShell
    6.监听器:BeanShell
  • BeanShell的内置的变量的变量和语法规则
    1、log打印日志
  • log.info()
  • log.error()
    2.vars表示:JmeterVariables,操作Jmeter变量(只能在当前线程组使用)
  • 用户定义的变量
  • 正则表达式,JSON提取器
  • 定义变量
  • 获取变量的值
    log.info(var.get())
    vais.put(“www”,“yy”)
  • 3.props用于存取Jmeter的全局静态变量(可以跨线程组)
    获取全局变量
    log.info(props.get())
    props.put(“aaa”,“bbb”)
  • 4.prov获取到前面一个取样器返回的信息
    获取到前面取样器的值
    log.info(prev.getResponseCode())
    log.info(prev.getResponseDataAsString())
    5.ctx切换上下文
    System.out.println(ctx.getProperties()

Jmeter执行数据库操作

  • 1.准备数据库的驱动jar包

方式一:在测试计划里面引用
方式二:放到jmeter的lib目录下

  • 2.创建一个:JDBC connection configuration
  • 3.新建一个: JDBC request

Jmeter的非GUI(界面)方式运行

执行JMX文件的命令:jmeter
命令行参数:
-n -t :-n非界面方式运行 -t指定jmx文件的位置
-l: -l指定生成的jtl格式的结果
-e -o: -e生成html报告, -o指定html报告的文件夹(这文件夹必须空目录)

以上是关于接口测试学习之旅的主要内容,如果未能解决你的问题,请参考以下文章

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段

我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?

我的OpenGL学习进阶之旅NDK开发中find_library查找的系统动态库在哪里?

Unity Shader入门精要学习笔记 - 第5章 开始 Unity Shader 学习之旅

软件测试开发学习之旅----测试篇