嵌入式操作系统产品在学习的过程中,了解产品特性能够有助于学习产品功能,并且能够从用户角度发掘产品需要满足的重要特征,从而提炼产品特点,并且化作产品亮点,转化为产品未来占领市场、提升竞争力的关键切入点。
通过对嵌入式操作系统测试工作了解,可学习到客户对产品功能要求,对产品的功能、性能标准有概要性意识,在后续工作中有助于理解产品特征。
> 嵌入式操作系统如何测试
操作系统由多个功能相对独立、且离散的模块组成,自身不能独立运行,只有当应用软件调用操作系统时才能构成完整的运行体系,相关模块的相互配合,对应用软件实施有效地控制和管理。同时,操作系统各功能模块的运行时间与应用环境密切相关。不同的操作系统在体系结构、设计思想上都有很大差异。另外,随着 CPU 运算速度的提高,人们对操作系统时间特性的关注己逐渐降低,而更关心操作系统的稳定性、安全性、可扩充性、开放性、成熟度和广泛的第三方支持能力等方面。要想设计出一套能全面反映出操作系统性能的测试用例是非常困难的,因此,尽可能以实际应用为参考背景来设计测试用例,综合评价和考察一个操作系统能否满足使用要求和能否得到持久稳定的技术支持就显更为重要和实际。
嵌入式实时操作系统(RTOS)是嵌入式系统的基础运行平台,是嵌入式系统稳定、可靠工作的基础,其功能和性能的好坏将直接影响嵌入式系统的功能和性能
本文通过对嵌入式实时操作系统进行功能测试、性能测试、比对测试和适应性测试,获得比较准确的定量和定性数据,为用户选择合适的嵌入式实时操作系统提供参考依据
目录
嵌入式操作系统简介
测试项目介绍
测试环境
测试工具
测试方法
嵌入式操作系统简介
嵌入式系统的核心计算系统可以抽象出一个典型的组成模型:硬件层、中间层、软件层和功能层
1.1 硬件层
硬件层中包含嵌入式微处理器、存储器(如 SDRAM、ROM、 Flash等)、通用设备接口和I/O接口(如A/D、D/A、I/O等)。在一片嵌入式处理器基础上添加电源电路、时钟电路和存储器电路,就构成了一个嵌入式核心控制模块。其中,操作系统和应用程序都可以固化在ROM中。
(1)嵌入式微处理器
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU的不同在于嵌入式微处理器大多工作在为特定用户群所专门设计的系统中,它将通用CPU许多由板卡完成的任务集成在芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。
嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,目前全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS( Microprocessor without Interlocked Piped Stages,无互锁流水级的微处理器)/Power PC、X86、SH等。
(2)存储器
嵌入式系统需要存储器来存放可执行代码和数据。嵌入式系统的存储器包含Cache、内存和外存。
① Cache:Cache是一种容量小、速度快的存储器阵列,它位于内存和嵌入式微处理器内核之间,存放的是近一段时间微处理器使用多的程序代码和数据。在嵌入式系统中,Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache和混合Cache, Cache的大小依不同处理器而定。
②内存:位于微处理器的内部,用来存放系统和用户的程序及数据。片内存储器容量小、速度快。
③外存:外存用来存放大数据量的程序代码或信息,它的容量大,但读取速度与内存相比慢很多,用来长期保存用户的信息。
嵌入式系统中常用的外存有硬盘、NAND Flash、CF卡、MMC、SD卡等。
(3)通用设备接口和I/O接口
嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂的802.11无线设备。
目前,嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)、IrDA(红外线接口)等
1.2 中间层
硬件层与软件层之间为中间层,也称为硬件抽象层( Hardware Abstract Layer,HAL)或板级支持包( Board support Package,BSP),它将系统上层软件与底层硬件分离开来,使系统的底层驱动程序与硬件无关,上层软件开发人员无须关心底层硬件的具体情况,根据BSP层提供的接口即可进行开发。该层一般包含相关底层硬件的初始化、数据的输入/输出操作和硬件设备的配置功能。
实际上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部分与硬件联系紧密的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统的硬件初始化以及BSP功能,设计硬件相关的设备驱动。
1.3 软件层
软件层由嵌入式操作系统( Embedded Operation System,EOS)、文件系统、图形用户接口( Graphic User Interface,GUI)、网络系统及通用组件模块组成。EOS是嵌入式应用软件的基础和开发平台。以下先介绍前三种。
(1)嵌入式操作系统
不同功能的嵌入式系统的复杂程度有很大不同。简单的嵌入式系统仅仅具有单一的功能,存储器中的程序就是为了这一功能设计的,其系统处理核心也是单一任务处理器。复杂的嵌入式系统不仅功能强大,往往还配有嵌入式操作系统,如功能强大的智能手机等,几乎具有与微型计算机一样的功能。
嵌入式操作系统( Embedded OperaTIon System,EOS)是一种用途广泛的系统软件,过去它主要应用于工业控制和国防系统领域。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。目前,已推出一些应用比较成功的EOS产品系列。随着 Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化、应用的专用性等方面具有较为突出的特点。
(2)文件系统
嵌入式文件系统比较简单,主要提供文件存储、检索、更新等功能,一般不提供保护、加密等安全机制。它以系统调用和命令方式提供文件的各种操作,主要有设置、修改对文件和目录的存取权限,提供建立、修改、改变和删除目录等服务,提供创建、打开、读写、关闭和撤销文件等服务。
(3)图形用户接口
图形用户接口(GUI)的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用,人们从此不再需要死记硬背大量的命令,取而代之的是通过窗口、菜单、按键等方式来方便地进行操作。而嵌入式GUI具有下面几个方面的基本要求:轻型、占用资源少、高性能、高可靠性、便于移植、可配置等特点。
1.4 功能层
功能层也称为应用软件层,应用软件是由基于实时系统开发的应用程序组成,运行在嵌入式操作系统之上,一般情况下与操作系统是分开的。应用软件用来实现对被控制对象的控制功能。功能层是要面对被控对象和用户,为方便用户操作,往往需要提供一个友好的人机界面。
2. 测试项目
2.1 功能性测试
嵌入式实时操作系统的测试,所提供的功能是否能够满足用户使用的要求。对于嵌入式实时操作系统,通常应具备以下功能:
• 进程管理功能;
• 抢占式调度功能;
• 中断管理功能;
• 设备管理功能;
• 文件管理功能;
• 网络管理功能;
• 图形显示功能;
• 裁剪配置功能;
• 调试功能;
• 错误处理功能
2.2 性能测试
性能测试主要是为了获得嵌入式实时操作系统的成熟度、稳定性、可靠性、安全性、开放性和实时性等关键特性指标。
成熟度 一个操作系统从研发成功到能稳定、可靠运行的过程是需要较长时间的,只有经过广泛使用才能逐步走向成熟,成熟度是综合评价操作系统稳定性和可靠性的重要指标。
稳定性 稳定性是反映嵌入式实时操作系统在长时间运行过程中不会出现异常情况,保证应用系统能够稳定、可靠地工作的指标。
可靠性 可靠性是反映嵌入式实时操作系统能够保持正常运行而不受外界影响的能力,通常以系统连续并且可靠运行时间来度量。
安全性 安全性是反映嵌入式实时操作系统能够抵御外部攻击和应用软件自身缺陷的能力。
开放性 开放性是反映嵌入式实时操作系统符合国际和国家标准水平以及能否得到众多第三方(主要包括:驱动程序、开发工具、其它功能软件等)广泛支持的基本条件。
实时性 实时性是反映嵌入式实时操作系统快速响应外部事件的能力。通常包括:系统调用时间、任务切换时间、中断响应和延迟时间、信号量混洗时间、数据包吞吐率等。
1.3 典型应用测试
在领域内选择几种有代表性的系统或设备,在基本不改变应用软件体系结构、功能、性能的条件下进行应用测试,验证嵌入式实时操作系统能否满足实际应用系统对嵌入式实时操作系统的功能和性能要求。
1.4 接口
操作系统的接口是操作系统提供给应用程序使用的 API 函数,通常有两种形式:一种是专用接口,特点是能直接反映该操作系统特色,执行效率高;另外一种是基于 POSIX 标准的接口,便于应用软件移植,执行效率会有些下降,但影响甚微。近几年,由于VxWorks 的大量应用,在一些实时性比较高的领域以成为事实上的标准,为了方便应用程序移植,国内嵌入式操作系统研发单位都增加了兼容 VxWorks 的接口。从原理上讲,这三种接口使用任何一种都可以,而且在性能上影响极小,但从现状出发,考虑应用需求,用基于 VxWorks 接口进行测试更合适些。
3. 测试环境
实时系统通常采用基于宿主机/目标机的开发方式,在宿主机上安装有集成开发环境,用它来完成操作系统的配置、设备驱动程序、应用编程接口(系统调用)以及应用程序的开发、软件下载调试、测试与集成等任务;目标机则可以是实际系统,也可以是模拟环境,是嵌入式实时操作系统和应用软件实际运行的平台。
测试环境应选择应用领域内普遍采用的硬件环境,并配以必要的测试用例生成环境和测试仪器设备,开发机应采用可以运行与嵌入式实时操作系统配套的集成开发环境的 PC 机、工作站等通用计算机;目标机应选择领域内应用较普遍的单板机、工控机等;外部事件生成环境主要用于模拟产生外部事件,驱动目标机的软件运行,外部事件生成环境可采用满足要求的通用计算机(如配有 8255 并行接口、8251串行接口、以太网接口等);测试仪器可根据测试要求配备,通常可采用多通道逻辑分析仪、数字示波器、或具有专用录取功能的通用 PC 机等。
4 测试工具 (Linux测试工具学习)
Stress:用于给CPU、内存、I/O加压的系统测试工具,使系统在高负载下运行。
Lmbench:Lmbench是一个系统综合性能测试套件,它由Bandwidth基准测试、Latency基准测试、Miscellanious基准测试三类基准测试去衡量操作系统的基本性能。目前,很多Linux操作系统厂商用它来评估自己的产品和与其它Linux产品,进行性能对比分析。
bonnie++:Bonnie++是一个磁盘I/O基准测试套件,主要用于磁盘和文件系统的性能测试。它可以测试文件的创建、读、写和删除等操作,既可以测试小文件,也可以测试大的单个文件。很多硬件和软件厂商用它测试其产品的I/O性能,是一个被广泛应用的工具。
Pingpong:Pingpong是一个Linux线程性能的测试工具,它通过在两个MPI节点之间pingpong消息的进行测试。linux操作系统厂商通常用它来评估系统的线程性能。
Netperf:Netperf是一个网络性能的测量工具,主要针对基于TCP或UDP的传输。根据应用的不同,Netperf可以进行不同模式的网络性能测试。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据。
5. 测试方法
5.1 功能测试
功能测试采用静态分析和动态测试相结合的方式,分析所测试的嵌入式实时操作系统所具备的功能是否满足领域应用的需要。分析的内容包括以下几个方面:
源代码是否开放;
支持的设备驱动程序和其它软件是否丰富;
是否有配套的开发工具;
配置、调试方便程度;
错误处理能力;
是否有第三方软件支持;
是否具有持久稳定的技术服务能力
5.2 性能测试
5.2.1 稳定性测试
稳定性可选择压力测试方式。压力测试是一种破坏性的测试,即系统在非正常的、超负荷的条件下的运行情况,用来评估在超越最大负载的情况下系统将如何运行,是系统在正常的情况下对某种负载强度的承受能力的考验。
5.2.2 可靠性测试
可靠性通常采用长时间连续运行相对复杂的测试用例进行测试,以考察操作系统连续工作的能力。
5.2.3 安全性测试
通过模拟外部攻击和内部缺陷进行测试。外部攻击可选择安全操作系统测试的一些用例,内部缺陷模拟则可以人为设计一些有缺陷的程序,考察嵌入式实时操作系统安全防护能力。
5.2.4 实时性测试
实时性是嵌入式实时操作系统最重要的指标之一,也是用户选择嵌入式实时操作系统的主要参考依据。嵌入式实时操作系统的时间性能指标包括各种系统调用时间、上下文切换时间、任务切换时间、任务抢占时间、中断延迟时间、中断响应时间、系统最长封中时间、信号量混洗时间、系统异常恢复时间等,这些时间特性基本上均与应用系统的复杂程度密切相关,而且大多互相关联,非常复杂。从应用角度出发,最关心的时间指标有各种系统调用时间、任务切换时间、中断响应时间等几种。
系统调用时间
测试内容:嵌入式实时操作系统的各种系统调用,得到各种系统调用运行(包括调用成功和调用失败)所花费的时间。
测试方法:测试方法是在调用系统调用之前读出定时器或 CPU 时戳的当前值(设为 t1),在该系统调用结束后再读出定时器或时戳的当前值(t2)。
任务切换时间
测试内容:定义为系统在两个独立的、处于就绪状态并具有不同优先级的任务之间切换所需要的时间。它包括三个部分,即保存当前任务上下文的时间、调度程序选中新任务的时间和恢复新任务上下文的时间。切换所需的时间主要取决于保存任务上下文所用的数据结构以及操作系统采用的调度算法的效率。
测试方法:测试方法是采用两个测试间接地测出任务切换延迟时间。第一个测试称为“交替悬置/恢复任务”时间测试。测得的一个时间周期里包括两次上
下文切换,再加上任务悬置和恢复各一次。第二个测试称为“悬置/恢复任务”时间测试。测得的一个时间周期就不包括上下文切换时间,而只是任务的悬置和恢复时间。用测得的第一个值减去第二个值再减去时间性能测试函数的消耗时间,再除以 2,就得到了任务切换时间。
中断响应时间
测试内容:测试从中断产生到中断处理任务开始执行第一条指令所持续的时间间隔.它通常由四部分组成,即硬件延迟部分(通常可以忽略不计)、系统封中时间、中断预处理时间、以及任务调度时间(仅指单任务、单中断时)。
测试方法:由外部事件模拟器产生等间隔的中断信号,并通过并行接口与目标机相连,由目标机的并行口产生等间隔的中断请求信号。在目标机上运行一个由并行口事件驱动的任务,接到并行口事件后马上向并行接口输出一个信号,然后重新等待并行口事件的产生。用逻辑分析仪监视并行口,可以得到两个信号的时间差,并取其中最长的时间差作为嵌入式实时
操作系统的中断响应时间。
5.3 对比测试
比对测试是在同等试验条件下对几个可选的嵌入式实时操作系统进行功能和性能比较,由于大多数嵌入式实时操作系统的内核是不可更改的,所以对其性能的测试主要在用户层实现。试验的硬件及应用环境必须相同,消除了硬件对系统性能的影响,就可以相对精确和客观地得到被试嵌入式实时操作系统之间的功能和性能差异。
测试内容:比对测试的内容包括功能比对、性能比对和开发配套工具支持比对等。
测试方法:功能和开发配套工具支持比对采用静态分析,性能比对测试采用下图所示的测试环境,完成稳定、可靠性和实时性等几个主要性能指标的测试。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….