当前位置: 首页 > news >正文

系统接口自动化测试方案

XXX接口自动化测试方案

1、引言

  1.1 文档版本

版本

作者

审批

备注

V1.0

XXXX

创建测试方案文档

  1.2 项目情况

项目名称

XXX

项目版本

V1.0

项目经理

XX

测试人员

XXXXX,XXX

所属部门

XX

备注

  1.3 文档目的

    本文档主要用于指导XXX-YY项目常用接口自动化测试工作的开展。本文档的主要目的在于提供项目接口自动化测试的技术方案、实施方案和计划方案等。

2、接口自动化实施目标

  2.1 实施原则

    XXX-YY项目采用接口自动化测试,主要目的是为了应对迭代版本测试过程中的重复工作任务,以期达到效果如下:

  • 降低测试成本
  • 提高测试效率
  • 更频繁地执行覆盖重要接口
  • 提供更高的准确性和一致性
  • 节约时间成本

  虽然能达到上述预期效果,但实际实施过程中需要注意的是,接口自动化的高效应用,对于被测系统有着更高的要求,也需要遵循合理的方法流程,现总结如下:

  • 接口自动化的实施应该被用于解决测试过程中高重复性的工作,很大一部分是用于回归测试老的功能接口,否则其本身工作量投入会大于其收益,所以不能盲目对所有接口或功能追求自动化。
  • 对于提测版本,自身稳定性需要有一定程度的保障。过于频繁的接口变动,会加大后续接口自动化的实施难度,增加自动化脚本维护地成本。
  • 接口自动化的整体实现应采用分布进行,测试过程中优先覆盖功能稳定且比较重要的接口,进而逐步扩展到整体项目的接口回归。
  • 接口自动化测试是一个长期的过程,随着项目版本的不停迭代优化,项目本身的接口也会不断优化或新开发,所以后续自动化测试脚本的代码维护和调优也具有可观的工作量。

  2.2 接口自动化测试范围

    系统范围:

自动化实施阶段

被测模块

功能接口范围

第一阶段

登录获取token,YY标签页

第二阶段

    阶段范围:

      这里我们优先测试一下登录的接口和一些插入XXX功能的接口。

  2.3 接口自动化测试任务

  • 制定测试方案

脚本编码前,需要对项目有一个整体把握,合理预估接口数量与复杂度。结合版本迭代时间,预估自动化脚本开发时间,并制定出相应的接口自动化测试方案。

  • 提取分析测试点

根据前面写好的接口自动化测试范围,分析每个接口的测试点,包含请求方式,传入参数,请求头,返回状态,返回数据等。这个过程中,需要和相对应的开发对接清楚在测试范围内的接口的相关信息,并提前在postman中逐一确认调通,必要时生成相应的测试文档或编写进入测试用例中。

  • 搭建测试框架

    此次接口自动化测试框架采用的是以Python语言为脚本开发语言,选用unittest接口测试框架。目的希望达成可配置,能自动运行脚本,自动生成测试报告并将生成的测试报告发送到指定邮件。

  • 编写脚本代码

    脚本首次实现不需要覆盖到每个接口。先预计挑选几个重要接口进行覆盖测试,等整体测试框架搭建好后,整体流程确认调通无误后,再后续维护完善脚本,覆盖更多的功能接口。

  • 持续集成

    同上,初次脚本代码完成后,需要对现有自动化脚本进行升级持续集成开发,不断完成尚未覆盖到的接口,将这些接口加入到自动化测试的范围内,使得整体自动化程度进一步加深,更大程度上节约人力和时间成本。

  • 脚本维护

    脚本维护是在整体自动化脚本阶段性完成后,将现有生成的交付物归档整理好给相应的负责人管理,并进行阶段性的更新整理维护。包含项目日常版本迭代维护过程中对接口有改动的部分,和后续新加入接口得自动化覆盖等。

3、接口自动化技术选型

  3.1 整体体系

    结合测试金字塔(从下到上依次是:单元测试,服务测试,用户界面测试)以及XXX-YY项目本身的流程特性考量,本次自动化实现主要是以接口自动化的形式来开展。整个自动化脚本以 Python3.X 中 requests 库为核心机制,以 unittest 为测试组织,以 HTMLTestRunner 生成最终测试报告,Jenkins 实现持续集成,并选取 Python3.X 作为编程语言实现。

 

  3.2 核心技术

    3.2.1 接口自动化执行库--Requests

    首先,Requests 是使用 Python 语言编写,基于 urllib,采用 Apache2 licensed 许可证的 HTTP 库。它比一般的 urllib 等库更加方便、简洁,可以节约我们大量的工作,完全满足HTTP 测试需求,总结为一句话:Requests 是 Python 实现的简单易用的 HTTP 库。其次,Requests 库安装和导入非常方便。

    pip3 install requests  ## 安装 Requests 库

    import requests ## 导入 Requests 库到项目中

    我们可以使用该库实现以下各种方法:

    requests.get("https://url.cn")              # GET请求

    requests.post("http://url.cn")              # POST请求

    requests.put("http://url.cn")               # PUT请求

    requests.delete("http://url.cn")            # DELETE请求

    requests.head("http://url.cn")              # HEAD请求

    requests.options("http://url.cn")           # OPTIONS请求

    3.2.2 测试组织和断言机制--unittest

    unittest 模块是 Python 中自带的一个单元测试模块,我们可以用来做接口自动化代码级别的测试组织和断言机制。其中比较重要的小组件模块有:TestCase,TestSuit,TestLoader,TextTestRunner,TextTestResult等。

    TestCase:用来编写逐条的测试用例,是所有测试用例的基类,他是 unittest 模块中最基本的组成单元。一个 testcase 就是一个测试用例,是一个完整的测试流程,包括测试前的环境搭建准备 setUp,执行测试代码和断言机制,以及测试一条用例完成后的环境还原 tearDown 等。

    TestSuit:多个TestCase就组成了一个TestSuit(测试用例集),这是用来存放一条一条测试用例的集合。

    TestLoader:是用来将逐条的测试用例 TestCase 加载到用例集合 TestSuit 中,其中加载的方式有多种,就是从脚本项目中寻找到单独的用例,创建他们的实例,然后加载到一起,组成TestSuit,再返回一个TestSuit的实例。

    TextTestRunner:是用来执行用例集 TestSuit 中的测试用例。

    TextTestResult:用来保存测试结果,包含执行了多少条测试用例,成功与失败用例的条数等信息。

    示意图如下(网络来源图):

 

    3.2.3 测试报告生成--HTMLTestRunner

    当我们批量执行完用例集 TestSuit 中的接口用例后,生成的测试报告是dos端文本格式展示的,不是很直观,这里我们引入一个第三方库--HTMLTestRunner,使用这个第三方库我们可以生产成 HTML 网页格式的测试报告。

 

    3.2.4 持续集成机制--Jenkins

    这里我们脚本持续集成选择  Jenkins 来实现,通过使用 Jenkins,我们能够实现脚本自动化执行,包含定时执行自动化测试脚本,和自动化脚本运行后的测试报告发送到指定的邮箱中。

  3.3 框架思想

    3.3.1 封装思想

    整个接口自动化测试脚本采用面向对象的封装思想,尽量将一些可配置的模块单独提取出来,便于后续操作配置,使得整体项目更加灵活多变,便于后续地迭代维护和二次开发。封装思想主要体现在测试环境可配置,测试用例可导入,测试数据和脚本分离,文件路径采用相对路径表示等,具体我们会在实际编码分层中得到体现。

    3.3.2 数据驱动实现

    数据驱动这里我们采用的是 Python 中的装饰器--DDT(Data Driven Tests)来体现。通过他我们可以复用我们的脚本代码,达到数据驱动测试的目的。官方对DDT的描述是:DDT(数据驱动测试)允许您通过使用不同的测试数据运行一个测试用例,并使其显示为多个测试用例。

  

4、测试环境需求

  4.1 硬件环境

  目前暂未涉及到性能相关或者需要分布式执行的内容,因此对硬件要求不是很高,日常办公硬件即可。如果后续有涉及性能相关内容,硬件环境需要再另外的性能测试方案中体现。

  4.2 软件环境

软件相关

版本号

备注

Python

v3.7

脚本编码语言为 Python3.x

PyCharm

v2016.3.3

5、人员进度安排

  5.1 职责分配

组别/人员

职责

备注

  5.2 进度安排

测试任务

负责人

开始时间

备注

自动化测试方案制定

接口用例编写

自动化测试环境搭建

自动化测试框架搭建

自动化脚本代码编写

持续集成实现

测试报告输出

脚本二次维护开发

  5.3 交付物管理

交付物

负责人

备注

《自动化测试方案》

自动化框架

自动化脚本代码

测试执行报告

  总结:

感谢每一个认真阅读我文章的人!!!

 我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦

相关文章:

系统接口自动化测试方案

XXX接口自动化测试方案 1、引言 1.1 文档版本 版本 作者 审批 备注 V1.0 XXXX 创建测试方案文档 1.2 项目情况 项目名称 XXX 项目版本 V1.0 项目经理 XX 测试人员 XXXXX,XXX 所属部门 XX 备注 1.3 文档目的 本文档主要用于指导XXX-Y…...

小研究 - JVM 垃圾回收方式性能研究(一)

本文从几种JVM垃圾回收方式及原理出发,研究了在 SPEC jbb2015基准测试中不同垃圾回收方式对于JVM 性能的影响,并通过最终测试数据对比,给出了不同应用场景下如何选择垃圾回收策略的方法。 目录 1 引言 2 垃圾回收算法 2.1 标记清除法 2.2…...

[LeetCode]链表相关题目(c语言实现)

文章目录 LeetCode203. 移除链表元素LeetCode237. 删除链表中的节点LeetCode206. 反转链表ⅠLeetCode92. 反转链表 II思路 1思路 2 LeetCode876. 链表的中间结点剑指 Offer 22. 链表中倒数第k个节点LeetCode21. 合并两个有序链表LeetCode86. 分隔链表LeetCode234. 回文链表Leet…...

[深入理解NAND Flash (操作篇)] NAND 初始化常用命令:复位 (Reset) 和 Read ID 和 Read UID 操作和代码实现

依JEDEC eMMC及经验辛苦整理,原创保护,禁止转载。 专栏 《深入理解Flash:闪存特性与实践》 内容摘要 全文 4400 字,主要内容 复位的目的和作用?   NAND Reset 种类:FFh, FCh, FAh, FDh 区别 Reset 操作步骤 和 代码实现 Read ID 操作步骤 和 代码实现 Read Uni…...

RxJava 复刻简版之二,调用流程分析之案例实现

接上篇:https://blog.csdn.net/da_ma_dai/article/details/131878516 代码节点:https://gitee.com/bobidali/lite-rx-java/commit/05199792ce75a80147c822336b46837f09229e46 java 类型转换 kt 类型: Any Object泛型: 协变: …...

SpringMVC中Model和ModelAndView的区别

SpringMVC中Model和ModelAndView的区别 两者的区别: 在SpringMVC中,Model和ModelAndView都是用于将数据传递到视图层的对象 Model是”模型“的意思,是MVC架构中的”M“部分,是用来传输数据的。 理解成MVC架构中的”M“和”V“…...

Tomcat安装与管理

文章目录 Tomcat安装及管理Tomcat gz包安装:JDK安装:Tomcat安装:修改配置文件(如下):服务启动配置: Tomcat-管理(部署jpress):修改允许访问的主机修改允许管理APP的主机进入管理&…...

React之路由

React之路由 背景: react: 18.2.0 路由:react-router-dom: 6.14.2 1、路由表配置 src下新建router/index.ts import React, { lazy } from react import { Navigate } from react-router-dom import Layout from /layout/Index import { JSX } from rea…...

机器学习深度学习——非NVIDIA显卡怎么做深度学习(坑点排查)

👨‍🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——数值稳定性和模型化参数(详细数学推导) 📚订阅专栏:机器…...

2021 Robocom 决赛 第四题

原题链接: PTA | 程序设计类实验辅助教学平台 题面: 在一个名叫刀塔的国家里,有一只猛犸正在到处跑着,希望能够用它的长角抛物技能来撞飞别人。已知刀塔国有 N 座城市,城市之间由 M 条道路互相连接,为了拦…...

线程池-手写线程池Linux C简单版本(生产者-消费者模型)

目录 简介手写线程池线程池结构体分析task_ttask_queue_tthread_pool_t 线程池函数分析thread_pool_createthread_pool_postthread_workerthread_pool_destroywait_all_donethread_pool_free 主函数调用 运行结果 简介 本线程池采用C语言实现 线程池的场景: 当某些…...

05-向量的意义_n维欧式空间

线性代数 什么是向量?究竟为什么引入向量? 为什么线性代数这么重要?从研究一个数拓展到研究一组数 一组数的基本表示方法——向量(Vector) 向量是线性代数研究的基本元素 e.g. 一个数: 666,…...

交通运输安全大数据分析解决方案

当前运输市场竞争激烈,道路运输企业受传统经营观念影响,企业管理者安全意识淡薄,从业人员规范化、流程化的管理水平较低,导致制度规范在落实过程中未能有效监督与管理,执行过程中出现较严重的偏差,其营运车…...

vimrc 配置 (持续跟新中)

vimrc 配置 #显示行号 set nu #自动换行 set autoindent #设置tab键 宽度为四个空格 set tabstop4 set shiftwidth4 set expandtab更多文章,详见我的博客网站...

【集成学习介绍】

1. 引言 在机器学习领域,集成学习(Ensemble Learning)是一种强大的技术,通过将多个弱学习器组合成一个更强大的集成模型,来提升模型的鲁棒性和性能。 2. 集成学习的原理 集成学习的核心思想是“三个臭皮匠&#xff…...

动画制作选择Blender还是Maya

Blender和Maya是两种最广泛使用的 3D 建模和动画应用程序。许多经验丰富的用户表示,Blender 在雕刻工具方面远远领先于 Maya,并且在 3D 建模方面达到了相同的质量水平。对于刚接触动画行业的人来说,您可能会问“我应该使用 Blender 还是 Maya…...

215. 数组中的第K个最大元素

题目链接:力扣 解题思路: 方法一:基于快速排序 因为题目中只需要找到第k大的元素,而快速排序中,每一趟排序都可以确定一个最终元素的位置。 当使用快速排序对数组进行降序排序时,那么如果有一趟排序过程…...

NLP From Scratch: 生成名称与字符级RNN

NLP From Scratch: 生成名称与字符级RNN 这是我们关于“NLP From Scratch”的三个教程中的第二个。 在<cite>第一个教程< / intermediate / char_rnn_classification_tutorial ></cite> 中&#xff0c;我们使用了 RNN 将名称分类为来源语言。 这次&#xff…...

Spring MVC程序开发

目录 1.什么是Spring MVC? 1.1MVC定义 1.2MVC和Spring MVC的关系 2.为什么要学习Spring MVC? 3.怎么学Spring MVC? 3.1Spring MVC的创建和连接 3.1.1创建Spring MVC项目 3.1.2RequestMapping 注解介绍 3.1.3 RequestMapping 是 post 还是 get 请求&#xff1f; ​…...

医疗知识图谱问答——文本分类解析

前言 Neo4j的数据库构建完成后&#xff0c;现在就是要实现医疗知识的解答功能了。因为是初版&#xff0c;这里的问题解答不会涉及深度学习&#xff0c;目前只是一个条件查询的过程。而这个过程包括对问题的关键词拆解分类&#xff0c;然后提取词语和类型去图数据库查询&#xf…...

【MobaXterm进阶】SSH连接稳定性优化:Keepalive与超时设置详解

1. 为什么SSH连接会频繁断开&#xff1f; 很多朋友在用MobaXterm远程连接服务器时都遇到过这样的困扰&#xff1a;明明连接得好好的&#xff0c;过一会儿就莫名其妙断开了。特别是当你正在执行一个耗时较长的任务时&#xff0c;突然中断简直让人抓狂。这种情况在家庭版用户中尤…...

被百度网盘限速逼疯了?用这款开源工具让下载速度提升70倍

被百度网盘限速逼疯了&#xff1f;用这款开源工具让下载速度提升70倍 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS &#x1f575;️‍♂️ 问题溯源&…...

django做动态【个人主页】

一、项目概述与目标动态个人主页的定义与核心功能&#xff08;博客展示、项目集、联系表单等&#xff09;Django框架的优势&#xff08;MTV模式、ORM、Admin后台等&#xff09;技术栈预览&#xff08;Python 3.x, Django 3.x, Bootstrap 5, SQLite/PostgreSQL&#xff09;二、环…...

高速公路能耗管理系统方案

对高速公路运营商来说&#xff0c;面对隧道、收费站、服务区等各类站点&#xff0c;仅仅了解电力公司的缴费数据是不够的。由于缺乏用能过程的明细数据&#xff0c;无法进行有效的能耗分析和成本分析&#xff0c;导致节能策略无从实施&#xff0c;影响到企业的经营效益。现场已…...

【Java微服务Istio配置黄金法则】:20年架构师亲授5大避坑指南与生产级配置模板

第一章&#xff1a;Java微服务Istio配置的核心认知与演进脉络Istio 作为云原生服务网格的事实标准&#xff0c;其配置体系并非孤立存在&#xff0c;而是深度耦合于 Java 微服务的生命周期、通信契约与可观测性需求。早期 Spring Cloud Netflix 生态依赖客户端库&#xff08;如 …...

从图像处理到推荐系统:特征值不等式在工程中的5个妙用

从图像处理到推荐系统&#xff1a;特征值不等式在工程中的5个妙用 在工程实践中&#xff0c;数学工具往往能带来意想不到的优化效果。特征值不等式作为线性代数中的重要结论&#xff0c;其应用范围远超理论推导&#xff0c;能解决图像处理、推荐系统等多个领域的实际问题。本文…...

Windows Cleaner终极攻略:系统优化与空间释放完整指南

Windows Cleaner终极攻略&#xff1a;系统优化与空间释放完整指南 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服&#xff01; 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner Windows Cleaner是一款专为Windows系统设计的开…...

【RT-DETR涨点改进】TGRS 2026 | 全网独家创新、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 STSAM协同时空注意力融合模块 改进RT-DETR网络模型,STSAM 是 空间域特征增强模块,通过全局跨时相注意力和局部坐标注意力的并行处理,能有效聚焦真实变化目标,强化边界和结构细节,同时兼顾训练稳定性,为后续浅层特征融合提供高质量特…...

AQ智商测试

AQ逆商测试结果分析&#xff08;PSYTOPIC版&#xff09; Psytopic分析&#xff1a;您的AQ得分是 168 &#xff0c;在人群中属较高水平 。 以下是PSYTOPIC为您提供的分析参考&#xff1a; 你能面对现实&#xff0c;对来自工作和生活中的困难应对自如&#xff0c;并敢于迎接逆境…...

企业级数据治理最后一公里:Polars 2.0清洗审计日志、血缘追踪与合规性验证(GDPR-ready)

第一章&#xff1a;企业级数据治理最后一公里&#xff1a;Polars 2.0清洗审计日志、血缘追踪与合规性验证&#xff08;GDPR-ready&#xff09;在现代数据平台中&#xff0c;审计日志的结构化清洗与可追溯性验证常成为数据治理落地的瓶颈。Polars 2.0 凭借其零拷贝惰性执行引擎、…...