• 0
  • 0
分享
  • Python高级用法:自动化过滤重复bug——软件测试圈
  • 曼倩诙谐 2021-11-26 09:48:04 字数 1676 阅读 847 收藏 0

  一.背景介绍

  继自动提交bug到jira文章之后,这时候就会有人有疑问了,我每天都在跑自动化测试(美其名曰每日构建),也每天都在自动提交bug,可能昨天提交的bug尚未解决,今天又重新提了一遍,一周下来累计的bug好几千了,怎么办?一个个去手动过滤,有木有感觉直接崩溃了?那么为了解决这个问题,今天我们就来介绍一个自动化过滤的方案及其实践。

  二.测试需求分析

  此方案也主要使用python/pytest实现,主要针对于jira上bug的处理,当然也可以使用过滤重复需求,重复任务等等均可以。

  准备工作:

  1.在处理之前,你首先需要了解部门的jira流转图(不同公司或部门都可能不一样),确认清楚后,你才知道找出重复的issue之后需要怎么处理,其状态应该怎么流转,本文将主要以我具体实践的为例,若有不同,可自行修改。

  2.申请可用的jira账号(为了方便多人使用,建议申请一个公共账号)。

  三.测试用例设计

  1 获取现有的所有未处理自动化bug,具体过滤为:

  项目为xxx,报告人为xxx, 状态为未解决Unresolved(对应状态为open)。

  2 比较bug的标题和详细信息:

  比较bug的标题是否一致,若一致则比较详细描述description,如果详细描述的重复度达90%(此指标可以更改)以上则视为这样的bug重复。

  3 确认bug重复后处理:

  如果比较得出bug重复,则将重复bug(仅保留一个,其他相似的均)关闭,根据流转图(如下图),关闭最简单的流转状态就是先transit to待讨论,再转换成关闭。

1-1.png

  四.自动化脚本实现

  1 获取所有bug,可以直接使用jira接口

  /rest/api/2/search

  https://docs.atlassian.com/software/jira/docs/api/REST/8.5.5/#api/2/search

  也可以python中封装好的jira(先pip install jira,即可使用)库中的 search_issues

  先获取issue总数。

1-2.png

  再根据总数 逐页遍历获取summary(标题)和description(详细描述)。

1-3.png

  2 比较issue相似度

  比较标题 直接通过 ”==“ 来判断

  比较描述通过python自带库difflib来比较:

1-4.png

  3 关闭issue

  同1,可以直接调用jira接口https://docs.atlassian.com/software/jira/docs/api/REST/8.5.5/#api/2/issue-doTransition,也可以使用python中的jira库transition_issue。

1-5.png

  jira库支持的方法:

1-6.png

1-7.png

  五. 脚本迭代优化等

  1第四节脚本中主要是通过90%的重复度来判度是否重合,这个指标可以各人根据需要调整,或是通过args参数传参等。

  2本文脚本中主要是通过先转换为discuss-done的方式处理的其流转状态,若有其他不同操作可以修改transition_issue的参数。

  3 不同公司的transition_issue id不一致,此项值可以询问jira管理员或是通过http请求工具捕捉。

  六. 可能遇到的问题,难点等

  能想到此需求的话,那么此方案就木有太大难点了,主要是需要了解issue流转流程,其次可能需要了解difflib这个库。

  七. 总结

  此方案及示例可以结合自动提交bug到jira使用,也可以单独使用,因为此过滤信息并不依赖于提交issue的方式,此方案的主要流程是 获取所有issue信息(标题、详细描述等等)—比较各issue的重复信息—确定重复后,修改issue的状态(可能为关闭也可为其他,根据需要操作)。除了处理bug,也可以此方案上拓展例如分析jira上的需求、任务等等。



作者:jelly   

来源:http://www.51testing.com/html/22/n-4480022.html


2021 问卷礼物图.png

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 环境准备1.开通腾讯文字识别服务按照官网步骤进行开通:https://cloud.tencent.com/product/generalocr/getting-started开通后可获得两个参数:SecretId、SecretKey腾讯提供的文字识别服务,支持多种图片识别,包括身份证、表格、或者其他通用文字识别等,本文主要使用表格识别服务。接口调用说明:1.打开表格识别V2接口说明文档:https://cloud.tencent.com/document/product/866/49525#1.-.E6.8E.A5.E5.8F.A3.E6.8F.8F.E8.BF.B02.进入接口调试页面&nb...
            0 0 8069
            分享
          •   在项目开发中,经常遇到根据给定关键字生成系统唯一顺序号的场景,本文整理了两种不同的实现方式。  1. 通过数据库加锁方式生成顺序号  该方案主要通过对数据库中表记录的加锁读写来实现的,该表中的记录对应不同关键字的顺序号生成信息,并且,为了提高生成顺序号的效率,可以一次生成指定步长个数的顺序号并存入本地缓存中。  该方案首先需要在数据库建立用于生成顺序号的表SEQUENCE_NUMBER,表结构如表1所示:表1 表结构  相应的,定义该表对应的Domain:public class SequenceNumberDomain{  private keyN...
            0 0 920
            分享
          • 接口自动化的工具现在有很多个选择,本篇文章着重介绍YAPI的使用方法;1、它首先是一个很好的接口维护的工具;开发同学的接口文档可以在此工具上维护;现在很多的文档的维护都是多人协同维护了,例如jira、石墨等。相对于postman更倾向于本地化,YAPI更能提现协同合作的优势。开发同学可以根据各自的分工来分别维护自己所负责模块的接口;而组长有分配的权限来给各个成员分配各个模块的查看和编辑的权限;在接口的编辑页面可以整理自己接口的信息,请求的参数以及返回的结构和信息,各种备注等等;开发的同学在维护完成接口后,测试同学就可以运动接口来进行接口的测试以及测试集合自动化测试的case编写了。2、单个接口...
            14 13 2872
            分享
          • 在Python开发中,数据存储、读取是必不可少的环节,而且可以采用的存储方式也很多,常用的方法有json文件、csv文件、MySQL数据库、Redis数据库以及Mongdb数据库等。1. json文件存储数据json是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,可以轻松解决py2和py3的编码问题,内容结构类似于python中的字典和列表,层次结构简洁而清晰,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。2. csv文件Python可以将数据存储为CSV文件格式,我们可以用excel打开CSV文档,进行数据的浏览,十分方便,以下是将数据存...
            13 13 1610
            分享
          • 接着上篇《深聊MySQL之:让orderby、Groupby查询速度飞起来(上)》我们今天继续讨论如何让orderby,groupby 的查询速度起飞 3、order by 优化我们了解了order by的原理,那么我们就来看看,优化order by 有什么技巧。3.1 添加合适索引3.1.1 排序字段添加索引①首先我们看下对 d 字段(没有索引)进行排序的执行计划:explain select d,id from t1 order by d;执行结果如下:发现使用的是 filesort(关注 Extra 字段)。...
            1 0 7456
            分享
      • 51testing软件测试圈微信