基于持续集成的自动化单元测试.pdf
《基于持续集成的自动化单元测试.pdf》由会员分享,可在线阅读,更多相关《基于持续集成的自动化单元测试.pdf(5页珍藏版)》请在咨信网上搜索。
1、第 14卷 第 4期2023年 8月指挥信息系统与技术Command Information System and TechnologyVol.14 No.4Aug.2023基于持续集成的自动化单元测试桂文军 刘德民 张媛(中国电子科技集团公司第二十八研究所南京 210023)摘 要:现代指挥信息系统研发模式已由传统的瀑布模型向敏捷开发模式转变,单元测试虽然可在软件研发的早期阶段找出缺陷,但仍存在效率低和测试周期长等问题。结合指挥信息系统软件开发和测试的特点,搭建了基于持续集成的自动化单元测试平台;利用 GoogleTest单元测试框架,提出了动态链接与运行参数相结合的方法,并优化了单元测试过
2、程。关键词:持续集成;单元测试;动态链接;运行参数中图分类号:TP311.5 文献标志码:A 文章编号:1674909X(2023)04009104Automated Unit Testing Based on Continuous IntegrationGUI Wenjun LIU Demin ZHANG Yuan(The 28th Research Institute of China Electronic Technology Group Corporation,Nanjing 210023,China)Abstract:The research and development mode
3、 of modern command information system has changed from the traditional waterfall model to the agile development mode.Although the unit testing can find the defects in the early stages of software development,but it has problems such as low efficiency and long test cycle.Combined with the characteris
4、tics of command information system software development and testing,the automated unit test platform based on continuous integration is built.By the unit test framework of GoogleTest,the method of dynamic linking combined with run parameters is proposed,and the unit test process is optimized.Key wor
5、ds:continuous integration;unit testing;dynamic linking;run parameter0 引言 现代指挥信息系统快速发展,研发模式由传统的瀑布模型1向敏捷开发模式23转变,越来越复杂的功能导致代码规模达千万行级别。为适应用户不断变化的需求,产品需快速迭代且交付周期要求越来越短4,因此保质保量交付产品已成为指挥信息系统软件研发面临的重要问题。根据指数增长规律5,即修复软件缺陷所需的时间和金钱等随时间推移呈指数级增长,需在软件编码的最初阶段开展单元测试,以便找出缺陷并修复68。单元测试910具有及早发现问题、修复耗时少和代价小等优点,可有效提高软件
6、模块质量11。实际工作中,传统单元测试仍存在效率低和测试周期长等问题1213。因此,可将持续集成和自动化单元测试应用到指挥信息系统软件产品研发中14,采用自动化构建技术代替手工操作,在持续迭代开发的基础上实时收集反馈信息并及时修正,有计划地自动执行整个构建过程,提高工作效率并在软件编码的早期阶段及时发现软件缺陷,从而确保产品质量。实践与应用doi:10.15908/ki.cist.2023.04.015收稿日期:2022-06-20引用格式:桂文军,刘德民,张媛.基于持续集成的自动化单元测试 J.指挥信息系统与技术,2023,14(4):91-94.GUI Wenjun,LIU Demin,Z
7、HANG Yuan.Automated unit testing based on continuous integration J.Command Information System and Technology,2023,14(4):91-94.指挥信息系统与技术2023年 8月1 持续集成平台 持续集成15是软件代码不断迭代的过程,其核心是由计算机自动完成软件开发中的重复工作。持续集成环境组成如图 1所示。持续集成平台建立了从软件开发到自动化单元测试的完整流程,持续集成平台组成及流程如图 2所示。平台组成包括持续集成服务器、版本控制服务器和应用服务器等。持续集成服务器部署持续集成工具,
8、采用开源软件 Jenkins1617完成代码提交、构建和自动测试等活动,C+项目采用 cmakebuilder、MSBuild 和 qmakebuilder 插件构建,Java 项目采用开源软件 Maven18构建;版本控制服务器部署版本控制工具,采用开源软件 Subversion 管理项目的代码库;应用服务器部署单元测试工具,C+项目采用开源软件 GoogleTest1920,Java项目采用开源软件 JUnit。持续集成通过设置定时轮询日程表配置构建触发器,日程表格式为“分 时 日 月 年”。持续集成平台流程如下:1)开发人员从代码库中检出代码到客户端,编写代码和测试程序;2)开发人员提交
9、代码到代码库;3)持续集成服务器定时轮询和监控代码库的变更;4)持续集成服务器从代码库中检出最新代码;5)自动执行编译、链接和单元测试等;6)通过电子邮件等方式将构建活动结果和状态信息实时反馈给开发人员,配置方式为在“构建后操作”中添加邮件列表(用空格分隔邮件用户)。2 单元测试框架 指挥信息系统软件实现以 C+语言为主,部署平台包括 Windows、Linux和 UNIX 等操作系统环境。GoogleTest2122是专为 C+项目开发的开源单元测试框架,具有跨平台、稳定、快速和线程安全等特点,部署与调用过程简便,测试结果信息丰富。通 过 测 试 集 合(TestSuite)组 织 测 试
10、用 例(TestCase),将具有相关性的测试用例划分到同一个测试集合中,GoogleTest 单元测试程序组织结构如图 3所示。1 个测试程序可包含 1 个或多个测试集合,1个测试集合可包含 1个或多个测试用例,这种组织测试用例的通用模式既能反映测试代码的架构,又易于维护。3 单元测试部署 动态链接是主程序对动态共享库或对象中符号的引用,只有主程序运行后才能加载依赖的动态链接库。动态链接具有以下优点:可执行文件较小,节省内存和磁盘空间;模块更新方便,有利于提高程序的可维护性、可扩展性和兼容性;不同编程语言按约定可使用同一套动态链接库;开发过程独立且耦合度较小,适合大规模软件开发。指挥信息系统
11、规模庞大且功能复杂,根据系统应用与功能可划分为相对独立的部门和专业,各类人员相互配合进行开发与测试,因此对系统部署、升级和运维等方面要求较高。针对指挥信息系统特点,本文在 Windows、Linux 和 UNIX 等操作系统环境中以动态链接的方式对 GoogleTest 单元测试工具进行编译,并遵守指挥信息系统目录和文件命名等部署规范,提供相同接口给所有用户使用,有效提高了程序的可维护性、可扩展性和兼容性。单元测试工具部署规范如表 1所示。图 1 持续集成环境组成图 2 持续集成平台组成及流程图 3 GoogleTest单元测试程序组织结构92第 14卷 第 4期桂文军,等:基于持续集成的自动
12、化单元测试4 单元测试程序 单元测试中,需调用 GoogleTest单元测试框架提供的接口来编写单元测试程序,具体步骤如下:1)使用运行参数进行初始化。可采用命令行参数、代码中指定标记和系统环境变量 3 种方法设置运行参数,程序中最后设置的运行参数才是有效参数。需说明的是,命令行参数的优先级高于代码中指定标记,代码中指定标记的优先级高于系统环境变量。a)命 令 行 参 数:在 主 函 数 中 调 用testing:InitGoogleTest函数解析命令行参数,且需在调用RUN_ALL_TESTS()之前调用。命令行参数的示例代码如下:int main(int argc,char*argv )
13、testing:InitGoogleTest(&argc,argv);/使用命令行参数设置运行参数return RUN_ALL_TESTS();b)代 码 中 指 定 标 记:使 用testing:GTEST_ FLAG宏在代码中设置运行参数。例如,在代码中设置testing:GTEST_FLAG(output)=xml:,效果等同于设置命令行参数gtest_output=xml:。代码中指定标记的示例代码如下:int main(int argc,char*argv )testing:GTEST_FLAG(output)=xml:;/使用代码中指定标记设置运行参数testing:InitGoo
14、gleTest(&argc,argv);/使用命令行参数设置运行参数return RUN_ALL_TESTS();c)系统环境变量:使用系统环境变量(变量名全大写)设置运行参数。例如,设置系统环境变量GTEST_OUTPUT,效果等同于设置命令行参数gtest_output。2)使用断言编写测试用例代码。断言的功能是检查条件是否为真,包括布尔型、整型、字符串和浮点型等数据类型。断言分为致命断言ASSERT和 非 致 命 断 言EXPECT 2 类,其 中,致 命 断 言ASSERT指断言检查失败时退出当前函数(并非退出当前测试用例);非致命断言EXPECT指断言检查失败时继续执行。断言的示例代
15、码如下:TEST(MySuite1,MyCaseBool)/测试集合 1,测试用例 1:检查布尔型变量bool bVal1=MyProc1(void);ASSERT_TRUE(bVal1);/检 查 布 尔 型 变 量bVal1为真bool bVal2=MyProc2(param21);ASSERT_FALSE(bVal2);/检查布尔型变量bVal2为假TEST(MySuite1,MyCaseInt)/测试集合 1,测试用例 2:检查整型变量int iVal1=MyProc3(param31,param32,param33);int iVal2=MyProc4(param41,param42
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 持续 集成 自动化 单元测试
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【自信****多点】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【自信****多点】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。