( 1. 北京超图软件股份有限公司,北京 100015; 2. 中国科学院 地理科学与资源研究所,北京 100010)
论文来源:《测绘与空间地理信息》第39卷 第12期 2016年12月
摘要:随着软件企业研发产品规模的扩大和功能的成熟,软件研发和维护所需的计算资源逐渐增多,软件产品测试也占用大量计算资源。但是,物理节点的计算能力受到 CPU 大小的限制,且产品测试并非时刻发生。因此,为充分利用计算资源,本文引入云计算技术,搭建了软件持续集成与自动化测试系统。目前,该系统已成功应用于国内 GIS 企业的产品研发与维护应用实践,不仅可以保障软件质量,还可避免计算资源的闲置,降低能耗,有利于减少企业成本,并有效降低环境污染风险。
关键词: GIS软件,自动化测试,持续集成系统,云计算,虚拟化
随着信息技术不断创新发展和变化多样的用户需求,单一的软件产品往往无法满足现实应用中的需要。因此,软件企业的产品一般呈规模化、成熟化发展,除了仅产品类型逐渐增多之外,同一类型还可能包含处在软件生命周期不同阶段的产品形态[1]。产品规模的扩大和产品功能的成熟,使得仅依靠有限地人工进行软件测试的手段变得捉襟见肘,不仅在测试时难以全面覆盖软件产品的所有功能模块,测试效率低下,而且无法实时发现代码缺陷,及时交付出优质的软件产品或软件补丁包,影响用户满意度[1 - 2]。
软件持续集成与自动化测试可解决上述问题。这是敏捷软件研发方法的一种有效的实践。持续集成可以提高研发人员的工作效率,及时响应用户缺陷报告,保障各类型软件产品处于稳定可控的状态[3]。例如,对于大型软件产品 Visual Studio Tools for Office 的研发团队而言,应用持续集成后,其代码检查过程所花费的时间从两个多小时降低至不到一个小时[4]。
由于各类型产品研发和维护的需要,持续集成与自动化测试系统一般 7 × 24 h 随时待命。但是,各类型产品对计算资源的需求并不一致。对于处在维护阶段的产品,一般是在接到用户缺陷报告时,相应产品的研发人员才会修改代码,触发持续集成与自动化测试系统。由用户触发的产品维护并非时刻发生,但系统计算资源却随时准备供其使用。对于在研产品,即使一天内多次集成并进行自动化构建,也不会占用系统所有的计算资源,否则其他产品将面临很大的计算压力。这些情况,造成系统计算资源的闲置,而且浪费能耗,加重企业成本,增加环境污染的风险。
为解决上述问题,本文引入了云计算技术。云计算的虚拟化技术是一种资源管理技术,它将物理计算资源 ( 如 CPU、内存、存储和网络) 进行抽象和转换,允许在一个物理节点上同时运行多个相互隔离虚拟计算节点。虚拟化技术还是一种高效利用物理资源的技术,它可以实现资源池化管理,并可根据实际应用需求进行资源重新分配,充分发挥物理计算资源的潜能[5]。
本文利用 OpenStack[6]开源云平台,利用其虚拟化技术和资源池化技术,搭建了软件持续集成和自动化测试系统,用于规模化的软件产品研发和维护。该系统不再随时为所有产品都预留物理计算资源,只在有计算需求时,才去启动虚拟计算节点,执行代码的集成测试,既节约了成本,又可保障软件质量,一举两得。
更多内容请点击下方的PDF下载