基于云环境的大型应用软件联调
2018-03-05刘立康
姜 文,刘立康
(西安电子科技大学 通信工程学院,陕西 西安 710071)
0 引 言
软件调试[1-8]泛指重现软件缺陷问题,定位和查找问题根源,最终解决软件问题的过程。对于多个开发部门一起进行开发的大型软件系统,需要在各个部门分别完成自己相关的软件源代码开发与功能调试之后,进行软件联调。
随着计算机技术的发展以及云计算技术[9-10]在各行各业的应用普及,基于云计算的应用软件的种类也越来越多。许多传统环境下运行的应用软件需要升级推出在网络上运行的版本。基于云计算的大型应用软件需要多个开发部门协调开发才能完成全套软件的开发,需要在云环境[11-13]下进行软件联调。软件联调是指软件通用开发平台和软件产品上线后进行相关功能点和性能集成联合调试,以确保新开发的软件上线后能够正常运行。
结合工作实践,叙述了软件联调过程中基于云环境的软件联调层级结构和软件联调内容;叙述了基于云环境的大型应用软件联调的详细过程以及各个角色在软件联调过程中的职责和任务。之后依据一个典型案例,详细叙述了软件联调工程的实现过程和联调过程中一些典型问题的处理方法。
1 基于云环境的软件联调
1.1 基于云环境的软件联调层级结构
软件联调过程中,基于云环境的软件联调层级结构如表1所示。
表1 基于云环境的软件联调环境层级结构
(1)产品业务:提供给用户的多个应用软件产品。
(2)业务开发平台:提供软件产品业务功能开发的公共服务,在平台上可以开发多个软件产品。
(3)网络管理平台:网络管理软件和客户端工具,提供人机接口,管理虚拟网络的各种事务管理,提供软件调试工具。
(4)基础软件:在虚拟机上安装操作系统、数据库和其他常用软件工具。
(5)虚拟计算节点:云环境中的虚拟机,虚拟机是一种严密隔离的软件容器,包含自己的虚拟CPU、RAM、硬盘和网卡(NIC)。它可以运行自己的操作系统和应用程序,行为完全类似于一台物理计算机。
(6)虚拟网络设备:私有云(VPC)网络,私有云是用户申请企业云账户后获得的虚拟网络。它在逻辑上与企业云中的其他虚拟网络隔绝。可以在VPC内部进行各种配置,选择IP地址范围、创建子网以及配置路由表、网络网关和安全设置。这个虚拟网络与传统网络运行方式极其相似。
(7)企业云:是企业自行运营的一种典型的私有云,为企业内各部门提供各种IT服务。
其中,(1)-(3)为联调软件,(4)-(7)为云环境。
1.2 软件联调的内容
(1)软件开发平台和软件产品集成构建、联调;
(2)软件产品功能点调试,软件开发平台功能点调试;
(3)联调软件与云环境的兼容性和适应性磨合调试。
2 应用软件联调角色与联调过程
2.1 软件联调涉及到的角色
软件联调角色包括云环境运维工程师、软件平台开发组、软件产品开发组、配置管理员、持续集成工程师和软件测试组。各角色各司其职,分工协作共同完成应用软件联调,如图1所示。
图1 软件联调用例图
各角色的职责和任务如下:
(1)软件产品开发组:负责软件产品调试和联调。
(2)软件平台开发组:负责通用软件平台的调试和联调。
(3)配置管理员:负责调试过程中平台软件和软件产品版本的更新管理工作。
(4)持续集成工程师:负责平台软件和软件产品的集成构建工作,提供平台软件和软件产品在线调试的安装包[14-16]。
(5)软件测试工程师:完成联调环境搭建,平台软件和软件产品软件包的安装,根据设计文档完成测试场景的分析,设计相关的测试用例,在联调环境下开展测试工作。
(6)云环境运维工程师:保证云环境的正常运行,包括底层基础网络、私有云网络和虚拟机。在测试工程师搭建联调环境的过程中,协助处理各种问题。
2.2 软件联调过程
软件联调过程如图2所示。
2.2.1 制定联调计划
产品与平台的版本经理共同制定联调计划和协调联调环境。
(1)协调规划联调云环境,确定虚拟机数量、配置规格。
(2)确定平台软件和软件产品联调功能点。
(3)确定联调人员和联调工作进度安排。
2.2.2 构建平台软件与软件产品的联调安装包
(1)版本库代码更新:平台软件开发工程师将经过测试、结构优化和评审合格的代码合入配置库合入版本库。软件产品开发工程师将经过测试、结构优化和评审合格的代码合入版本库。
图2 软件调试流程
(2)集成构建联调安装包:持续集成工程师从版本库下载新版本代码,分别完成平台软件和软件产品联调安装包的编译出包。
2.2.3 搭建私有云网络环境
根据软件联调计划测试工程师搭建联调云环境:
(1)私有云网络环境申请。
在企业云的网站上注册账号之后,登录网站申请私有云网络,并根据所需的虚拟机规格和数量申请虚拟机。
(2)安装网络管理软件和软件调试工具。
在私有云网络中选定的虚拟机上安装网络管理软件,安装软件调试工具,同时根据工作需要安装其他常用的软件工具。完成虚拟机,网卡,网元进程和信令IP地址的添加配置。
2.2.4 安装联调软件
(1)登录私有云的虚拟机,安装平台软件和软件产品安装包,完成配置工作。
(2)安装相关的数据资源文件,完成配置工作。
2.2.5 功能点测试
在联调过程中,测试工程师需要协调和管理联调环境,根据工作需要设计测试用例,开展测试工作,重点关注新开发的特性,不断完善新特性的测试用例。
2.2.6 联调过程中的问题处理
在联调过程中发现的问题需要及时记录;定位分析、查找原因、提出解决问题方案、修改存在问题的代码;经过反复调试之后,验证和确认缺陷问题已经被解决。
2.2.7 联调工作结束
经过2.2.5和2.2.6的反复处理,最后调试工作结束。平台与产品的软件开发工程师将联调过程中出现的问题进行整理,提供给测试工程师。测试工程师结合测试用例验证的结果提供联调报告,反馈给平台和产品的版本经理。
3 软件联调工程的实现过程
通过典型案例叙述基于云环境的软件联调过程。在这个案例中平台软件为A(简称A平台),软件产品为Y(简称Y产品)。
3.1 制定联调计划
平台软件A与软件产品Y在启动联调之前,双方的项目经理共同制定联调计划。联调计划包括联调工作内容和进度安排,确定联调人员和工作任务分配,联调环境的规划和部署。
3.2 搭建私有云网络环境
3.2.1 创建私有云网络
(1)申请私有云网段。
登录企业云网站,申请私有云网段,以便和其他客户的私有云环境隔离,自主配置与管理私有云网络环境。本次私有云选用的网段是10.0.0.0/8。
(2)创建子网。
完成私有云创建后,根据软件产品的需要创建子网,完成每个子网的子网网段、子网网关、DHCP功能的配置工作。在创建的私有云上创建了10个子网,子网网段分别是10.16.X.X-10.21.X.X以及10.1.X.X-10.4.X.X.网段。
(3)创建安全组。
安全组是一组虚拟机的访问规则的集合。客户可以通过创建安全组,将虚拟私有云(VPC)中的弹性云服务器划分成不同的安全域,以提升弹性云服务器访问的安全性。
3.2.2 申请云虚拟机
在企业云的网站上为私有云申请虚拟机,虚拟机的规格与数量如表2所示。
表2 软件联调虚拟机规格
虚拟机的规格数据包括操作系统、CPU、内存、系统盘、数据盘以及网络配置等。在申请到的虚拟机上配置网卡,在网卡上配置私有云子网网段分配的IP地址。
3.3 安装软件平台
3.3.1 OMU管理单元和LMT客户端工具
OMU(operation and maintenance unit)是基于Client/Server结构管理的网络,由OMU服务器和OMU客户端组成。OMU是一个管理单元,提供人机接口,负责管理虚拟机上的软件运行状态。OMU的客户端工具为LMT(local maintenance terminal)。
LMT工具通过MML(man-machine language)命令,对网元进行操作和维护。LMT通过基于MML的图形终端,多窗口操作界面;提供了拓扑管理、故障管理、配置管理、告警管理、跟踪管理、资源管理、TFTP服务器管理、日志管理等网管功能,提供了各种功能的窗口操作界面。
在软件联调过程中,用到的MML命令分为四类:
(1)软件远程登录设置命令:软件产品数字签名,远程登录SSH服务等。
(2)网络操作命令:包括各种网络元素的添加、链接和查询等。
(3)数据资源配置命令:包括各种数据资源IP地址的添加、链接、绑定和查询等。
(4)网元调试命令:提供参数设置和各种状态查询命令。
3.3.2 安装OMU虚拟机
OMU安装采用双机模式,在2号虚拟机和3号虚拟机上分别添加5个网卡与浮动IP地址之后,分别安装主、备OMU虚拟机。OMU安装完成后,组成基于Client/Server结构的网络系统。网络系统有一个管理用户(用户名admin),负责网络系统管理。
3.3.3 安装业务虚拟机
在4-6号虚拟机上根据需求情况配置相应数量的网卡以及对应网段的IP地址,将平台软件提供的业务开发平台压缩包解压之后,进入开发平台的文件夹中,进行产品业务虚拟机的安装。3个业务虚拟机都在同一组主、备OMU环境下安装,因此,除了网络配置信息VINC_INFO不同之外,3个虚拟机安装时使用的OMU虚拟机的浮动IP地址相同。3个虚拟机的编号、名称和功能见表3。
3.3.4 安装LMT客户端工具软件包
在1号虚拟机上,使用Y平台提供的LMT安装包,执行LMT客户端安装。安装完成后以管理用户admin的身份登录LMT客户端,修改LMT客户端的初始密码。在LMT客户端界面上MEID=0的网元下执行ADD VMINFO(添加网元虚拟机)命令添加主、备2个OMU虚拟机,查看设备管理界面确认已添加的主、备OMU虚拟机处于正常启动状态。
3.4 安装软件产品
3.4.1 软件产品的安装
登录LMT客户端,在MEID=0的网元下上传软件产品安装包,上传成功后,在MEID=0的平台网元的命令执行窗口上执行ADD ME命令完成软件产品网元添加,网元Y添加成功后,在LMT页面上可以看到Y网元的LMT页面。将Y产品软件的安装包上传后部署到4-6号产品业务虚拟机上。在LMT客户端的下拉列表中选择产品网元Y对应的LMT页面,在产品网元上执行ADD VMINFO命令分别添加3个业务虚拟机。添加成功后,在LMT的设备面板上可以看到3个虚拟机都处于正常启动状态,在MEID=0的网元下对3个虚拟机分别执行开启SSH服务的MML命令。在联调时可以使用PUTTY工具登录这3个业务虚拟机。接下来在LMT的产品网元页面上执行MML命令,在不同的业务虚拟机上执行网元进程添加以及网元产品相应的进程上的数据配置。
表3 业务虚拟机
3.4.2 安装数据资源文件
在7号虚拟机(NFS SERVER虚拟机)上存放数据资源文件,本案例中需要存放转码片源与转码结果文件。安装Suse Linux操作系统时默认安装NFS SERVER文件系统,需要手动执行数据盘挂载。使用LMT工具完成7号虚拟机网元配置。
3.5 软件联调
3.5.1 软件调试功能点
软件联调涉及到的联调特性主要是A平台与Y产品接入适配,Y产品在A平台下的业务运行。
(1)接入适配联调。
接入适配联调的功能点包括在OMU虚拟机上A平台的安装包正常安装;Y产品的代码使用A平台提供的接口代码能够通过持续集成工具的进程编译、Y产品版本包出包;在A平台安装后,通过LMT工具能够完成Y产品版本包加载、业务虚拟机添加以及Y产品的进程文件添加与数据配置。
(2)Y产品在A平台下的业务运行。
业务运行功能点包括完成安装配置之后Y产品在A平台下能正常运行视频转码的业务;在视频转码过程中,A平台与Y产品保持性能稳定。联调双方需要在Y产品的转码业务运行过程中提取各类性能数据,分析确认产品的性能状况,并为以后性能的提升优化提供相关数据。
3.5.2 联调工作
准备工作完成之后开始联调工作。
(1)采用LMT网元调试命令进行联调。LMT提供了两类网元调试命令:
参数设置类命令:可以设置Y产品进程运行的各种参数。
查询类命令:查询所有转码任务状态,根据任务ID查询具体转码任务的状态,根据任务ID查询转码任务各个运行阶段的处理时长,输出全局统计信息以及运行异常的转码任务的断点信息,等等。
(2)软件测试组编写测试用例,对软件产品和平台软件开展测试工作。总共涉及测试用例50多个,采用手工执行测试用例。
(3)软件平台开发人员和软件产品开发人员开展软件调试和联调工作。
3.5.3 联调过程中的软件缺陷问题处理
在联调过程中处理了许多软件存在的问题,下面提供两个典型实例。
(1)在A平台B050版本进行联调的过程中,发现转码业务下发之后6号虚拟机的相关进程文件运行不正常,导致转码任务无法运行。定位之后发现,平台在针对业务虚拟机进行开发时,虚拟机上没有添加的相关进程文件,确认是A平台的缺陷。进行第二轮联调时,将这个问题合入到A平台版本中,转码任务可以正常运行。
(2)Y产品执行视频转码任务时,Socket工具无法下发转码任务,转码任务下发后会报400错误。定位后发现U进程有缺陷,监听端口6002在U进程启动之后没有自动开启,确认是Y产品的缺陷。软件产品开发工程师修改源代码之后,解决了该问题。第二轮联调时,该问题合入Y产品的版本包,转码任务可以正常下发。
3.5.4 联调工作结束
A平台和Y产品经过两轮联调之后,测试工程师将根据联调结果撰写联调报告。在联调报告中的内容包括OMU安装、各业务虚拟机安装、LMT安装、LMT下执行的Y产品网元包部署、Y产品业务虚拟机与业务进程添加、Y产品业务数据配置、Y产品转码业务功能测试、Y产品在企业业务云下的性能数据统计等。
4 联调过程中与调试环境相关问题的处理
在联调过程中除了软件功能调试问题之外,还有一些与联调环境有关的问题需要处理,下面叙述一些典型问题的处理方法。
4.1 OMU虚拟机存在问题
A平台软件安装完成之后,发现配置项不正确,需要重新安装。在重新安装操作系统的过程中,OMU虚拟机出现重装系统失败导致无法正常开机。云环境的运维工程师定位之后,发现OMU虚拟机在重新安装系统的过程中系统盘丢失。运维工程师处理了该问题,OMU虚拟机重新安装系统后,完成A平台软件的正确安装和配置。
4.2 A平台软件部分源代码没有合入联调版本包
在完成业务虚拟机网元添加后,在产品网元的业务面板上发现,添加成功的业务虚拟机都没有处于正常启动状态。定位之后,发现A平台在出联调版本时,自动划分Suse Linux操作系统根分区相关的平台代码没有合入版本包,导致所有的业务虚拟机不能正常启动。平台开发工程师通过应急补丁的方式处理该问题。
4.3 Y产品软件且平台不正确
在产品网元的业务面板上的业务虚拟机不能正常启动。定位之后,发现网元包中的平台软件相关文件版本不是平台软件提供的新版本,而是老版本,而且编译生成的产品网元的进程文件也没有全部生成的。持续集成工程师确定Y产品软件集成构建不正确,重新出软件产品的版本包,加载新的版本包之后,解决了该问题。
4.4 业务虚拟机安装配置不正确
加载了产品网元的版本包后,发现有1台业务虚拟机不能正常启动。定位之后,发现该业务虚拟机在安装过程中配置不正确。测试工程师重新安装该虚拟机的操作系统,进行重新配置之后,该虚拟机能够正常启动。
5 结束语
软件联调是软件开发过程中的重要环节,尤其对于大型软件显得尤为重要。随着云计算技术的高速发展,许多传统环境下的软件产品需要推出云环境下的软件版本,需要关注和研究云环境下的软件联调技术。工作实践表明,做好基于云环境的软件联调工作可以在软件开发过程中不断解决存在的各种问题,从而提高软件产品的质量,提高上线后软件的安全性与稳定
性。在网络环境上更好地满足客户对软件产品的需求。
[1] MYERS G J,BADGETT T,SANDLER C. Art of software testing[M].3rd ed.Hoboken,New Jersey,U.S:John Wiley & Sons,Inc.,2012.
[2] 林科学.软件测试/调试技术应用研究[D].南京:南京气象学院,2004.
[3] 张银奎.软件调试[M].北京:电子工业出版社,2008.
[4] METZGER R C.软件调试思想[M].尹晓峰,马振萍,译.北京:电子工业出版社,2004.
[5] TELLES M, HSIEH Y. The science of debugging[M].Scottsdale,Arizona,U.S:the Coriolis Group,2001.
[6] 蔡 铭,程 胜,王 瑞.航天型号高可靠软件系统调试原理与技术[M].北京:中国宇航出版社,2008.
[7] MATLOFF N,SALZMAN P J.软件调试的艺术[M].张 云,译.北京:人民邮电出版社,2009.
[8] 石磊玉.日臻完善-软件调试与优化典型应用[M].北京:中国铁道出版社,2010.
[9] 邢利荣,何晓龙.从虚拟化到云计算[M].北京:电子工业出版社,2013.
[10] 陈国良,明 仲,冯禹洪.云计算工程[M].北京:人民邮电出版社,2016.
[11] 魏志华,赵强强.构建企业私有云软件测试平台[J].电子技术与软件工程,2015(9):63-64.
[12] WANG Jun,MENG Fanpeng. Software testing based on cloud computing[C]//Proceedings of the 2011 international conference on internet computing and information services.[s.l.]:[s.n.],2011:176-178.
[13] Amazon virtual private cloud user guide[R].Seattle,Washington,U.S:Amazon Web Services,Inc.,2013.
[14] 姜 文,刘立康.基于ClearCase的软件配置管理与持续集成[J].计算机技术与发展,2016,26(1):10-17.
[15] 姜 文,刘立康.基于SVN的软件配置管理和持续集成[J].电子设计工程,2016,24(2):1-5.
[16] DUVALL P M,MATYAS S,GLOVER A.持续集成软件质量改进和风险降低之道[M].北京:电子工业出版社,2012.