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

Jmeter和Testlink自动化测试框架研究与实施

摘 要

目前基于Jmeter的接口自动化测试框架,大多只实现脚本维护和自动调度,无法与Testlink进行互通,实现测试方案与自动化实施流程连接,本文基于Testlink、Jmeter、Jenkins实现:通过Testlink统一维护接口自动化测试用例,Jmeter编写和运行测试脚本,Jenkins实现统一调度,并返回执行结果和测试报告到Testlink。从而实现整个接口自动化测试框架,提高测试效率,降低后续维护成本。

1、引言

为了实现项目快速开发-测试-交付,测试需要在项目开发过程介入,进行接口级别测试,并输出自动化测试脚本,便于后续集成测试使用自动化测试保证每次BUG修复,没有引发新的问题,故需要研究一种自动化测试框架,满足目前项目测试的需求

2、目标

需求梳理如下:

1、     TestLink统一管理测试用例:因功能测试用例一直在Testlink上维护。

2、     接口测试工具满足需求的同时,易上手掌握

3、     测试脚本统一维护,如:SVN

4、     脚本运行时,需要结合Testlink测试计划分配用例,将自动化运行结果返回到Testlink。

5、     运行失败的接口,要自动提交到BUG系统

6、      测试结束后,生成测试报告,统计自动化测试总体情况,并邮件发送给项目相关人员。

7、      测试服务器的IP和端口变化后,在调度测试时统一指定测试IP和端口,避免测试脚本的重复修改

8、      测试框架可扩展到其他项目。

基于以上需求,梳理大致的目标图如下:

期望框架达到的效果:

若测试用例已经导入TestLink,且脚本已经设计完成并上传到SVN,则在web管理平台构建项目后,即可自动完成所有测试,并且项目可支持定时循环测试。

测试结束后,可自动提交BUG到BUG系统,测试人员只需对最后的结果进行确认即可。

图中中间部分:云计算管理平台接口自动化测试平台,则是本文应该要实现并达到的效果。

3、整体框架

以上是整体框架的思路介绍:

  • TestLink负责接口自动化用例维护
  • Jmeter则负责脚本编写和运行,统一通过SVN进行维护
  • 另外邮件收发服务器则根据内部情况灵活选择
  • 整个过程统一由Jenkins 进行调度管理;
  • BUG系统负责BUG管理,Jmeter脚本执行时,若失败,自动提交BUG到Build下。
4、技术关键

1、Testlink仅支持三种格式的结果返回:Junit、TestNG、TAP ,Jmeter生成报告无法直接通过Jenkins传递给Testlink,并正确识别。

2、TAP格式文件与Testlink中对应用例关联是通过.tap文件关联的,即:一个用例就需要一个TAP文件,但是测试结束后需要输出整体测试结果,必须要求Jmeter测试结束后,输出一个测试结果文档,如何将测试结果转化为TAP文件,且实现与用例一一对应。

5、实现思路

本章给出第4章提到键技术点的解决,在说明前,需要以下前提准备:

1、 规范化Jmeter脚本中的规范要求:

1) HTTP Sample命名规范为:

2) 如果1条用例对应有多个HTTP Sample,需要使用事务处理器,这时事务处理器名称必须符合1)的命名规范,事务控制器内的HTTP Sample可以任意命名,但建议按照:【用例名称:可修改内容】形式进行命名

3)如果1条用例对应1个HTTP Sample,不强制使用事务处理器

4) 每一个HTTP Sample最好都要有断言,判断是否执行成功,若没有断言,无法判断是否符合预期,则转换脚本默认为成功。

5)事务控制器内:最好不要再套用事务控制器,若需要建议使用简单控制器或者一次性控制器等

2、 TestLink上增加自定义字段,用于标记用例与脚本的对应关系,如:AutoTest,AutoTest字段内容则为:上述中的用例编号,用以将Testlink测试用例与脚本测试结果关联对应

3、 TestLink上自动化的用例执行方式设置为:自动的

4、上述括号和冒号为英文字符,且命名中不要出现空格,否则会出现异常

5.1、脚本批量调用实现思路

Jmeter作为测试工具,仅输出测试脚本,若要形成框架持续集成,需要进行批量调用,并且可以统一配置脚本的全局参数,如:接口服务器地址、端口、默认登录用户名和密码等;

Ant是Apache软件基金会JAKARTA目录中的一个子项目,操作简单。Ant是由一个内置任务和可选任务组成的。Ant运行时需要一个XML文件(构建文件)。Ant通过调用target树,就可以执行各种task。每个task实现了特定接口对象。由于Ant构建文件时XML格式的文件,所以和容易维护和书写,而且结构很清晰。

故直接使用Ant+Jmeter来实现接口测试脚本的批量调用,目前需要解决的问题就是,Jmeter脚本运行时,从Ant获取HTTP请求默认值中的服务器IP、端口信息,以便后续服务器地址变更后,不会影响接口测试脚本,减少维护的工作量。

主要实现见下图:

按照图中的流程配置,每次需要自动运行时,在Jenkins上配置TEST_URL的参数后,接口测试则使用该访问地址,进行测试,若后续服务器的IP修改后,只需要在Jenkins上配置即可快速完成测试环境的切换。

5.2、测试结果回传思路

以下则是XML2TAP.sh的设计思路,根据以下思路输出sh脚本

5.2、具体实施过程

具体的实施过程,如下述图所示:

1. Jenkins每次执行时,首先从SVN指定目录,检查是否有用例更新,若有,则下载所有更新测试脚本到工程目录

2. 通过API key与Testlink建立关联,并获取工程配置的测试项目对应测试计划下的自动化测试用例信息。

3. 调用Ant Plugin插件,通过build.xml配置,执行所有的Jmeter脚本文件,并生成XML格式测试报告:1份。

4、Jmeter脚本执行期间,若有失败的接口用例,自动提交BUG到BUG系统

5. 对XML测试报告进行二次处理,调用XML2HTML.xsl样式表,生成HTML格式测试报告,用于邮件发送完整的测试报告和jenkins上发布测试结果。

6. 对XML测试报告进行转换,调用XML2TAP.sh脚本,对XML中每一个Sample结果进行处理,生成Testlink可识别的TAP文件,以用例为单位,生成多个tap文件。

7. 将tap文件与第二步中获取的自动化用例信息对应,返回测试结果及测试报告到Testlink。

8. 将第五步生成的测试报告邮件发送给相关人员。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

相关文章:

Jmeter和Testlink自动化测试框架研究与实施

摘 要 目前基于Jmeter的接口自动化测试框架,大多只实现脚本维护和自动调度,无法与Testlink进行互通,实现测试方案与自动化实施流程连接,本文基于Testlink、Jmeter、Jenkins实现:通过Testlink统一维护接口自动化测试用…...

MethodArgumentNotValidException 与 ConstraintViolationException

MethodArgumentNotValidException 和ConstraintViolationException 都是用于处理参数校验异常的异常类,但它们在不同的上下文中使用。 1. MethodArgumentNotValidException: - MethodArgumentNotValidException 是在 Spring MVC 或 Spring Boot 中处…...

【数学】旋转矩阵

参考链接 OpenGL from OpenGL.GL import * from OpenGL.GLUT import * from math import * import numpy as np def draw_axes():glClear(GL_COLOR_BUFFER_BIT)# 绘制坐标轴glColor3f(1.0, 1.0, 1.0) # 设置坐标轴颜色为白色glBegin(GL_LINES)glVertex2f(-1.0, 0.0) # x 轴g…...

Python与设计模式--中介者模式

23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...

后台管理系统开源项目

最近项目没有什么事做,就自己整理,修改了一些vue2,react的后台管理系统项目,方便以后有需要可以直接提取,当然也方便了大家 vue2技术栈 lyl-vueProjectAdmin: vue2后台管理系统 react技术栈 lyl-reactAdminProject:…...

电子印章管理系统:是什么、3个平台推荐

说到印章,相信看过近现代电视剧的人都见过,一般在订立合约时最常用到,双方在合约上加盖印鉴,即代表着合约的成立。 我小时候还见过我父亲的印章,只是随着时代的发展,印章因为不易携带,容易被盗…...

现货黄金区间交易的两个要点

在现货黄金市场中,我们常碰到横盘区间行情。有区间,就终究会出现突破,因为金价不可能缺乏方向而一直在区间内运行。那既然要突破,我们又应当如何应对和交易呢?下面我们就来讨论一下。 切忌在突破发生时马上跟随突破方向…...

安卓底部导航栏BottomNavigationView

目录 1. BottomNavigationView (1) 准备BottomNavigationView使用的菜单资源文件 (2) 准备颜色选择器 (3) BottomNavigationView控件设置 (4) 在Java代码中设置OnItemSelectedListener监听器 (5) 与Fragment配合 2. BottomTabBar 实现安卓底部导航栏,google为…...

rust每日一库 rand 生成随机数

文章目录 生成随机值生成随机数生成范围内随机数生成自定义类型随机值从一组字母数字字符创建随机密码从一组用户定义字符创建随机密码 总结 生成随机值 rust中官方并没有像以他语言一样,rust并没有官方并没有提供生成随机数的工具,所以我们要借助rand包…...

Unity SRP 管线【第三讲:URP 光照】

3.2.3 以前属于Shader部分,Shader部分不进行讲解。 这里只涉及Unity内部管线的设置问题。 文章目录 3.2.3 向GPU发送灯光数据设置光源数据设置主光源设置额外点光源 Shader中的数据 3.2.3 向GPU发送灯光数据 在UniversalRenderPipeline.cs > RenderSingleCamera…...

怎么更新BI报表数据?问我就对了

BI大数据分析工具上有大量的BI报表模板,这些模板都是一个个完整的BI报表,只需将数据源更换,立即就能用来分析我们自己的数据。那,BI报表的数据怎么更新?接下来就来说说这事。 目的:更新BI报表数据 工具&a…...

SpringBoot 入门学习

开发环境配置 JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2 框架介绍 Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置…...

高等数学零基础篇复习笔记

预备章 零基础高等数学入门知识 第一节 集合、运算与关系 第二节 三角函数与反三角函数 三角函数的公式 反三角函数 第三节 常见不等式及数列 划重点 第一章 函数、极限与连续 第一节 函数及函数的初等特性 特殊函数 反函数 函数的初等特性 ①有界性 ②奇偶性 偶函数图像…...

CentOS 系列:CentOS 7文件系统的组成

CentOS 7文件系统的组成 文件系统的组成Linux的一些重要目录文件和目录名主机名文件权限绝对路径和相对路径绝对路径相对路径 文件系统的组成 一切从根开始 文件路径中只有第一个/是根目录,后面的/是分隔符 文件名区分大小写 除斜线(/)以外,其他的字符…...

String转Date,Date转String

源码: Date currentTime new Date();System.out.println("currentTime:"currentTime);SimpleDateFormat formatter new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String dateString formatter.format(currentTime);System.out.println(&quo…...

大坝安全监测的内容及作用

大坝安全监测是指对大坝水雨情沉降、倾斜、渗压以及大坝形状特征有效地进行监测,及时发现潜在的安全隐患和异常情况,以便大坝管理人员能够做出科学决策,以确保大坝安全稳定运行。 大坝安全监测的主要内容 1.表面位移监测:监测大坝…...

Maven——Maven发展历程

本帖主要介绍以下内容: 什么是Maven为什么需要MavenMaven与极限编程 1、什么是Maven Maven这个词可以翻译为“知识的积累”,也可以翻译为“专家”或“内行”。Maven是跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,Mav…...

Python与设计模式--迭代器模式

23种计模式之 前言 (5)单例模式、工厂模式、简单工厂模式、抽象工厂模式、建造者模式、原型模式、(7)代理模式、装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式、(11)策略模式、责任链模式、命令模式、中介者模…...

【NGINX--8】HTTP/2

1、基本配置 想要利用 HTTP/2。 在 NGINX 服务器上启用 HTTP/2: server {listen 443 ssl http2 default_server;ssl_certificate server.crt; ssl_certificate_key server.key;# ... }详解 要启用 HTTP/2,您只需要将 http2 参数添加到 listen 指令即可…...

webpack项目工程初始化

一、初始化项目 默认系统已经安装node //初始化 pnpm init//安装webpack pnpm i -D webpack webpack-cli 新建一个index.html的入口文件 新建一个src文件存放js代码,src里面新建一个index.js package.josn配置打包命令 {"name": "webpack-cs&q…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

嵌入式学习之系统编程(九)OSI模型、TCP/IP模型、UDP协议网络相关编程(6.3)

目录 一、网络编程--OSI模型 二、网络编程--TCP/IP模型 三、网络接口 四、UDP网络相关编程及主要函数 ​编辑​编辑 UDP的特征 socke函数 bind函数 recvfrom函数&#xff08;接收函数&#xff09; sendto函数&#xff08;发送函数&#xff09; 五、网络编程之 UDP 用…...

DiscuzX3.5发帖json api

参考文章&#xff1a;PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下&#xff0c;适配我自己的需求 有一个站点存在多个采集站&#xff0c;我想通过主站拿标题&#xff0c;采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...

node.js的初步学习

那什么是node.js呢&#xff1f; 和JavaScript又是什么关系呢&#xff1f; node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说&#xff0c; 需要在node.js的环境上进行当JavaScript作为前端开发语言来说&#xff0c;需要在浏览器的环境上进行 Node.js 可…...

CentOS 7.9安装Nginx1.24.0时报 checking for LuaJIT 2.x ... not found

Nginx1.24编译时&#xff0c;报LuaJIT2.x错误&#xff0c; configuring additional modules adding module in /www/server/nginx/src/ngx_devel_kit ngx_devel_kit was configured adding module in /www/server/nginx/src/lua_nginx_module checking for LuaJIT 2.x ... not…...

Neo4j 完全指南:从入门到精通

第1章&#xff1a;Neo4j简介与图数据库基础 1.1 图数据库概述 传统关系型数据库与图数据库的对比图数据库的核心优势图数据库的应用场景 1.2 Neo4j的发展历史 Neo4j的起源与演进Neo4j的版本迭代Neo4j在图数据库领域的地位 1.3 图数据库的基本概念 节点(Node)与关系(Relat…...

在ubuntu等linux系统上申请https证书

使用 Certbot 自动申请 安装 Certbot Certbot 是 Let’s Encrypt 官方推荐的自动化工具&#xff0c;支持多种操作系统和服务器环境。 在 Ubuntu/Debian 上&#xff1a; sudo apt update sudo apt install certbot申请证书 纯手动方式&#xff08;不自动配置&#xff09;&…...