嵌入式软件测试和验证

嵌入式软件测试和验证
一、 软件测试
1.1定义
1993 年 IEEE 对软件测试给出了一个综合的定义:①将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中;②是对①中所述方法的研究。它指出软件工程是一种层次化的技术。科学的测试是贯穿整个产品生命周期中的测试。要突破原来对测试的理解,着眼于整个软件生存期,特别是着眼于编码以前各开发阶段的测试工作,以保证软件的质量。
1.2软件测试的真正目标
软件测试的真正目标是寻bug。即使是在交付时间表很紧的情况下,采取一个步骤来想一下从哪里开始着手,这样,测试才会是最有效率的。但即使在时间非常充足的情况下,也不可能测试出每一个bug,所以必须将测试划分优先级,划分的根据是基于产品目前的状态(新的,修改的或者只是纯漏洞)和对客户的可能影响而进行的最诚实的评估。避免采用知道软件
可以处理的测试数据和操作;测试人员的任务是在测试中扩大软件的边界。在设计自动化测试时,也要避免“踩灭”失败条件的误区。测试人员的任务不是创造大量的总是可以干净的成功运行的测试。测试人员需要去寻和理解故障条件。不要浪费时间去想软件产品中是否存在bug。它肯定有bug,并且不可能全部出它们。测试的目的是指望测试人员出那些最有影响的bug。必须要做的是,要从消极的角度考虑这些问题。
1.3软件测试的意义
充电器测试系统
1.发现软件错误;
2.有效定义和实现软件成分由低层到高层的组装过程;
3.验证软件是否满足任务书和系统定义文档所规定的技术要求;
4.为软件质量模型的建立提供依据;
即软件测试包括“错”、“组装”、“确认”和“评估”四个层次的作用。
1.4软件测试方法
从不同的角度来看,可以将软件测试的方法分为以下几类:根据是否需要运行被测软件的角度,软件测试分为静态测试方法和动态测试方法。根据在动态测试中是否需要了解被测软件代码结构的角度,又分为白盒测试和黑盒测试。根据在静态测试中是否要了解源程序语法的角度,测试可分为语法测试和语义测试。根据如何选择测试数据的角度,测试又可分为功能测试、结构测试和随机测试。根据使用的测试数据的类型,测试又可分为确定性测试和随机测试等等。图1 是软件测试方法的分类图。
图1软件测试分类图
1.5软件测试的基本内容
软件测试工作包括两个层次:冰箱模具
1.测试工作的组织与管理,包括:制定测试方法与规范、控制测试进度、管理测试资源。
2.测试工作的实施,包括:编制符合标准的测试文档、研制测试环境、与开发组织协作实现各阶段的测试活动。
软件测试工作可以分为四个方面:
1.测试管理。测试小组是质量保证组织的一个成分,因此测试管理工作应被置于软件质量管理工作范围内。
2.测试计划。独立的测试组织负责定义软件测试的方法与规范。开发组织负责编制单元测试的计划和说明;测试组织主要负责编制其它各测试阶段的测试计划和说明。
3.测试实施。测试实施组织的作用是:按测试计划与测试说明的定义对测试对象进行相应的测试;填写测试报告中相应的表格。
4.测试评审。依据软件测试评审准则在各测试阶段评审时提交类型完整的测试文档。
毫米波天线1.6软件测试的标准
组织者在指定范围内选择软件测试遵循的标准,并结合本软件系统的具体要求,使之贯彻到整个软件测试的计划、实现和管理过程之中。根据标准,需要被明确的内容包括:测试阶段和测试文档类型。可以从三个角度来划分测试阶段:面向测试操作类型的阶段划分、面向测试操作对象的阶段划分、面向测试实施者的阶段划分。测试操作类型包括:调试、集成、确认、验证、组装、验收、操作等。测试操作对象可以是:单元、部件、配置项、子系统、系统等。测试实施者可以是:开发者、测试者、使用者、验收者等。各类标准从不同角度定义测试评审阶段,而测试组织者可以在符合所选标准的同时,结合多个划分因素规定本系统的测试阶段。各标准规定的测试文档类型也不尽相同。如国标《软件产品开发文件编制指
南》规定了两类测试文档:测试计划、测试分析报告;国标《计算机软件测试文件编制规范》定义了八类测试文档:测试计划、测试设计说明、测试用例说明、测试规程说明、测试项传递报告、测试日志、测试事件报告、测试总结报告 ; 《XXXX软件工程化技术文件》定义了
三类测试文档:测试计划、测试说明、测试报告。我们认为最后这种规定较易操作:因为,太少的测试文档类型不利于有步骤有层次地定义测试内容,也不利于测试用例和测试例程的良好表达;太多的测试文档类型易使测试组织陷入到繁杂的文档规范和编制中去;而第三种定义较为适中。其中:测试计划在系统分析/设计阶段提交,着重定义测试的资源、范围、内容、安排、通过准则等;测试说明在测试计划明确后开始编制,针对软件需求和设计要求具体定义测试用例和测试规程;测试报告分析和总结测试结果,测试日志是其必要附件。
炉温控制系统
二、 嵌入式软件测试和验证
2.1嵌入式软件测试的独特性和必要性
嵌入式系统在人类生活中发挥着重要的作用,包括飞行控制器这样的控制系统,以及洗衣机这样的家用电器。目前,嵌入式系统中软件的比重越来越大,也越来越复杂,保证嵌入式软件的可靠性正面临严峻的挑战。大多数软件测试方法都可以直接或间接地用于嵌入式软件的测试,但是由于操作系统的实时和嵌入式特性,嵌入式软件测试也面临一些特殊的问题。虽然目前已经有一些针对嵌入式软件的测试和调试工具,但是在有些方面仍存在不足,包括许多任务操作系统的并发、非侵入式的测试和调试、嵌入式系统的软件抽象等。
对于嵌入式软件测试技术的研究人选测试工具有待开发,仍须要做很多进一步的工作。
软件测试的目的是保证软件满足需求规格说明。系统失效是系统没有满足一个或多个正式需求规范中所要求的需求项。嵌入式软件有其特殊的失效判定准则,但是,嵌入式软件测试/嵌入式测试或叫交叉测试(cross-test)的目的与非嵌入式软件是相同的。在嵌入式系统设计中,软件正越来越多地取代硬件,以降低系统的成本,获得更大的灵活性,这就需要使用更好的测试方法和工具进行嵌入式和实时软件的测试。通常嵌入式系统对可靠性的要求比较高。嵌入式系统安全性的失效可能会导致灾难性的后果,即使是非安全性系统,由于大批量生产也会导致严重的经济损失。这就要求对嵌入式系统,包括嵌入式软件进行严格的测试、确认和验证。随着越来越多的领域使用软件和微处理器控制各种嵌入式设备,对日益复杂的嵌入式软件进行快速有效的测试愈加显得重要。例如,航天飞机的飞行软件达 50 万行源代码,F-22 战斗机更达 150 多万行源代码,软件失效已成为系统瘫痪的主要原因。根据美国国防部和 NASA 的统计,当今武器系统和航天项目中的软件可靠性比硬件系统大约低一个数量级。在工程应用中由软件引发的、震惊科技界的故障持续不断,在某些类型的设备中软件故障甚至远远超过了硬件,成为系统的主要故障源。如何保障软件具有一定的可靠性以避免灾难性后果的发生,是当前计算机学科应该重点研究的问题。
柴草热水器
2.2嵌入式软件测试环境
软件测试环境包括设计环境、实施环境和管理环境。软件测试设计环境指:编制测试计划/说明/报告及与测试有关的文件所基于的软/硬件设备和支持。软件测试实施环境指:对软件系统进行各级测试所基于的软/硬件设备和支持。测试实施环境包括被测软件的运行平台和用于各级测试的工具。软件测试管理环境指:管理测试资源所基于的软/硬件设备和支持。测试资源指测试活动所利用或产生的有形物质(如软件、硬件、文档)或无形财富(如人力、时间、测试操作等)。广义的测试管理环境包含测试设计环境、测试实施环境,和专门的测试管理工具。对软件测试环境的定义包括两个方面:折衷需求和实际条件来选择已有的测试工具;有重点地自行开发测试辅助工具。
软件测试必须依托工具,以便测试过程的自动/半自动执行和测试结果的自动/半自动评审和报告。目前市场上测试工具分为三类:代码分析工具、自动/半自动测试过程管理工具和测试资源管理工具。
嵌入式软件与其他软件相比,它具有专用性,它只能在需求所指定的硬件平台上运行。并且嵌入式软件的开发环境和运行环境是不一致的,因此即使宿主机环境下测试再充分,也
不能说明在目标机环境下运行该软件就不出问题。因而,嵌入式软件还面临着目标环境的测试。这不仅增加了测试的代价,而且还带来了嵌入式软件的测试策略问题,即哪些测试分配到宿主机环境进行,哪些测试分配到目标机环境下进行。
嵌入式软件测试使用有效的测试策略是唯一的出路,它可以使开发的效率最大化,避免目标系统的瓶颈,使用在线仿真器节省昂贵的目标资源。嵌入式系统开发环境被认为是主机平台,软件运行环境为目标平台。相应的测试为 Host/Target测试或 cross-testing。通常在主机环境执行多数的测试(即 Host/Host),只是在最终确定测试结果和最后的系统测试才移植到目标环境,这样可以避免发生访问目标系统资源上的瓶颈,也可以减少在昂贵资源如在线仿真器上的费用。另外,若目标系统的硬件由于某种原因而不能使用时,最后的确认测试可以推迟直到目标硬件可用,这为嵌入式软件的开发测试提供了弹性。设计软件的可移植性是成功进行 Host/Target的先决条件,它通常可以提高软件的质量,并且对软件的维护大有益处。有效采用 Host/Target 测试策略可极大地提高嵌入式软件开发测试的水平和效率,提高嵌入式软件的质量。
无人机测量当在真实运行环境下进行测试是不可能的时候,仿真便成了一种有效的建立运行环境的手
段。软件驱动的仿真器是用来替代真实的运行环境,能提供真实运行环境中的各种功能模拟。而在仿真器中运行的软件不会受到真实环境下的一些干扰。由于仿真器是用于观察软件的运行状况,不是测量运行性能,所以不需要精确的性能测量。实际上,真实环境下的随机性引起的性能变化要大于精确的性能测量和在仿真器上的类似的性能测量的不同,因此,仿真器能很好地工作,为软件测试提供运行模拟。
嵌入式软件的专用性决定了其测试需要专用的测试环境。测试环境可分为宿主机软件仿真、在线仿真器(In Circuit Emulator)、目标机仿真。由于受测试成本、效率、测试自动化程度和目标机的可用性等因素影响,这三种测试环境都各有利弊。
宿主机软件仿真是用软件构造一个嵌入式应用程序运行所需的仿真环境,能模拟执行目标机 CPU 的指令,还能模拟中断、I/O 命令等外部消息。这种仿真方式需要对处理器有良好的定义,可仿真总线模型及处理器与外部设备的交互。其优点是无须目标机硬件便可测试,灵活、方便;用软件仿真的手段可分清软、硬件各自的错误;可对测试过程编程;自动化程度较高;降低开发成本。但也有不足,首先实时性受限,无法模拟真实硬设备之间的高速通信,此种仿真环境适用于软实时或无实时性要求的嵌入式系统。其次,由于宿主
机的操作系统运行着大量的进程,可能对仿真环境造成干扰,如何排除干扰是一个不能忽视的问题。
在线仿真器(ICE)是一种专用设备,配有专用于特定 CPU 芯片的接头。它能提供与应用程序交互的软信道或硬信道,有的 ICE 还有与外设接口的信道。其不足是硬件性能受成本限制,硬件依赖性强,测试范围受限。
目标机仿真提供应用程序实际的运行环境,测试结果真实。但要受到目标机的硬件限制,难以区分软件和硬件的错误。
在实际测试工作中,应综合考虑成本、测试类型、测试可靠性以及项目进度等因素选择测试环境。一般而言,ICE 较多用于程序开发和调式阶段,测试可先在宿主机上充分完成后,再在目标机环境下确认测试。

本文发布于:2024-09-24 09:24:36,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/281268.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:测试   软件   环境
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议