如何搭建接口自动化测试框架?

news2024/10/7 4:35:08

经过了一年多的接口测试工作,旧的框架也做了一些新的调整,删除了很多冗余的功能,只保留了最基本的接口结构验证、接口回归测试、线上定时巡检功能。

一、框架的演进

  • 界面 UI 做了优化,整个框架的画风突然不一样了(人靠衣装马靠鞍 实话)

  • 加入了虚拟 DNS 切换技术
<dependency>
    <groupId>io.leopard</groupId>
    <artifactId>javahost</artifactId>
    <version>0.3-SNAPSHOT</version>
</dependency>

 

  • 可以动态配置 host 信息,对接口测试环境进行灵活切换
  • Dns dns = new DnsImpl();
  • dns.update(host,ip);
  • 更换了 http 请求调用层,改为 rest-assure TesterHome
  • 这块怎么说呢,因为 rest-assured 也是封装的 HttpClient,如果只是调用入口,优势就不那么明显了,但如果要对各节点进行验证那么 rest-assured 的优势还是非常明显的。
  • 但我们平台主要验证结构,jsonpath 验证对于空结点处理存在一些问题,还是沿用了旧的 JSonArray 包进行处理。
  • 框架抛弃了数据、业务逻辑的验证
  • 我们这边接口测试周期非常短,为了在有限的时间内完成测试任务,测试同学与服务端并行开发测试脚本,使用灰盒测试可以更加快速完成结构、数据、逻辑验证。(灰盒测试前期试行过程中发现此方法更适用于现有工作,所以框架抛弃了数据、业务逻辑的验证)
  • 为业务测试提供一些测试小工具
     

二、个人对自动化框架的看法

  1. 能够做好、落实一点或几点,就是成功的
  2. 能够为测试团队带来技术创新、测试质量或效率提高,就是成功的
  3. 一定要基于公司内部现状搞自动化
  4. 团队成员要达到统一认可、统一目标,一个人使劲一定比不过一群人使劲。
  5. 看到机会一定要抓住,再慢慢落实向前推进,执行过程中如不可行,一定要及时换路子......

公司看重的是结果,过程不重要。。。。。但是对于团队成员来说过程是重要的,经过一年多的摸爬滚打,我们团队也已经从最初的功能测试、自动化测试到现在的灰盒测试,白盒测试,慢慢转变成了一个从技术角度推进质量的测试开发团队。

不过话又说回来,有一个支持你的领导才是最重要的,起步最难,尤其是初期,建议先把团队的头拉到统一战线,后续工作才好进行!

前言

经过了一年的演进,旧的框架也做了一些新的调整,删除了很多冗余的功能,只保留了最基本的接口回归测试、线上定时巡检功能

加入了虚拟 DNS 切换技术

io.leopard
javahost
0.3-SNAPSHOT

可以方例的配置 host 信息,对接口测试环境进行灵活切换
Dns dns = new DnsImpl();
dns.update(host,ip);

更换了 http 调用层TesterHome

目前在做接口测试方面的工作,结合部门现状,初步整理及搭建了 api 的自动化测试框架,现在把我的思路、框架结构和大家分享出来,一方面希望可以为大家提供一些参考,另一方面也希望大家多提意见,以便测试框架的改进~~

主要目的:

1, 各版本用例管理
2, 结构验证、节点数据正确性校验
3, 简单业务逻辑覆盖
4, 各版本回归性测试
5, 线上环境监控及预警
6, 帮助开发、测试快速的执行接口测试,定位问题

大体构建流程:
一、.接口所涉及的信息都以数据结构形式进行存储。

1,对接口、接口的输入、输出参数进行数据存储(POST、GET)

 

 考虑到接口返回值一般都较庞大、逻辑关系较复杂,如果单靠人工进行采集的话工作量非常巨大,为了缓解压力提供了通过json串解析输出结构的功能。

二、测试用例与接口进行关联,(支持自动、手工 case;正常、异常状态校验)

将收集的输入、输出数据以树型结构展现,通过简单的勾选来完成测试用例的输入参数及预期输出结构进行关联生成测试用例。

除了支持对JSON结构的校验,同时集成了selenium,实现对返回值为HTML的页面进行规则校验的功能

 

三、测试用例的输入参数可配置,也支持与上行接口的输出参数进行关联。

可以配置上行接口,取得相应节点对应值,自动赋予当前用例接口参数。

 比如有些接口需要在登陆或其他的情况下去操作,那么就可以配置上行接口,模拟登陆,然后取得登陆key,用key做为参数去执行用例。
也支持选取规则配置中预先定义好的规则参数

四、接口多种模式执行方式。

提供多样的执行入口

 

将接口各用例的执行情况(接口耗时 、成功与否、失败原因、异常节点等)信息,记入日志管理模块,同时为测试人员提供测试结果查询页面,对测试结果做大体的分析,尽可能的帮助测试人员去定位接口中存在的问题。

对于频繁变动的接口,影响范围又比较模糊,完全可以以大版本进行自动化回归测试,排查影响范围,以减少人工遗漏。

五、支持各类验证规则配置(集合、长度、类型、格式等)

除了对输出结果进行简单的规则验证外,也支持输入参数集合绑定,可以对集合内所有项进行循环调用、循环验证排查。

六、日常巡检、线上预警功能

当接口打上巡检标识后,系统就会每天定时自动排查接口;同时协助线上环境监控及预警,自动生成预警邮件抄送相关负责人。

 1,所有测试人员都可以通过WEB页面对接口进行录入、测试、生成测试报告。
2,在HOST配置中加入测试、开发、生产的IP地址后,系统就可以根据人员自动执行不同环境下的测试任务。

 

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

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

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

相关文章

1688API技术解析,实现按图搜索1688商品(拍立淘)

一种可能的解决方案是使用图像识别和相似度匹配的算法。您可以通过将输入的图片与1688上的商品图片进行比对&#xff0c;找出最相似的商品。这涉及到图像特征提取、相似度计算以及数据库匹配等技术。您可以使用开源的图像处理库&#xff08;如OpenCV&#xff09;来进行图像处理…

38. 连续签到领金币数

文章目录 题目需求思路一实现一题目来源 题目需求 用户每天签到可以领1金币&#xff0c;并可以累计签到天数&#xff0c;连续签到的第3、7天分别可以额外领2和6金币。 每连续签到7天重新累积签到天数。 从用户登录明细表中求出每个用户金币总数&#xff0c;并按照金币总数倒…

无涯教程-分类算法 - Python实现函数

为了在Python中实现SVM&#xff0c;无涯教程将从标准库导入开始&#xff0c;如下所示- import numpy as np import matplotlib.pyplot as plt from scipy import stats import seaborn as sns; sns.set() 接下来&#xff0c;从sklearn.dataset.sample_generator创建具有线性可…

材料空间「填空解谜」:MIT 利用深度学习解决无损检测难题

内容一览&#xff1a;材料检测在工程、科学及制造业中扮演着至关重要的角色。传统的材料检测方法&#xff0c;例如切割和化学试剂检测具有破坏性&#xff0c;同时较为耗费时间和资源。近期&#xff0c;MIT 科学家利用深度学习开发了一种技术&#xff0c;能够填补缺失信息&#…

迁移学习:实现快速训练和泛化的新方法

文章目录 迁移学习的原理迁移学习的应用快速训练泛化能力提升 迁移学习的代码示例拓展应用与挑战结论 &#x1f389;欢迎来到AIGC人工智能专栏~迁移学习&#xff1a;实现快速训练和泛化的新方法 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈寒的博…

服务网格实施周期缩短 50%,丽迅物流基于阿里云 ACK 和 ASM 的云原生应用管理实践

作者&#xff1a;王夕宁、 刘强、 华相 公司介绍 丽迅物流是百丽旗下专注于时尚产业、为企业提供专业物流及供应链解决方案的服务商。其产品服务主要包括城市落地配、仓配一体、干线运输及定制化解决方案。通过自研智能化物流管理平台&#xff0c;全面助力企业合作集约化发展…

C++中前置++和后置++的详细讲解

参考链接&#xff08;链接讲的很全&#xff09;&#xff1a;C前置和后置的区别 对于迭代器和其他模板对象使用前缀形式 (i) 的自增, 自减运算符.&#xff0c;理由是 前置自增 (i) 通常要比后置自增 (i) 效率更高。 class Age { public: Age& operator() //前置 {…

c++ std::ref

ref 对于函数式编程&#xff08;如 std::bind&#xff09;&#xff0c;是对参数直接拷贝&#xff0c;而不是引用&#xff0c;std::ref的引入就是为了解决一些传参问题 ref是个函数模板&#xff0c;用来构建一个reference_wrapper对象并返回&#xff0c;该对象拥有传入的elem变…

day-33 代码随想录算法训练营(19) 贪心part03

1005.K次取反后最大化的数组和 思路一&#xff1a;求出正负数的个数&#xff0c;根据k值来进行取反 134.加油站 思路&#xff1a;考虑总油量和当前剩余油量&#xff0c;同时遍历两个数组&#xff0c;当前剩余油量小于0时&#xff0c;说明在 i 之前都无法出发。 135.分发糖果 …

yml基本语法与支持的数据格式

一、yml基本语法 1、yml文件以缩进代表层级关系 2、缩进不允许使用tab只能使用空格 3、空格的个数不重要&#xff0c;只要相同层级的元素左对齐即可 4、大小写敏感 5、数据格式为&#xff0c;名称:(空格)值 二、yml支持的数据格式 1、对象&#xff1a;键值对的集合(key:…

EDAS系统提交 | 编译报错显示 fonttype: Font DejaVuSans is of type Type 3.

目录 1. 问题&#xff1a;fonttype: Font DejaVuSans is of type Type 3. 2. 原因及解决&#xff1a;用python的matplotlib画的图片转出的pdf有问题&#xff0c;包含Type 3字体。 3. 具体解决过程&#xff1a;在用python代码画图时&#xff0c;添加一行代码&#xff0c;重新…

第八周第一天学习总结 | MySQL入门及练习学习第三天

实操练习 1.创建一个名为 lianxi 的数据库 2.在 lianxi 库内创建一个名为 xinxi 的数据表要求如下&#xff1a; 包含信息&#xff1a;编号&#xff0c;姓名&#xff0c;备注&#xff0c;籍贯&#xff0c;部门&#xff0c;公司。 3.给xinxi表添加相应信息&#xff1a; 4.查询…

kafka复习:(22)一个分区只能被消费者组中的一个消费者消费吗?

默认情况下&#xff0c;一个分区只能被消费者组中的一个消费者消费。但可以自定义PartitionAssignor来打破这个限制。 一、自定义PartitionAssignor. package com.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;import org.apache.kafka.clients.consumer.internals.Abstrac…

【环境配置】Android-Studio-OpenCV-JNI以及常见错误 ( 持续更新 )

最近一个项目要编译深度学习的库&#xff0c;需要用到 opencv 和 JNI&#xff0c;本文档用于记录环境配置中遇到的常见错误以及解决方案 Invalid Gradle JDK configuration found failed Invalid Gradle JDK configuration foundInvalid Gradle JDK configuration found. Open…

【Acwing905】区间选点贪心策略超清晰证明!!包含题解

题目描述 贪心策略 首先按右端点对区间进行排序 然后从左到右遍历每一个区间&#xff0c;如果这个区间还没有选中的点&#xff0c;那么就选择这个区间的右端点&#xff0c;否则就pass掉这个区间 举一个栗子 贪心策略证明 假设最少的选点数为&#xff1a;ans 利用上述贪心策…

【JUC基础】JUC入门基础

目录 什么是JUC线程和进程锁传统的 synchronizedLock 锁Synchronized 与 Lock 的区别 生产者和消费者问题Synchronized 版Lock版Condition 的优势&#xff1a;精准通知和唤醒线程 8 锁现象问题1&#xff1a;两个同步方法&#xff0c;先执行发短信还是打电话&#xff1f;问题2&a…

代码随想录刷题笔记 (python版本) 持续更新.....

代码随想录刷题笔记总结: https://www.programmercarl.com/ 个人学习笔记 如有错误欢迎指正交流1. 数组 1.1 理论基础 详细介绍:https://www.programmercarl.com/%E6%95%B0%E7%BB%84%E7%90%86%E8%AE%BA%E5%9F%BA%E7%A1%80.html 数组下标都是从0开始的。数组内存空间的地址是…

什么是亚马逊类目核心关键词?

亚马逊类目核心关键词是指在亚马逊平台上&#xff0c;与特定产品类别相关且具有较高搜索量和竞争度的关键词。这些关键词在产品标题、描述、属性和搜索关键字等位置使用&#xff0c;有助于提高产品的曝光度和搜索排名&#xff0c;并吸引潜在买家的注意。选择适当的核心关键词可…

@Configuration 注解的 Full 模式和 Lite 模式!

Configuration 注解相信各位小伙伴经常会用到&#xff0c;但是大家知道吗&#xff0c;这个注解有两种不同的模式&#xff0c;一种叫做 Full 模式&#xff0c;另外一种则叫做 Lite 模式。 准确来说&#xff0c;Full 模式和 Lite 模式其实 Spring 容器在处理 Bean 时的两种不同行…

Nacos基础(2)——nacos的服务器和命名空间 springBoot整合nacos 多个nacos配置的情况

目录 引出nacos服务器和命名空间Nacos服务器命名空间 springBoot整合nacosspringcloud Alibaba 版本与springcloud对应关系引包配置maincontroller 报错以及解决【报错】错误&#xff1a;缺少服务名称报错&#xff1a;9848端口未开放 启动测试引入多个nacos配置多个配置的情况没…