嵌入式软件测试规范
篇一:嵌入式软件测试和验证
嵌入式软件测试和验证
一、 软件测试
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 的统计,当今武器系统和航天项目中的软件可靠性比硬件系统大约低一个数量级。在工程应用中由软件引发的、震惊科技界的故障持续不断,在某些类型的设备中软件故障甚至远远超过了硬件,成为系统的主要故障源。如何保障软件具有一定的可靠性以避免灾难性后果的发生,是当前计算机学科应该重点研究的问题。

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