第18卷第4期 奄涤徽 周 P0WER SUPPLY TECHNOLOGIES AND APPI ICATIONS V01.18 No.4 April.2015 2015年4月 基于 的嵌入式软件静态测试 职晓,吴迪,张江华 (西安电子工程研究所,陕西西安710100) 摘要:提出了一种将人工测试与基于测试工具LDRA Testbed的自动化静态分析结合起来的静态 测试方法。该方法首先通过测试工具对程序进行测试,然后针对工具的分析结果,并结合相关的文 档进行人工审查,形成最终的静态测试报告。经验证,此方法相比传统方法测试效率更高,节省了测 试资源,在工程上有着较好的应用价值。 关键词:静态测试;LDRA Testbed;代码评审;数据流分析;质量评审 Static Testing of Embedded Software based on LDRA Testbed ZHI Xiao,WU Di,ZHANG Jiang-hua Abstract:A new static testing method is introduced,in which artiicifal manual testing and automated static analysis based on the testing tool LDRA Testbed are combined.Aiming to the analysis reports which are generated by the tool,testing engineers make the analysis of the program in consideration of the relevant documents.Eventually,the static testing report is submitted by them to the developers.It is proved that the Hew method can not only reduce testing resources and get better testing eficifency compared with the traditional one,but also has better value in engineering application. Key words:power electronic;circuit;protect;over heat;over current;over voltage 中图分类号:TP31 1.5文献标识码:A 文章编号021 9-271 3(201 5)04—036—005 随着嵌入式软件在智能武器系统中的比例越 来越大,软件缺陷已经成为武器系统缺陷的主要因 素。由于软件缺陷存在累积效应。研究证明缺陷发 现得越晚修复成本将会变得越高ll】。静态测试是不 执行程序代码而寻找程序代码中可能存在的错误 收稿日期:2015—04—01 或评估程序代码的过程。该过程试图在软件开发的 早期就能发现程序中尽可能多的潜在缺陷或错误。 因此,对于软件可靠性要求非常高的嵌入式软件, 进行静态测试不仅是确保软件可靠性的重要手段, 也是衡量和评价软件质量的有效途径 。 传统的静态测试方法主要通过代码走读和代 —36一 码审查等手段来查找被测代码中的缺陷,它可以充 分发挥人的逻辑思维的优势,一旦发现错误,通常 就能在代码中对其进行精确定位,降低了缺陷修正 的成本。同时,由于静态测试不执行程序,因它的实 施并不需要特别的条件,很容易开展。然而虽然其 具有上述优点,但由于涉及项目代码复杂,文档繁 多.因此往往需要大量的人力和时间成本,且发现 缺陷率低。当实际项目的进度紧张时,静态测试就 会被忽视,致使大量在静态测试阶段能检查出的软 件缺陷就遗留到了下一阶段。 针对传统静态测试方法的缺点,本文提出一种 将人工测试与基于测试工具LDRA Testbed的自动 化静态分析结合起来的静态测试方法。该方法首先 通过Testbed对实际的项目代码进行全面的测试, 然后针对工具的分析结果,结合相关的文档进行人 工审查与甄别。这种方法既发挥了专业测试工具的 高效和全面的特点,又规避了测试工具分析结果往 往过于机械,与实际项目代码有所出入,不符合实 际的项目需求的缺点。经验证,这种方法在实际的 项目中有着较好的工程应用价值。 1 传统的静态测试方法 传统的静态测试技术主要包括由人工进行的 代码审查和代码走查。代码审查和代码走查是由若 干个程序员与测试人员组成一个小组,集体阅读并 讨论程序并检查程序的过程。二者是有一定的区别 的。代码审查的核心是代码审查单,它是将项目开 发中编码可能发生的各种错误进行分类,对每一类 列举出尽可能多的典型错误,然后制成表格。测试 小组成员通过阅读被测程序,对照该审查单,将查 找出的错误记录下来,最后交给开发人员修改。代 码走查与代码审查的过程大体相似,最主要的区别 是代码走查不是简单地阅读程序查找错误,而是将 测试人员提供的若干测试实例带入程序,将程序逻 辑走一遍,并由测试人员讲述执行过程,记录相关 变量的值[31 事实证明.这种方法能够有效地检查出一定数 瓣 国鼷 量的软件缺陷。但其缺点也十分明显。它往往需要 占用大量的人力与时间成本.而且由于涉及项目代 码复杂、文档繁多,经常会遗漏很多明显的软件缺 陷。特别是对于中小型开发团队,这种传统方法可 操作性不强,很难真正实施。 2 基于Testbed的静态测试方法 2.1基于Testbed静态测试方法概述 针对人工测试的上述缺点,本文提出了人工测 试与借助测试工具的自动化静态检查结合起来的 静态测试方法,其流程如图1所示。首先利用 Testbed软件的静态分析功能.对被测程序进行静态 分析,可以得到四份报告:代码评审报告、数据流分 析报告、交叉索引报告、质量评审报告[41。但报告中 的检测出的软件缺陷往往比较机械。单单按照报告 修改缺陷,可能会与项目软件的实际需求相悖。因 此,需要依据相关文档中的静态测试需求,通过人 工分析上述报告分析出的疑似软件缺陷,确定需要 修改的软件缺陷。最后,将要修改的缺陷形成静态 测试报告。开发人员利用测试报告对程序进行修 改,修改完成后进行回归测试。依次往复直至满足 上述测试需求。 图1基于Testbed静态测试示意图 一37— 第18卷第4期 鼋涤箍船阂 P0WER SUPPLY TECHNOLOGIES AND APPLICATIONS V0I.18 No.4 2015年4月 2.2具体静态测试过程 这种改进的静态测试方法是将传统方法中的 各类编码或设计错误进一步提炼。具体分别通过代 码评审、数据流分析和质量评审技术来检查相应的 软件缺陷,使得整个静态测试过程更有条理更具可 操作性。测试过程图2所示。 图2基于Testbed静态测试具体流程 (1)代码评审 嵌入式软件是一类对软件的可靠性要求极高 的系统软件,而所用的C/C++语言编程方式非常灵 活,经大量实践证明对于开发嵌入式系统中运行的 软件,一些危险的或者不规范的编程方式可能会给 软件系统留下许多潜在的错误,给系统的正常运行 带来风险同。因此,特别是对于军用嵌入式软件的编 程应该遵循严格的编程规范,以防范上述可能会降 低软件的健壮性的编程行为。目前,军用嵌入式软 件主要采用的是国际上现有的成熟的软件编码标 一38一 April.2015 准,如DERA、MISRA等 本文提到的代码评审所依照的编码规则标准 是MISRAC,这是欧洲汽车工业软件可靠性联合会 针对汽车工业软件安全性的制定的C语言编程规 范,现已经被国内嵌入式软件行业所广泛采纳使 用。代码评审过程需要测试人员对照MISRAC的各 条编码准则详细说明,通过分析上文提到的代码评 审报告中的代码违规项,确定要修改的违规代码 行,并提交开发人员进行修改。 (2)数据流分析 数据流分析主要是通过建立程序的控制流图 来分析程序中数据发生的异常现象。具体主要包括 数据流异常检查、函数接口参数检查以及全局变量 使用检查。数据流异常检查重点针对变量的初始 化、赋值和引用过程中存在的行为序列的异常,比 较常见的是变量定义时未初始化这种常见的错误。 函数接口检查是指检查被测程序中的单元函数的 输入输出是否满足《软件详细设计说明书》中的设 计需求:全局变量检查类似。也是检查被测程序中 的全局变量是否满足《软件详细设计说明书》中的 设计需求 Testbed分析得到的数据流分析报告与交叉索 引报告中对上述项都有相应分析,测试人员只需结 合相应测试需求与项目实际情况分析得出需要修 改的相应软件缺陷,并提交开发人员进行修改。 (3)质量评审 软件的质量评审是基于软件的质量模型来对 被测软件的质量特性进行定量地评估。软件的质量 模型是将软件的质量特性。划分为不同的子特性, 然后将每一个子特性细分为不同的度量或测试项, 最后综合考虑各测试项的取值来定量评估被测程 序的质量特性。 Testbed软件将嵌入式软件的质量特性分为可 测试性、清晰』生与可维护性三个子特性[5_。每个子特 性又分为不同的测试项。如表1所列,以可测试性 为例,可分为如下的测试项。每一个测试项都有相 应的阈值,超出即说明该代码可能存在不合理的程 序结构,可根据实际情况进行程序优化。相关的阈 表1可测试性的度量 子特性 测试项 最小值 最大值 控制流结点数 0 5 圈复杂度 l 10 可执行代码行数 2 2o0 可测试性 基本语句块数 l 30 循环数 0 4 过程出口数 0 1 扇入数 0 5 输出数 0 5 值在《装备软件测试实施细则》中有相应的规定。 测试人员可根据质量评审报告中的各测试项 的实际值,对照规定的取值范围,对相关代码段进 行分析,确定需要修改优化的代码,并提交开发人 员进行修改。 3 实例分析 为验证上述静态测试方法,对某雷达搜索截获 模块利用Testbed测试工具进行静态测试.经人工 分析后测试结果如表2所列。从表中可以看出。各 表2静态测试结果统计 违反项 缺陷数 表达式未加括号 8 有符号数和无符号数相加 7 函数的实际返回参数类型与定义的类型不一致 2 逻辑关联的表达式未加括号 8 作为形参的的指针未加const关键字 2 形参与实参类型的不一致 4 数据流UR异常 1 单元函数控制流结点、圈复杂度过大 9 单元函数内循环嵌套层数过多 2 单元函数扇出数过大 1 类违反项共计lO项,对应软件缺陷数共计44个。 静态测试各阶段的缺陷如图3所示.其中代码 评审检查出的软件缺陷共计27个.数据流分析检 查出的软件缺陷共计5个,质量评审检查出的软件 缺陷共计12个。从中可以看出该软件的缺陷主要 集中于代码评审和质量评审环节。说明该软件的开 国蘧缔 发人员编码还不够规范,并未完全按照军用软件的 编程规范进行编程。同时,在质量评审阶段分析发 现该软件的冗余代码很多,相似功能的程序复用不 够,使程序的可读性和可维护性大大降低,潜在缺 陷的概率大大增加。 图3静态测试各阶段缺陷 传统方法与改进方法结果的对比.如图4所 示。与传统的静态测试方法对比,改进后的方法在 测试的开始阶段发现软件缺陷的速度明显更快.全 局来看该方法发现软件缺陷能力也明显优于前者。 因此,基于测试工具Testbed的静态测试方法在工 程上也更有应用价值。 缺陷趋势图 较4s 件鑫s 蕞 陷2.5 ;藏 § 基 5 二 …~卜… 图4两种方法软件缺陷趋势对比 4 结束语 随着嵌入式软件在武器系统的地位越来越重 要,作为软件测试的早期环节,因其在发现软件缺 陷过程中的重要作用越来越受到业内的关注。传统 的静态测试方法由于需要大量的时间和人力成本. 在军用软件领域的绝大多数软件测试中往往被忽 视[61。针对这种现状,本文提出一种将人工测试与基 于测试工具LDRA Testbed的自动化静态分析结合 (下转第44页) 一39— 第18卷第4期 鼋涤艘雅阖 P0WER SUPPLY TECHNOLOGIES AND APPLICATIONS Vo1.18 No.4 2015年4月 April.2015 表4 VTM芯片指标 输A电压 K 输出电压 2吕V ” 2 V 55V 】『丑 】 】 】,3 表5 LINEAR公司产品主要参数特点,接着以直流 输出电 备洼 V为例,总结了分布式供电方案的设计方法和流 ,范围 3.25Vv6吕7V 4.34V 9.】6V 6.50V、.1 3 8OV 8. V 】8,30V 流 ∞A 30A 25A 】5A 最后结合主要电源厂家的产品,给出了分布式 3¨5V 4.的V 7V 9.33V 电方案具体的实现方式。基于本文的分析,相比 中式电源,分布式供电有着较为明显的优势,能 适应现阶段航空电子技术的高速发展趋势。 参考文献 】,2 3 】 】4V 】8.黼V 28V 】3.8V 曲.50V 】7.3V 36.7V 26V 55V 】2A 9A 6A 忤陛 输出功卒3∞霄:尺寸:32.5ram×22ramX岳.6ram; 重量:】5g;效鏖:97%; Elbuluk M E.Kankan M D.Potential Starter/Generator Technologies for Future Aerospace Applications[J].IEEE .瞬态响应:lum;MTBF:350万 J、时。 AES Systems,1997,2l(5):24-31. 表5 LINEAR公司产品主要参数 型号 LTM8032MPV LTM8033MPV LTM4609MPV 输入电压范围/V 3.6~36 3.6~36 4.5—36 输出电压范围/V 0.8~10 0.8 ̄24 0.8~24 输出电流/A 2 3 4~10 封装尺寸/mm 9x15x2.8(BGA) 9x15x4.32(LGA) 15x15x2.8(LGA) LTM4641MPV4V 4-38 O.6~6 l0 15 ̄15 ̄4.4(LGA) 1319—1329. po T A.Starter/generator employing resonant— [2】 Alan I,LiElectronic Systems,2000,(36)4: converter—fed induction machine part I:Analysis[J].IEEE Tramactiom on Aerospace and Electronic syste , [4. 严仰光.航空航天器供电系统『M].北京:航空工业出版 社.1995. 2000,(36)4:1309—1318. po T A.Starter/generator employing resonant— [3] Alan I.Li[5] 于敦.国外飞机供电系统手N-UM].北京:中国航空信息 中心.1997. converter—fed induction machine partⅡ:Hardware [6] 齐蓉,林辉,周素莹.多电飞机电气系统关键技术研究 prototype[J].IEEE Transctaions on A erospace and [J】.航空计算技术,2004,34(1):97—101. 鬻》》》 》》》》 》》》》》誊 》》 》》》 饕》》》鬻》警 辫》》》》》》 》 》 》》 》罄》》 黔 》》》》》》》》 》》》》 》 》 》 *》》》 (上接第39页) 起来的静态测试方法。相比传统方法,改进后的静 版社.2010. 态测试方法大幅提升了测试效率,节约了测试成 本,在工程上明显更具应用价值。 参考文献 航天型号软件测试[M].北京:宇航出版社,1999. [3] 周涛.LDRA Testbed在弹载软件测试中的应用【JJ.软件 [4] 石磊.导刊,2008,7(5):11-13. [5】 LDRA.LDRA Testbed Users Technical Guide[Z].2010: 45-49. [6] 尹晋.基于Testbed和Polyspace的装备软件静态测试 Glenferd J.Myers.软件测试的艺术[M].北京:机械工业出 版社.2013. 研究[D].哈尔滨:哈尔滨工程大学.2012. 嵌入式软件测试实用技术[M].北京:清华大学出 [2] 蔡建平.一44一