【自动化测试】使用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.xdnf.cn/news/1411644.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

强大而简洁:初学Python必须掌握的14个单行代码

Python的魅力与单行代码的重要性 Python,作为一种高级编程语言,自诞生以来就以其简洁、易读、易学的特性而广受开发者喜爱。其魅力不仅在于其强大的功能和广泛的应用领域,更在于其能够用简洁的代码实现复杂的功能,这种能力在很大…

C#实战—代码实现收发文件智能化

在信息化的今天,收发电子文档几乎是每个朋友都要经历的事情。比如班级学委和班长需要收发作业,企业管理者需要收发工作文件。但是!!! 每到要交结果时,往往会发现总会有一些人没有即使交上,50个…

【信息收集】子域名扫描---subdomainbrute

下载地址:GitHub - lijiejie/subDomainsBrute: A fast sub domain brute tool for pentesters 用字典的方式去发现url的二级、三级、四级....子域名 并会自动在文件目录下生成一个txt记录 python subDomainsBrute.py csdn.net(别加 www.)

展会进行时|百华鞋业亮相第135届中国进出口商品交易会(广交会)三期,展会现场人气爆棚!

第135届中国进出口商品交易会(广交会)三期如约而至,本届展会汇集了来自世界各地的参展企业,带来各行业前沿技术与新产品展出。百华鞋业携足部安防职业鞋、户外作训靴等系列新产品强势亮相展会,位于2.2 G25-26 H23-24的…

eNSP-DHCP服务配置

一、拓扑结构搭建 二、主机配置 pc1、pc2 三、路由器配置 <Huawei>sys #进入系统视图 [Huawei]int g0/0/0 #进图接口 [Huawei-GigabitEthernet0/0/0]ip address 192.168.0.1 24 #设置接口ip [Huawei-GigabitEthernet0/0/0]q #返回上一级 [Huawei]dhcp enable #开启DHCP服…

手撸Mybatis(四)——连接数据库进行简单查询

本专栏的源码&#xff1a;https://gitee.com/dhi-chen-xiaoyang/yang-mybatis。 添加数据库操作模板 对于JDBC操作&#xff0c;一般包括以下几个步骤&#xff1a; 1&#xff09;注册驱动 2&#xff09;建立连接 3&#xff09;执行sql语句 4&#xff09;处理结果 5&#xff09…

【Python基础】进程

文章目录 [toc]程序与进程的区别与联系同步任务示例 并行任务示例进程调度的“随机性” 进程属性与方法process_object.start()方法process_object.join()方法process_object.daemon属性没有设置守护进程的情况设置守护进程的情况 process_object.current_process()方法 进程通…

(三)Appdesigner-界面转换及数据导入和保存

提示&#xff1a;文章为系列文章&#xff0c;可以在对应学习专栏里面进行学习。对应资源已上传 目录 前言 一、Appdesigner是什么&#xff1f; 二、界面切换 三、数据导入及保存 &#xff08;一&#xff09;数据导入 &#xff08;二&#xff09;数据保存 总结 前言 Appd…

ZooKeeper数据模型你懂吗?

ZooKeeper数据节点你知道吗&#xff1f;那数据节点有什么类型&#xff1f;数据节点的版本呢&#xff1f;听说ZooKeeper还有事务ID&#xff0c;你知不知道啊&#xff1f;还有Watcher机制呢&#xff1f;ZooKeeper作为一个典型的分布式数据一致性的解决方案&#xff0c;ZooKeeper的…

【Python项目】基于DJANGO的【医院体检预约系统】

技术简介&#xff1a;使用Python技术、DJANGO框架、MYSQL数据库等实现。 系统简介&#xff1a;系统采用了在线预约和挂号的方式&#xff0c;用户可以通过网站进行预约和挂号操作。同时&#xff0c;系统还提供了医生的详细介绍和评价&#xff0c;方便用户选择医生。 研究背景&a…

Django之单文件上传(以图片为例)

一&#xff0c;创建项目 初始化&#xff0c;数据迁移&#xff0c;创建superuser&#xff0c;创建app等 二&#xff0c;配置settings.py 1&#xff0c;配置数据库&#xff08;本作者使用的mysql&#xff09;&#xff0c;以前文章有提到 2&#xff0c;配置静态文件存放路径 STAT…

关于YOLO8学习(五)安卓部署ncnn模型--视频检测

前文 关于YOLO8学习(一)环境搭建,官方检测模型部署到手机 关于YOLO8学习(二)数据集收集,处理 关于YOLO8学习(三)训练自定义的数据集 关于YOLO8学习(四)模型转换为ncnn 简介 本文将会讲解: (1)使用前文生成的ncnn模型,部署到安卓端,并且实现视频中,人脸的检测…

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

农作物害虫检测数据集VOC+YOLO格式18975张97类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;18975 标注数量(xml文件个数)&#xff1a;18975 标注数量(txt文件个数)&#xff1a;18975 标…

ARL资产侦察灯塔系统安装和使用(含实用配置说明)

★★免责声明★★ 文章中涉及的程序(方法)可能带有攻击性&#xff0c;仅供安全研究与学习之用&#xff0c;读者将信息做其他用途&#xff0c;由Ta承担全部法律及连带责任&#xff0c;文章作者不承担任何法律及连带责任。 1、官方介绍 ARL全称&#xff1a;Asset Reconnaissance…

C#图像:1.图像区域分割与提取

&#xff08;1&#xff09;创建一个名为SplitImage的窗体的应用程序&#xff0c;将窗体改名为FormSplitImage。 &#xff08;2&#xff09;创建一个名为ImageProcessingLibrary的类库程序&#xff0c;为该工程添加名为ImageProcessing的静态类 &#xff08;3&#xff09;为Imag…

智慧校园云平台源码,SaaS运营云平台(支持多学校、多校园使用)

智慧班牌系统&#xff0c;又称电子班牌系统&#xff0c;是一种基于互联网技术的综合管理工具。通过在教室内安装显示屏&#xff0c;并连接到学校管理系统&#xff0c;实现教学资源展示、信息发布、学生管理等多种功能的集成。该系统旨在加强学校班级文化建设和班级风采展示&…

【自留】运行一个开源项目

运行一个开源项目 首先是运行起来 1. 拿到地址 拿到你想要的项目的地址 2. 克隆 打开编辑器 VSCode &#xff0c;创建一个放项目的文件夹&#xff0c;控制台输入以下代码克隆项目 git clone 克隆地址gitee克隆地址在这看&#xff1a; github上项目的话&#xff0c;在这…

python数据分析中数据可视化简单入门

1.折线图表 首先引入相关包pyecharts&#xff0c;如果没下载可以先下载 pip install pyecharts from pyecharts.charts import Lineline Line() # 添加x轴 line.add_xaxis([呱了个呱,羊村,牟多,蜂地,喵帕斯]) # 添加y轴 line.add_yaxis("GDP",[50,30,40,34,63,22])…

第Y9周:重要模块解读

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 目录 以con.py为例&#xff1a; 一、autopad 二、Conv 三、Focus 四、C2f 文件…