大家好!通过第一课,您已经知道如何更有效地查询搜索JIRA,让您的项目、团队、工作一目了然了! 如果您还没看过第一课,我强烈建议您看一看,因为我们今天的这一课将会用到很多之前介绍的概念。现在您应该能够简单进行JQL查询,使用AND和OR这样的关键词了。

函数:为什么它们很酷?

在JIRA中,字段存贮了与问题相关的数据。问题字段包含了:优先性、问题关键、问题详情等。函数本身有很多强大的功能,可以包含很多复杂的逻辑,但是这些复杂逻辑可以通过简单的方式表达出来。函数可以有选择地接收输入内容,并返回结果。比如,JIRA支持一个叫做membersof()的函数,如果用户是小组的一部分将会返回True,反之返回False。 

project = pwc AND assignee in membersof(‘test-engineering’)

该查询将返回所有分配给测试工程师(test-engineering)的问题。您可以在JIRA里重新定义“组”,也可以使用您公司已有的目录服务器里的“组”。函数功能很强大是因为它们可以动态反映环境的变化。如果用户被加入了测试工程师小组,查询就会自动更新这个信息。这比使用 assignee in (user1, user2, user3)更加的灵活。让我们来看看自上次发布之后新更新的是什么内容。

project = PWC AND assignee = jsmith

这将返回所有在特定版本中解决的问题。如果我们想要一个清单,它每次运行都显示自上次发布之后所有解决的问题,我们该怎么做呢?下面这个函数可以很简单地解决这个问题。

status in (resolved, closed) and fixVersion = latestReleasedVersion(PWC)

上面2个函数有什么区别呢?最终开发团队将会涵盖B,C,D这些sprint,第一个查询语句只能返回在A sprint解决的问题,第二个查询语句能得到PWC这个项目中的最新发布版本。当B,C,D s print发布之后,这个查询条件将会把这些新的数据进行更新。是不是很酷呢?

   更新历史:之后发生了什么?

     JIRA5 JQL的语言迈进了一大步。在的一个问题的生命周期中,有两种类型的数据能推动项目的发展。我们之前讨论的所有查询语句,得到的数据反馈的都是当前运行时间下的结果,在下面的图表里面我们可以看到一些历史问题的状态,他们能带给我们一些有意思的数据信息。JIRA可以存储问题生命周期中的每一步变化,也就是我们所说的“一个问题的历史记录”

PWC-42

如果你想看到在项目PWC中所有分配给John Smith的问题,一个简单的查询语句就可以帮您找到相关的信息:

status in (resolved, closed) and fixVersion = latestReleasedVersion(PWC)

使用JIRA5的JQL,我们可以查询一个问题的历史记录。我们从而可以使用JQL来看我们的项目的修改历史。比如,如果我们想看在PWC项目中John Smith解决的bug,我们可以使用JQL进行如下的查询:

project = PWC AND status CHANGED FROM “In Progress” TO “Resolved” BY jsmith

有的时候,审核失败或重新开放的问题可以告诉我们为什么问题没有达到既定目标,我们可以使用这个查询语句来找到这些bug:

status CHANGED FROM “In Progress” TO “Open”

想找到这星期正在进行中的问题,我们可以使用如下的JQL:

status was (“In Progress”) DURING (startofweek(), endofweek());

年末时查看一年中你解决了多少问题,我们只需要一点点JQL:

resolution changed to “Fixed” by currentUser()

during (startOfYear(), endOfYear())

划定范围和排序:你可以做的!

您的时间很宝贵。JQL真正的能力是帮助您缩小搜索范围,可以帮助您在项目中做出正确的选择。搜索一个重要的部分就是要知道怎么从JIRA得到你想要的数据,而另一个部分就是怎么用搜索结果帮助您和您的客户。让我们首先介绍两个表现数据的重要概念。

范围界定 —— 聚焦您的查询,得到恰当数额的数据,使用户只看到和目前的项目有关的信息。

排序 —— 按照关键度排列的您的数据,最重要的放在最前面。

范围界定

让我们看下面这个形象图,它代表从JIRA中的到的一系列问题。

当您刚开始进行JIRA搜索的时候,非常容易得到太多的数据结果。上面这个例子左右两个图有相同数量的我们关注的问题(问题A),但是第一个图不够具体。在现实生活中,开发经理总是需要在他们的项目中找到有风险的部分,一个好的搜索语句能够不断优化结果,让我们找找我们的项目PWC中的有风险的区域。

从开放的问题开始:

project = pwc AND status = open

我们发现,该查询返回的问题太多,因为它包括了积压的问题和正在进行的问题。我们可以缩小一下范围,排除积压问题。

project = pwc AND status = open AND fixVersion = “Current Sprint”

这样的结果是更好的,但我真的很想知道,哪些问题是上一个sprint没完成挤到这个sprint的。

project = pwc AND status = open AND fixVersion = “Current Sprint”
AND fixVersion WAS “Last Sprint”

现在我非常关心的问题出现了,我可以查看重点的问题,了解为什么他们在上一个sprint没有被完成。是因为估计不当、要求改变还是别的问题。这些问题出现在第一个搜索语句,但是对我来讲手动查询太麻烦了。一个好的搜索语句是一个互动的过程:查询,检查,看你是不是能找到结果的重点。你做的越多,得到准确的结果就越简单。

排序

让我们再看一看JIRA返回的问题。这一次我们的问题范围是恰当划分的。

这两个图有相同数量的问题。按照刚才我们给出的指南,您很容易得到正确数量的问题。数据对您来说越容易理解,您做出下一步的决定和行动就越高效。如果我们想看到在某一sprint团队需要解决的所有bug,我们应该使用下面的搜索语句:

project = pwc AND fixVersion = “Current Sprint” AND status = open

/td>

我们试图从这些数据中搜集什么?如果我们想确保团队或者工程师的任务适当的任务数量,我们可能希望看到按优先级和工程师责任人排序的列表,这样我们可以简单地知道一个工程师是不是有两个高优先性的bug。JQL有一个叫做ORDERBY的关键词,可以让JIRA自动排序结果。下面的这个搜索语句可以在原来的基础上增加排序的内容:

project = pwc AND fixVersion = “Current Sprint” AND status = open
ORDER BY priority, assignee

JIRA会在同等优先性的问题中首先按照有限性,然后按照被分配人进行排序。让我们举另一个例子,在这里我们想看看项目中现有的bug。我们想看那些最近产生的critical或者blocking的bug,从而知道最近的代码检查的稳定性是不是降低了。

project = pwc AND priority in (blocker, critical) AND created > -2w
ORDER BY created DESC

检索可以控制优先性,限定创建时间等条件,我们只关心最近发生的重要问题,排序可以最先显示最重要的问题。我们使用DESC这个关键词来从最新到最旧进行筛选。这样的话我们就能首先关注到最重要的事情。并不是每个人都有时间看你报告的全部内容,所以您应该每次排序您的搜索,首先显示最重要的问题。

结语

现在您应该非常自信于使用JQL进行JIRA检索了。我们已经讨论了基本结构、函数、现存数据、历史数据、排序和范围界定等。如果您还想进一步了解JQL,建议您看一下JQL的帮助文档。接下来我们将会谈谈

  • 在JIRA中使用JQL的场所
  • 在Atlassian Marketplace中拓展JQL语言的插件

请关注我们下几个星期的内容,我们将教您更多的JIRA使用小窍门。想学习更多?登记订阅JIRA内部邮件吧。

点此订阅

免费试用JIRA

About xiaoyinqu

Xiaoyin Qu, JIRA Marketing team 曲晓音, JIRA市场营销部

View all posts by xiaoyinqu »