敖海洋 余明珠 吕恬

【摘 要】随着软件产业的不断发展,软件缺陷成为制约软件质量的关键因素。如何管理和跟踪在测试和使用过程中发现的软件缺陷,对于提高缺陷修复效率具有一定的现实意义。目前软件缺陷管理存在平台迁移困难,数据迁移困难,导入导出资源困难,对于缺陷没有可视化图表展示等问题。系统使用GitBlit作为版本库,Jenkins进行持续集成,使团队成员能够良好地协作,针对需求的变更能良好地应对,系统的质量也在一定程度上得到了提高。在缺陷管理系统中使用持续集成框架,对项目代码进行测试,及时发现系统缺陷,同时减少系统的潜在缺陷。

【关键词】持续集成;缺陷管理;SSM框架;Jenkins

中图分类号: TP393.09 文献标识码: A 文章编号: 2095-2457(2018)05-0049-002

【Abstract】With the continuous development of software industry, software defects become the key factor restricting the software quality. How to manage and track the software defects which are found in the process of testing and using has practical significance for improving the efficiency of defect repairing.From the view of current disadvantages in software defect management,such as difficulties of platform migration,the data migration,importing and exporting resources and the visualization of the defects of the visual displaying shortage etc.The system utilizes GitBlit as a repository, Jenkins for continuous integration,so that team members can work well together.Changes in the demand for a good response,the quality of the system has also been improved to some extent.Using the Continuous Integration Framework in a defect management system enables project code testing,timely detection of system defects, and reduction of potential system defects.

【Key words】Continuous integration;Defect management;SSM framework;Jenkins

0 引言

近年来,随着计算机技术的不断发展,软件作为不可或缺的元素进入人们的生活之中[1]。在软件的开发与使用的过程当中,缺陷的产生往往会极大地影响软件的开发与使用。因此,需要一套功能完备的缺陷管理系统来对缺陷进行管理和跟踪,方便开发人员与测试人员沟通交流,对缺陷进行及时修改和管理。在软件系统开发过程中,往往存在着项目进度不可控、软件质量无法保证、开发风险较大、成本经常超出预算、软件测试效率过低等问题,因此项目中引入持续集成,提高缺陷管理系统的质量与开发效率。持续集成的目标是利用开发人员的生产力,同时通过使集成成为软件工程周期中一个简单自然的部分来降低集成风险[2]。

1 持续集成

1.1 持续集成的概念

持续集成(CI)是一种软件开发实践,让软件开发团队在一天之内多次自动构建软件。持续集成建立在敏捷开发的方式之上[3],它提倡团队开发人员多次对现有的开发工作进行集成,然后每一次的集成都通过自动化构建软件来实现,包括有项目的自动化编译、单元测试、自动化发布等环节,这样有利于在早期发现软件项目中的缺陷,大大减少集成的问题,让从而降低开发软件的风险。持续集成的主要流程如图1所示。常用构建工具包括Jenkins、Travis、Codeship、Strider四种。本系统中主要用Jenkins。

1.2 国内外现状

随着持续集成核心价值逐渐被人们认可,很多国外软件公司开始进行持续集成的研究[4],逐渐有一些持续集成工具被开发出来,其中Jenkins,CruiseControl, Bamboo,QuickBuild是业界相对流行的几款持续集成服务器。ThoughtWorks公司开发的CruiseControl是最早面世的一款持续集成服务器,为CI过程的推广做出了很大的贡献。Jenkins作为开源持续集成工具的后起之秀,市场份额上已经超过了早期CI工具。Jenkins采用Java语言开发,Jenkins的主要特点:简洁的Web界面、易用性、监控可视化、功能插件化等。Google在软件开发行业有比较领先的持续集成技术,Google也一直在优化和改进现有的一些持续集成框架,从而能不断提高持续集成的效率。

国内对持续集成的研究相对较晚。百度在2009年引入敏捷开发,后来随着的发展,在2010年开始在项目中融入持续集成方式。2009年,华为也引入了敏捷开发模式,由于华为云计算的发展需要,逐渐在开发过程中加入了持续集成。在最近几年中,阿里、腾讯等大型互联网公司也开始研究持续集成。

1.3 持续集成的必要性

传统的软件开发方式是:对项目进行分析,划分模块然后分别开发,等所有的模块都开发完毕后再在一起进行集成测试[5,6]。这种软件开发方法存在很多问题:首先,这种方法适合各个模块之间没有联系或者联系很少的情况,但是现在大部分软件模块与模块之间,人员与人员之间联系紧密;其次,软件的功能要求愈来愈高,软件也越来越复杂,单纯的模块划分的方法已经不能满足当前的求需;最后,很多软件的模块分开能正常工作,但是集成在一起就会出现缺陷,而且还可能会让缺陷越改越多,这会导致软件质量差和产品发布延迟。因此开发团队不得不寻找一种新的方案来解决面临的问题。持续集成通过频繁地构建代码,保证项目一直都能够正常运行,降低了发布产品失败风险,提高了产品质量。同时持续集成能够减少发布产品的重复劳动,节约人力成本。

2 系统设计

由于在软件系统的开发过程中,往往存在着项目进度不可控、软件质量无法保证、开发风险较大、成本经常超出预算、软件测试效率过低等问题,因此在本项目中引入持续集成,采用GitBlit作为版本库,SSM作为系统框架,借此来提高缺陷管理系统的质量与开发的效率。本系统拟以迭代的方式系统地检测删除来实现缺陷管理。在知识库中注册与缺陷相关的事件和规则,使模型变得智能化。使用分布式协作工具使软件检查员能够毫无差距和重叠地履行职责。定制的检验过程评估准备了关于检验过程的性能和有效性的有用信息,这导致在项目生命周期的下一次迭代中持续改进。在真实的环境中实现模型以检测和消除真实的缺陷显示了模型的性能[7]。

2.1 所用框架SSM

SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合而成,是继SSH之后,目前比较主流的Java EE企业级框架。具有易于上手、测试便捷、能优化管理等显着特点。其中Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。其提供了一种简易的开发方式,避免了那些可能导致底层代码变得混乱复杂的大量属性文件和帮助类。SpringMVC提供了构建web应用程序的全功能MVC模块,分离了控制器、模型对象、分派器以及处理程序对象的角色。MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。选择此框架作为项目开发框架,大大缩短了开发时间,并能统一并优化缺陷管理。

2.2 设计流程

在调查研究现有的缺陷管理系统并总结出其中的问题后,选择开源工具,设计并确定框架方案以及开发方案,进行系统实施。在此过程中需要搭建数据库、GitBlit、Jenkins,前端使用JQuery EasyUI进行开发,系统采用Spring MVC+MyBatis框架。开发完成之后,对系统进行应用、评价和分析,并改进和推广系统。系统设计流程图2所示:

2.3 系统实现

持续集成缺陷管理平台主要包括核心模块、数据分析模块、测试模块、前端展示模块。

2.3.1 核心模块

用户输入缺陷信息,通过HTTP协议传输到服务器;服务器通过SMTP协议向用户发送缺陷状态。工作流程如下:

(1)用户在浏览器访问缺陷管理系统,在相应页面填写缺陷的详细信息,在提交表单时,通过http协议发送post请求到服务器;服务器接收请求。将缺陷信息打包,通过服务器的SMTP,发送到管理者。

(2)缺陷被处理或者关闭时,服务器将对应的缺陷状态打包通过SMTP发送到相关人员。

2.3.2 数据分析模块

数据分析模块负责处理核心模块传递的各类参数,包括如下操作:

(1)过滤:过滤返回数据中的无效冗余信息;

(2)解析:对数据进行分类分析,计算

(3)存储:将数据进行分类存储,方便日后整理分析;

(4)显示:将数据发送至前台展示模块。

2.3.3 前端展示模块

前台展示模块负责实现用户与平台的交互功能、数据可视化展示。

2.3.4 测试模块

在系统开发过程中结合持续集成,自动对开发代码进行上传持续集成。在不同测试人员对系统编写单元测试代码后,系统直接集成,以便及时检查出系统的缺陷。

3 结语

系统利用GitBlit作为版本库,Jenkins进行持续集成,针对现在国内外缺陷管理系统存在的问题(如:平台迁移困难,数据迁移困难,导入导出资源困难,对于缺陷没有可视化的图表展示)进行了改进,完成了缺陷管理。在项目开发中结合持续集成可以大大节省开发时间;基于持续集成的缺陷管理系统在缺陷管理过程中降低了缺陷管理的复杂度,方便测试、开发人员对缺陷进行跟踪、管理。随着软件产业的不断发展,软件项目的开发效率也逐渐成为行业关注的热点问题,合理管理软件缺陷在软件项目开发过程中将越来越被重视。在持续集成系统的背景下考虑验收测试的发展已经是一个重大转变[8]。

【参考文献】

[1]于广辉.基于Scrum的软件缺陷管理系统设计与实现[D].大连理工大学,2014.

[2]Abdul F A,Fhang M C S.Implementing Continuous Integration towards rapid application development[C]// International Conference on Innovation Management and Technology Research.IEEE,2012:118-123.

[3]陶镇威.基于Jenkins的持续集成研究与应用[D].华南理工大学,2012.

[4]张力文.基于Jenkins的项目持续集成方案研究与实现[D].西南交通大学,2017.

[5]戴建国,赵庆展,郭理,秦怀斌.持续集成在项目开发中的应用研究[J].计算机工程与设计,2009,30(10):2573-2576.

[6]陈刚,羌铃铃.软件项目开发中的持续集成研究[J].项目管理技术,2011,9(12):103-106.

[7]Taba N H, Ow S H.Software Defect Management Using a Comprehensive Software Inspection Model[J].Software Engineering, 2012, 2(4):160-164.

[8]Stolberg S.Enabling Agile Testing through Continuous Integration[C]//Agile Conference.IEEE,2009:369-374.