LDRA TestBed在某型机载火控雷达显控软件测试中的应用
- 格式:docx
- 大小:40.23 KB
- 文档页数:5
南京航空航天大学硕士学位论文摘要飞行控制系统是保证无人机飞行安全和完成预定任务的关键系统。
无人机对各种机载设备的控制指令都是由飞行控制软件发出,一旦软件出现问题,后果不堪设想,而软件测试是保证软件质量的必要手段,所以必须对无人机飞行控制软件进行充分、系统的测试。
本文较深入地研究了运用LDRA-Testbed/TBrun对无人机飞行控制软件进行测试的技术。
主要是进行基于LDRA-Testbed的静态测试工作和基于LDRA-TBrun的混合模式的集成测试工作,成功地把软件测试的各种思想、概念和LDRA-Testbed/TBrun测试工具相结合起来,达到了很好的测试效果。
首先介绍了软件测试的基本理论和基本方法,嵌入式软件测试的特点,以及软件测试工具的种类,重点介绍了LDRA-Testbed/TBrun的基本情况。
其次研究了无人机飞行控制系统的原理和无人机飞行控制软件的原理、结构及特点,提出了其测试工作的整体模型,重点研究了单元测试和集成测试的具体策略。
单元测试策略主要进行了任务和过程方面的分析,集成测试策略则是从原则和工作安排的角度进行了研究。
在此基础上较深入地进行了基本静态分析、复杂度分析、静态数据流分析,数据的图形化显示和质量报告等6个方面的静态测试技术研究,并对静态测试的工作内容选择、测试结果分析、测试报告制定作了标准化规定。
最后研究了运用LDRA-TBrun进行无人机飞行控制软件集成测试工作。
重点研究了包含自底向上、自顶向下两个集成阶段的混合模式的测试工作,以及模块划分、驱动和桩模块的设计,通过实际软件测试过程,验证了本文研究成果的正确性和有效性。
关键词:无人机,飞行控制软件,软件测试,静态测试,集成测试ABSTRACTThe flight control system (FCS) is the key system to make safe of the flighting of unmanned air vehicle(UA V), and to act the assignment being prearranged. The contronl instructions of the on-board equipments on UA V are sent out by computer software. Once the failure of software appears, the result will be so terrible that we dare not think about. Software testing is a necessary method to guarantee software quality, so UA V FCS software must be tested strictly and thoroughly.In this paper, the testing technology based on LDRA-Testbed/TBrun of UA V FCS software was researched deeply, and the main work included static testing based on LDRA-Testbed and integrated testing of mix model based on LDRA-TBrun. Various thoughts and concepts of software testing and test tool of Testbed/TBrun were successfully combined, and came to a very good test result.Firstly, the basic theories and basic methods of software testing, the characteristics of embeded software testing were introduced, and the basic instance of LDRA-Testbed/TBrun was introduced mainly.Secondly, the theory of UA V FCS and the theroy, architecture, characteristics of UA V FCS software were studied. Then an integrated model of test was put forward,and a kind of testing strategy for unit testing and integrated testing was researched particularly and each. Tasks and testing process of unit testing were analyzed, and the perspective in testing principle and arranging task of integrated testing were researched mainly. Based on this, static testing technology such as basic static analysis, complexity analysis, static data flow analysis, graphic display of data, quality report, and etc. were studied deeply. Then the work content, analysis of testing result and testing report were standardized.Finally, the integrated testing of UA V FCS software based on LDRA-TBrun was researched. The mix model include bottom-up stage and top-down stage was studied mainly, and the test method like module division, design of drive model and stub model was studied primarily. The fact of the testing process proves the correctness and validity of the research results.Key Words:Unmanned air vehicle, Flight control system, Software testing, Static testing, integrated testing图清单图3.1 某型无人机飞行控制系统组成图 (20)图3.2 无人机工作原理图 (22)图3.3 控制律解算模块设计流程 (25)图3.4 导航过程转换图 (27)图3.5 自主导航过程 (27)图4.1 改进的V模型图 (30)图4.2 单元测试过程图 (32)图4.3 主机平台软件集成测试图 (34)图4.4 宿主/目标机平台软件动态测试图 (34)图5.1 导航模块格式化代码界面截图 (38)图5.2 导航模块编码规则验证截图 (40)图5.3 五种结构的控制流图 (41)图5.4 着陆子模块控制流图 (42)图5.5 节点产生示意图 (42)图5.6 导航模块节点复杂度柱状图 (43)图5.7 某程序有向图 (44)图5.8 导航模块圈复杂度柱状图 (46)图5.9 导航模块基本复杂度柱状图 (47)图5.10 Halstead复杂度度量 (48)图5.11 LCSAJ报告总述截图 (49)图5.12 最大LCSAJ密度 (50)图5.13 数据流异常报告截图 (52)图5.14 系统调用图 (53)图5.15 标准Kiviat图 (55)图5.16 清晰性Kiviat图 (56)图5.17 可维护性Kiviat图 (56)图5.18 可测试性Kiviat图 (57)图5.19 质量报告截图 (58)图6.1 自顶向下集成方法示意图 (64)图6.2 自底向上集成方法示意图 (65)南京航空航天大学硕士学位论文图6.3 自主导航模块系统调用图 (67)图6.4 自主导航模块内部函数模块系统调用图 (67)图6.5 自主导航内部函数模块系统调用简化图 (68)图6.6 自主导航模块软件集成测试过程示意图 (69)图6.7 TBrun界面 (70)图6.8 模块族1系统调用图 (71)图6.9 TBrun选择生成桩界面 (72)图6.10 定义桩函数选择桩函数文件的TBrun界面 (73)图6.11 成功用桩文件插桩后的TBrun界面 (73)图6.12 模块M1、M2输入输出树状显示截图 (74)图6.13 驱动模块D1参数输入输出TBrun界面图 (76)图6.14 输入形式参数的类型和名字后的TBrun界面 (78)图6.15 TBrun打桩桩体编辑界面 (79)图6.16 TBrun打桩输入返回值和返回类型界面 (81)图6.17 TBrun打桩后界面 (81)无人机飞行控制软件测试技术研究表清单表5.1 程序圈复杂度与程序风险的关系表 (45)承诺书本人郑重声明:所呈交的学位论文,是本人在导师指导下,独立进行研究工作所取得的成果。
LDRA Testbed/TBrun 软件测试产品功能介绍一、静态分析功能1、编程标准编程标准验证是高可靠性软件开发不可缺少的软件质量保证方法,使用LDRA Testbed 自动地验证应用软件是否遵循了所选择的编程规则。
编程规则由软件项目管理者根据自身项目的特点并参考现有的成熟的软件编程标准制定,如DERA(欧洲防务标准),MISRA(汽车软件标准),LDRA Testbed依据此规则搜索应用程序,并判断代码是否违反所制定的编程规则。
LDRA Testbed报告所有违反编程规则的代码并以文本方式或图形反标注的方式显示。
测试人员或编程人员可根据显示的信息对违反编程规则的代码进行修改。
2、软件度量分析、质量标准验证对于软件开发工程师、项目负责人及高级管理者来说,软件质量的管理与监控是非常困难的且费时。
LDRA Testbed 很好地解决了这一问题,使得管理者很容易地收集正在开发的软件系统的相关信息并判断软件是否满足软件质量标准要求,从而达到对软件项目的质量跟踪与控制,用户可基于现行软件标准自行定义适合本系统或项目的软件质量模型。
LDRA Testbed 支持下列主要软件度量元分析:* 控制流结点度量(Control Flow Knots);* LCSAJ 密度度量(LCSAJ Density);* 扇入/扇出度量;* 循环深度度量;* McCabe 圈复杂度;* Halstead软件科学度量;* McCabe Essential复杂度;* 注释行度量;* 代码可达性度量;* 等等。
3、静态数据流分析LDRA Testbed 分析软件中全局变量、局域变量及过程参数的使用状况,并以图形显示、HTML或ASCII文本报告方式表示,清晰地识别出变量使用引起的软件错误,此种方法既可使用于单元级,亦可使用于集成级、系统级。
研究结果表明这种技术,即为软件测试工程师所熟知的数据流分析技术(Data Flow Analysis),是查找软件错误最有效的途径或方法之一。
基于LDRA Testbed软件的单元测试单元测试是软件开发过程中不可或缺的一环,它能够发现代码中的错误和缺陷,提高软件质量和可靠性。
LDRA Testbed软件是一个集成开发环境(IDE),能够帮助开发人员进行单元测试和代码分析。
本文将介绍LDRA Testbed软件的基本原理、功能、应用和优点。
一、基本原理LDRA Testbed软件的基本原理是将代码分析为结构章程(Structural Coverage),并将其转换为函数测试用例。
开发人员可以使用该软件生成测试用例,以测试单元代码是否符合预期要求。
这些测试用例能够包含各种测试类型,如基本路径覆盖、条件覆盖、分支覆盖等。
通过这些测试用例,开发人员能够发现代码中的错误和缺陷,提高软件质量和可靠性。
二、功能LDRA Testbed软件能够实现以下功能:1.静态分析:能够分析代码并检查其是否符合规范。
这个过程能够发现一些潜在的安全漏洞和重构机会。
2.代码覆盖率:能够帮助开发人员检查测试用例是否完全覆盖单元代码,并生成测试报告。
3.自动化测试:能够快速、准确地测试代码,提高软件生产效率。
4.符号执行:通过符号计算机程序运行,能够模拟软件运行过程,发现软件问题。
5.程序执行跟踪:能够记录代码执行时的控制流,与图形界面结合,更容易定位问题。
6.缺陷管理:能够管理问题和工件,建立组织工件和缺陷报表的能力。
三、应用LDRA Testbed软件适用于以下场景:1.嵌入式开发:对于嵌入式系统,测试时要求测试代码的完整性、效率、可靠性和正确性,LDRA Testbed软件能够帮助开发人员实现这些要求。
2.医疗设备:对于一些医疗设备,在测试代码时要求高度安全性和健壮性,使用LDRA Testbed软件可以有效提高测试效率。
3.汽车电子:对于汽车电子产品,要求测试涵盖复杂的逻辑,同时需要高效且可靠。
使用LDRA Testbed能够加快开发和测试速度,帮助开发人员更好地实现目标。
LDRATestbed动态分析LDRA Testbed 动态分析® LDRA Tool Suite Technical Descriptionv7.3.1LDRA Product Brochure v6.1什么是动态分析动态分析使用测试数据集去执行软件,来观察软件的行为,生成测试覆盖报告。
对源代码的这种评估分析能保证达到测试标准的要求,并且辅助捕捉/回放工具的使用。
LDRA Testbed动态分析为苛刻性代码分析提供达到质量标准的手段,能改进代码效率,最小化回归测试成本,并且侦测软件中的缺陷。
在软件开发和维护期,使用动态分析技术有助于提高程序的健壮性和可靠性。
优点是什么?•执行高质量测试•减少回归测试成本•鉴别软件异常和缺陷•产生全面的可度量的测试数据集合,包含测试输出•降低维护费用至最少•识别系统/程序不必要,可移除的部分•确保系统可靠,零缺陷何时使用动态分析?动态分析通过在测试中选择测试数据探究应用软件的语义。
从应用软件静态分析中构建的控制流和数据流模型与运行时刻产生的实际控制流和数据流相比较,这就能检查出是静态分析出错还是动态分析出错。
动态分析对高可靠性的软件应用非常有效,是安全苛刻性的航空电子软件测试的首要方法,广泛地用于军方,安全和任务苛刻的软件。
除了上面提到的安全苛刻性工业领域,动态分析也适用于金融和通信领域。
关键在于工具能带来有效的改进过程,它包括实际的成本节省,对客户投资的回报,从而导致巨大的竞争优势。
LDRA 工具包的动态覆盖分析动态分析的结果可以根据设计需求达到的不同要求进行选择。
最通常的要求是达到控制流覆盖水平。
LDRA 工具包使用以下几种类型的覆盖:可度量的覆盖有下列级别:•语句覆盖•分支/判定覆盖•LCSAJ 覆盖•MC/DC 覆盖•动态数据流覆盖。
A pr 2007 V ol 25,N o .2航 天 控 制A erospace Contro lLDRA TESTBED 在航天软件测试中的应用李中萍 岳 海 薛 静北京航天自动控制研究所,北京100854摘 要 提出采用LDRA (Liverpoo lD ata R esearch Associates Ltd .)TESTBED 测试工具辅助完成高可靠性的军用软件测试工作,并通过测试实例阐述了该工具在航天软件测试中的应用方案。
结果证明,合理使用该工具,能够有效避免人为失误,提高软件测试的效率和信息采集的准确度。
关键词 软件测试;测试工具;LDRA TESTBED 中图分类号:V448.15 文献标识码:A 文章编号:1006 3242(2007)02 0073 05The Applicati on of LDRA TES TBED i n A erospace Soft w are TestLi Zhongpi n g Yue H a i Xue Jing B eiji n g A erosapce Auto m atic Con tro l I nstitute ,B eiji n g 100854,Ch i n aAbst ract A m ethod of aerospace soft w are test based on LDRA TESTBED is p resented.The sche m e is de scribed by the test case .The results prove t h at hum an errors can be effectively avo i d and t h e test e fficency andp recision of infor m ation acquiring are h i g h l y i m proved by using LDRA TESTBED .K ey w ords Soft w are test ;Test tools ;LDRA TESTBED 收稿日期:2006 11 15作者简介:李中萍(1973-),女,四川铜梁县人,工程师,研究方向为软件测试技术和软件工程;岳 海(1973-),男,河南扶沟人,工程师,研究方向为软件测试技术和软件工程;薛 静(1976-),女,河南孟县人,工程师,研究方向为软件测试技术和测试环境的开发。
基于LDRA Testbed 的DSP软件单元测试摘要:在分析软件单元测试问题的基础上,本文对基于LDRA Testbed的DSP软件单元测试方法展开了分析,介绍了相应的测试工具和测试过程,为关注这一话题的人们提供参考。
关键词:LDRA Testbed DSP软件单元测试引言:随着技术的发展,产品软件不再只是硬件的附属,逐渐形成了一个独立的系统。
软件的可靠性直接影响整个系统的可靠,成为产品成败的关键条件。
为提高软件质量,软件测试就变得非常重要。
软件单元测试的目的是检查每个软件单元能否正确地实现需求、设计中的功能、性能、接口和其他设计约束等要求,发现单元内可能存在的各种错误。
仅靠软件测试人员人工统计分析的测试方法已经不能有效满足对软件产品准确有效测试的要求,因而在软件的测试过程中有效利用测试工具显得尤为重要。
LDRA Testbed是一个可有效应用于软件开发和测试阶段的软件测试工具,它同时具有静态测试和动态测试的功能,适用于软件测试的各个阶段。
1.软件单元测试概述所谓的软件单元测试,就是对软件基本组成单元进行测试,测试对象为模块,即软件设计中的最小单位,拥有明确的功能和唯一标识,可以实现特定算法,获得局部数据,能与其他模块和外界相互获取数据,被其他模块调用。
在单元测试方面,需要采用静态测试、动态测试、单元输入输出测试等测试,能够实现多个模块的同时测试,并完成错误定位。
在实际测试时,需要制定测试计划和创建相应环境,完成最小运行调度系统的构造,以便对上一级模块进行模拟,同时对单元函数接口和生成测试数据的过程进行模拟。
通过将数据传输给被测模块,按相关结果进行“主程序”打印,可以确定软件单元功能、接口是否符合设计要求,能否进行输入和运行中错误的正确处理。
通过对测试中发现的问题进行修改,则能更好的完成软件单元设计。
2.单元测试的要求:1)对软件需求设计文档规定的软件单元的功能、性能、接口等应逐项进行测试;2)每个软件特性应至少被一个正常测试用例和一个被认可的异常测试用例覆盖;3)测试用例的输入应至少包含有效数值、无效数值和边界数据值;4)在对软件单元进行动态测试之前,一般应对软件单元的源代码进行静态测试;5)语句覆盖率达到100%;6)分支覆盖率要达到100%;7)对输出数据及其格式进行测试等。
基于LDRA Testbed的民用机载软件静态测试方法周培【摘要】静态测试作为软件测试的重要方法,是保证民用机载软件中安全关键软件质量的关键步骤;介绍静态测试的概念和方法,采用自动化分析方法,基于软件分析工具LDRA Testbed从主要静态分析、复杂度分析、静态数据流、交叉索引、信息流和数据对象分析六大部分完成软件的静态测试过程,探究其测试原理和关键标准文件的配置,生成相应的代码审查和测试度量报告,以有效提高民用机载软件质量.【期刊名称】《计算机测量与控制》【年(卷),期】2019(027)007【总页数】5页(P107-110,149)【关键词】软件测试;LDRA Testbed;静态测试;民用机载【作者】周培【作者单位】中航雷华柯林斯(无锡)航空电子设备有限公司,江苏无锡 214063【正文语种】中文【中图分类】TP319;V240.20 引言当今信息化社会中,对软件的质量要求随着软件应用的普及变得越来越高,特别是在航空等许多涉及人类生命安全的领域,对软件质量和安全的要求更是提高到了一个不容忽视的程度。
为了充分保证民用机载软件中安全关键软件的质量,软件测试是关键步骤,其中静态测试是重要的环节。
本文基于软件分析工具LDRA Testbed,探究民用机载软件的静态测试方法。
1 静态测试概述1.1 静态测试的概念和方法静态测试也被称作静态分析,传统意义上是指不实际编译和运行被测软件,只静态地解析软件源代码,查找错误或搜集相关度量数据。
静态测试的对象有代码、界面和文档3种,以测试是否符合相应的标准规范和需求说明为主要目的[7]。
静态测试的检测方法分为人工检测和计算机辅助静态分析2种:1)人工检测:指不依赖计算机而完全靠人工审查或评审软件来完成静态测试。
以检查编码风格和检验质量为主,也检验各阶段的软件产品。
该方法能够有效发现逻辑设计和编码错误[8]。
2)计算机辅助静态分析:基于静态分析工具对被测软件进行特性分析,提取程序中的有效信息,从而检查各种逻辑缺陷和可疑程序构造[8]。
基于LDRA Testbed软件的单元测试的研究报告LDRA Testbed是一种广泛使用的软件测试工具,主要用于单元测试、代码覆盖率分析和代码质量评估。
在本研究中,我们探讨了基于LDRA Testbed的单元测试实践,以及如何最大化其效益。
首先,我们介绍了单元测试的概念和作用。
单元测试是软件测试的一个重要组成部分,通常在开发过程的早期阶段进行。
它的目的是测试软件中的最小单元,如函数或方法,以验证它们的行为是否符合预期。
单元测试不仅能够帮助发现并修复程序中的错误,还可以提高代码的可读性、可维护性和可扩展性。
此外,对于要在多个平台上运行的软件,单元测试还可帮助我们在不同的环境下发现和修复问题。
接下来,我们介绍了LDRA Testbed的基本特性。
LDRA Testbed可以帮助进行代码静态分析、动态分析、测试覆盖率分析等多种测试形式,其支持的语言包括C、C++、Ada等多种语言。
在进行单元测试时,LDRA Testbed可以自动生成测试用例,并执行这些测试用例以进行测试和分析。
我们还介绍了LDRA Testbed在具体项目中的实践。
在研究中,我们选择了一款航空电子设备控制软件作为测试对象,并使用LDRA Testbed进行单元测试。
我们先对软件的功能单元进行了分析,并编写了相应的测试用例。
接着,我们利用LDRA Testbed对这些测试用例进行测试,并使用其生成的报告来评估测试的效果和覆盖率。
最后,我们根据测试结果对代码进行了优化和修改,以修复所有可能的缺陷。
总的来说,我们在本研究中通过实践证明了LDRA Testbed在单元测试中的高效性和实用性,其为软件测试提供了有力的辅助工具。
在今后的研究中,我们希望进一步探究如何将LDRA Testbed结合其他测试工具和技术,进一步提高软件测试的效率和质量。
在使用LDRA Testbed进行单元测试的实践中,我们收集到了以下数据:1. 测试覆盖率:LDRA Testbed生成的报告显示测试覆盖率为90%。
机载火控软件化雷达关键技术研究
姜明;汤俊;谭湘林;杨雁麟
【期刊名称】《现代雷达》
【年(卷),期】2024(46)2
【摘要】分析了机载火控雷达的固有特点、发展趋势以及从“数字化”走向“软件化”的迫切需求。
首先,从总体设计、基础软硬件、组件化开发、集成与验证等方面梳理了软件化雷达技术体系。
针对机载火控雷达强实时、嵌入式等特性,研究了本领域软件化雷达亟需解决的关键技术,主要包括:开放式系统架构、轻量化/低时延中间件、组件的抽象与划分原则、高效组件开发机制、基于模型驱动的组件集成开发环境等。
然后,从实时性、重构性、软件解耦等方面介绍了机载火控软件化雷达的验证思路。
最后,针对我国尚未装备完全符合开放式架构规定的机载火控软件化雷达的现状,指出了重点需要关注和解决的若干问题。
【总页数】6页(P56-61)
【作者】姜明;汤俊;谭湘林;杨雁麟
【作者单位】中国航空工业集团公司雷华电子技术研究所;清华大学电子工程系【正文语种】中文
【中图分类】TN958
【相关文献】
1.LDRA TestBed在某型机载火控雷达显控软件测试中的应用
2.面向机载火控雷达软件设计半实物仿真系统
3.机载火控雷达软件自动化测试技术研究
4.基于ARM的
机载火控雷达元器件自动化检测技术研究5.机载激光雷达数据处理软件设计及关键技术研究
因版权原因,仅展示原文概要,查看原文内容请购买。
基于LDRA Testbed的飞机中央维护系统覆盖测试
邹会荣
【期刊名称】《航空计算技术》
【年(卷),期】2010(040)005
【摘要】基于测试工具LDRA Testbed实现了飞机中央维护系统的覆盖测试工作.以飞机中央维护系统的主界面源程序为例,通过测试过程说明了工具在飞机中央维护系统测试中的成功应用,并达到了一定的语句覆盖分析和分支覆盖测试率.给出了软件的测试流程和测试结果.测试结果表明,使用LDRA Testbed工具,可以大大提高飞机中央维护系统的软件测试效率,同时也能够满足航空业界的软件标准DO-178B,并获得了规定的语句覆盖和分支覆盖测试率.
【总页数】4页(P91-94)
【作者】邹会荣
【作者单位】中国航空计算技术研究所,陕西,西安,710068
【正文语种】中文
【中图分类】TP311.5
【相关文献】
1.基于LDRA Testbed软件的单元测试 [J], 孙小淋
2.LDRA Testbed中常用覆盖测试方法研究 [J], 王玮
3.基于LDRA Testbed的DSP软件单元测试 [J], 李艳艳;
4.基于LDRA Testbed的民用机载软件静态测试方法 [J], 周培
5.基于LDRA Testbed的单元测试用例设计及案例分析 [J], 胡多海
因版权原因,仅展示原文概要,查看原文内容请购买。
Testbed套件在航天嵌入式软件中的应用
郭莹;刘纪元;康智
【期刊名称】《火控雷达技术》
【年(卷),期】2010(039)001
【摘要】随着航天技术的发展,航天软件的结构也越来越复杂,仅靠软件测试人员的人工统计分析已不能有效地对被测航天软件作出准确评价,使用高级的自动用例生成工具可以克服这些困难,但是完全的测试用例自动生成几乎是不可能的.本文介绍了人工设计测试用例和使用Testbed工具自动生成测试用例两种测试用例生成方法的优缺点,通过分析提出了一种Testbed测试工具辅助的测试用例设计方法,最后,以X型侦察处理DSP嵌入式软件为例,介绍了使用Testbed套件辅助测试用例生成和测试的具体方法步骤.
【总页数】4页(P20-23)
【作者】郭莹;刘纪元;康智
【作者单位】沈阳航空工业学院,沈阳,110136;信息综合控制国家重点实验室,成都,610036;沈阳航空工业学院,沈阳,110136;信息综合控制国家重点实验室,成都,610036
【正文语种】中文
【中图分类】TN274+.5
【相关文献】
1.Testbed/Tbrun应用于嵌入式软件单元测试 [J], 王煜;何永军
2.航天502所发布首个嵌入式软件研发套件 [J],
3.Testbed在嵌入式软件单元测试中的应用 [J], 李博
4.Testbed在嵌入式软件单元测试中的应用 [J], 李博
5.LDRA TESTBED在航天软件测试中的应用 [J], 李中萍;岳海;薛静
因版权原因,仅展示原文概要,查看原文内容请购买。
LDRA TestBed在某型机载火控雷达显控软件测试中的应用杨晶
【摘要】LDRA TestBed是一种在业务软件中广泛应用的高可靠性自动化测试工具.文章通过某型机载火控雷达综合显控软件测试实例,详细阐述了该工具在软件测试中的具体使用方法,介绍了如何进行测试程序的插桩及驱动模块的编写,研究了测试结果的输出文档、图表、分析方法及其在软件质量度量方面的应用,并总结了TestBed在软件自动化测试过程中的常见注意事项.
【期刊名称】《江苏科技信息》
【年(卷),期】2017(000)022
【总页数】4页(P42-45)
【关键词】软件测试;动态测试;静态测试;覆盖率分析
【作者】杨晶
【作者单位】江苏金陵机械制造总厂,江苏南京 211100
【正文语种】中文
随着计算机技术在军用机载火控雷达系统中的快速发展,原本作为硬件附属的软件越来越独立化、模块化,尤其是综合显控系统更是逐渐替代了原本是硬件的诸如手柄、操纵杆、操作键盘等单元。
软件规模随之增大,代码的复杂程度也不断加大,软件的可靠性对系统的影响更加突出,对软件进行全面的测试势在必行。
当今,机载火控雷达系统软件技术的发展日新月异,仅靠软件开发或测试人员的人工统计分析,已不能有效地对软件进行质量及可靠性评价,因此在软件测试中采用
辅助测试工具显得尤为重要[1]。
TestBed由英国LDRA公司开发,主要用于软件测试与软件维护,以最终提高软件产品质量。
整个工具套件的特点及优势可以归纳为对以下六大活动提供支持[2]。
(1)代码评审。
LDRA TestBed提供强大的编码规则检查功能,实现了编码规则检查过程的自动化,帮助用户提高编码评审工作的效率和质量。
(2)质量评审。
提供对软件质量的度量,可以快速地以可视化的方式了解系统的复杂性。
该特征是衡量软件的清晰性、可维护性和可测试性的元素;提供详细的彩色函数调用关系图和程序流程控制图,生成软件质量文档报告。
(3)设计评审。
目的是对源代码与设计需求之间的一致性进行评审。
帮助软件设计人员验证设计说明是否被正确的编码实现。
(4)单元测试。
在软件生命周期中随着软件开发的进行,发现错误以及修正错误的成本越来越高。
单元测试为开发团队提供了在初始编码阶段发现和修正错误的方法。
而LDRA TestBed实现了单元测试过程的自动化,极大提高了单元测试的效率。
(5)测试验证。
TestBed的代码覆盖率分析能让开发者直观、详细地了解被测试代码的测试覆盖情况,并通过进一步分析,明确需要如何补充测试用例来验证没有被测试执行过的代码。
(6)测试管理。
LDRA TestBed工具套件生成的测试文档,易于实现对复杂系统的理解、归档和维护,轻松实现测试、源代码修改、再测试及确认,达到高效的测试管理。
2.1 静态测试分析
LDRA TestBed可对单个类(cpp)、多个类(set)或整个工程(system)进行静态分析,包括主静态分析(Main Static Analysis)、复杂度分析(Complexity Analysis)、静态数据流分析(Static Data Flow Analysis)等。
需要注意的是,在进行静态测试时,应采用未经插桩的原始项目工程作为测试对象,静态测试流程如图1所示。
2.1.1 函数调用关系
函数调用关系图可方便地“自顶向下”分析程序的框架,也可“自底向上”查看函数的调用深度。
因为整个项目的调用关系比较杂乱,在此截取一个分支,以示说明,如图2所示。
其中,白色背景色为自编函数,灰色背景色为系统函数,测试人员可以快捷定位。
2.1.2 软件质量度量指标
通过基于McCabe的软件质量度量模型对程序的分析,得到程序总体质量的Kiviat图,以图例的方式显示哪些度量指标超出了预设的上下限指标[3]如图3
所示。
其中,每一轴代表一种度量元,黑色部分表示符合标准,灰色部分表示不符合。
每一个模块的具体度量数据可通过生成的度量报告进行分析,主要有以下五个指标:圈复杂度(V(G)=e-n+2,e表示控制流图中边的数量,n表示节点数量)、基本圈复杂度(通过结构化流程简化后,最终圈复杂度)、扇入(指某一过程/函数
被多少过程/函数调用)、扇出(指某一过程/函数调用多少过程/函数)、可执行
代码行数。
表1列出了CRecordDialog类中函数各个指标,根据测试预设的指标,其中通过的为P,不通过的为F。
通过表1可以分析出,函数OnPlay()各项指标均超过预设指数,说明该函数过于复杂,建议拆分为多个函数,以降低函数复杂度,提高可维护性和可测试性。
2.1.3 源代码编码规则
LDRA TestBed的编码规则设定,是以规则集的方式存放在程序安装目录中,本文介绍的火控雷达综合显控软件是基于C++语言开发的,其规则存放在“/ Testbed/Cpp”目录下的CPPPEN.DAT文件中(注:C语言的规则存放在
“/Testbed/C”目录下的CPEN.DAT文件中)。
在进行常规测试时,采用默认规则即可,若有特殊情况需要添加规则,可在该文件中进行相关添加设置。
测试结束后,单击Individual Results菜单,选择Text Results,选择Overview Report(HTML)。
打开报告,可看到关于指定的编程规则passed或failed的结果如图4所示。
2.2 动态测试分析
动态测试是LDRA TestBed的一项重要功能,它有助于优化代码、提高代码利用效率,也有助于优化测试、减少测试费用,对于高可靠、高安全性的机载火控雷达显控软件系统的测试具有重要作用。
进行动态测试前,首先要对源程序进行插桩和添加驱动,主要输出物是语句覆盖率、分支覆盖率以及动态流程图等。
动态测试流程如图5所示。
2.2.1 程序插桩与驱动添加
当静态测试结束后,可通过静态测试的函数调用关系图确定被测函数主体,根据程序流程结构在程序的特征点插入桩代码,插桩过的代码在执行时将特征值记录保存供测试分析,而插桩代码将特征值写入历史文件。
同时,在程序模块的入口,添加驱动单元,以验证程序执行的正确性。
具体插桩和添加驱动的流程如图6所示。
2.2.2 函数动态流图
当测试项目的动态分析结束后,在整个系统的动态流图上,左键点击所要查看的函数(在本实例中,以函数OnBtJlcy()为例),便可得到如图7所示的该函数动态流图;在动态流图Option选项中,点击Add Annotations,即可添加节点注释,查看函数源码的详细执行过程。
2.2.3 动态覆盖率分析
在用LDRA TestBed进行动态覆盖率分析时,主要查看语句覆盖(被测软件在执行时语句执行行数比例)和分支覆盖(被测软件实际执行分支与总分支数之比)。
图8是各个cpp或类的语句覆盖率和分支覆盖率,若欲查看各个函数的覆盖率,
可点击其所在的cpp进入详细查看。
进行多次累加用例测试,直到语句覆盖率和分支覆盖率均达到100%,表示覆盖率测试通过。
通过使用LDRA TestBed对机载火控雷达综显软件进行测试后,更加直观地认识
到了该工具的方便与快捷。
对于分析软件开发、维护过程中遇见的问题,具有很大的帮助。
在测试期间,也有一些浅薄的心得与体会,与大家分享:(1)如果源文件已经分析过了,相应的工作文件、结果文件便被自动记录,因此,再次进行分析时,需要在Analysis菜单下选择Delete Workfiles对话框,清除相应的工作文件,以便于进行新一轮测试分析。
(2)在进行静态分析时,需要采用原始工程,这样最能准确地分析出程序中的潜在问题,虽然在实际操作中会遇到原始代码量大、测试速度慢等问题,但毕竟静态测试次数相对较少,可将测试结果保存下来分析。
(3)在动态测试时,需要进行代码插桩和驱动添加,而且动态测试次数相对频繁,所以,用原始工程进行插桩测试时会很慢,因此,可以适当考虑分模块、分工程插桩的办法,以提高测试效率。
(4)完成软件测试后,应及时保存测试生成报告和文档,将测试用例进行归类备份,以便在软件升级后方便做回归测试。
【相关文献】
[1]黄荦,丁立冬.基于LDRA TestBed的民用机载软件结构覆盖率分析流程研究[J].航空标准
化与质量,2014(4):26-29.
[2]王玮.基于LDRA TestBed的软件完整性静态测试方法研究[J].电脑与电信,2014(4):
49-51.
[3]李中萍,岳海,薛静.LDRA TestBed在航天软件测试中的应用[J].航天控制,2007(2):73-77.。