系统:HarmonyOS3
软件版本:jira7914
jira是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域。JIRA中配置灵活、功能全面、部署简单、扩展丰富,其超过150项特性得到了全球115个国家超过19,000家客户的认可。
主要特性:
1、工作流:开箱即用,提供用于缺陷管理的默认工作流;工作流可以自定义,工作流数量不限;每个工作流可以配置多个自定义动作和自定义状态;每一个问题类型都可以单独设置或共用工作流;可视化工作流设计器,使工作流配置更加直观;自定义工作流动作的触发条件;工作流动作执行后,自动执行指定的 *** 作。
2、项目:每个项目都有自己的概览页面包括:项目详细信息、最新更新情况以及一些报告的快捷方式;在项目界面中查看按照状态、是否解决等条件设置的分类统计报告;查看项目最新的活动情况;查看项目的热门问题;可以设置项目类别,将项目分组管理;可以为每个项目设置单独的邮件通知发件地址;自定义安全级别,指定用户对问题的访问;指定组件/模块负责人。
3、面板:自定义面板,可以在面板中添加任何符合OpenSocial规范的小工具;可以简单地创建、复制,生成多个面板,分别管理不同的项目;支持墙板;可以收藏面板,或将面板共享给指定的用户;面板布局灵活,支持拖拽。
4、安全:JIRA的用户可以交由LDAP验证;允许设置匿名访问;任何使用管理员功能的进程,都需要额外验证,并且10分钟过期,以保证JIRA的安全;查看所有登录到JIRA的用户状况;将用户归属与用户组,用于维护安全权限和 *** 作权限;允许每个项目单独定义项目角色成员,打破用户组权限的限制,减轻系统管理员对于项目权限的维护工作量;每个项目可以独立设置自己的安全机制;限制某些用户访问指定的问题,即使该用户拥有这个项目的访问权;白名单机制,限制外部链接直接访问JIRA数据。
Jira的道在于构建了整个环境和思维模式,也赢得了市场的认可,成了一种势。无数的厂家便成了Jira的海洋生态当中的重要组成部分。有些厂家的插件是提升了Jira的体验,有些则是强化了特定功能。这里只推荐三个算得上 必须 使用的插件。
围绕这三个插件,我们能够搭建起研发管理的整体路线和迭代管控视图,简化流程,完善管理制度。接下来就介绍每个插件的场景和使用方式。
我们通过一张图形成一个大概的印象
我们当时选择这个插件期望满足的场景有下面几个:
我们项目管理常用的软件就是微软的Project,所以我们选项目标也是按照这样的思路来挑选的。最简化的概念就是 甘特图 。
当中有设置的必要的应该是Working schedule了
设置放假和周末,这样在计算任务起止的时候能够在甘特图中正确的显示,其他我没有做过多的设置。
从上图可以看出甘特图的组织形式分为4层。
1 项目(Project)
2 版本(fixVersion):注意是根据父任务的修复版本确定的
3 父任务(Story/Task)
4 子任务(Sub-Task)
在甘特图的界面可以进行任务的管理。
可以拖动任务的两端进行开始和截止日期的调整,也可以直接拖动整个任务进行任务的调整。
任务的进度是通过下面的三角标识进度,这个计算是使用实际投入的工时与预计工时直接的比例。
蓝色的线是在日期栏直接左击,就可以设置一个时间线,默认是设置在选择日期的开始。可以用于设置迭代里程碑。
显示内容的设置界面如下:
可以看到有四种方式可以混合使用:
1 面板
2 过滤器
3 项目
4 JQL查询语句
任务列表界面上元素都是可以根据实际系统中设置的字段进行调整的,如下图所示:
绿色的是自定义字段,灰色的是系统字段。自定义字段基本都是单纯的显示,系统字段会有一些其他的效果。
这个插件在前端没有任何感知,知道Jira系统中存在这个插件的基本也只有管理员了。但是对于管理员来说,这是流程推进、串联的最重要的工具了。
它的作用是在工作流的流转过程中可以附加其他的 *** 作,列表如下:
可以看到主要有赋值、分配人员、评论、触发其他流转环节、自定义脚本等等,而且可以针对问题本身、父问题、关联问题。基本能够涵盖日常应用的场景了。
我讲一下我实践过程中,比较常用的几种场景:
使用到 Assign to last role member 或者Assign to role member 。场景例如bug,当测试发现一个bug时,可能并不直接指定具体研发,而是 提交给研发管理小组 确认之后再分配给具体研发,具体研发人员修改完成后,点击 修改完毕 按钮,转发给测试。测试若发现bug没有完全修复,点击 退回研发 按钮,直接退回对应研发(而且可以累积退回次数)。
这里面的几个步骤:
1 修改完毕,会追溯到测试角色的最后一个经办人,并且将问题分配给他
1 退回研发,会追溯到研发角色的最后一个经办人,并且将问题分配给他
为何要追溯某角色的最后一个经办人?因为内部可能还存在多次指派,甚至对bug进行分析后发现不是后端bug要指定给前端研发。测试不用自己分析要退回给谁,让流程来判断。
使用到 Transition linked issues 和Transition parent issue 。我们最早就讲过,整个系统是子任务驱动的,具体人员只用关心和管理自己的子任务(子任务只有开始和结束两个简单状态),但是父任务涉及多人合作和角色含义,状态和节点可能会有几十个,无论让谁来管理都是很困难的。场景,一个父任务需要UI、产品、前端、后端、测试共同完成。其中可能产品先行,完成之后交付给UI,完成就可以前后端介入,研发全部完成后才能交付给测试执行。
这里面思想其实很简单,就是子任务工作流+角色。首先对于不同角色要区分出合理的用户组,当每个人完成任务时,判断他自身的角色从而触发父任务的状态流转。比如产品完成任务时,转至 方案设计完成 ,研发完成时可以判断当前父任务下是否存在测试子任务,若存在转至 研发完成待测 ,若不存在说明不需要测试转至 研发完成无需测试 。
这里给大家一个小小的建议
当你添加自动化工作流时,这里时可以选择名称或者id的,id就是一串唯一数字,当你需要精确触发工作流时可以指定。但是像上面描述的那种情况,其实并不能完全判定当前的状态是什么。比如需要产品协助时,产品会先完成任务之后研发才开始,这时候研发介入的上一环节是 设计方案完成 ,但是也存在不需要产品研发直接开始比如研发内部优化,这种情况下研发介入的上一环节是 待办 。如果这时候指定的具体的工作流,起始状态不正确就无法执行。所以建议是使用名称,而且建议规范是 转至+下一环节名称 ,比如到研发这个环节,无论从待办或者方案涉及完成,甚至测试退回,都成为 转至研发 ,这样我们只要写一次post function就可以满足多种情况了。
注意 :即使使用名称流转,也必须满足该流转的起始和中止状态满足当前情况。例如如果我 方案设计中 如果没有指向 研发进行中 节点,即使我尝试触发该流转也是无法执行的。
研发在质问我,已经9012年了我们还要使用工时这种low爆的形式来做绩效管理么?每天凑满8小时工作时间对于管理层就这么重要么?你们的能力仅仅就是看着这个人工时有没有记录好么?
如果你这么想,说明你没有想过研发管理到底该做什么。研发管理控制三要素:时间、成本、质量。控制的目的是提升,如何提升?必然是发现问题,改进才能提升。最简单发现问题的地方是 工时分配 ,而不是某个员工8小时工时本身。某个迭代中,那个story投入的工时超出成本,哪些人的bug工时投入超出正常比例、哪些人的线上问题投入工时较高、整体研发部门投入在非研发工作上的比例是多少,要不要优化。这些才是我们应当去关注并改进的。当所有人员只有3-5个人,可能这个数据受个人影响比较大,但是当人员超过30-50人时,个人少报或者没有正确填写的影响就已经比较小了,我们要观察的是趋势,大项的时间投入正常都是有记录的,这样基本就能够反应真实情况了。
所以Tempo作为目前时间管理最好的工具,在研发管理中重要性相信各位管理人员都有认知了。
tempo当前最新是942版本,我使用的是8153 。我尝试升级过一次插件,结果大家都不习惯新的界面,我不得不退回老版本。
全局配置中有几点说明,我们是子任务驱动所以工时不允许记录在父任务。但是只有一个任务下有子任务的时候才是父任务,否则就可以记录工时。
Work Attributes是设置工时填写面板的自定义字段
注意 :这里的字段只有通过记录工时按钮呼出的界面才有,比如完成任务时填报工时的界面是没有自定义字段的。
v9去掉的就是这个工时表,这个基本上是我们最常用的功能了。所以去掉之后大家都不知道怎么用了。
用户这个地方的下拉框可以选择如下几种选项。其中比较难理解的是账户这个概念,tempo里面实际上是有成本概念的,就是通过账户当中的金额来管理,不过我们没有使用过。
常用的几个是用户(分析单个用户的工时分布),团队(每个小组整体任务工时分布),高级(指定过滤器查看任务工时分布),问题(查看单个问题的人员工时分布)
时间区间可以任意指定,查询出的结果可以直接导出excel用于做透视图之类的。
v9主推的就是Reports *** 作的内容和界面形式应该是更加优化,上面的时间区间、过滤器设置(可以多选),分组可以多选和排序。
这个我们用的比较少,主要会针对某个具体问题、或者较大的Epic相关的项目站会、总结会时,分析人员工作进度和使用。
上述三个插件加入到Jira之后,我们完成了迭代整体控制、工作流实施、研发管理规范与提升三方面配置,基本已经可以开始组织一个研发团队为了同一个既定目标按照统一规范流程进行开发,而且尽量简化过程降低研发非研发类工作的占比。但是我们还是可以使用一些其他的插件来提高研发管理整体效率。另外必须说一句,这些插件的仪表盘可用插件没一个能用的。
昨晚正在测case的时候,突然冒出来一同事(我们都叫他肖总),来了一句:BUG基(同事都叫我BUG基,你懂的),我这复现了一个问题,但是开发那边说叫我把log导出来,我这不会导,你知道怎么导吗?作为一只BUG基,我怎么可能会放过这个装比的机会呢,哈哈。
叫肖总导log的那个开发啥也没说,就只在jira系统的comments最后写了一句“导出方法:adb pull/cache/recovery/ /”。其实当时我是崩溃的,我擦,肖总,你妹,这开发不是说了导出方法了吗?你直接复制粘贴打上去命令不就行了吗?然而,装比心理作怪,我还是决定了帮他。
那么下一步是什么?没错,是时候展现装比的技术了!
拿过Pad的第一步,那当然是先装驱动啦。没驱动你怎么使用adb命令?为什么这么说呢。驱动一般指的是设备驱动程序(Device Driver),是一种可以使 计算机 和设备通信的特殊程序。相当于 硬件 的接口, *** 作系统 只有通过这个接口,才能控制 硬件 设备的工作,假如某设备的驱动程序未能正确安装,便不能正常工作。那么ADB又是什么东东?Android Debug Bridge,我们一般简称为adb,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互。意思也就是说,ADB命令需要通过驱动程序提供的接口来控制硬件设备,因为我们的文件是存储在硬件设备上的呀。
那装驱动要在什么状态下安装?废话,肯定是开机状态啦。当然在安装驱动前,要先开启开发者模式的ADB调试,这里我就不说为什么了,自己想。
那再下一步就是我们要用开发给的adb命令,导出/cache/recovery/这个文件夹的内容。或许有人会问,这开发不是已经给了文件的路劲了吗,直接在Pad上复制粘贴到SD卡又或者直接用PC从Pad复制粘贴到PC就可以了呀。对于这个,我只想说,废话,这么简单的,你会想不到吗?你以为我是猪啊。然而我并不是猪,我是BUG基。
对于上面那个想法,条件并不成立,当我们连接Pad时,windows是屏蔽部分文件的,反正我这里是这个情况,而用Pad直接复制粘贴到SD卡也是不成立,当我复制的时候,会提示“ *** 作失败,目标无法复制”,至于为什么会出现这个提示,请往下看。
既然上面两个方法都不行,那我们就只有用adb命令了。
在执行 *** 作之前,我们要先看移动设备是否跟PC连接,那么就需要用adb devices这个命令查看当前连接的设备,这里可能返回的状态有三种:
Idevice设备已经成功连接到了adb-server
IIoffline设备并没有连接到adb或者没有响应
IIIno device并没有设备/模拟器连接
这里说的三种状态显示的可能跟显示情况不大一样,譬如我连接是正常的,返回的是
或许有人知道这里的意思是什么,但是是否有想到过前面的那个daemon是什么呢当然有人会说,只要复制粘贴会用就可以了,对于这个回答,我默默表示不回答。
这个daemon还得要从ADB说起,ADB包含了以下三部分的cs模式的程序:
而在解释上图的意思之前,我想先引入两个概念,那就是端口和通信(已理解的可以略过)。
端口
计算机"端口"是英文port的译义,可以认为是计算机与外界通讯交流的出口。其中硬件领域的端口又称接口,如:USB端口、串行端口等。软件领域的端口一般指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数据结构和I/O(基本输入输出)缓冲区。
端口最主要的作用就是通信和数据传输,把数据报顺利的传送到目的主机是没有问题的。那么问题出在哪里呢我们知道大多数 *** 作系统 都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据报传送给众多同时运行的进程中的哪一个呢?显然这个问题有待解决,端口机制便由此被引入进来。
本地 *** 作系统 会给那些有需求的进程分配协议端口(protocal port,即我们常说的端口),每个协议端口由一个正整数标识,如:80,139,445,等等。当目的主机接收到数据报后,将根据报文首部的目的端口号,把数据发送到相应端口,而与此端口相对应的那个进程将会领取数据并等待下一组数据的到来。说到这里,端口的概念似乎仍然抽象,那么继续跟我来,别走开。
端口其实就是队, *** 作系统 为各个进程分配了不同的队,数据报按照目的端口被推入相应的队中,等待被进程取用,在极特殊的情况下,这个队也是有可能溢出的,不过 *** 作系统允许各进程指定和调整自己的队的大小。
通信
通信(Communication)就是信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。其实这里的通信,意思就是说用特定的逻辑信号,实现双方的互相信息传输,譬如说在命令行输入adb devices命令,意思就是说我想要对方输出设备列表给我看,这里的输入”adb devices”就是发送给对方的信号,而输出的设备列表就是对方反馈回来的信号,这个整个过程就是通信的过程。
说了这么多,其目的就在于扫盲,下面我们来说上面提到的ADB三部分的cs模式的程序(我把上面的图拉下来,防止大家看不到):
1) adb client
从图中,我们知道client是运行在PC端的,每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。
当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。
所有的client都是通过5037端口与adb-server进行通信的。
2 ) adb daemon ( adbd )
从图中,我们知道daemon是作为一个后台进程运行在模拟器/真实Android设备中的。
daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这么一个后台进程,并且为其分配了两个连续的端口,比如:
Emulator 1,console: 5554
Emulator 1, adb:5555
也正因为每个设备都分一组两个端口,也已adb连接手机的最大数量为16。
说回端口的作用,在这两个端口中,其中偶数端口是用于server与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。
3) adb server
从图中,我们同样可以知道,server也是作为一个后台的程序运行在PC端的,他负责管理client进程以及adb daemon之间的通信。
当一个server开启的时候,他会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。
完成了上面一大堆吧啦吧啦的扫盲,大家应该知道了图1的意思了吧,那么我们就要解决问题了。
我们来看开发给我们的adb命令
不知大家是否看到使用adb命令都要在前面输入adb,譬如开发给的“adb pull /cache/recovery/ /”这个命令就有adb在前面。那么为什么要在命令前面加上一个adb呢,原因在于如果我们不加adb,windows系统会默认为对windows执行命令,而不是通过ADB命令行工具对手机执行 *** 作命令。后面的“pull /cache/recovery/ /”通过前面学习Linux命令结构(linux命令结构为command [options] [arguments])大概可知道pull指的是命令动作,后面那两个,指的其实就是参数,/cache/recovery/指的是Pad设备的文件路径,而/指的是当前运行命令行的路劲,譬如下面的提到的C:\Users\301001958这个路径。
好了,继续回到我们的装比之路,刚开始的时候,我不小心把” adb pull /cache/recovery/ / ”打成了“adb pull /cache/recovery//”,也就是,我没有把中间的空格打上,结果d出了这样的提示,啊,真是瞎了我的眼……
于是,我马上改过来,修改成了“adb pull /cache/recovery/ /”,结果还是d出了一样的提示。
我擦,这怎么办怎么办,难道真的要装比不成,反遭雷劈?别急,我们先来看看这里提示的意思,这里的这个remote的意思是指的远端设备,在这指的就是Pad,而object '/cache/recovery/' does not exist的意思就是说Pad的/cache/recovery/这个文件夹对象不存在。
这咋回事啊?怎么会就不存在呢?于是乎,我再进入Recovery mode查看,得到的结果如下:
我擦,这怎么回事?明明有这个文件夹的存在,于是我再次开机在命令行输入adb -help,验证一下这个adb命令的用法,结果吧啦吧啦的出现了一大坨黑色的字,看着都头晕啊,不过还是让我找到了想要的信息,如下图:
看到了这里,我瞬间脸黑了,我靠,这完全就是跟我想的那样没错嘛,怎么就说文件夹对象不存在呢。
于是我还是找上了大家最喜欢的——度娘。找了一番,找到了一个似乎有用的信息,如下图:
正如上面所说,难道是因为没有文件夹没有读写权限?于是,我又输入了adb remount,得出结果如下:
额,看到这里,我不想说话了,不过这里,已经算是弄出了点端倪,大家应该也知道了前面直接在Pad的系统里面复制提示无法复制了吧,最主要就是不够权限的原因,因为一旦系统运行文件随便被更改,系统就有可能出现运行错误或者崩溃。只是我竟天真的以为这里的root,指的是我们经常用的那个一键root软件,只要用软件一键root了,就可以快乐的解决问题了,可想而知,得到的结果依然是像是碰到了蜜蜂窝一样,被蛰着千疮百孔啊,面目全非……这些什么鸟一键root软件,根本就无法root得了我们这些开发中的Pad嘛,还试了一大堆都不行,至于为什么,暂时我没有深究,大家有空可以去研究研究。
到了这里,我只想说:盖伦,请给我一把大宝剑……
无奈,问题最终还是得要解决,于是我继续再找度娘玩去了。
经过了一番查找,我似乎终于找到了答案如何获得root权限了,就是仅仅只需要用“adb root”这个命令就可以让adb获得root权限,二话不说,赶紧开干啊,输入adb root,得出的结果是:adbd restart as root,我擦,蓝瘦香菇,明明只需要几个命令……就可以获得root权限,我为什么能搞得那么复杂,我不行了,盖伦,借你的大宝剑扶我起来……
但是似乎有一件很重要的事是,正因为我前面用了一键root软件,我才能在adb命令使用root权限,前面的功夫也并不是全是无用功,来到这里,我们就只需执行最后一步就是用开发给的命令,把文件拖出来,不过,我把开发给的最后一个参数改了,也就是“/”这个参数,改成了我自己电脑桌面的一个文件夹路径,如我在桌面起了个叫做FileLog的文件夹,如我FileLog的文件夹路径为C:\Users\301001958\Desktop\FileLog,那么我执行的就是adb pull /cache/recovery/ C:\Users\301001958\Desktop\FileLog,然后按Enter执行命令,文件就巴拉拉的复制到了我的FileLog文件夹里面,到这里问题解决完毕。
回顾整个过程,踩的坑着实不少,一个简简单单的命令,一个简简单单的 *** 作,都能把自己搞死,不过在这整个过程里面,也是一个不断扩展知识的过程,也是一个不断挑战自我的过程,到最后的解决,是满心的舒畅。
这整个过程里,给我最大的感悟是,乐于助人,助的有时候不仅仅是别人,助的也是自己,因为在这个过程中,我的知识获得了拓展,获得了成长,也获得了成就感,获得了兴趣,用此文,希望能助正在踩坑的你,走出这个坑,不管是大坑还是小坑,又或者是神坑,在这个写作分享的过程中,也让我对整个知识面理解更全面更深了一步。
文章写得不是那么好,太长了点,请轻喷。
致正在踩坑的你我。 20170226 By BUG基
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)