Jira用例自动去除summary重复用例

news/2025/1/9 11:12:20/文章来源:https://www.cnblogs.com/fenxiangbe/p/18661776
title:  Jira用例自动去除summary重复用例
tags: 
- jira
categories:
- python
  • 一、背景与需求
  • 二、解决方案思路
  • 三、实施步骤
  • 本文永久更新地址:

在使用 Jira 进行项目管理时,测试用例的维护至关重要。随着项目推进,用例数量增多,可能会出现 summary 重复的情况,手动排查费时费力,因此实现自动去除重复用例功能意义重大。

一、背景与需求

项目团队在 Jira 中积累了大量测试用例,由于多人协作、版本迭代等因素,一些用例的 summary 表述相近甚至完全相同,这不仅造成视觉混乱,还可能导致测试覆盖不精准、资源浪费。我们迫切需要一个自动化机制,能够快速识别并清理这些重复项,确保用例库的简洁与高效。

二、解决方案思路

  1. 数据获取:利用 Jira API 连接到项目实例,获取所有测试用例的详细信息,重点提取 summary 字段及对应的用例 ID 等关键数据,以便后续比对操作。

  2. 重复判断算法:采用文本相似度算法,当两个用例 summary 的相似度高于阈值时,标记为潜在重复项。考虑到部分特殊字符、空格差异不影响语义实质,在比对前可进行规范化预处理,如统一转小写、去除多余空格等。

  3. 自动处理流程:对于标记的重复用例,根据预先设定规则,如保留创建时间最早或最后更新的用例,通过 API 发起删除操作,将其他重复版本从 Jira 中移除。

三、实施步骤

  1. 开发环境搭建:选择合适编程语言(如 Python),安装 Jira API 相关库(如 jira-python),配置好连接 Jira 服务器所需认证信息,确保能顺利访问数据。

```pythondef login():# Jira服务器地址,用户名和密码jira_server = 'https://jira.xxx.com'jira_user = 'xxx'jira_password = 'xxx'

   # 创建Jira实例并登录try:jira_instance = JIRA(server=jira_server, basic_auth=(jira_user, jira_password))print("Logged in successfully.")except JIRAError as e:print(f"Failed to log in to Jira: {e}")return jira_instance

```

  1. 代码编写与调试:按照数据获取、相似度计算、重复处理逻辑逐步编写代码,在测试环境中使用部分样本用例数据进行调试,不断优化算法阈值,确保准确识别重复且无误删风险。

    ```pythondef search(jira_instance,jql_query,i):

      try:issues = jira_instance.search_issues(jql_query,maxResults=None)flag = 1counterDict = {}for issue in range(0,len(issues)):if i.strip() ==issues[issue].fields.summary.strip():counterDict[issues[issue].key]=issues[issue].fields.status.nameelse:print(f"{i}!= {issues[issue].fields.summary},跳过废弃操作")failSummaryList.append(issues[issue].fields.summary)for item ,status in counterDict.items():if status=='UI自动化' or status=='接口自动化':flag = 0print("重复已自动化的用例:"+item)continueelse:if flag == 1:#print(i.strip()+"=="+issues[issue].fields.summary,flag)flag = 0continueelse:jira_instance.transition_issue(issues[issue].key, 'xxx')#改变用例的状态,需要先找到目标状态的transition IDprint(f"Issue Key: {issues[issue].key}, Summary: {issues[issue].fields.summary},PASS")print("====================")except JIRAError as e:print(f"Error searching issues: {e}")
    

    def getSummary(jira_instance,jql_query):summaryList=[]try:issues1 = jira_instance.search_issues(jql_query,maxResults=None)#issues1 = jira_instance.search_issues(jql_query)for issue in issues1:

              summaryList.append(issue.fields.summary)except JIRAError as e:print(f"获取summary失败: {e}")counter=keep_duplicates(summaryList)print(counter)summaryList=list(set(counter))return summaryList
    

    def keep_duplicates(lst):counter = Counter(lst)return [item for item in lst if counter[item] > 1 ]```

  2. 部署与监控:将代码部署到jenkins,设置定时任务定期运行去重程序

  jira_instance=login()#获取第一个参数first_argument = sys.argv[1]client = sys.argv[2]falg = sys.argv[3]query = first_argument + clientprint("查询条件是:"+query)file_infos = getSummary(jira_instance,query)if falg =='1':print("重复的用例是:", file_infos)for i in file_infos:file_info= re.sub(r'[\x00-\xff]', '', i)jql_query = first_argument+client+" AND  summary ~{0}".format(file_info)# print(jql_query)search(jira_instance,jql_query,i)else:print("已查出重复的用例是:", file_infos)

#改变用例的状态,需要先找到目标状态的transition ID# transitions = jira_instance.transitions(bug_id)# print(transitions)# for transition in transitions:# print(f"ID: {transition['id']}, Name: {transition['name']}")


本文永久更新地址:

https://www.fenxiangbe.com/p/Jira用例自动去除summary重复用例.html

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux-Prometheus

Prometheus监控架构 prometheus通过各种exporter监控客户端. 常用exporternode_exporter获取主机的系统监控项. 其他项目通过各种exporter(docker运行)实现.这个部分主要讲解的是prometheus服务端的配置(连接客户端)prometheus.yml主配置文件. 静态配置 :static_configs 书写…

为什么不应将游戏逻辑写在FixedUpdate中

1)为什么不应将游戏逻辑写在FixedUpdate中2)关于il2cpp.so裁剪的问题3)3DMax怎么统计Unity的顶点数量4)Unity拉起SDK后,导致场景贴图丢失这是第417篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习。…

Linux其他

1. 2.Gitlab应用架构 3.运维发展史 4.云原生时代: 以Devops、SRE框架为指导,Docker/K8S/微服务为基础,用分布式方式加上 Python和 Go语言,构建一套云技术产品体系,以及进行高级管理工具的二次开发,实现属于公司自己 的自动化运维体系以及云技术体系的自动化产品。使用的自…

可视化工具在UI/UX设计中的应用与管理策略

一、设计行业的项目管理挑战 设计项目通常具有较强的创意性、变化性和协作性。与其他行业的项目管理不同,设计行业的项目管理面临一些独特的挑战: 1.1 多轮设计迭代和客户反馈 设计项目通常不是一次性完成的,而是通过多个设计迭代不断完善。每个设计阶段结束后,团队通常需要…

《安富莱嵌入式周报》第348期:开源低功耗测试仪,开源创意万用表,续航100-300小时,开源PCB电机,自制shell和网络协议栈,开源水培自动化系统

周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 视频版: https://www.bilibili.com/video/BV1Tzr9Y3EQ7/目录: 1、开源低功耗测试仪 2、开源创意万用表,续航100-300小时 3、低级编程和优化实现 4、资讯 (1…

16C++循环结构-(do-while循环)1——教学

1、do-while 语句; 2、各数位之和; 3、纯小数变整数; 4、数学计算一、do-while 语句 问题:每次测试后狐狸老师总会把成绩输入计算机,进行处理分析。但输入时有时会出错,如当满分为100分时,输入小于0或大于100的数,表示输入有误。试编一程序,输入某一位同学成绩时,自动检查…

南京芯麒电子-基于6U VPX的TMS320C6678+XCVU9P的高性能处理平台

概述 该平台是由16nm工艺的的XCUV9P FPGA和TI公司高性能数字信号处理器TMS320C6678构建的一款标准6U VPX高性能数据处理平台,VPX P1上定义4个x4 GTY,P2上1路PCIe x16接口、P3~P6上引出了大量GTY/GTH以及RS422/GPIO信号。板卡提供2个FMC+接口、可搭配我司各类FMC子卡使用,实现…

XTR105 XTR105UA/2K5规格书具有传感器激励和线性化的 4mA 至 20mA 电流变送器芯片

XTR105 是一款带有两个精准电流源的单片 4mA 至20mA、2 线制电流发送器。该器件在一个单集成电路上提供针对铂 RTD 温度传感器和桥、仪表放大器以及电流输出电路的完整电流激励。多用途线性化电流提供一个对 RTD 的第二阶修正,通常可以实现一个 40:1 的线性改进。仪器放大器增…

[rustGUI][iced]基于rust的GUI库iced(0.13)的部件学习(03):图像的导入、显示、调整(暨image部件的使用介绍)

前言 本文是关于iced库的部件介绍,iced库是基于rust的GUI库,作者自述是受Elm启发。 iced目前的版本是0.13.1,相较于此前的0.12版本,有较大改动。 本合集是基于新版本的关于分部件(widget)的使用介绍,包括源代码介绍、实例使用等。 环境配置 系统:window10 平台:visual…

PyTorch团队为TorchAO引入1-8比特量化,提升ARM平台性能

在深度学习模型部署和优化领域,计算效率与资源消耗的平衡一直是一个核心挑战。PyTorch团队针对这一问题推出了创新性的技术方案——在其原生低精度计算库TorchAO中引入低位运算符支持。这一技术突破不仅实现了1至8位精度的嵌入层权重量化,还支持了具有8位动态量化激活的线性运…

设计团队管理的关键因素:如何确保成员高效协作

一、设计团队的组织架构 一个高效的设计团队通常有一个明确的组织架构,合理的分工与协作关系能够最大程度地提高团队的工作效率。在设计团队的组织架构中,一般包括项目经理、设计师、协调员以及可能的开发人员和客户代表。 1.1 项目经理(PM) 项目经理是设计团队的核心角色之…

欧阳的2024年终总结,迷茫,重生与失业

前言 这是欧阳第一次写年终总结,今年发生的事情还挺多的值得写篇文章记录一下。立个flag,以后每年都写一篇年终总结文章,5年后35岁再来看这些文章不知道是什么感觉。今年发生的事情可以总结为三个词语:迷茫、重生、失业。 欧阳也在找工作,坐标成都求内推! 事件 今年发生的…