当前位置:首页 期刊杂志

关于嵌入式软件测试平台的配置探析

时间:2024-05-18

张淑娟++周艳萍

摘 要:本文系统地总结了构建软件测评中心所必须具备的条件,给出了软件测试的详细过程以及各个阶段的测试工具。经过充分的市场调研,并结合嵌入式软件的特点及工作需求,开发了一个嵌入式软件评测的平台,对嵌入式软件测试平台配置的研究有一定的参考价值。

关键词:软件质量与测试 嵌入式软件 测试平台

中图分类号:TP2 文献标识码:A 文章编号:1672-3791(2014)01(a)-0011-02

微电子技术的发展创新带来了嵌入系统在航天、军事、通信等行业的广泛应用,尤其是军方软件对嵌入式的质量要求极高,一定要经过第三方评测,如果一味等待最终软件测试就会很被动,而且过程中的错误没能及时发现的话也会给最终集成测试的检测带来很大麻烦,所以创建自己的软件测试平台尤为重要。从软件设计之初就利用软件测试工具检测各个阶段的成果,及时发现并纠正错误,从而达到软件测试与软件研发同步。笔者结合市场调研和嵌入式软件自身的特点,搭建了自己的软件评测平台。

1 建立软件评测中心管理体系

软件评测中心一定要有规范化的体系,做到评测的实时性和准确性,而要实现评测规范一定要做到以下几点。

(1)首先要具备专业测试的资格,拥有设备齐全的专业实验室;(2)要有网络和连接设备,使之满足不同的测试需求;(3)要搭建完整的软件运行和数据库支持平台;(4)有专业的测试工具和一流的测试人员。

这套管理系统应该采用过程方法和系统方法来建立,对各个过程进行监测管理以实现既定目标,与此同时也要使得整个系统相互协调与配合,达到总体作用大于分过程作用之和的目标。之所以要建立这样的评测管理系统,是为了在既定的限制之下能最大程度地排除软件错误和缺陷。

2 软件评测的过程

通常,为了保证测试的有效性和准确性,我们会人为地将测试过程分成几个步骤,详见图1的流程图,如下分别是几个步骤的主要任务。

2.1 代码会审

由几个人通过读代码和讨论代码对程序的逻辑性进行分析的过程。一份高质量的代码应该具备较高的可靠性和安全性,内部模块的划分要符合逻辑,市场上已有检查这一阶段的测试工具,如CodeWizard、QAC/C++等;这一阶段除了要保证代码正确性之外还要对代码质量进行检测,这类的检测工具主要包括McCable、Logiscope等。

2.2 单元测试和集成测试

其中,单元测试着眼于软件的最小设计单位—— 模块,测试的主要内容是检测该模块的实际功能与最初的设计是否符合,同时也能够检查编码是否有错误。单元模块一般规模较小,实现的功能也简单,测试工作很容易。单元测试采用结构测试为主,功能测试为辅的方法,这样对于合理与不合理的情况都有反馈和甄别,只有每个模块都能正常正确地工作,整个系统才有可能实现既定功能。

有些时候每个单元测试的结果都没有问题,但是模块集成之后却错误不断没办法正常工作,这种现象的产生究其原因主要是集成的时候模块之间相互调用的接口有可能会出现问题,比如,主模块在调用自模块的时候出现数据丢失的现象,子功能的集成只是简单叠加逻辑性出现问题导致无法完成主功能等。这时候,集成测试的任务主要是把各个模块组合起来之后进行检测以排除与接口或者调用相关的错误。各个程序员的编程习惯不同,有些人习惯将所有模块组装之后进行最终的测试,称之为非增量式集成,这种方式容易导致错误叠出,且不容易定位错误位置查找错误原因,而且经常改一个错误的时候引进了新的错误;有些人习惯增量式集成,即将程序一个模块一个模块地扩展,每增加一个模块立刻进行相应的测试,这样可以很容易定位错误并及时纠正。

常用的增量式测试方法有两种:一种是自顶向下的集成,即以主模块为测试驱动,依据深度优先原则或者广度优先原则每次都用实际模块替代一个桩模块并立即测试,检测结果正常之后再进行下一项测试,在这个过程中不断重复回归测试以避免引进新的错误类型;另一种方法是自底向上的集成,即将最底层的几个模块组装成能够实现某个功能的模块集,利用开发的测试驱动模块分别测试组装而成的几个模块集,最终删除测试用的驱动模块并利用更高层的功能模块把这些模块集组成可以完成更多功能的新模块集,不断重复上述的递归过程直到完成实际功能的主模块完成。这部分的测试工具主要有Vector Cast、Rational Real Time等。

2.3 系统验收测试

这一过程主要是向软件用户展示软件的运行效果能够达到用户的预期,实现用户需求。经过代码会审、单元测试和集成测试之后,一个完整且能正常运行的软件就已基本上完成了,剩下要做的就是检测软件的有效性,即是否能够满足开发需求和实现用户的基本需求,这一步如果检测无误即可进行软件交付。这部分的测试工具主要CodeTest、LDRA的TRInsight等。

3 软件评测工具的选择

从市场上现有的软件测试工具来看,没有哪种工具可以完成整个软件评测过程所有阶段的测试,这时候就需要通过仔细分析各个测试工具的功能及特点,采用一种测试工具组合,使得能够既经济又高效地完成测试任务。通过我们的调研和实地实验,将测试系统进行了更为细致的划分并给每个阶段都选择了合适的集中测试工具,如图2所示。

这样的搭配无疑尽可能地实现了自动化测试的目的,同时又使得测试工具出错带来的影响降低到了最小。各项测试独立运行,避免相互影响;又彼此协调,同时服务于集成功能的测试,最大程度上提高了测试效率。

4 典型软件测试工具简介

笔者通过自己做测试工作以来的一些经验,根据实际工作中使用的记录,针对几款主流测试工具做一简单的介绍。

4.1 CodeTest

这款软件是由三个子软件组成,分别完成不同阶段的测试,分别是:用于检测主机上软件开发完成后运行情况的CodeTestNative;用于检测软件迁移到目标系统后是否正常的CodeTestSoftware-In-Circuit;用于系统测试的CodeTest Hardware-In-Circuit,系统测试需要软硬件结合做综合测试。

这款测试软件具有如下特点:(1)测试性能比较高,可在同一时间监测32000个函数、1000个任务;(2)具有分析存储器分配的功能,能够以最快速度发现存储器分配的隐患,更迅速地发现运行中的错误;(3)可以进行代码覆盖率的检测;(4)能够追踪代码,追踪的缓冲空间很大,给大规模软件系统的代码追踪分析带来了便捷。同时,该软件还可以进行其他方面的分析,如动态内存的分配等,测试结果具有高可靠性。近来,该软件新推出的VME测试卡真正解放了程序员,使得程序员将注意力更多的集中在代码设计上,而不必再为硬件系统、测试方案、以太网连接等方面费神。

4.2 Cantata/Cantata++

这款软件主要针对C或者C++进行测试,可以分为静态分析和动态测试两部分,分别由StaticAnalysis和DynamicTesting进行分析和实际测试。静态分析方面主要由Cantata检查代码的复杂性,然后根据复杂度的实际情况检测数据流,确定软件系统可维护的程度,静态分析的最终结果可由专业软件处理得到直观的图表分析报告。

动态测试方面主要是确定软件运行过程是否一切正常,这部分测试结果的有效性主要取决于动态测试的代码覆盖率,覆盖率越高测试结果越准确。

这款软件可以自动分析源代码,得到TCD,即测试用例模板,利用输入输出模拟实际环境。测试过程与软件工程的建立过程一一对应,可以做到开发与测试同时进行,无需转换开发环境,对于操作者来说使用起来相当方便。

4.3 McCabe

这款软件名字来源于著名学者McCabe,利用的原理是结构化测试理论,即V(G)圈的复杂度与该模块独立路径数的复杂度相等。其最显著的特点在于可视化,在分析源代码的基础上可以非常准确直观地得到系统结构图,充分利用图论原理,用直观的图形代替通读性不高的代码,不仅方便测试人员理解而且可以得到各种标准的静态复杂度。一方面,该软件可以将软件质量和版本变化用波动曲线的形式呈现出来,方便检测软件质量变化情况;另一方面,流程图与代码一一对应并做出相应的标注,方便迅速而准确地找出问题。

该软件主要用于动态集成测试,从宏观层面上掌控软件结构,同时面向源代码分析,具有很强的普适性,可以用于软件开发的各个阶段,贯穿始终。它采用客观的评估方式,保证覆盖所有的独立路径,能够提供整个软件系统的整体结构图,对于用户来说,可以更直观全面地了解软件,提高了编程人员的软件分析能力。

参考文献

[1] 孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J].小型微型计算机系统,2000,9:920-924.

[2] 李虎,史晓华,杨海燕,等.软件质量评价技术[J].计算机研究与发展,2002,1:61-67.

这款测试软件具有如下特点:(1)测试性能比较高,可在同一时间监测32000个函数、1000个任务;(2)具有分析存储器分配的功能,能够以最快速度发现存储器分配的隐患,更迅速地发现运行中的错误;(3)可以进行代码覆盖率的检测;(4)能够追踪代码,追踪的缓冲空间很大,给大规模软件系统的代码追踪分析带来了便捷。同时,该软件还可以进行其他方面的分析,如动态内存的分配等,测试结果具有高可靠性。近来,该软件新推出的VME测试卡真正解放了程序员,使得程序员将注意力更多的集中在代码设计上,而不必再为硬件系统、测试方案、以太网连接等方面费神。

4.2 Cantata/Cantata++

这款软件主要针对C或者C++进行测试,可以分为静态分析和动态测试两部分,分别由StaticAnalysis和DynamicTesting进行分析和实际测试。静态分析方面主要由Cantata检查代码的复杂性,然后根据复杂度的实际情况检测数据流,确定软件系统可维护的程度,静态分析的最终结果可由专业软件处理得到直观的图表分析报告。

动态测试方面主要是确定软件运行过程是否一切正常,这部分测试结果的有效性主要取决于动态测试的代码覆盖率,覆盖率越高测试结果越准确。

这款软件可以自动分析源代码,得到TCD,即测试用例模板,利用输入输出模拟实际环境。测试过程与软件工程的建立过程一一对应,可以做到开发与测试同时进行,无需转换开发环境,对于操作者来说使用起来相当方便。

4.3 McCabe

这款软件名字来源于著名学者McCabe,利用的原理是结构化测试理论,即V(G)圈的复杂度与该模块独立路径数的复杂度相等。其最显著的特点在于可视化,在分析源代码的基础上可以非常准确直观地得到系统结构图,充分利用图论原理,用直观的图形代替通读性不高的代码,不仅方便测试人员理解而且可以得到各种标准的静态复杂度。一方面,该软件可以将软件质量和版本变化用波动曲线的形式呈现出来,方便检测软件质量变化情况;另一方面,流程图与代码一一对应并做出相应的标注,方便迅速而准确地找出问题。

该软件主要用于动态集成测试,从宏观层面上掌控软件结构,同时面向源代码分析,具有很强的普适性,可以用于软件开发的各个阶段,贯穿始终。它采用客观的评估方式,保证覆盖所有的独立路径,能够提供整个软件系统的整体结构图,对于用户来说,可以更直观全面地了解软件,提高了编程人员的软件分析能力。

参考文献

[1] 孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J].小型微型计算机系统,2000,9:920-924.

[2] 李虎,史晓华,杨海燕,等.软件质量评价技术[J].计算机研究与发展,2002,1:61-67.

这款测试软件具有如下特点:(1)测试性能比较高,可在同一时间监测32000个函数、1000个任务;(2)具有分析存储器分配的功能,能够以最快速度发现存储器分配的隐患,更迅速地发现运行中的错误;(3)可以进行代码覆盖率的检测;(4)能够追踪代码,追踪的缓冲空间很大,给大规模软件系统的代码追踪分析带来了便捷。同时,该软件还可以进行其他方面的分析,如动态内存的分配等,测试结果具有高可靠性。近来,该软件新推出的VME测试卡真正解放了程序员,使得程序员将注意力更多的集中在代码设计上,而不必再为硬件系统、测试方案、以太网连接等方面费神。

4.2 Cantata/Cantata++

这款软件主要针对C或者C++进行测试,可以分为静态分析和动态测试两部分,分别由StaticAnalysis和DynamicTesting进行分析和实际测试。静态分析方面主要由Cantata检查代码的复杂性,然后根据复杂度的实际情况检测数据流,确定软件系统可维护的程度,静态分析的最终结果可由专业软件处理得到直观的图表分析报告。

动态测试方面主要是确定软件运行过程是否一切正常,这部分测试结果的有效性主要取决于动态测试的代码覆盖率,覆盖率越高测试结果越准确。

这款软件可以自动分析源代码,得到TCD,即测试用例模板,利用输入输出模拟实际环境。测试过程与软件工程的建立过程一一对应,可以做到开发与测试同时进行,无需转换开发环境,对于操作者来说使用起来相当方便。

4.3 McCabe

这款软件名字来源于著名学者McCabe,利用的原理是结构化测试理论,即V(G)圈的复杂度与该模块独立路径数的复杂度相等。其最显著的特点在于可视化,在分析源代码的基础上可以非常准确直观地得到系统结构图,充分利用图论原理,用直观的图形代替通读性不高的代码,不仅方便测试人员理解而且可以得到各种标准的静态复杂度。一方面,该软件可以将软件质量和版本变化用波动曲线的形式呈现出来,方便检测软件质量变化情况;另一方面,流程图与代码一一对应并做出相应的标注,方便迅速而准确地找出问题。

该软件主要用于动态集成测试,从宏观层面上掌控软件结构,同时面向源代码分析,具有很强的普适性,可以用于软件开发的各个阶段,贯穿始终。它采用客观的评估方式,保证覆盖所有的独立路径,能够提供整个软件系统的整体结构图,对于用户来说,可以更直观全面地了解软件,提高了编程人员的软件分析能力。

参考文献

[1] 孙昌爱,靳若明,刘超,等.实时嵌入式软件的测试技术[J].小型微型计算机系统,2000,9:920-924.

[2] 李虎,史晓华,杨海燕,等.软件质量评价技术[J].计算机研究与发展,2002,1:61-67.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!