【自动化测试】使用MeterSphere进行接口测试

  • 一、接口介绍
  • 二、接口测试的过程
  • 三、接口自动化测试
    • 执行自动化流程
  • 四、接口之间的协议
    • HTTP协议
  • 五、 接口测试用例设计
    • 接口文档
  • 六、使用MeterSphere创建接口测试
    • 创建接口定义
    • 设计接口测试用例

一、接口介绍

自动化测试按对象分为:单元测试、接口测试、UI测试等。
接口是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。接口就好像一根水管,通过这根水管可以把水房的水传输每家每户,而这根水管的容量大小就决定了传输的水容量,水管越粗,一个时间点内流通的水的体积就越大,也就是说接口的传输容量就决定了服务器向客户端一次传输的数据大小,而对于系统的接口就是方法与方法之间、模块与模块之间的交互,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。

二、接口测试的过程

大体流程: 使用工具(Jmeter、postman),模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,然后向客户端返回响应数据,最后检查响应数据是否符合预期。

具体流程: 发送请求->解析结果->验证结果。 简单来说,接口测试就是参照接口文档,调用接口,看结果的返回是否跟文档说明一致;另外,再测试一下接口对异常逻辑的处理比如非法参数或边界值。
在这里插入图片描述

上图是一个典型的测试金字塔模型,在这个模型中,越往下比例会占的越高,也就是说在一个软件测试中,单元测试比例是最高的,依次是接口测试和 UI 自动化测试,接口测试在中部,承上启下,由此可见其重要性。

三、接口自动化测试

接口自动化测试是什么?
简单说自动化测试是把人为操作的测试行为转化为机器执行的一种过程。

接口自动化测试的好处

不管什么样的测试方式,都是为了验证功能与发现 bug。要做接口测试自动化就是为了节省人力成本。具体来说,包括以下几点:

  1. 减轻自己工作量,把测试从枯燥的重复劳动的人工测试中解放出来;
  2. 协助手工测试完成很难模拟或无法模拟的的工作;
  3. 提高工作效率,比如测试环境的自动化编译、打包、部署、持续集成甚至持续交付等;
  4. 协助定位问题,比如通过接口层发现的问题定位问题所在的模块;
  5. 尽早发现 bug,自动通知测试人员。一旦发现问题,立即通知测试人员,快速高效;
  6. 提高软件质量和稳定性,减少潜在风险,提供稳定可靠的软件。

执行自动化流程

  1. 接口文档:接口请求、响应定义清晰、接口参数说明清晰、接口状态准确
  2. 环境管理:包括测试环境和线上环境、脚本和数据在测试环境、线上环境通用、功能测试环境混用
  3. 脚本管理:管理路径:空间-项目-模块-场景(具体软件具体操作)、重复场景复用、减少维护成本、必须添加断言
  4. 场景管理:场景设计用例评审、场景优先级维护、场景状态及时维护更新
  5. 执行频次:新增测试计划执行自动化任务,设计定时任务和通知信息、每天上午6-8点自动化执行所有已完成的自动化脚本、冲刺上线前手动执行相关的业务场景脚本

四、接口之间的协议

接口之间互相调用也需要遵循一定的规则,这个规则就是网络协议,如:http协议、tcp协议,rpc协议。

HTTP协议

HTTP: (HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。

下图是HTTP的URL:

在这里插入图片描述

HTTP请求: 包含4个部分,首行,请求报头,空行,正文

1.首行: 包含三个部分,之间使用空格分隔。1、get /post(http方法) 2、url唯一资源定位符 ;3、http/1.1 版本号(GET https://www.baidu.com/ HTTP/1.1)

  • GET、POST:一般一个url的请求通常使用get和post两种方法,当然还有其他的请求方法。GET一般是向服务器获取资源,POST一般是向服务器提交数据。在浏览器地址栏直接输入url和html里面的link,script,img,a…,或者通过js构造get请求,这些都会生成get请求。get请求内容里有首行,header,空行就没了;post的典型场景是登录,上传文件,内容里有首行,请求头header,空行,正文body。所以http请求分为四个部分:首行,请求头,空行,正文。get请求没有正文,正文内容格式是程序猿自己定义。
  • Url:最关键四个部分,协议名称//域名:端口号//带层次的路劲?查询字符串。http默认端口80,https默认端口443

2 .请求报头: 请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:

  • host:表示服务器所在地址和端口,表示最终要访问的目标,大概率和url里的是一样的

  • content-length:body里的数据长度

  • content-type:body里的数据格式。get请求没body,就没这两个content字段,post有body,就必须有这两个字段。content-type取值范围:text/html、application/json、image/png…等

  • user-agent(UA):以前服务器根据这个字段来判断要发送什么样的响应,要不要带图片、视频等,现在主要用于区分pc端和移动端。

  • referer:表示当前页面的来源,通过收藏夹、手动输入url是没有referer的。通过跳转的网页才会带有referer,表示从哪个网页跳转过来的。

  • cookie:本质上是浏览器给网页提供的本地存储数据的机制。网页是默认不允许访问计算机的硬盘,但是由于需要在本地存储一些数据,所以提供了一个cookie,此时网页就可以去操作cookie。cookie通过键值対方式组织数据,存储的是程序员自定义内容。键值用=分割,键值対之间用;分割。
    请添加图片描述

3.空行: 表示请求头的结束标记。
4.正文(body): 请求头content-type指定什么类型,就决定正文的数据怎么组织的,具体数据是程序猿决定的。比如登录场景:使用POST方法,一般把账号和密码放入body里;而使用GET方法,一般把请求的参数放入query String里。

  • query string:是以?开头,键值对方式组织,键值对之间用&分隔,键值直接用=分隔。
    请添加图片描述

HTTP响应: 四个部分构造,首行(版本号,状态码,状态码描述)、header响应头(键值対格式)、空行(表示header的结束标记)、正文。
请添加图片描述

  • 状态码:表示此次请求的结果,成功or失败。分为1** 等待、2** 成功、3** 重定向、4** 客户端错误、 5** 服务器错误。
  • 200 OK
  • 404 Not Found 访问资源不存在,在服务器上没找到。
  • 403 Forbidden 访问被拒绝,没有权限访问
  • 302 Move temporarily 重定向,在header里有个location属性,通过这个属性描述要跳转到哪个新页面。重定向是服务器返回一个新地址让客户端重新访问,两次相互;请求转发是服务器自己访问新的网站然后把新的结果返回给客户端,一次交互。
  • 500 服务器内部错误,服务器代码抛异常 504 gateway timeout 请求超时,服务器响应时间太久

五、 接口测试用例设计

接口文档

在这里插入图片描述
接口文档: 又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。 大家都根据这个 接口文档进行开发,并需要一直维护和遵守。

一个规范的接口文档,要包含以下信息:

  1. 基本信息: 接口名称、请求方法、请求路径、接口描述
  2. 请求参数: 请求头,请求体(包含具体的请求参数名称、参数类型、是否必须、示例、备注)
    返回数据
  3. 不同情况的响应状态码
  4. 响应数据 (包含具体的响应数据名称、类型、是否必须、默认值、示例、备注)

六、使用MeterSphere创建接口测试

前面说过一般接口测试工具可以使用Jmeter和Postman,但是我使用的是MeterSphere,这是我在实习中企业使用的一款不错的平台。 因为MeterSphere 是一站式开源持续测试平台,涵盖测试跟踪、接口测试、UI 测试和性能测试等,全面兼容 JMeter、Selenium 等主流开源标准,有效助力开发和测试团队在线共享协作,实现端到端的测试管理跟踪可视化、自动化测试、性能测试及融入持续交付 DevOps 体系,并充分利用云弹性进行高度可扩展的自动化测试,从而加速高质量的软件交付,推动中国测试行业整体效率的提升。

具体操作可以看官网文档:

  • MeterSphere官方文档
  • MeterSphere接口测试文档
  • MeterSphere接口自动化测试文档

创建接口定义

注意:这是企业里使用的,一般来说需要有企业管理员授权,给你一个账号才能登录进去使用。

目标: 测试MeterSphere的登录接口
URL: http://192.168.62.51:8079/signin

进入MeterSphere,点击左侧任务栏,选中【接口测试】,紧接着选择【接口定义】,进入下图页面

在这里插入图片描述

创建一个接口

在这里插入图片描述

此时打开了创建接口页面,输入相关内容
1、请求栏部分:完整的请求地址是 http://192.168.62.51:8079/signin ,但是此处的url只用输入接口的URL,也就是/signin,选择POST请求方法
2、选中请求体
3、选择JSON格式
4、根据接口文档,输入请求体内容,或者通过Fiddler抓包,抓到该URL请求里的请求体内容
5、点击保存

在这里插入图片描述

配置该接口的使用环境
点击两处任意一处,进入编辑页面
在这里插入图片描述

在编辑接口页面,右上角的下拉框,选中【环境配置】

在这里插入图片描述

进入到环境配置页面
1、点击左上角【+】,新建一个环境,选中【HTTP配置】
2、环境域名:以完整的请求地址是 http://192.168.62.51:8079/signin ,那么此处就填写域名为192.168.62.51:8079
3、点击右下角【添加】
4、点击右上角【确定】,完成配置

在这里插入图片描述

执行接口测试
1、选中刚才配置的环境
2、点击【测试】
3、执行接口测试后,会返回一个响应结果

在这里插入图片描述

设计接口测试用例

  1. 可以更换请求方法,进行测试
  2. 可以点击【请求体】,把请求体里的参数更换,比如输入有效、无效参数、不输入参数,进行测试
  3. 可以更换传参的格式进行测试,比如请求体里使用JSON格式传参,XML传参;或者使用QUERY参数传参

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/661981.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

拌合楼管理系统(十八)如何从一个winForm中的事件修改另外一个Form的控件的值

前言: 上篇讲述了如何手工调用海康的车牌识别摄像头进行拍照和识别车牌,我车牌识别的程序在应用的一个窗体,需要去更新另外一个窗体里面的lable中的内容为识别的车牌信息,同时还要写入到另外窗体的datagridview中。 一、实现效果 …

Java面试八股之Java中数组有没有length()方法?String呢?为什么?

Java中数组有没有length()方法?String呢?为什么? 数组: 数组没有名为length()的方法,但有一个属性叫做length。可以通过数组名直接访问这个属性来获取数组的长度(即元素个数)。这是一个整数值&…

翻译《The Old New Thing》 - How do I cover the taskbar with a fullscreen window?

How do I cover the taskbar with a fullscreen window? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050505-04/?p35703 Raymond Chen 2005年5月5日 如何用全屏窗口覆盖任务栏? 很多时候,人们总是想得太多。…

在Centos7上部署LDAP服务

安装ldap和设置自起 - 安装ldap yum install -y openldap-servers openldap-clients openldap openldap-devel compat-openldap openldap-servers-sql- 启动和开机自起 systemctl start slapd systemctl enable slapd- 查看服务是否安装成功 配置ldap - 创建第一个管理账号…

基于Springboot的音乐翻唱与分享平台

基于SpringbootVue的音乐翻唱与分享平台设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 音乐资讯 音乐翻唱 在线听歌 后台登录 后台首页 用户管理 音乐资讯管理…

【已解决】pandas读excel中长数字变成科学计数法的问题

pandas 读excel中的长数字时,即使excel中已经设置为文本,读进df后也会自动变成科学计数法。 在日常的数据分析和处理工作中,Excel和pandas是数据分析师们不可或缺的得力助手。然而,在使用pandas读取Excel文件时,我们有…

模型剪枝-Network Slimming算法分析

代码见文末 论文地址:Learning Efficient Convolutional Networks through Network Slimming ICCV 2017 Open Access Repository 1.概述 由于边缘设备的限制,在模型的部署中经常受到模型大小、运行内存、计算量的限制。之前的方法要么只能解决其中一个…

Linux基础part-5

1、Linux用户与用户组管理 1、用户是什么? 实现资源分派(区分和管理系统资源的访问权限,将不同的资源分配给不同的用户)实现认证pam和授权(用户身份通常通过用户名和密码进行认证,认证成功后系统将授予用…

Flutter运行项目一直:running gradle task

大体原因就是访问国外的资源由于网络等原因导致访问失败,解决方法就是换成国内的源 修改项目的android/build.gradle 文件,将里面的 google() mavenCentral()替换为 maven {allowInsecureProtocol trueurl https://maven.aliyun.com/repository/googl…

Model3芯片:以太网口+高速USB,传输更便捷!

科技飞速发展,人们的生活节奏也不断加快。在这个加速社会,人们对效率的追求从未改变,需求产生供给,智能设备的应用场景越来越多,人们也越来越依赖于高效、稳定的数据传输和网络连接。所以,无论是在工作中处…

nacos-redis-springboot

新项目 准备工作 nacos 版本 2.0.3 redis 最终版本说明 springcloud-alibaba:2.2.7RELEASE springcloud:Hoxton.SR12 springboot:2.3.12.RELEASE Nacos:2.0.3 步骤 启动nacos和redis 准备nacos配置文件 server: port…

Java Web 开发 - 掌握拦截器和监听器

目录 深入了解Java Web的拦截器和监听器 拦截器(Interceptor) 拦截器的使用场景 拦截器实例 思维导图 ​编辑 监听器(Listener) 监听器的使用场景 监听器类型 监听器实例 思维导图​编辑 总结 深入了解Java Web的拦截器…