您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

怎样让脚本发现问题自动在jira记录bug

时间:2022-06-14 15:18:10  来源:  作者:翩翩见龙

前提:bug记录为JIRA

自动化脚本跑完后,如果发现问题,再用手工把问题录入jira,这样是不是觉得自动化做得还不够彻底?下面讲的是如何联通jira。


首先测试用例中需要带有开发名称和测试人员名称(对应jira内的名称)。

测试结果数据和人员名称聚合。

如果有重试机制,重试完成最后再统一录入jira。

 

jira有开放的api,分两种:

  1. JAVA rest api --- 以java依赖包的方式调用 点击查看:https://developer.atlassian.com/server/jira/platform/java-apis/,api doc: https://docs.atlassian.com/software/jira/docs/api/8.22.3/。pom添加如下
<dependency>
    <groupId>com.atlassian.jira</groupId>
    <artifactId>jira-api</artifactId>
    <version>${atlassian.product.version}</version>
    <scope>provided</scope>
</dependency>

2 . rest api --- 通过网络调用,地址:
https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issues/#api-group-issues

 

调用jira前需要获取token

使用 java包时需要先调用auth 获取token

使用api时,首先要获取authentication,它支持 OAuth2.0 这里可以用简单的basic auth 通过鉴权,这种方式可以直接调用所需的接口,不需要再次获取token,如果jira配置不支持这种鉴权方式,就需要在jira中配置token 官网地址:。
https://support.atlassian.com/atlassian-account/docs/manage-api-tokens-for-your-atlassian-account/#Tokens-de-API

basic auth 使用:

curl -D- 
   -X GET 
   -H "Authorization: Basic ZnJlZDpmcmVk" 
   -H "Content-Type: Application/json" 
   "https://your-domAIn.atlassian.NET/rest/api/2/issue/QA-31"

第三行 basic 后的字符串是,用户名:密码的base64字符。

有的网络使用统一的登录授权方式,对于这种,使用java包的话需要重写 authentication的头信息,把获取的token代入进去。而调用rest api的方式同样要在请求头加入统一系统的token。

 

说下新建bug

jira新建bug,也就是 issue的 接口地址:POST /rest/api/2/issue

请求格式:



{
  "update": {
    "worklog": [
      {
        "add": {
          "timeSpent": "60m",
          "started": "2019-07-05T11:05:00.000+0000"
        }
      }
    ]
  },
  "fields": {
    "summary": "Main order flow broken",
    "parent": {
      "key": "PROJ-123"
    },
    "issuetype": {
      "id": "10000"
    },
    "components": [
      {
        "id": "10000"
      }
    ],
    "customfield_20000": "06/Jul/19 3:25 PM",
    "customfield_40000": "Occurs on all orders",
    "customfield_70000": [
      "jira-administrators",
      "jira-software-users"
    ],
    "project": {
      "id": "10000"
    },
    "description": "Order entry fails when selecting supplier.",
    "reporter": {
      "id": "5b10a2844c20165700ede21g"
    },
    "fixVersions": [
      {
        "id": "10001"
      }
    ],
    "customfield_10000": "09/Jun/19",
    "priority": {
      "id": "20000"
    },
    "labels": [
      "bugfix",
      "blitz_test"
    ],
    "timetracking": {
      "remainingEstimate": "5",
      "originalEstimate": "10"
    },
    "customfield_30000": [
      "10000",
      "10002"
    ],
    "customfield_80000": {
      "value": "red"
    },
    "security": {
      "id": "10000"
    },
    "environment": "UAT",
    "versions": [
      {
        "id": "10000"
      }
    ],
    "duedate": "2019-03-11",
    "customfield_60000": "jira-software-users",
    "customfield_50000": "Could impact day-to-day work.",
    "assignee": {
      "id": "5b109f2e9729b51b54dc274d"
    }
  }
}
// 涉及到的id 可以在脚本中做个名称和id的字典方便匹配
//reporter 是报告人,一般对应测试人员的id
//assignee 是之给谁,一般是开发人员
//customfield_xxxx 字段是jira设置的自定义字段

//建立后回应如下:
{
  "id": "10000",
  "key": "ED-24",
  "self": "https://your-domain.atlassian.net/rest/api/2/issue/10000",
  "transition": {
    "status": 200,
    "errorCollection": {
      "errorMessages": [],
      "errors": {}
    }
  }
}

把相应的 id 收集后,自动发送邮件,邮件中用 上方selft的地址把id逐个拼起来就是bug的浏览地址,方便人员点击查看。

bug的修改,删除请求用法见地址:
https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issues/#api-group-issues

 

jira大部分查询用的Jql 语法,使用方法:

例如


var bodyData = `{
  "queries": [
    "summary ~ test AND (labels in (urgent, blocker) OR lastCommentedBy = currentUser()) AND status CHANGED AFTER startOfMonth(-1M) ORDER BY updated DESC",
    "invalid query",
    "summary = test",
    "summary in test",
    "project = INVALID",
    "universe = 42"
  ]
}`;

const response = await api.asApp().requestJira(route`/rest/api/2/jql/parse`, {
  method: 'POST',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  },
  body: bodyData
});

console.log(`Response: ${response.status} ${response.statusText}`);
console.log(await response.json());

//“AND (labels in (urgent, blocker) OR lastCommentedBy = currentUser()) AND status CHANGED AFTER startOfMonth(-1M) ORDER BY updated DESC ” 
//上一行这部分条件可以在jira网页地址中调试成功再写入代码。

 


除了上面这些,还能做些什么?

  • 使用查询可以获取项目的issue数量,人员数量,类别,从而可以自定义报表,分析软件哪部分缺陷多,缺陷类型是哪些
  • 多项目中共有字段可以通过脚本一键同步建立
  • 定时更新issue或项目状态,发布进度提醒


Tags:脚本   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
短视频脚本 原来这么容易写哇~
2023-11-29  Search: 脚本  点击:(57)  评论:(0)  加入收藏
手把手教你写一个Shell脚本部署你的服务
我们都知道,在开发的过程中,有很多部署自己微服务的方式,其中有各种各样的不同操作,比如使用 docker 打包为镜像的方式,还有基础使用 jar 包的方式进行部署,但是呢?使用 jar 包部署...【详细内容】
2023-11-28  Search: 脚本  点击:(141)  评论:(0)  加入收藏
Linux服务器超级实用的Shell脚本,建议收藏!
Shell 脚本是一种强大的工具,可以在各种领域中用于提高工作效率、简化任务和自动化常见工作流程。无论是系统管理、数据处理、任务自动化还是快速原型开发,Shell 脚本都是一种...【详细内容】
2023-11-07  Search: 脚本  点击:(297)  评论:(0)  加入收藏
Python脚本支持OC代码重构实践:模块调用关系分析
在软件开发中,经常会遇到一些代码问题,例如逻辑结构复杂、依赖关系混乱、代码冗余、不易读懂的命名等。这些问题可能导致代码的可维护性下降,增加维护成本,同时也会影响到开发效...【详细内容】
2023-10-27  Search: 脚本  点击:(249)  评论:(0)  加入收藏
暴击联盟传世脚本怎么用 斩魔无双传世手游脚本下载攻略
哈喽大家好,游戏里我们每天都需要花费大量时间去挂机、刷材料、升级,时间上对上班族非常不友好,这时候我们就需要可以解放双手的脚本了,自动刷boss、自动做活动、自动挂机,减少不...【详细内容】
2023-10-17  Search: 脚本  点击:(56)  评论:(0)  加入收藏
帮你解决繁琐重复的工作任务 用Python自动化脚本
重复性的任务总是耗时且枯燥。想象一下一张一张地剪切100张照片,或者执行诸如获取API、纠正拼写和语法等任务,这些都需要大量时间。为什么不将它们自动化呢?在今天的文章中,将分...【详细内容】
2023-09-27  Search: 脚本  点击:(257)  评论:(0)  加入收藏
Shell编程:命令行与脚本编程的结合
在计算机领域,Shell 是一个命令行解释器,它允许用户与操作系统进行交互。通过Shell,用户可以输入命令并执行各种任务。此外,Shell 还可以用于编写脚本,实现自动化管理和提高工作...【详细内容】
2023-09-07  Search: 脚本  点击:(215)  评论:(0)  加入收藏
PowerShell系列之PowerShell通过脚本方式运行笔记
上一篇文章讲解了Powershell通过交互环境运行命令的相关知识,今天给大家介绍实际工作当中使用最频繁的方式&mdash;&mdash;通过脚本运行,简单来说就是和咱们实际编写代码一样,先...【详细内容】
2023-08-28  Search: 脚本  点击:(296)  评论:(0)  加入收藏
Docker容器中的Postgresql备份脚本异常解决办法
本文基于K8S中Docker容器对postgres数据库进行备份的操作,编写好脚本后,手动执行脚本是正常的,但是crontab定时实行却报错,报错信息为kubectl command not found,提示没有找到kub...【详细内容】
2023-08-28  Search: 脚本  点击:(396)  评论:(0)  加入收藏
疯传全网网络10个运维巡检脚本以及使用小技巧
第1章 前言巡检脚本在网络运维中非常重要,近期客户想要一些简单的脚本实现自动化常规项的检查,本文主要介绍一些常见巡检脚本和使用方法。 第2章 脚本案例1. 网络连通性检查...【详细内容】
2023-08-23  Search: 脚本  点击:(319)  评论:(0)  加入收藏
▌简易百科推荐
Meta如何将缓存一致性提高到99.99999999%
介绍缓存是一种强大的技术,广泛应用于计算机系统的各个方面,从硬件缓存到操作系统、网络浏览器,尤其是后端开发。对于Meta这样的公司来说,缓存尤为重要,因为它有助于减少延迟、扩...【详细内容】
2024-04-15    dbaplus社群  Tags:Meta   点击:(2)  评论:(0)  加入收藏
SELECT COUNT(*) 会造成全表扫描?回去等通知吧
前言SELECT COUNT(*)会不会导致全表扫描引起慢查询呢?SELECT COUNT(*) FROM SomeTable网上有一种说法,针对无 where_clause 的 COUNT(*),MySQL 是有优化的,优化器会选择成本最小...【详细内容】
2024-04-11  dbaplus社群    Tags:SELECT   点击:(3)  评论:(0)  加入收藏
10年架构师感悟:从问题出发,而非技术
这些感悟并非来自于具体的技术实现,而是关于我在架构设计和实施过程中所体会到的一些软性经验和领悟。我希望通过这些分享,能够激发大家对于架构设计和技术实践的思考,帮助大家...【详细内容】
2024-04-11  dbaplus社群    Tags:架构师   点击:(2)  评论:(0)  加入收藏
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(5)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(9)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(16)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(14)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(9)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(14)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(10)  评论:(0)  加入收藏
站内最新
站内热门
站内头条