电子说
现状背景
会议电视产品,从立项到现在已经有十几年的历史,项目流程发展也在不断改进提升,但是当前依然面临的诸多问题。
需求评审跟踪依然是通过excel+SVN的方式进行,导致跟踪不及时且很难闭环管理;
迭代过程中代码提交无评审,代码错误、编译错误等等不能提前发现,导致集成频繁回退版本;
UT/FT/ST等测试无管理,都是各个小组单独进行,版本无关联性,测试结果也没有集中管理,测试质量无法保证。
为了解决上述问题,我们引入了Devops工具链,整体改进上述流程中出现的问题。
解决方案
引入Devops工具链后,整个项目从流程上完成了闭环管理,项目的各个阶段的都有专门的系统进行统一管理。工具链不管是在数据查询、统计、追溯上还是业务闭环操作上都给出比较满意的解决方案。整个解决方案流程如下。
自从项目引入敏捷后,工具链在我们项目的核心业务上起到至关重要的作用。wiki作为内容管理贯穿整个项目的始终,所有的项目文档,会议纪要等等都是通过wiki进行记录管理;TFS管理用户故事、测试用例、测试过程等等,从需求到开发再到测试形成了统一的管理流程;GIT、Gerrit为代码管理的核心工具,透过gerrit与CI的配合,提前发现代码问题,提高了代码管理效率;云CI为代码评审,代码质量检查(如KW、复杂度等)、UT、FT等提供一个自动化的评审、检查、测试的流程。与制品库配合可以完成从代码、测试到版本发布的全流程管理,与BDA系统配合可以完成研发过程的质量监管,以清晰的图表展示研发过程数据统计;云测试,由于产品本身的特性只能在私有云里面进行自动化测试,所有的数据均通过云CI管理并上传至相关的系统如BDA系统等。
实践情况
解决方案中我们提出了明确的流程以及相关的工具,在实践中我们将展示整个实践过程具体操作以及相关的数据。
TFS辅助敏捷流程,跟踪用户故事、需求等,根据Feature下达任务计划,完成项目任务跟踪。
需求澄清,系统化的使用Confluence,及时快捷的对需求进行澄清
迭代开发,迭代开发很重要的一部分是代码管理,使用GIT工具管理源码,不仅提高代码获取效率,而且与Gerrit配合开启代码评审功能,提高合入效率。
持续集成,CI全流程囊括整个研发过程,从代码提交/代码检查入库、UT到集成版本构建、FT、入库再到系统测试全流程管理。
整个云CI流程有几个关键的CI流程,分别是VerifyCI、MergeCI以及DailyCI,关键CI流程的实践如下:
1. VerifyCI
开发人员提交代码后自动触发CI流程,完成模块版本的构建、代码KW、Lizard检查、UT、推送数据到看板系统并发送邮件到相关的开发人员以展示相关的编译、检查以及测试结果。
2. MergeCI
每天定时完成版本构建、全版本的KW,复杂度检查、FT、推送数据看板并发送邮件到相关的人员以展示构建、检查以及测试结果
3. DailyCI
每天定时完成ST测试,并把数据推送至看板系统,发送邮件展示测试用例详细的执行结果:
所有的数据均有推送到看板系统,以图表形式展示整个研发周期内的相关数据
FT数据,看板数据反映FT的测试用例总数、测试用例数、以及通过率数据。
KW,看板数据反映每个项目的KW的错误告警数,以及相关的告警消除趋势
复杂度检查,看板数据实时反映每个项目的Lizard复杂度告警数件
制品库,每次MergeCI构建的版本,都会推送到制品库上,供FT、ST测试使用
ST数据,看板数据反映ST的测试用例总数、测试用例数、以及通过率数据下
改进提效
会议电视引入Devops工具链后整个项目周期得到了有力的监管,并且很高的提高的项目运作效率,但是依然面临的一些问题,依然有改进的空间,改进提效持续进行中。
针对相关的问题提出了一系列的改进措施。持续改进中,大量引进自动化工具,修改相关的流程。详细改进对比如下:
编译实践长,工具链引入后通过工具系统的配合使得整个编译消息提高了70%以上
代码回退率高,是因为错误没有在入库之前发现导致,引入云CI、Gerrit之后,在代码入库之前会自动触发代码的相关检查如编译、KW、复杂度等等,检查结果直接影响代码是否能入库,可以提前发现代码问题,如下图所示Verified +2表示该模块完成的相关的检查可以入库.
代码质量无量化,代码写的时候精简,有无泄露等等问题以前是没有办法量化的,引入相关的工具后代码质量可以详细具体到每个方法
版本无统一管理,以前集成测试和系统测试版本是分开的,集成测试过程中版本编译由集成测试完成,系统测试版本由技术部构建,引入制品库后集成测试,系统测试,以及工程均由制品库出版本,只是版本获取方法由权限或者流程进行控制。
全部0条评论
快来发表一下你的评论吧 !