嵌入式软件测试研究(精选12篇)
嵌入式软件测试研究 篇1
0 引言
随着信息技术的不断发展, 与硬件发展日益稳定相比, 软件故障却日益突出, 因此软件测试的重要性已经越来越被人们所重视。嵌入式软件有着开发工具昂贵、内存较小、实时性要求较高、CPU种类繁多、I/O通道较少等特点, 为此, 嵌入式软件的测试也与一般PC应用软件的测试有很大的差异。
1 嵌入式软件测试概述
1.1 嵌入式软件特点分析
嵌入式软件测试的主要目的在于验证软件的可靠性, 与通常的PC应用软件相比, 嵌入式软件的测试有如下几个特点: (1) 嵌入式软件是针对在特定硬件环境下开发的, 其运行和测试也需要依据特定的硬件环境; (2) 实施性要求较高, 除了要求有正确的输出结果以外, 还需要考虑是否能够在规定的时间内得到运行结果。
1.2 嵌入式软件测试环境分析
一般采用交叉开发环境来搭建嵌入式软件的测试环境。例如单元测试、集成测试等可以在PC机上完成的测试, 通常都在PC机上进行测试, 从而可以避免硬件环境的影响, 提高测试效率。在后期的集成测试中, 需要在具体的嵌入式软件硬件环境中, 搭建交叉测试环境来完成嵌入式软件的测试。交叉测试环境的搭建需要注意以下几个方面的内容:
(1) 主机与目标机之间的通信问题。可以通过以太网或者串口进行主机与目标机之间的物理连接, 主机与目标机之间的数据格式可以预先进行定义。
(2) 主机对目标机的测试控制。主要包括主机如何向目标机发送测试用例, 如何跟踪目标机的测试, 查看是否正常进行。
(3) 目标机测试结果的反馈。通常运行嵌入式系统的目标机没有视频显示等便利的测试结果输出端口, 因此目标机上的异常、错误信息和正常响应信息等测试结果都需要返回到主机上进行显示和输出。
在嵌入式软件测试环境的搭建过程中, 需要测试嵌入式系统与已建设备是否协调, 硬件设备电气特征是否正常, 以及主机与目标机之间的物理信道是否通畅等, 从而保证测试结果不受到嵌入式软件以外其它因素的影响。
1.3 嵌入式软件测试策略
嵌入式软件不同的测试阶段有不同的测试策略。
(1) 单元测试。为了提高嵌入式软件的测试效率, 一般会将较大的嵌入式软件系统划分成若干相对较小的任务单元进行测试。由于宿主机上有更加丰富的资源, 同时也为了方便对嵌入式软件的调试, 一般在宿主机上进行单元测试。单元测试一般采用白盒测试策略, 尽可能测试到单元模块中的每一个程序语句, 每一个分值, 从而提高代码测试的覆盖率。
(2) 集成测试。为了找出系统逻辑结构错误和各个功能模块之间的数据传递错误, 需要采用黑盒和白盒相结合的方式进行嵌入式软件集成测试。需要通过最大程度地模拟嵌入式软件实际运行环境。集成测试分成两个部分, 首先可以在宿主机上测试软件是否存在逻辑结构错误, 以及测试各功能模块之间是否有传递错误;然后, 通过构建真实的嵌入式软件运行环境, 来测试软件是否存在内存定位和分配上的错误。
(3) 确认测试。确认测试必须是嵌入式软件运行在真实的硬件目标环境中, 主要测试嵌入式系统是否由于测试环境的移植而受到影响。由于受到硬件目标环境资源不足、测试结果输出方式等限制, 嵌入式软件的确认测试一般采用黑盒测试方案。
2 嵌入式软件测试技术
2.1 静态测试技术
静态测试可以充分发挥人的逻辑思维能力, 包括代码检查、静态结构分析以及代码质量度量等方式。
(1) 代码检查。代码检查主要包括对嵌入式软件开发的代码审查、代码走读等工作。代码检查的内容主要包括分析代码是否遵循嵌入式软件设计、开发标准, 数据是否正确, 接口是否正确等内容。
代码检查能够快速地找到嵌入式软件的缺陷, 可以发现70%以上的编码和逻辑设计缺陷。因此, 在实际应用中, 代码检查可能比动态测试更加有效。
(2) 静态分析。静态分析是借助测试工具对软件代码进行分析的方法, 只可以分析是否存在内存泄露等特定的缺陷, 受其他模块的影响较小。静态分析主要包括对数据流的分析、对控制流的分析以及对软件度量的分析等。
嵌入式软件的静态测试, 主要是通过开发、测试人员对软件源代码进行审核分析, 不需要进行测试用例的设计, 因此嵌入式软件不需要特定的测试环境。
2.2 动态测试技术
根据是否需要了解软件内部结构的区别, 嵌入式软件的动态测试包括黑盒测试和白盒测试两种。
(1) 白盒测试技术。在对嵌入式软件进行白盒测试时, 需要对软件进行如下几个方面的检查:至少对系统中所有独立路径进行一次测试;至少在循环限内和循环边界对循环测试一次;对所有的逻辑判定都需要测试一次;对内部数据结构的有效性进行测试。
与通用的PC应用软件相比, 嵌入式软件的白盒测试需要更高的代码覆盖率。而且嵌入式软件的白盒测试不需要在目标硬件环境中运行。
(2) 黑盒测试技术。黑盒测试需要知道用户需要哪些功能, 可能会遇到什么样的问题, 在嵌入式软件自动化测试时, 采用黑盒测试技术较为方便。但是, 黑盒测试的代码覆盖率较低, 一般仅为总代码量的30%左右。
2.3 覆盖测试技术
覆盖测试技术根据嵌入式软件的内部结构来进行测试用例的设计, 是白盒测试技术的一种。覆盖测试的基本准则是:所设计的测试用例要能够尽可能覆盖嵌入式系统的内部结构, 从而发现嵌入式系统的问题和错误。覆盖测试的内容包括提高测试覆盖率、未被测试用例激活代码的测试、代码冗余检测等。因此, 覆盖测试也是一个提高软件质量的手段, 覆盖测试一般在嵌入式系统的单元测试中应用。
2.4 程序插桩技术
程序插桩技术是覆盖测试的一个重要实现手段, 其含义就是通过对程序测试状态的跟踪, 来发现嵌入式软件中的缺陷。
程序插桩的基本思想包括:
(1) 探针插入。可以在嵌入式程序中插入计数器、打印语句或者赋值语句来采集程序运行状态。
(2) 探针编译。根据设计好的测试用例, 重新编译嵌入式软件, 通过执行探针来获取嵌入式软件执行的动态信息。
(3) 特征数据处理。对特征数据进行分析和处理, 从而获得嵌入式软件的数据流或者控制流信息, 并且最终得到嵌入式软件的判定覆盖、语句覆盖等信息, 并且形成最终报表。
由于嵌入式软件运行的真实运行环境往往会受到输出方式的限制, 为此嵌入式软件的程序插桩测试通常都采用宿主机和目标机结合的方式, 其测试流程如图1所示。
在插桩完成之后, 需要对嵌入式软件进行重新编译, 并且将编译好的程序下载到目标机中, 同时通过宿主机与目标机的通信, 来对探针的运行以及探针运行结果进行分析。
3 嵌入式软件测试内容
嵌入式软件测试的内容主要为:软件代码测试、编程规范标准符合性测试、代码编码规范符合性测试、开发维护文档规范符合性测试、用户文档测试。
其中软件测试服务范围包括:系统级测试、应用测试、中间件测试、BSP及驱动程序测试、嵌入式硬件设计测试。
其中, 按照嵌入式软件有无操作系统将嵌入式系统分为两大类:无操作系统的嵌入式软件、有操作系统的嵌入式软件。
3.1 无操作系统的嵌入式软件
无操作系统的嵌入式软件主要包括C语言代码、汇编语言代码、Apa代码等。
C语言模式软件测试:硬件设备及其他宏定义 (编译阶段处理) 、API函数测试、模块初始化 (包括系统初始化) 、中间功能件测试、功能模块测试、中断处理测试、任务调度测试、区域功能测试、总体功能测试。
汇编语言模式软件测试:硬件设备及其他宏定义 (编译阶段处理) 、模块初始化 (包括系统初始化) 、中间功能件测试、功能模块测试、中断处理测试、区域功能测试、总体功能测试。
3.2 基于操作系统的嵌入式软件
基于操作系统的嵌入式软件主要包括应用软件测试、系统软件测试、整体性能测试。
应用软件测试:模块初始化 (包括系统初始化) 、中间功能件测试、功能模块测试、区域功能测试、总体功能测试。
系统软件测试:硬件设备及其他宏定义 (编译阶段处理) 、API函数测试、模块初始化 (包括系统初始化) 、中间功能件测试、功能模块测试、中断处理测试、区域功能测试、总体功能测试、标准符合性测试。
其中, 操作系统的标准符合性测试依据的标准主要包括:
整体性能测试:基于操作系统之上的嵌入式系统整体软件测试, 主要采用应用软件测试, 着重分析性能、内存分配、代码覆盖率、软件执行流程, 并采用仿真器、逻辑分析仪等硬件测试工具进行整体性能的测试。
4 嵌入式软件测试工具
用于辅助嵌入式软件测试的工具很多, 下面对几类比较有用的嵌入式软件测试工具加以介绍和分析。
4.1 内存分析工具
在嵌入式系统中, 内存约束通常是有限的。内存分析工具用来处理在动态内存分配中存在的缺陷。当动态内存被错误地分配后, 通常难以再现, 可能导致的失效难以追踪, 使用内存分析工具可以避免这类缺陷进入功能测试阶段。目前有两类内存分析工具———软件工具和硬件工具。基于软件的内存分析工具可能会对代码的性能造成很大影响, 从而严重影响实时操作;基于硬件的内存分析工具价格昂贵, 而且只能在工具所限定的运行环境中使用。
4.2 性能分析工具
在嵌入式系统中, 程序的性能通常是非常重要的。经常会有这样的要求, 在特定时间内处理一个中断, 或生成具有特定定时要求的一帧。开发人员面临的问题是决定应该对哪一部分代码进行优化来改进性能, 常常会花大量的时间去优化那些对性能没有任何影响的代码。性能分析工具会提供有关的数据, 说明执行时间是如何消耗的, 是什么时候消耗的, 以及每个例程所用的时间。根据这些数据, 确定哪些例程消耗部分执行时间, 从而可以决定如何优化软件, 获得更好的时间性能。对于大多数应用来说, 大部分执行时间用在相对少量的代码上, 费时的代码估计占所有软件总量的5%~20%。性能分析工具不仅能指出哪些例程花费时间, 而且与调试工具联合使用可以引导开发人员查看需要优化的特定函数, 性能分析工具还可以引导开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。
4.3 GUI测试工具
很多嵌入式应用带有某种形式的图形用户界面进行交互, 有些系统性能测试是根据用户输入响应时间进行的。GUI测试工具可以作为脚本工具在开发环境中运行测试用例, 其功能包括对操作的记录和回放、抓取屏幕显示供以后分析和比较、设置和管理测试过程。很多嵌入式设备没有GUI, 但常常可以对嵌入式设备进行插装来运行GUI测试脚本, 虽然这种方式可能要求对被测代码进行更改, 但是节省了功能测试和回归测试的时间。
4.4 覆盖分析工具
在进行白盒测试时, 可以使用代码覆盖分析工具追踪哪些代码被执行过。分析过程可以通过插装来完成。插装可以是在测试环境中嵌入硬件, 也可以是在可执行代码中加入软件, 也可以是二者相结合。测试人员对结果数据加以总结, 确定哪些代码被执行过, 哪些代码被巡漏了。覆盖分析工具一般会提供有关功能覆盖、分支覆盖、条件覆盖的信息。对于嵌入式软件来说, 代码覆盖分析工具可能侵入代码的执行, 影响实时代码的运行过程。基于硬件的代码覆盖分析工具的侵入程度要小一些, 但是价格一般比较昂贵, 而且限制被测代码的数量。
5 结语
嵌入式软件的测试主要是为了保证嵌入式软件系统的高可用性和高质量。嵌入式系统的特殊性, 使得嵌入式软件的测试在整个软件的开发过程中都占有非常重要的地位。为此, 对嵌入式软件测试的研究势在必行。在具体的嵌入式软件测试过程中, 应该根据嵌入式软件自身特点, 开发具有针对性的测试工具来提高嵌入式软件测试的效率和质量。
参考文献
[1]张君施.嵌入式软件测试[M].北京:电子工业出版社, 2004.
[2]王璞, 张臻鉴.面向实时嵌入式机载软件的测试技术研究[J].航空计算技术, 1997 (4) .
[3]刘利枚, 周鲜成, 石彪.嵌入式软件测试系统的设计与实现[J].国外电子测量技术, 2008, 27 (1) .
嵌入式软件测试研究 篇2
覆盖的几种方法或策略如表1所列。
表1几种典型的覆盖策略
覆盖策略定义语句覆盖在制定测试案例时,使程序中的每个语句都至少执行1次。其缺点是不能发现某些逻辑错误判定覆盖执行足够的测试案例,使得程序中每个判定都获得一次“真”值和“假”值,或者说使每一个分支都至少通过1次条件覆盖执行足够的测试案例,使得判定中的每个条件获得各种可能的结果判定/条件覆盖执行足够的测试案例,使得判定中的每个条件取得各种可能的值,并使得每个判定取得各种可能的结果条件组合覆盖执行足够的测试案例,使得每个判定中的条件的各种组合都至少出现1次。其特点是覆盖较充分,满足条件组合覆盖的测试案例也一定满足判定覆盖、条件覆盖和判定/条件覆盖。
从以上简要介绍可看出,这几种覆盖策略的严格程序有如下趋势:
其它一些覆盖策略还包括:修改的条件/判断覆盖(通常简称为MCDC)、路径覆盖、函数覆盖、调用覆盖、线性代码顺序和跳转覆盖、数据流覆盖、目标代码分支覆盖、循环覆盖、关系操作符覆盖等。随着软件规模的增长,实现全面的覆盖所需的测试案例的数目也越来越庞大,因此根据被测软件对象的特点选择适当的覆盖策略是非常重要的;同时,要确定合理测试目标,达到100%的覆盖往往要付出很大的代价,应该同形式化评审等方法结合,以发现更多的软件故障。
3覆盖测试工具
要取得较好的覆盖测试效果,需要借助一定的工具软件。这些工具软件一般具备如下的功能特点,可弥补人为测试的缺陷:
①分析软件内部结构,帮助制定覆盖策略及设计测试案例;
②与适当的编译器结合,对被测软件实施自动插装,以便在其运行过程中生成覆盖信息并收集这些信息;
③根据搜集的覆盖信息计算覆盖率,帮助测试人员找到未被覆盖的软件部位,以改进测试案例提高覆盖率。
嵌入式软件测试研究 篇3
关键词:嵌入式数据库;测试;性能
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2013) 09-0000-02
1 引言
伴随着科学信息化技术的快速上升发展,信息化技术已经成为目前阶段影响社会前进的主要关键因素。然而嵌入式数据库系统具有十分广泛的功能作用,能够为社会上各行各业领域提供及时有效、细致准确、持续有序、高度集成的数据信息化服务型平台,已经成为信息化产业的重要发展方向。为了保证信息化设备的质量性能和可靠程度,在嵌入式系统下对数据库系统实现测试的重要程度愈来愈引起人们的重视[1]。在实际的嵌入式系统之中,使用哪一种模式的测试方案,提升系统性能的测试效率,防止目标系统出现瓶颈问题,体现出十分重要的现实意义。通过对于嵌入式系统的数据库框架体系、功能结构与实现技术实行深入透彻的分析,在通用型数据库操作系统的性能评判模式的基础上,关于嵌入式数据库的固有特征与关键实现技术,提出了一种能够适用于嵌入式系统数据库的实际测试方法模式,对于嵌入式数据库的自我研究与开发能够进行全面系统、综合多样的测试。
2 嵌入式数据库的主要特点
(1)执行环境复杂。嵌入式数据库系统具备专项使用的特性,并且可以与硬件产生密切的联系,只可以允许在需求范围内所指定的硬件平台上实现执行操作,然而处于嵌入式系统的技术领域,硬件与软件相应的平台均表现出千差万别的特点,所以嵌入式数据库的执行环境会显得复杂[2]。
(2)系统具有嵌入性。嵌入式数据库对于目标代码量有一定的标准要求,在能够达到一定程度的性能标准基础下,尽量能够降低相应的代码尺寸,以便有利于其可以应用到一部分移动设备硬件端。
(3)系统具有可预测性。可预测性通常是指在确保系统能够在实际事务的执行时间范围内可以进行预测的状况下执行,即为系统用户应当可以确定信息数据操作的限制时间与数据库相应存储空间的容量状况。
(4)系统具有实时性。嵌入式数据库系统一般都会应用在雷达目标跟踪、指令控制系统等各种时效性要求较高的实际应用环境之中,是否能够实时地对用户的信息数据处理进行及时响应的实际需求显得非常的重要。
(5)系统具有可靠性。嵌入式数据库系统一般在便携移动、相对封闭的局限环境中应用,数据信息技术相关支持人员不能对其提供具体的现场技术性指导。所以嵌入式数据库系统应当具备可靠性,可以确保系统发生异常状况时,会自动实行恢复操作以返到之前的某一个固定状态。
(6)可移植性和平台的不相关性。嵌入式数据库基本是执行在具体分化的硬件与软件平台基础上,所以嵌入式数据库操作系统的具体设计应当考虑到与底层相应的支持软件之间的通信接口尽量保持简单的模式,这样才会有助于系统的移植处理操作。
2.1 嵌入式特性测试
嵌入式系统的特点即为嵌入式数据库相应的基本特点,其包含了简易性质、数据信息容量、可管理程度、移植性能与兼容性能等方面。嵌入式系统属于一种资源受到限制的系统,其相应的内存资源一般都会受到实际应用需求和搭建成本的限制。当嵌入式系统应用操作程序的相应目标代码在达到一定程度的性能指标范围之下,应该尽量能够降低代码的尺寸大小,以便于减少对有限形式内存资源的相应空间占有量。所以应当需要进行编译后的程序代码尺寸大小反映出简易性质。为了能够体现出更高的性能效果,嵌入式数据库应该在尽量能够保证在资源消耗少的情况下进行更多信息数据的处理工作,尽可能满足嵌入式数据操作管理的目的需求。嵌入式系统一般会在便携移动、相对封闭的条件下执行,其具体的执行工作基本上是不需要人参与的,所以对嵌入式系统应当以实现零管理作为发展目标[3]。
2.2 基准性能测试
嵌入式系统环境下进行数据库的构建,应当需要具备内存管理体系、数据信息存取体系、并发控制管理体系、数据库恢复体系等方面内容,在综合性能上应当体现出以下几个部分。
(1)可预测性。可预测性作为嵌入式数据库中一个关键的性能标准,使用用户应当可以确保数据信息操作处理的时间与数据库信息存储空间大小的利用状况。对于嵌入式数据库实行确定性的测试工作,依次查询得到所有各项记录,每一条具体记录的平均查询时间应当保持在有限的时间范围以内。
(2)高效性。嵌入式数据库相应的高效性通常表现为两个具体方面,即是数据信息处理能力与并发控制管理能力。数据信息处理能力,在指定的实际应用条件下,能否保证能实时地响应使用用户的数据信息处理的要求显得十分重要。对于嵌入式数据库实行数据信息处理能力相关的测试,应当在数据库存储容量发生变化的状况下对数据库的运行情况实行查询,包含增加、删除、查询与修改等各种数据库的基本操作处理。并发控制管理能力。由TPC组织提出的相应性能测试规范标准体系中,TPCB Benchmark是对于数据库实行压力结果测试的,侧重于对数据库的关键处理能力实行相应测试,即为在单位时间范围之内实行交易的数据量,相当接近于实时性的数据库性能测试要求。
(3)可靠性。数据信息的高度可靠性是所有数据库处理操作的重要基本保证。在嵌入式系统的操作环境下,执行环境表现出相对比较封闭的特征,嵌入式数据库系统的相关测试应当在软件出现异常的状况下能否表现出防护性的功能与对于某种具体类型的灾难而实行自动恢复的操作处理手段,保证数据库达到一致性与完整性的目的。
2.3 标准符合性测试
伴随着数据库操作系统技术的上升发展,各个系统之间需要考虑到的相互操作性、移植性愈来愈受到关注,标准规划模式已经成为数据库操作系统系列产品被使用用户所承认与肯定的重要基础。关于嵌入式数据库,对其应当从以下几方面进行性能标准的判断[4]。
(1)SQL标准规范化符合性测试。根据SQL92的规范标准,全面系统地测试嵌入式数据库系统相应产品的SQL标准规范支持相关特性。
(2)ODBC标准规范化符合性测试。参考Microsoft ODBC3.0规范标准而实现,ODBC规范标准符合性测试应当包含API调用函数与数据类型支持性测试、数据库系统连接功能测试、基本操作功能测试、结果集成化处理测试、事务管理功能测试、ODBC SQL语法检测测试等各个方面。
(3)JDBC标准规范化符合性测试。参照JDBC3.0规范标准,全面系统地测试嵌入式数据库有关产品的JDBC规范标准的相关支持特性。
2.4 应用综合测试
应用综合测试应当侧重于体现出嵌入式数据库在实际应用与项目推广过程当中需要分析考虑的重点因素。在保证不影响数据库系统资源与性能效果的基础下,应当全面系统地提升数据库的实践应用综合处理能力[5]。关于嵌入式数据库的实践应用处理综合测试环节,应当主要包含支持各种语言、操作平台、应用场合、易用性与成本控制需求等各个方面。嵌入式数据库不但应当需要具备能够应用于嵌入式系统环境的标准规范C/C++通信接口,也应当需要具备熟悉的SQL编程语言,有利于嵌入式数据库相关产品的标准规范化。嵌入式操作系统具有类型繁多、更新效率高、系统各具特色等特点,应当要适应此种广阔的操作处理空间,嵌入式数据库多平台性质的支持作为一项非常重要的性能指标。
参考文献
[1]邹月和,林茂森,唐飞.嵌入式软件系统测试综述[J].电子产品可靠性与环境试验,2007(5):52-55.
[2]柳纯录,黄子河,陈渌萍.软件评测师教程[M].北京:清华大学出版社,2005:586-608.
[3]李庆诚,卢涛.嵌入式数据库评测框架构建研究[J].计算机工程与设计,2008,29(1):123-125.
[4]张冬敏,阎保平.SQL标准符合性测试相关问题探讨[J].计算机应用与软件,2007(5):75-78.
嵌入式软件测试的研究 篇4
1 嵌入式软件测试概述
软件测试是为了确保软件能够满足相应的需求规格, 嵌入式软件有其特定的实效判定准则, 这就需要对其进行严格的测试。由于嵌入式软件构成的系统不同于其他桌面系统, 嵌入式系统具有实时性等特点, 需要在特定的硬件环境下才能有效运行, 这就使得嵌入式软件测试既要保证嵌入式软件的实时性, 还要保证其在特定硬件环境下运行的可靠性。与一般商用软件的开发和测试相比, 嵌入式软件的开发环境与运行环境并不保持一致, 这就对嵌入式软件测试提出了更高的要求, 测试所需要的信息需要在目标机上产生, 测试工具要在宿主机上运行, 这说明嵌入式软件需要面临宿主机环境和目标环境的双重测试, 除了测试代价增加外, 嵌入式软件的测试策略问题就成为了考虑的重点[1]。
2 嵌入式软件测试分析
2.1 嵌入式软件测试环境分析
嵌入式软件测试通常会采用仿真技术, 即使用特定软件或硬件模拟设备的功能实现简化测试环境的目的。根据界面和运行环境的不同, 嵌入式软件仿真测试环境主要分为全实物仿真测试环境、半实物仿真测试环境和全数字仿真测试环境。全实物仿真是指被测软件完全处在真实的运行环境中, 嵌入式软件与相交联的设备建立了真实的链接, 这种闭环测试对环境的要求相对较低;半实物仿真主要利用仿真模型来对真实系统进行测试, 这种非侵入性闭环测试对环境的要求要高于闭环测试;全数字仿真利用数字化硬件环境模型来对软硬件系统进行测试, 这种测试对环境的要求最高。嵌入式软件交叉开发环境也提供了一个交叉测试环境, 而构建嵌入式软件交叉测试环境则需要解决三个问题:主机与目标机通信连接的问题;如何实现主机对目标机程序进行测试控制的问题;如何实现目标机反馈主机测试信息的问题。
2.2 嵌入式软件测试技术分析
鉴于嵌入式软件的特殊性, 对其进行测试必要要有专门的工具, 嵌入式软件测试面临的技术挑战有很多, 如测试工具通用性较差、缺少适合单一方面测试的工具, 受动态复位代码影响软件的执行流程无法实现可视化, 测试的有效性难以预知。从实现形态上看, 嵌入式软件测试工具主要分为软件测试工具、硬件测试工具以及软硬件相结合的测试工具, 其中, 软件测试工具主要采用的是软件仿真技术, 即在宿主机上对目标机进行模拟, 从而使大部分测试能够在仿真的宿主机上完成, 这种方式应用的比较广泛, 较为典型的是Host/Target, 该软件测试工具采用的是软件插桩技术, 即将测试用例嵌入到源程序中, 通过软件运行状况来发现存在的问题;硬件测试工具通常用于系统的硬件设计和测试工作, 主要利用逻辑分析仪对系统的工作状态进行有限的性能分析, 该种方式并不具备对内存分配和检测的能力, 因此很难得到满意的结果;软硬件结合测试工具结合了软、硬件测试工具的各自优势, 较为典型的是AMC公司设计的CodeTest高性能测试工具, 该测试工具具备了性能分析、测试覆盖分析、执行追踪分析、动态存储器分配分析等功能, 但是也存在着一定的缺陷, 如对硬件依赖性较强[2]。
3 嵌入式软件测试的相关策略
嵌入式软件测试的重点在于测试用例和例程的设计、测试工作管理、测试环境建立等, 这也是嵌入式软件测试需要解决的主要难题, 测试用例和例程的设计要想达到一定的质量要求, 一定要提高设计者的分析和设计能力, 这种技巧性活动很难得到有效的控制。目前, 测试工作管理还缺乏可供参考的资料和测试实施模式, 测试环境也很难建立。面对这些难题, 嵌入式软件测试需要一定的测试策略, 在不同环境下选择不同的测试策略, 从而实现测试开发效率最大化。嵌入式软件测试通用的策略主要有单元测试策略、需求测试策略、设计测试策略、集成测试策略以及系统测试和确认测试策略。其中, 单元测试完全可以在主机环境下进行, 能够以最小的目标单元访问所有目标指定的界面;需求测试是指对软件需求说明书的测试, 主要运用的是静态测试技术;设计测试是通过文档审查的方式来对软件设计文档进行测试;集成测试的优势主要体现在低级别的主机平台上;系统测试和确认测试完全可以在目标环境下进行, 能够对所有软件成分进行充分的测试[3]。
4 结语
总而言之, 嵌入式系统应用的日益广泛, 我们对嵌入式软件测试的研究也越来越必要, 嵌入式软件测试是保证嵌入式软件质量乃至嵌入式系统可靠运行的重要手段, 对其进行研究有着重要的现实意义。
参考文献
[1]盛云龙.基于组合覆盖的嵌入式软件测试平台研制[D].哈尔滨工业大学, 2013
[2]陈佳豫, 孔德柱, 刘金国, 周怀得, 赵莹.基于蝴蝶模型的星载嵌入式软件测试策划[J].光学精密工程, 2011, 10 (7) :17-18
嵌入式软件测试研究 篇5
2.1 系统平台测试
这部分包括硬件电路测试、操作系统及底层驱动程序的测试等。硬件电路的测试需要用专门的测试工具进行测试。这里不再多述。操作系统和底层驱动程序的测试主要包括测试操作系统的任务调度、实时性能、通信端口的数据传输率。该阶段测试完成后,系统应为一个完整的嵌入式系统平台,用户只需添加应用程序即可完成特定的任务。
2.2 模块测试
把大型的嵌入式软件系统划分为若干个相对较小的任务模块,由不同的程序员分别同时对其进行编码。编码完成后,把各个模块集成起来前,必须对单个模块进行测试。由于没有其它数据模块进行数据传递的支持,该阶段测试一段是在宿主机上进行的(宿主机有丰富的资源和方便的调试环境)。此阶段主要是进行白盒测试,尽可能地测试每一个函数、每一个条件分支、每一个程序语句,提高代码测试的覆盖率。由于只有单个模块正确才有整体集成的必要性,因此,单个模块测试时测试一定要充分、完整。模块测试阶段,测试用例的构造不但要测试系统正常的运行情况,还要进行边界测试。边界测试就是进行某一数据变量的最大值和最小值的测试,同时进行越界测试,即输入不该输入的数据变量测试系统的运行情况。理想的嵌入式系统是不应该由用户的信息交互导致死机的,这也是嵌入式设计的一个基本要求。因此,不论进行何种测试,系统死机都该被作为测试错误处理。在模块测试阶段,由模块化编程的基本思想,根据模块内部的紧凑程序,也可以把大的模块划分成小的模块。在程序内部,小模块之间数据传递的入口设计接口函数,用于快速地定位错误。用此模块嵌套的思想进行软件测试,需要模块内部结构清晰,数据链路简单。
2.3 集成测试
单个软件模块测试正确之后,将所有模块集成起来进行测试。本阶段主要是找出各模块之间数据传递和系统组成后的逻辑结构的错误。在宿主机上采用黑盒与白盒相结合的方法进行测试,要最大限度地模拟实际运行环境,可以屏蔽掉一些不影响系统执行的和数据传递的难以模拟的函数。集成测试是模块化设计软件的测试优点充分体现的阶段。集成测试前,应该由程序员根据模块之间的数据的输入输出编写模块接口函数,这需要负责不同软件模块的程序员共同协调完成,然后将模块接口函数集成到接收数据模块的入口处。由前面的分析可知,单链路数据传递的软件模块集成测试时容易定位错误所在的软件模块。一个软件模块的数据不一定只有另外一个模块提供,即软件模块的数据链路不一定只是单链路的,测试时可以把复杂链路结构的数据传递划分为单链路结构数据传送进行错误定位。修改输出数据的软件模块时,可能导致输入数据的软件模块引入新的错误,因此在这里引入关联矩阵确定修改某一模块后需要重要测试的模块。
假定模块化设计的嵌入式系统软件由软件模块Ai(i=1,2,…,m,n)组成,m表示矩阵的行号,n表示矩阵的列号。图5所示的矩阵即为其关联矩阵。
在关联矩阵中,Aij=1表示Aj接受了Ai输出的数据,故修改了Ai重新测试Ai的同时也需重新测试Aj。
集成测试是在拥有程序设计文档、程序结构和数据结构时,对软件模块在集成中出现的错误进行测试。集成测试时,根据模块接口函数定位错误修改代码,根据关联矩阵确定重新测试的软件模块。图6给出了模块化设计的嵌入式软件集成测试模型。
2.4 系统测试
集成测试完成后,退出宿主机测试环境,把系统移植到目标机上来,完成应用到现场环境中,从用户的角度对系统进行黑盒测试,验证每一项具体的功能。由于测试者对程序内容程序执行情况一无所知,因此本测试阶段的错误定位比较困难。系统测试阶段应该进行意外测试和破坏性测试,即测试系统正常执行情况下不该发生的激发活动和人为的破坏性的测试,进一步验证系统性能。系统测试阶段不应该确定错误后立即修改代码,应根据一定的错误
发生频率,确定测试周期,在每个测试周期结束时修改代码,进行反复测试;否则,不但增加了完全测试的任务量,而且降低了测试的可信度。
2.5 测试结果分析
测试结果的分析可以定位错误,指导程序员修改代码,同时指出测试进行的程序并进一步指明测试方向。测试结果的分析是一个由测试结果和测试预得结果进行分析、比较和定位错误的过程。测试结果的分析是一次测试的最后环节,分析时应该考虑软件的运行环境和实际运行环境的差异以及各种外界因素的影响等。
2.6 测试用例的构造与管理
测试用例是为了测试目标程序设计的包括输入项和预得结果的一种文件,根据测试环境和测试目标程序的不同,可分为某种格式的文档或某种输入行为(如一次按键)等。测试用例的构造要尽可能覆盖所有可能的取值范围,使测试尽可能地覆盖所有程序代码,提高代码的测试覆盖率,同时又不作多余、重复和无意义的测试。在嵌入式软件测试的不同阶段,要构造不同的测试用例;在系统平台测试阶段,要构造针对系统任务调度、实时性能和底层驱动程序的测试用例;在模块测试阶段,应构造针对某一模块进行测试的测试用例;在集成测试阶段,针对系统集成时数据传递、结构斜接的问题构造相应的测试用例;在系统测试阶段,要构造针对某项功能的或多项功能结合在一起的测试用例,或使用已经在同类产品上已经验证正确的测试用例。测试用例是可复用的。此外大型的软件开发过程中,测试用例的种类繁多,应该按一定的方法进行管理。用数据库的来管理测试用例是一个很好的选择。根据测试阶段将测试用例进行划分,然后用关键字唯一确定。这样在使用、修改和保存测试用例时都很方便,直接用查询的方式就可以调出测试用例。
3 数控系统软件测试
本数控系统采用ARM7处理器,操作系统采用μC/OS实时操作系统,是一个典型的嵌入式系统。由于数控系统较为复杂,开发过程中将任务进行了详细的划分,软件的开发采用模块化开发。模块的划分及数据流向如图7所示。
根据图7所示的软件模块和数据流向可构造关联矩阵,如图8所示。
开发过程中,几个模块由不同的程序员分别进行编码,分别由程序员进行模块测试,并按白盒测试的方法进行覆盖测试。最后集成测试前,根据关联矩阵,程序员协作编写了模块接口函数F(A1-A2)、F(A1-A4)、F(A1-A5)、F(A1-A6)、F(F2-A3)、F(A3-A4)、F(A4-A5)、F(F5-A6)、F(A6-A2),然后根据图6所示的测试模型和图8所示的关联矩阵对系统进行了集成测试。分析可知,一些关键模块,如译码模块和刀补模块的测试代码覆盖率达到90%之上。图9所示的整个系统经过系统测试之后性能稳定,图10为其加工的零件,目前该系统已经小批量生产。
4 结论
嵌入式软件测试研究 篇6
关键词:嵌入式;实时软件;计算机软件设计;运用
中图分类号:TP311.52
近年来,我国信息化进程逐渐加快,计算机水平快速提升,计算机软件被广泛的应用在多个领域。嵌入式实时软件在计算机软件设计中的应用,可以有效地优化计算机软件系统,减少软件产品缺陷,改善计算机软件系统的使用性能。在设计计算机软件时,结合嵌入式实时软件的特点,进一步提高计算机软件系统的可靠性和稳定性。
1 计算机软件设计运用嵌入式实时软件概述
1.1 特点
嵌入式实时软件可以运用在计算机软件的预测指令执行、动态分配、缓存机制等设计中,提升计算机软件系统设计的科学合理性和实时处理功能。嵌入式实时软件在计算机软件设计中的应用包括软件和硬件两部分,由应用程序控制计算机软件的运行,通过计算机操作系统编写软件控制程序,实现软件和硬件之间的交互。嵌入式微处理器是嵌入式实时软件设计的核心,可以实时地支持软件系统的多任务,在短时间内可以快速中断相应,实现多任务操作[1],并且具有较强的计算机存储区保护功能。嵌入式实时软件系统是模块化结构,便于软件系统的修复和检测,并且嵌入式实时软件系统中的处理器结构具有良好的扩展性,嵌入式实时软件的低功耗设计将会在计算机软件设计中发挥更重要的作用。
1.2 应用原理
嵌入式实时软件在计算机软件设计中的应用,通过将计算机科学技术和实时处理技术相融合,从而建立实时的CORBA模型。同时,在设计计算机软件时应用嵌入式实时软件,可以在计算机软件系统远程调用过程中实现更多的设计服务,例如在设计实时CORBA模型软件过程中,嵌入式实时软件可以对计算机软件系统设计提供有效的支持,并且优化计算机软件设计模式,全面提升计算机软件系统的实用性、安全性和独立性。
2 计算机软件设计嵌入式实时软件的开发流程和设计要点
在嵌入式实时软件在计算机软件设计中的应用,可以简化计算机软件的开发流程,首先设计人员通过分析计算机软件系统需求,从而解析嵌入式实时软件的设计需求,然后,在这个基础上对计算机软件系统进行具体设计,并且编写应用程序代码,最后,对计算机软件系统进行性能测试,完善和优化计算机软件设计。在计算机软件设计中应用嵌入式实时软件,通过简洁流畅的开发流程,提升计算机软件系统的可靠性和设计效率,提升计算机软件设计中嵌入式实时软件的应用水平。
在运用嵌入式实时软件设计计算机软件系统时,设计人员要按照计算机软件的设计流程,尽量避免人为的设计失误。例如,在设计计算机软件结构时,设计人员要注意将计算机硬件结构和软件设计分离开来,降低计算机软件设计对硬件的依赖性,有效提高计算机软件系统的可靠性和实时性。另外,嵌入式实时软件在计算机软件设计中的应用,有助于实现格式化的数据结构和初始化的软件数据,设计人员在设计计算机软件系统时,可以直接操作软件资源和硬件设备,丰富计算机软件设计功能。
3 嵌入式实时软件在计算机软件设计中的运用
3.1 任务划分
应用软件是嵌入式系统的最高层,也是实现系统功能的重要基础。嵌入式RTOS微内核在计算机操作系统承担着资源管理、任务互斥与同步、任务间通信、任务控制、任务管理等多种功能,其是开发计算机软件应用程序的基础平台,基于嵌入式实时软件,将计算机软件系统合理划分为一个个独立的任务,是简化软件设计、优化嵌入式RTOS模型、协调系统运行的关键[2]。在划分计算机软件系统并行任务时,要深入分析应用程序的数据转换,确定数据执行顺序和数据并行转换,将一个或者多个数据转换划分为一个任务,计算机应用系统数据通信的异步关系是任务划分的和总要因素,主要从两个方面进行考虑:一方面是系统内部功能,计算机软件系统并行任务可以分为用户接口任务、应用控制任务、异步和同步任务、周期任务等,将事件激活任务和同一时间段完成的系统功能整合为一个任务,将一些联系紧密的任务合并为一个任务,由相同事件驱动,共享计算机软件资源,简化计算机软件设计流程。另一方面,I/O功能,计算机软件系统通过中断方式和应用程序轮询来驱动I/O事件,由于应用程序轮询需要占用大量的计算机CPU资源,为了满足计算机软件系统使用性和实时性的要求,多采用中断方式。
3.2 存储映像布局和任务组织
应用嵌入式实时软件设计计算机软件系统,在划分为独立的任务后,任务之间的逻辑关系和数据转换关系对于任务组织方式有着重要影响,任务的管理和组织功能主要取决于嵌入式操作系统。和微机操作系统相比,嵌入式操作系统应用程序保存在FLASH和ROM,为了确保系统稳定、协调地运行,因此要优化计算机软件系统布局。计算机软件系统布局要重点考虑存储器的使用和存储映像的布局。计算机软件系统从物理零地址调取程序指令,在物理地址上设置执行代码,嵌入式应用系统从ROM开始启动,ROM初始化时位于物理零地址,将中断向量存储在零地址之后。这种存储映像布局和任务组织形式可以有效加快处理器调取中断向量的速度[3]。
3.3 任务调度和应用实时性
嵌入式实时软件系统的实时性主要分为硬实时性和软实时性,硬实时性要求在一定的时间段内必须完成系统任务,软实时性要求在一定时限内完成任务,可以允许一定的时间延迟。计算机软件系统的任务调度要尽量采用基于优先级的调度方式。当某一优先级的软件系统任务较多时,微内核会根据任务的紧急程序,自动增加优先级级数,按照不同的优先级将系统任务拆分为多个任务队列,有效减少系统关键任务的响应时间。
3.4 任务与时钟间通信
在计算机软件设计中应用嵌入式实时软件,设计计算机软件系统的时钟服务,位系统任务设置自己的时钟,定期控制执行动作。嵌入式实时软件系统具有信号量、信号、队列等机制,可以实现软件资源和系统任务之间的同步与通信。
3.5 系统初始化
计算机软件系统设计采用嵌入式实时软件要充分考虑到软件系统的初始化执行,在嵌入式操作系统底层硬件和微内核之间的硬件抽象层编写初始化代码,实现系统的初始化和引导。嵌入式实时软件系统包含BIOS,通过一系列固定指令序列执行系统初始化工作,如,转换处理器状态、初始化RAM变量、设置异常中断向量、定义系统入口点等,通过加载嵌入式软件系统,设置程序计数器的程序指令,从而便于系统任务调度。
4 结束语
嵌入式实时软件在计算机软件設计中的应用,在底层硬件和应用软件构建虚拟视图,通过嵌入式系统的分层结构,重点实现计算机软件系统的具体应用功能,为底层硬件和高层应用设置系统接口,简化计算机软件系统设计,满足系统的实时性要求,提高计算机软件设计的灵活性和可扩展性,增强系统功能。
参考文献:
[1]宫婷.计算机软件设计中嵌入式实时软件的应用探究[J].中国外资,2013(23):280.
[2]马宇驰.计算机软件设计中嵌入式实时软件的应用探析[J].信息通信,2014(04):104.
[3]余耀.解析计算机软件设计中嵌入式实时软件的应用[J].中国新技术新产品,2014(08):14.
作者简介:曹道柱(1980-),男,江苏南京人,助理工程师,本科,研究方向:计算机软件。
嵌入式软件测试技术研究与应用 篇7
软件开发商和软件用户两个群体对软件测试目的的理解有所不同。软件开发商进行软件测试的根本目的在于通过测试使自身所设计的软件产品可以符合用户的需求,确保软件产品的质量。软件用户则是希望通过软件的测试来暴露出软件开发商所设计的软件中所存在的问题与缺陷,检验软件所设计的功能是否满足自身需求。软件测试的目的主要被归纳为以下几点内容 :(1)检验软件的性能、功能是否符合规定的需求;(2)软件的测试分析为软件的可靠性分析提供了有利条件 ;(3)将软件所得实际结果与预期结果之间的差异分析所需的时间、人力降至到最低。通过软件测试将系统中存在的缺陷、错误进行修正处理,以此来提高软件的质量、性能,软件中存在的缺陷错误会为日后的工作带来难以预估的风险,软件的测试很大程度上降低了这些风险的发生。
2 软件的测试技术概述
软件测试技术主要包括静态测试和动态测试。静态测试又包括审查、走查、评审,而动态测试主要由白盒测试和黑盒测试构成。
2.1静态测试
静态测试的主要测试对象是源代码,通过源代码的分析发现其中潜在的缺陷错误,在程序不执行的情况下查找程序中的错误,静态测试主要包括审查、走查、评审三种类型,对其进行了如下分析:(1)走查。走查的评审过程不是非常正式,走查是由部分小组成员通读编码和设计,剩余小组成员对可能出现错误、发生矛盾、信息遗漏的地方进行系统的讨论,对走查过程中发现的问题做出适当的记录,以便于之后修改工作的实施。(2)审查。审查会对程序源代码进行较为正式的评估和检查。首先由软件设计开发人员对源代码中潜在的风险错误进行自我审查,之后由检查组进行代码审查。通过召开正式会议的方式来确保开发人员、软件用户、测试人员都参与到程序的审查工作中来,会议中还应该将需求描述文档、程序源代码清单、程序设计文档、代码缺陷检查表、代码编码标准等相关文件准备完善,在此基础上进行软件的静态分析,通过审查检测软件中是否存在错误。如果在审查中发现了错误,一定要在会议现场就将错误修正过来,还应该生成一份与静态错误分析相关的报告。(3)评审。
评审小组成员主要包括开发人员、测试人员、项目经理、与软件测试领域相关的专家、软件用户,他们根据审查结构和审查的讨论结果来判定所设计的程序是否可以通过静态测试。
2.2动态测试
动态测试是在程序执行过程中发现错误的测试,动态测试主要由白盒测试和黑盒测试构成,对其进行了如下分析:(1)白盒测试。白盒测试又被称为结构测试,白盒测试的测试用例是针对被测程序的相关信息和内部结构而设计的,白盒测试还要测试被测程序的逻辑路径。
白盒测试的主要测试内容包括以下几部分内容:1测试程序中所有的内部成分、路径是否按照要求、规定进行工作;2测试程序内部的变量的状态、运行的路径以及逻辑关系等;3最后要测试的是程序的运行是否符合设计需求。(2)黑盒测试。黑盒测试又被称为功能测试,黑盒测试的测试用例是针对被测程序的功能来设计的。将被测程序看成一个黑盒子,无法看到程序的内部结构,在测试过程中不将程序的内部逻辑结构和特性问题考虑在内,将测试的重点放在程序的外部结构上,测试内容主要包括软件功能和软件界面。黑盒测试的主要测试内容包括以下几部分内容:1测试程序中的功能是否完善齐全,并且要检测程序的性能和功能是否能够满足用户的需求。2测试在人机交互过程中、外部数据库访问过程中、数据结构上是否存在错误,并且要检测数据的输入和信息的输出是否正确。3检测程序的初始化、终止过程是否存在错误。一般较为常用的黑盒测试法主要包括以下几种类型:等价类划分法、边界值分析法、因果图、错误推测法等。
3 嵌入式软件系统的自身特点对软件测试的影响
嵌入式软件测试与一般软件的测试相比有所差异,嵌入式系统具有实时性、通道少、内存小、开发工具昂贵、与硬件联系紧密、种类繁多等显著特点,这些特性极大地增加了软件测试的难度。
3.1嵌入式软件系统的嵌入性影响
嵌入式软件系统的运行环境一般是由嵌入式系统提供的,嵌入式系统只提供了运行环境却无法提供开发环境,这两者无法达成统一就会增加嵌入式软件测试的难度。在系统测试过程中,测试工具和测试信息分别位于宿主机和目标机上,宿主机与目标机之间的信息传输问题非常关键。在测试过程中,不仅要对宿主机进行运行测试,还要确保嵌入式软件在目标机上可以正常运行。
3.2嵌入式软件系统的实时性影响
嵌入式软件具有实时性,它需要在规定的时间范围内完成有待处理的任务,它的运行具有实时性。嵌入式软件的实时性影响了嵌入式软件系统的测试,例如当有电话打入需要在规定的时间范围内接听,在这种情况下相应的操作系统却没有做出任何回应,超出这一时间范围对方只能挂掉电话。为了解决这一问题,嵌入式软件测试系统一般会采用静态时间分析和动态实时检测的方法对软件进行时间测试。动态实时检测指的是在程序执行过程中测试嵌入式软件的时间特性。静态时间分析则是指在不执行被测程序的情况下对程序结构进行深入分析,以此来预测程序的执行时间。
3.3嵌入式软件系统的反应性影响
在反应式系统运行进程中要对可能发生的事件做出相应的反应。反应式软件的描述工作是通过一对输入、输出序列的二元组负责完成的。输入事件的序列的不同组合极大地增加了程序的输入数据空间。输入数据输入反应式软件的时间不同会产生不同的结果,如何选取测试用例成了解决反应式软件的关键所在。
4 嵌入式软件测试的方法分析
4.1结构化测试法(Temd)
Temd结构化测试法具有以下基本特征:不同的人对于同样的问题所采用的测试方法有所不同,为了达成统一,在测试初期,团队总负责人就应该指出各部分测试工作的负责人员,并且要针对于各部分测试间的关系问题制定一个主计划,将通用元素很好的融入到各测试部分当中。通用元素是Temb法的基础,主要包括以下几种通用元素 :(1)技术。技术主要描述的是在测试阶段选用何种方法、如何执行各测试阶段的活动,为测试提供通用有效的方法。(2)生命周期。生命周期指的是软件开始计划到软件废弃这一时间周期,这段时间周期内需要执行的顺序和各进行阶段。(3) 基础设施。基础设施主要是指测试工具、测试环境、办公环境、测试人员等在测试环境中所涉及到的基础测试设施,以此来确保测试的执行可以按计划顺利的进行下去。(4)组织。组织主要指的是确定测试的人员安排、测试结构、所需的专业技能,此外还包括测试过程中的控制、管理问题等,通过有效的组织形式来加强团队之间、人员之间的交流合作。
4.2模块化测试法
在满足软件用户需求的前提条件下,将较大规模、结构复杂的嵌入式软件划分成一个个小的功能模块组合,进行小功能模块的设计开发,将嵌入式软件的开发进行分工合作。嵌入式软件系统模块化设计的主要设计思想如下所示:通过采用全局变量的形式实现功能模块之间的数据传递,软件系统各功能模块之间的逻辑结构是相互独立的。嵌入式软件的模块化设计极大的方便了嵌入式软件测试的纠错处理工作。嵌入式软件系统的模块化测试主要包括以下几部分内容:(1)系统平台测试。系统平台测试主要包括硬件电路、操作系统、底层驱动程序等部分的测试。(2)模块测试。系统在进行模块测试时,将较大规模、结构复杂的嵌入式软件划分成一个个小的功能模块,采用模块嵌套的结构形式进行软件测试,简化了模块间的数据链路,使模块内部的结构更为清晰明了。(3)集成测试。通过集成测试的特殊处理将复杂的链路数据传递方式转化成较为简单的单链路数据传递形式,在软件模块中采用较为简单的单链路数据传递形式使错误的定位更为简单,有助于检测各功能模块间数据传递和系统逻辑结构中存在的错误。(4)系统测试。嵌入式软件系统投入使用后,采用黑盒测试对嵌入式软件系统进行动态测试,以此来满足用户的功能需求。
5 嵌入式软件测试技术的应用
嵌入式软件测试工具静态分析研究 篇8
1.1 常规信息
由代码分析可以得到以下信息:
(1)静态分析符号表格:这里包括的项目有文件信息、类Class的信息、函数的信息、变量的信息与标签的信息。
(2)类/模板结构图:类似于VC++中ClassView标签页,左边显示工程中的类以及类中所有元素的列表,右边则显示相应激活类的源代码。
(3)类/函数关系图:包括显示类的继承图、函数的调用图与类-函数耦合图。
(4)层次流程图:当选中某一个类中的一个函数时,会显示这个函数内部的控制流程图 (CFG) 。
1.2 CFG图
CFG图是代码分析中很重要的概念,有助于帮助我们理解代码分析的任务,也是最常用的代码静态分析的手段。
入口语句:程序的第一个语句;条件转移语句或者无条件转移语句的转移目标语句;紧跟在条件转移语句后面的语句。
基本块(Basic Block,简称BB):是指程序中一顺序执行的语句序列,其中它只有一个入口语句或者一个出口语句。在执行时只能由入口语句进入,从出口语句退出。
连接操作:F (A) 代表程序A的控制流图模型,有两个控制流图F1与F2, Seq (F1, F2) 表示顺序连接操作,表示将F1的终点结点和F2的开始结点进行合并所形成的流图。设有另外的A’是另外的一个代码块,于是有F (A;A’) =F (A) ;F (A’) 。所以程序顺序连接操作后的流图等价于流图的顺序连接操作。
可以通过不断的顺序连接和嵌套构造新的流图。通常可以利用顺序、选择、迭代结构组成程序的结构化特性。可以利用一个机制确定流图的结构化。
2 代码审查
2.1 内存泄漏
计算机内的存储区域可以分为静态存储区域、栈与堆。这三块区域通常被放在一块连续的物理存储区域中。静态存储区域是指存储空间在程序开始前就可以分配,并且在程序运行过程期间都存在;当程序运行到一个特殊的执行点(左括号)时,存储单元可以在栈上进行创建。出了这个执行点(右括号),这个存储单元会被自动释放。这些栈分配运算内置在处理器的指令中;存储单元也可以在堆(也可以称为自由存储区)上创建,在运行时调用程序分配这块内存。可以在任何时刻任何地方决定需要多少内存,并且必须手工把这块内存释放掉,内存的生命周期由程序员决定而不受范围作用域的限制[29]。
根据遍历程序中语句Si的类型,不断的对指针映射集M进行添加、删除与修改操作。如果存在对于某个语句Si, M中存在<Ф,h (i) >这个映射,则在Si处发生内存泄漏问题。遍历程序中的语句时,可通过CFG图进行路径的遍历。这个算法只能处理发生内存泄漏的所有情况的一个子集,并不能包括实际代码中的所有情况。
2.2 空指针引用
存在属于集合S的集合X,如果对于在集合X中任意一个x,存在x∆y,那么y∆S是X的上界,记为X∆y;同理,如果对于在集合X中任意一个x,存在y∆x,那么y∆S是X的下界。
构造一个格的变换形式型如:Vars NULL, Vars表示程序中一系列声明的变量。在CFG图上的结点v给出一个约束变量〖v〗,用它来表示在程序的一个点上符号表中所有变量的状态。对于变量的声明的约束表示为:
对于所有的结点〖v〗=JOIN (v) 。指向分析发生在分析树基础上,分析结果返回可用pt函数表示。对于任意一个指针变量p,返回pt (p) 集表示p指向的目的。这个指向函数可以表示为pt (p) =〖p〗。通过分析,如果在程序的某个点上〖v〗 (p) =NN,那么*p是安全的[32]。
3 软件度量
3.1 质量模型
软件度量会程度不等的涉及到软件测量问题,包括成本和工作量估计、生成率度量和模型、数据收集、质量模型和度量、可靠性模型、性能评估和模型、结构和复杂性度量与能力成熟度评估等。软件度量能够定量化项目进度、项目状况、工作成效、产品规模以及产品质量的性能。现有一些成熟的软件度量工具,比如OOMetrics/Developer, Hindsight/SQA等。应用Logiscope也可以进行软件的度量,采用Boehm开发的模型结合McCall质量模型定义的方法设计质量模型。Logiscope的质量模型通常称为FCM (Factor Criteria Metric,因素准则度量) 。
3.2 度量元
度量元是静态测量结果,提供和被分析程序的复杂性相关的指示,理解程序的容易程度可读性、可维护性和可靠性等。度量元可应用到不同的领域,适用范围是可变的。
在Logiscope工具有一些已定义好的度量元用来衡量C++各种元素的复杂度,并且可以把这些度量元进行组合成为一个新的度量元以适应不同的需求。
cl_func_calle是个类范围的度量元,属于数据流领域,用来定义在类中的方法调用定义在类外的函数的个数。dc_callpe度量元表示对于一个分析的函数,调用了定义在这个函数所属类外的函数的个数。cl_data_class度量元用来表示类类型的属性个数。
参考文献
[1]王乾宇, 朱小冬, 王毅刚, 李想.基于TestQuest的嵌入式软件可靠性测试环境框架研究[J].中国测试, 2012, (01) :106-109.
[2]程晓菊, 李仁发.基于函数切片的嵌入式软件回归测试研究[J].计算机工程, 2012, (02) :54-56.
嵌入式软件中断系统的测试研究 篇9
1 静态测试技术
软件静态测试技术主要包括代码审查和静态分析。不同的芯片中断代码的设计也存在一定的差异,且中断处理代码存在的问题可能根据具体应用的不同而存在,因此静态分析工具一般不具备对中断代码存在问题的详细分析。因此对中断程序的静态测试技术主要还是采用代码审查方法进行。代码审查的要点主要包括以下几类。
1)中断资源冲突检查
中断资源使用冲突是中断使用中最有可能发生的问题。中断资源冲突检测主要对中断中使用的公共资源进行分析,包括全局变量、寄存器、缓存区域、标识等。检查的第一步是筛选出中断与主程序、中断与中断中均使用的公共资源。第二步是对这些资源的读写情况进行分析,每个资源在程序中的使用存在三种情况:只读、只写和读写,这三种情况在主程序、中断处理程序中都可能存在。通常,一个资源在中断和主程序或不同中断中均为只读,或者主程序只在中断未使能状态下对资源进行访问时,一般不存在冲突。而在主循环和中断中,或不同中断中进行了修改的资源则一般需要仔细分析冲突的可能。图1则描述了一个中断资源冲突案例。
图1 中中断程序用于接收数据,接收完成之后置接收标志。主程序用于处理接收到的数据,处理完毕后清接收标志。接收第一帧数据接收完成后,主程序开始处理数据,如果在处理过程中又接收一帧新数据,则该数据会丢失不被处理。对共用资源进行冲突检测通常还需结合软件时序进行分析。
2)中断现场备份和恢复
中断处理程序执行会打断主程序,且主程序中发生中断的位置一般不固定,为了保护被打断的主程序现场,需要在中断程序开始处对主程序现场进行备份,并在出口处进行恢复。对中断程序进行代码审查时需要检查需要备份的资源是否都进行了备份。这些资源通常包含程序状态寄存器、与主程序共用的寄存器以及一些全局变量。中断处理程序在入口处会对这些资源进行压栈操作,而在出口则进行出栈操作。代码审查需要检查需要被保护的资源是否已经全部被保护,各资源入栈和出栈的顺序是否匹配。
3)中断优先级
各种不同的芯片对中断优先级的处理是不一样的,例如8051 芯片只能设置高、低两种级别的中断;TI的F2812 芯片则各中断源的中断优先级固定的;而ARM芯片的中断优先级则是可编程的。且有些芯片的中断是可嵌套的,有些芯片则不能嵌套。对中断程序的代码审查应考虑到各芯片的具体特点,例如对不可嵌套的中断,则需考虑高优先级中断被延迟的问题,即如果在低优先级中断执行时,高优先级中断到来,则高优先级中断被延迟执行,该延时是否满足设计的要求。而对于可嵌套的中断,则需要考虑低优先级的中断被高优先级打断后,共用的中断资源是否存在冲突。对于中断优先级可编程的芯片,代码审查时还需检查中断优先级的设置是否正确,低优先级的中断被延迟或打断后,是否满足设计的要求。
以上是对中断程序进行代码审查时,需重点检查的要点。当然代码审查还应根据具体应该包括其他一些方面,例如对有些安全性要求比较高的软件则要求对未使用的中断应设置跳转到陷进程序,以防止软件异常进入未使用中断时,能够进行复位防止跑飞。还有一些芯片的编译器会对内存访问进行优化处理,则中断和主程序的共用资源则需声明为volatile类型,使芯片每次从内存取数,防止内存和寄存器数据不一致引发问题。在对中断程序进行代码审查时,如果注意到以上几点,能够有效地减少代码中存在的问题,提高软件的质量。
2 动态测试技术
对中断程序的动态测试主要包括测试中断程序的响应时间和处理时间。中断响应时间是从触发中断到中断程序开始执行之间的时间,中断处理时间则是从中断开始处到结束处的执行时间。对于响应时间和处理时间的测试,主要是测试时间是否满足软件需求的要求。
软件只存在一个中断,或存在多个中断,但不会同时发生时,一般响应时间和处理时间可直接测试;当软件存在多个可同时执行的中断时,则很难直接得到中断的响应时间和处理时间。存在以下几种情况:
1)两个中断同时到来,则程序会先执行高优先级,则低优先级中断被延迟执行,因此其响应时间则应包括高优先级中断的处理时间;
2)程序执行一个中断时,另一个中断触发,但该芯片不支持嵌套执行,则第二个中断响应时间包括第一个中断的部分执行时间;
3)程序执行低优先级中断时,发生高优先级中断,且该芯片支持中断嵌套,则低优先级的处理时间应包括高优先级中断的执行时间。
测试人员一般需要得到中断最长的响应时间和处理时间,上述情况在动态测试时不一定能够测量到,因此测试人员可先测量每个中断单独发生时的响应时间和处理时间,再根据芯片特点和程序中断执行时序计算理论上的最长响应时间和处理时间。
动态测试时,还需考虑中断处理时间对主循环处理时间的影响。例如,一个程序,存在两个中断,每个中断的处理时间均为200ms,程序主循环要求500毫秒内执行完毕,不发生中断时主循环的处理时间为200ms。当在一次主循环执行过程中,只发生一个中断时,程序主循环执行时间满足要求,但如果两个中断均发生,则执行时间为600ms,不满足处理要求。尽管该事件可能很少发生,但程序仍存在潜在问题。
3 结束语
本文从静态和动态两方面总结了嵌入式软件中断测试技术,这些技术在实际的嵌入式软件测试工作中的应用可有效减少中断程序的错误。嵌入式芯片类型多种多样,应用场景也各不相同,因此这些技术在实际测试工作中也需要灵活使用。
摘要:由中断引发的软件故障往往具有隐蔽性和随机性,因此嵌入式软件中断系统测试是嵌入式软件测试中的难点。该文对中断测试技术进行了研究,从静态和动态测试两方面总结了测试需关注的重点,通过使用文中的测试方法,发现中断系统中一些常见的问题。
嵌入式软件测试研究 篇10
1 嵌入式软件测试
软件测试是为捕捉代码中得错误而对代码进行分析或执行的过程,这一测试在很大程度上能保证软件的质量及可靠性,为产品设计定型提供一定的依据[2]。同其他软件相比,嵌入式软件有着很强的专用性,强调必须在需求指定的专用硬件平台上进行运作。并且,嵌入式软件在自身的开发及运行环境上呈现出独特的交叉分离特点:通常在宿主机上运动编辑和编译这些开发工具,而常见的调试命令及数据传输则是建立在主机与下载好软件的目标机相互联立的通讯上。具体交叉开放方式如图1所示。除此之外,考虑到主机和目标机在操作系统、处理器体系结构上存在的差异,就在很大程度上赋予嵌入式软件开发过程以更为严密的复杂性。这里我们所涉及的宿主机主要是指微机、工作站此类的通用性计算机,而目标机的关键性作用便是对于嵌入式系统通讯的宿主机进行严格意义上的区分。
2 嵌入式软件测试关键技术
2.1 宿主机关键技术
对宿主机的测试通常是通过代码逻辑测试实现的,宿主机测试的关键技术可分为静态测试技术和动态测试技术。
1)静态测试技术
现阶段,最常用的软件查错方式仍是人工审议与走查,但基于软件规模的日益增大,往往需要大量的工程师人才资源,且源码在目录或机器上较为分散,难以进行软件的审议与走查[3]。针对这一问题,需利用必要手段获取整个软件系统框图,实现相关量的自动化链接,在很大程度上为软件的审议与走查提供较大便利。而利用静态测试分析技术能绘制程序逻辑图及控制流程、获取完整的软件系统逻辑框图、进行程序路径分析、可互相转换生成的逻辑图、流程图、框图等。以便设计出更为高效的测试用例来提升软件质量及测试覆盖率。
2)动态测试技术
动态测试技术的对象和重点是软件代码的动态执行能力,全面分析代码的覆盖率、内存分配使用信息。其中被测软件的代码在测试执行时出现的执行情况便是代码的覆盖率,对代码覆盖率的监控能提升软件测试的有效性,对测试完成力度进行全面掌控,并能快速识别被遗漏的测试数据,为测试人员科学掌握并控制测试进程提供数据参考。代码覆盖率的计算指标包括语句覆盖、分支/判定覆盖及MC/DC[4]。而内存分配信息则强调高度关注其中的每一个函数、内存分配点内存分配及释放情况,并及时监视动态内存分配中出现的错误信息。利用动态内存分配信息,能快速准确掌握内存遗漏问题,为内存分配优化提供策略依据。
2.2 仿真机关键技术
作为宿主机与目标机测试的中间性缓解,仿真机能在很大程度上超真实地模拟目标机的功能及性能,从而获取较目标机更为真实的物理性能测试结果。测试数据获取技术及仿真技术是仿真机测试的关键技术。
1)测试数据获取技术
如何利用仿真机获取测试过程中产生的数据是当前嵌入式软件测试的瓶颈之一,大多嵌入式软件测试功能都需利用源代码进行测试,这就需要采取积极有效的方式确保软件质量及性能,以获取准确的测试数据。现阶段,常用的测试数据获取方式包括实际物理通道取数、开发工具的虚拟IO指数以及内存取数。其中,实际物理通道取数是目标机与主机之间物理的具体通信方式,如串口、USB、并口等,利用实际物理通道取数能在很大程度上直接经由数据通信软件实现与主机之间的通讯,并在此基础上进行必要的测试数据上载,开发工具虚拟IO指数是一种更为高级的开发工具,为测试带来极大便利,如Tornado及TI CCS。假使目标系统没有上述两种获取方法,那么还能够通过内存读取数据的方式直接获取内存取数。换句话说,是在充分确保足够缓存的基础上,加之修改测试工具的库,在缓存中写入输出数据,测试进行或结束后,对缓存中记录的数据进行读取,并在此基础上以文件的形式保存到主机上。值得关注的是,这样的方式通常必须在测试前充分确保缓存的大小。但是从适用性上来说,这种方式有着较大的优越性,几乎可以说这种功能充分体现在所有的开发调试工具上。
2)仿真技术
嵌入式软件仿真是一种建立在局域网基础上的数据集中性管理、处理系统。其结构包括实时仿真机、I/O系统、软件测评控制模板、测试结果分析工具、总线仿真及总线监控模板、实时调度模板[5]。仿真测评控制技术及仿真技术是仿真测试常见的关键性技术。利用必要的仿真测试,能高度真实地模拟现场总线系统上的相关数据,除此之外,还能按照不同的测试对象,逐个分析研究各种电信号激励源仿真,但总线除外,从而实时检测并分析现场总线的运行状态,实现人机交互界面,控制实时在线测评平台各设备,完成软件测评等。
2.3 目标机关键技术
高度评估系统综合性能是当前目标机的测试重点,其具体功能是用来评估真实的物理目标机,最大限度对软件交互、可靠性及稳定性进行专门性获取。从关键技术上来说,故障注入、内存分析、性能分析为目标机测试常见的三种关键技术。其中故障注入技术能便于进行系统边界测试、容错性测试、鲁棒性测试、强度性测试等。内存分析技术主要用来对动态内存分配中存在的缺陷进行处理,当前主要有硬件和软件这两种内存分析手段。从硬件方面来说,在价格上基于硬件的内存分析工具较为昂贵,并且使用范围有限,仅仅能运作在工具指定的环境之中。而从软件方面来说,基于软件的内存分析方式会影响到代码性能,给实施操作带来干扰。性能分析技术能为开发人选择代码优化范围提供必要的参考数据,能准确分析并提供执行时间的消耗方式、消耗时间以及每个例程所需要使用的具体时间等,便于开发人正式决定通过何种方式对软件进行优化,能获得更高时间性能。此外,性能分析工具还能联合调试工具引导开发人员及时准确查看那些亟待优化的特定函数,能指导开发人员对系统调用中错误及程序结构上的缺陷进行必要的探讨和分析。
除此之外,还能在性能测试中,最大限度利用代码覆盖分析工具追踪那些被执行过的代码。测试人员总结测试结果数据,能准确发现被执行过的代码及被遗漏的代码。对嵌入式软件来说,代码覆盖分析工具有着对代码执行侵入的可能,会在一定程度上对代码运行过程产生影响。
3 结束语
当前嵌入式系统应用领域越来越广泛,其软件规模和复杂性日益提升,这就促使各个领域进一步提升对嵌入式系统的质量、可靠性、有效性的要求,从客观上来说,正是这些软件的质量决定了整个产品的质量。本文通过对嵌入式计算机软件测试关键技术的深入分析和研究,以期能为嵌入式软件测试研究和实践提供一定参考和借鉴作用。
参考文献
[1]高赛军.嵌入式武控计算机软件测试关键技术研究[D].上海:华东理工大学,2013.
[2]施小敏.嵌入式IO控制器软件测试关键技术研究[D].上海:上海交通大学,2012.
[3]平婕,秦军,康建华,安元伟.嵌入式软件测试关键技术研究[J].有线电视技术,2010(8):45-47,50.
[4]周凌云.嵌入式武控计算机软件测试关键技术的研究分析[J].科技展望,2015(4):136.
嵌入式软件的PC化趋势 篇11
关键词:嵌入式软件;虚拟化;移动互联网;标准化;Linux
随着移动互联网应用渐渐走热,Intel嵌入式X86芯片重返市场,传统的嵌入式系统平台、软件开发方式和操作系统都在发生着变化。一方面,互联网需要更多已经在PC使用的应用软件能够在各种移动终端上使用,另一方面,计算密集和数据密集的趋势要求嵌入式系统具有越来越强的处理能力,PC化则是解决这些问题的途径之一。
嵌入式系统和PC的融合
嵌入式系统和PC一直有着难解之缘,由ISA总线标准发展起来的PCI04,是嵌入式PC至今依然大量使用的工业标准。DOS/Borland C是深受喜爱的嵌入式PC操作系统和开发工具之一。20世纪90年代以后,在摩尔定律推动下,Intel和微软联手推动了一轮又一轮的PC升级换代之路,也使得嵌入式系统和PC越走越远,以单片机(MCU)为代表的嵌入式处理器技术成熟,RTOS(嵌入式操作系统,如uC/OS—II,VxWork)和IDE(Keil、IAREW)的嵌入式软件开发模式已经形成,获得了广泛的认可和成功。
2000年以后,嵌入式Linux和 PC SoC嵌入式平台给嵌入式系统带来了革命性的变革,比较起传统的MCU平台,一个典型ARM2410单板、嵌入式Linux2.4、Qf图形界面,它包含设备驱动、网络、文件、图形和丰富应用,是一个完整的OS和交叉开发环境,非常接近人们熟悉的PC环境,可以适合多数消费电子、通讯、工业控制嵌入式系统应用要求。但是面对高性能计算、互联网以及多媒体应用的移动互联网设备、数字多媒体中心、网络存储和超便携上网笔记本等应用时,基于交叉编译的ARM/Linux/WinCE系统,比起X86/Linux/WindowsXP系统,开发时间和难度要大得多,在设备端重新移植成熟应用和测试过程耗费了大量的时间和人力;在服务器端,由于待测试的各种终端的种类、OS、浏览器不一,所以许多网络应用的厂家只能支持有限数量的终端和,浏览器版本,所以,PC Windows/IE就成为多数网络应用支持的对象。
ARM、Adobe和Canonical合作将把Ubuntu和FlashPlayerlO移植到ARM上,这无疑是嵌入式软件和PC融合的重要信号。Flash Player是目前网络上最为流行的浏览和播放软件,也运行在X86/Windows/Linux平台,它对于ARM体系结构的支持将大大提高ARM芯片在互联网终端的地位。Ubuntu是国际上成功的Linux开源桌面操作系统,最近发表的8.10版本,加强了对3G移动网络的支持,计划支持超低功耗的ARMv7(CortexA8/A9)处理器,将扩展Ubuntu操作系统在移动互联网终端上的地位,同时也为嵌入式系统开发提供了一种标准的PC环境。其实Ubuntu因为尺寸小巧,已是嵌入式X86/PC厂家主要支持的嵌入式Linux平台之一。无论是Intel嵌入式X86,还是ARM的SoC技术,都在引领行业向着满足高性能计算要求的软硬件PC化方向发展。
嵌入式虚拟化软件
PC化的嵌入式软件具有通用、开放的特点,但是要完全满足安全性、实时性和可继承性的需求还有距离,虚拟化软件正好是一个补充。虚拟化在服务器上已经取得了成功,正在进军桌面和嵌入式系统。著名的vmware最近宣布将推出智能手机的虚拟化软件版本。虚拟化软件可以在多核、单核高性能处理器上运行。一是解决安全性问题,比如构建一个在安全操作系统和开放操作系统环境下的手机,以保证移动网上银行的安全支付。二是解决软件再用问题,比如大量已经验证了的通讯代码和专用的RTOS,通过虚拟化和通用的操作系统(GOS)结合形成全新的高密度计算平台。三是解决实时性问题:专用的实时RTOS和GOS—Linux,Windows并存。四是解决多核编程问题,介于目前多核软件普遍滞后硬件芯片的情况,虚拟化可以帮助用户在不改变编程模式和设计思想的前提下,充分发挥多核芯片的性能。即在不同的核上运行不同的操作系统:运行RTOS的核完成通讯设备的网络数据流的处理和分析,运行Linux的核负责系统数据库管理和人机界面。虚拟化技术如果使用得当,它可以在嵌入式系统和PC化软件之间架起一座桥梁。嵌入式系统对于虚拟化技术有其特殊要求,比如非X86体系结构、尺寸和实时性等,目前开源项目Xen(www.xen.org)在这个方面还有差距,商业的产品有VirtualLogix的VLX,它提供支持通讯平台,移动终端和通用嵌入式系统的各个产品线方案,产品线丰富而成熟;OK-Labs是基于开源OKL4微内核的虚拟化软件,重点支持手机的虚拟化方案,风河公司近日也宣布将推出作为整个多核方案一个部分的虚拟化软件。
嵌入式软件测试研究 篇12
在目前全球石油危机、大气污染和人们环保与节能意识增加的情况下, 电动自行车具有摩托车与自行车的综合优势:轻便、无污染、低噪音且价格较为低廉, 成为私人交通工具的重要组成部分。
开关磁阻电机的结构简单坚固, 调速范围宽, 调速性能优异, 在整个调速范围内都具有较高效率, 系统可靠性高, 而成为电动自行车中极具潜力的驱动机种。
目前开关磁阻电机控制系统研究方向主要在以下四个方面[1]: (1) SR电机的设计理论与建模问题; (2) 功率变换电路的设计; (3) 无位置传感器研究; (4) 转矩脉动及噪声控制的理论研究。
然而对控制软件的可靠性的研究很少, 而正是处于控制系统核心地位的控制软件质量的优劣将直接影响到电动机运行的性能。当前控制软件反应出以下几点缺陷[2]: (1) 对位置信号的处理和角度解算已不能满足电机高速时的实时控制; (2) 电机运行时由于触发源、工作模式等切换所引起的输出控制脉冲之间的时序冲突开关磁阻电机调速系统称为嵌入式系统, 控制软件称为嵌入式软件。随着科技的进步嵌入式系统的软硬件均已允许大型复杂的控制软件得以运行使用。但是相比于飞速发展的嵌入式软、硬件体系, 嵌入式软件的测试技术大大地落后了, 所幸的是嵌入式软件的测试技术在近十年内得到了业界人士的关注。中外学者在以下几方面进行了广泛深入的研究。 (1) 国外的嵌入式软件测试工具[3]; (2) 嵌入式软件仿真测试环境的研究[4]; (3) 嵌入式软件实时性测试的研究[5]; (4) 嵌入式软件的测试模型[6]; (5) 程序插桩技术的研究[7]; (6) 测试用例自动生成的研究[8]。
一方面对电机控制类的嵌入式软件没有专门的研究;另一方面电动自行车的广阔市场需求对成本和可靠性也提出了更高的要求。正是在此背景下提出了本课题。
一、电动自行车SRD系统结构设计和建模分析
(一) SRD系统结构
SRD (开关磁阻电机调速系统) 主要由SR电机、功率变换器、控制器、位置传感器四大部分组成。
(二) SRM工作原理
SRM (开关磁阻电机) 的结构和工作原理与传统的交直流电动机有着根本区别, SRM的转矩是磁阻性质, 其运行原理遵循“磁阻最小原理”—磁通总是要沿磁阻最小的路径闭合, 因磁场扭曲而产生切向磁拉力, 产生的磁拉力形成磁阻性质的电磁转矩[9]。当定子磁极轴线与转子磁极轴线不重合时, 相绕组通电, 电动机内建立起以定子轴线为中心的径向磁场, 转子将受到气隙中弯曲磁力线的切向磁拉力作用而产生转矩, 使转子转动, 直到转子磁极轴线与定子磁极轴线重合。顺序给定子相绕组通电, 转子将沿顺时针或逆时针方向转动。
(三) SRM控制模式
SR电机有三种控制模式。即角度位置控制方案 (简称APC) 、电流斩波控制方案 (简称CCC) 、脉宽调制控制方案 (简称PWM) 三种方案。在低速时为了限制过高的相电流采用电流斩波控制, 高速时采用角度位置控制, 而在整个调速范围内都采用脉宽控制。为了得到较好的控制性能, 通常要将上述两种或三种控制方法结合起来。
(四) 电动自行车SRD建模分析
开关磁阻电机的模型可分为三类:线性模型、准线性模型和非线性模型。要准确计算SR电机性能, 对稳态运行特性进行仿真, 必须采用非线性方法。
在JMAG-Studio中建立不同定转子结构的电机模型, 通过有限元分析的方法计算一组不同转子位置下的磁化曲线簇, 在路计算仿真软件的配合下得到电动自行车驱动电机额定转速下的效率, 低速下起动能力及过载力等相关性能的对比。对比三种方案24/32、36/48、36/24, 结合额定工作点效率、过载能力两点, 结果36/24综合性能最具有优势。最终确定本文所研究的SR电机属于轮毂式驱动电机, 为三相 (转子齿数小于定子齿数) 36/24极外转子式开关磁阻电机, 即定子有36个凸极, 转子有24个凸极。轮毂式电机设计合理、结构紧凑、体积小、重量轻, 非常适合用于电动自行车驱动电机。
由JMAG软件对SR电机进行有限元场计算的仿真, 而得到的磁链函数, 进行反演得到i (θ, ψ) 。依据反演获得的i (θ, ψ) 在MATLAB/SIMULINK软件中搭建SR电机的非线性模型[10,11]。用此模型进行电机性能的仿真, 而得到控制策略如下:
1、三相六拍起动, 即以CA-A-AB-B-BC-C顺序导通, A、B、C三相每相导通7.5°, 间隔5°导通, 这样得到三相合成转矩是单方向的。
2、导通和关断角的优化, 近似把开通角和关断角区间分为0-150r/min, 150-300r/min, 300-510r/min, 510r/min以上, 定为在转速为110r/min时进行查询模式和比较输出模式的切换。
3、整车运行控制策, 整机运行时, 电动时采用非能量回馈 (NERVC) 斩单管, 制动时采用能量回馈 (ERVC) 斩双管。
4、再生制动控制, 整个系统大致的制动情况为:转速高制动强度要求不高时, 采用纯电制动;转速高制动强度要求高时, 采用电制动加摩擦制动;转速低时采用摩擦制动。
二、电动自行车控制系统的硬件设计
SRM数字控制系统主要包括SR电机本体、位置信号检测电路、功率主电路、驱动电路、电流斩波电路、过流保护电路以及dsPIC3011和普通逻辑电路为核心的数字控制系统等部分。
(一) 功率变换器与驱动电路
考虑到实际电动自行车驱动系统采用的小功率SR电机、低压蓄电池直流供电电源, 故采用不对称半桥, 本类型变换器最大的优越性是工作可靠性高, 不存在全桥变换器可能出现的电源“直通”故障, 同时该变换器各相工作独立, 控制灵活方便, 所选驱动开关管型号为ST公司的STP75NF75。考虑到电动自行车控制器的制造成本, 采用线性电源加自举驱动的方式, 而驱动半桥逆变器中同臂的两个MOSFET而采用专门为驱动高压、高速设计的IR2101。
(二) 位置信号检测及预处理电路
位置检测采用光电位置传感器, 它由装在轴上的转盘和装在定子上的三个光电传感器件组成。三个光电传感器通过外围电路输出三路相位分别相差5°的基本信号, 由两级施密特反相器CD40106对位置传感器输出信号进行脉冲整形、去毛刺等预处理, 形成理想的方波信号。
(三) 电流斩波电路和过流保护电路
当SRM处于起动状态或者低速运行时, 由于反电势很小, 相电流峰值很大, 故常采用电流斩波控制。斩波电路如图所示。电流斩波信号由电位器调节所得, 作为有效的斩波限。同时, 为了保证系统的安全运行, 采用更高的一个门限电流值作为系统的过流保护阀值。相电流经采样和预处理后通过比较器与设定好的过流保护值进行比较, 正常工作时输出信号为低电平, 一旦过流对应该相的过流信号OC输出高电平, 该信号送入DSC进行处理。
(四) 全数字控制系统
本系统选用美国Microchip公司的dsPIC系列单片机3011为电机的主控芯片, 它具有低功耗、高性能的处理能力, 集成了高速捕捉/比较、一个10位A/D转换器和多路PWM脉冲发生器, 供电电压降为3.3V, 减小了控制器功耗。目前SRM控制电路多采用MCU、DSP加GAL或者CPLD作为控制核心, 而本系统考虑到功耗 (GAL的功耗较大) 和降低成本而采用四片普通逻辑电路即两片SN54ALS27AJ, 一片SN54ALS04BJ和一片SN54ALS08J代替GAL或者CPLD作为单片机接口电路的扩展。
三、实验结果与分析
对整个控制系统进行实验分析, 电动模式时角度位置控制 (APC) 、斩波控制 (CCC) 、脉宽控制 (PWM) 三种方式有效, 低速重载、额定状态下软件运行稳定, 模式切换过渡平稳。
实验数据获得:在频率为185.2Hz的位置信号输入下, 系统仍能正常解算位置输出, 此频率对应的转速约为11111.1r/min, 因此可看出在中断程序中对角度解算的处理是有效的。30F3011的时钟频率是8M, 而高速DSP芯片的时钟频率可达25M, 所以如采用本文的角度解算方法, 转速将达30000r/min以上。
最终得到一良好的机械外特性, 证明通过修改软件缺陷后, 整个控制系统的可靠性确有极大的提高。
制动时进行了电能回馈测试实验, 由表3.1可见能量回收效果明显, 达到了再生制动的控制目标。
摘要:开关磁阻电机因其优良的性能而成为电动自行车中极具潜力的驱动机种。本文的研究首先从仿真分析开关磁阻电机的结构设计和性能优化入手, 设计开关磁阻电机的软、硬件体系, 通过软件测试优化控制软件, 使整个开关磁阻电机控制系统的可靠性得到极大提高。
关键词:开关磁阻电机,软件缺陷,软件可靠性,嵌入式软件测试
参考文献
[1]詹琼华.开关磁阻电动机[M].武汉, 华中理工大学出版社, 1992.
[2]周强.高速开关磁阻电机的关键技术研究与实践[D].南京:南京航空航天大学, 2008.
[3]朱红军.一种嵌入式软件覆盖和分析测试方法[J].航空计算技术, 2009, 39 (5) :65-67.
[4]Han A.H, Young-Si Hwang, Young-Ho An, So-Jin Lee, Ki-Seok Chung, Virtual AR M Platform for embedded system de-velopers[C].Audio, Language and Image Processing, 2008.ICALIP2008.International Conference on, 2008, (7) :586 592.
[5]Macariu G, Cretu V, Timed Automata Model for Compo-nent-Based R eal-Time Systems[C].Engineering of Computer BasedSystems (ECBS) , 2010 17th IEEE International Conference andWorkshops on, 2010, (3) :121-130.
[6]Feliachi A., Le Guen H, Generating Transition Probabilities for2010 Third International Conference on[C].2010, (4) :99-102.
[7]R otithor H.G, Embedded Instrumentation for Evaluating TaskSharing Performance in a Distributed Computing System[J].Instru-mentation and Measurement, IEEE Transactions on, 1992, 41 (4) :316-321.
[8]Nebut C, Fleurey, F, Le Traon, Y, Jezequel, J.-M., Automatictest generation:a use case driven approach[J.], Software Engineering, IEEE Transactions on, 2006, 32 (3) :140-155.
[9]吴建华.开关磁阻电机设计与应用 (第1版) [M].北京:机械工业出版社, 2000.
[10]刘迪吉等, 开关磁阻调速电动机[M].北京:机械工业出版社, 1994:83~88.