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

news2024/12/26 14:51:48

摘 要

目前基于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. 将第五步生成的测试报告邮件发送给相关人员。

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

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

相关文章

搭建es集群

单点es的缺点:1.存储数据有限;2.单点故障问题(es出现故障则整个服务会直接宕机) 解决存储数据有限:搭建多台es服务器实现集群 解决单点故障:在不同的es服务器中进行备份数据(例:在…

车载测试需要有哪些知识需要学习的?

一、车载行业前景 其中的车载测试也随着国家对新能源、智能驾驶等领域的支持,而异常活跃,目前我国共有9000家自动驾驶相关企业,而今年从华为、中兴、大唐等通信领域的企业到以阿里、腾讯、小米等为代表的互联网企业,均已布局自动…

浅谈继承和发扬传统文化路径

中华民族五千年文明历史,造就了博大精深的中华传统文化。如何继承和发扬传统文化,是当代文化爱好者和工作者所关注的,实现这一使命,文化传承需要在以下路径上发力: 1. “微更新”路径。在传承的基础上进行融合拓展,实现内涵丰富和更新。 2. “强保护”路径。利用立…

空压机远程监控系统解决方案

一、项目背景 随着物联网各种技术快速发展,各物联网远程监测应用场景也应用而生,空压机是一种空气压缩和气体输送设备,广泛运用于矿山、机械、电子、医疗等各行业。空压机常规都是需要人在现场监测和维护,现在通过物联网技术,远程监控成为可能&#xff…

利用Msray-plus提升SEO工作效率和效果

随着互联网的不断发展和普及,SEO(搜索引擎优化)已经成为了网站推广和营销的重要手段之一。SEO的核心是通过优化网站的结构、内容和关键词等,提高网站在搜索引擎中的排名,从而吸引更多的访问量和潜在客户。然而&#xf…

多通道振弦传感器无线采集采集仪如何开始使用

多通道振弦传感器无线采集采集仪如何开始使用 开始使用 设备电源 VS208~432 可使用内置电池(默认)也可使用外部电池工作。 需要特别注意:严禁内置和外部电池(电源)同时使用,严重时会造成短路起火&#xff0…

宝塔搭建chevereto图床

前言 chevereto是一个国外开发的图床,使用phpnginxmysql搭建的,使用宝塔面板更方便搭建chevereto图床,chevereto有收费和免费版本 准备环境 宝塔面板,百度网上很多教程,一键安装.chevereto安装包,本次使…

Cadence Allegro PCB设计88问解析(二十七) 之 Allegro中dimension environment命令使用(添加及删除尺寸标注)

一个学习信号完整性仿真的layout工程师 在通常的设计中,一般会在outline的光绘层中添加单板或则拼版外形的尺寸大小。方便板厂人员查看,但是尺寸标注的添加涉及到尺寸单位、精度等,要根据公司的标准添加。如果需要修改尺寸的参数,…

nssctf web 入门(7)

这里通过nssctf的题单web安全入门来写,会按照题单详细解释每题。题单在NSSCTF中。 想入门ctfweb的可以看这个系列,之后会一直出这个题单的解析,题目一共有28题,打算写10篇。 [SWPUCTF 2021 新生赛]hardrce [SWPUCTF 2021 新生赛…

【快乐手撕LeetCode题解系列】——环形链表

【【快乐手撕LeetCode题解系列】——移除链表元素😎前言🙌环形链表🙌画图分析:😍思路分析:😍源代码分享:😍总结撒花💞😎博客昵称:博客…

python简单认识一下字面量并尝试编写输出字面量在控制台

首先 还是顾名思义 什么是字面量? 在代码中写下来的固定的值 我们称之为 字面量 python的字面量主要是以下几种 当然 前期不需要那么急 我们先熟悉 数字类型中的 整数 浮点数 和字符串类型 然后后续再慢慢扩展即可 整数呢 就相当于 我们数学中的 正整数 例如 1 10…

Compose (10/N) - 动画

一、高级别动画 1.1 简单值动画 animate***AsState 为单个值添加动画。只需要指定目标值,会从当前值向目标值渐变。 animateColorAsStateanimateDpAsStateanimateSizeAsStateanimateOffsetAsStateanimateRectAsState animateIntAsState animateIntOffsetAsState an…

【机会约束、鲁棒优化】机会约束和鲁棒优化研究优化【ccDCOPF】研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【数据挖掘与商务智能决策】第十章 支持向量机

1. 线性可分SVM import numpy as np import pandas as pd import matplotlib.pyplot as plt%matplotlib inline1.1 生成模拟数据 # 导入sklearn模拟二分类数据生成模块 from sklearn.datasets import make_blobs # 生成模拟二分类数据集 X, y make_blobs(n_samples150, n_f…

SIP协议之RTP负载类型(payload type)

一、RTP负载类型介绍​ 在SIP 音视频通话中,媒体数据是由RTP包携带的, RTP包中的PT字段标识了负载媒体数据的类型。如下图: 注: PT表示负载类型(Payload Type), 7 bits,即所传输的多媒体的类型 ​  不同的媒体编码…

Kafka消费者组和分区再均衡

应用程序使用KafkaConsumer向Kafka订阅主题,并从订阅的Topic上接收消息。 要想知道如何从Kafka读取消息,需要先了解消费者和消费者组的概念。 1、消费者和消费者组 原因:假设我们有一个应用程序需要从一个Kafka Topic中读取消息并验证&…

14Exceptional Control Flow Exceptions and Process(异常控制流,异常和进程)

异常控制流 异常控制流出现的地方: 异常控制流(Exceptional Control Flow,ECF)是程序执行过程中由于某些特殊事件或条件而导致的控制流的改变。异常控制流通常出现在以下几种情况: 硬件异常和中断:硬件异…

14天手撸交互式问答数字人直播教程-课程计划

一、课程计划 二、时间安排 第01天:交互式问答数字人发展现状 从一个真实案例开始,介绍当前主流的交互式数字人平台,需求和应用场景,引入交互式数字人的交互流程和关键技术。后续整个直播系列的内容安排。 第02天:音…

Nvidia Orin刷机保姆级教程

文章目录前言一、刷机准备二、刷机实战1.刷机文件下载2.Orin进入刷机模式2.1拔掉Orin上所有线缆2.2插上type-c线缆2.3长按Force Recovery按钮2.4通电2.5松开2号按钮进入刷机模式2.6确认是否进入刷机模式3.命令行刷机3.1安装jetpack总结前言 使用Orin有段时间了,现在…

代码随想录_二叉树_leetcode236

leetcode 236. 二叉树的最近公共祖先 236. 二叉树的最近公共祖先 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、…