文档库 最新最全的文档下载
当前位置:文档库 › 软件测评能力提升方案-

软件测评能力提升方案-

软件测评能力提升方案-
软件测评能力提升方案-

软件测评工程能力提升方案

咨询方将在上述调研报告基础上,提出详细的测评工程能力建设方案。方案的主要包括以下方面:

1软件测试实用规程

1.1软件测试的认识

如前所述,目前软件测试领域的理论体系仍然不算成熟,软件测评专业能力建设本身是一个复杂的系统工程,牵涉的人员和环节众多,从调研结果来看,部分研发人员对测试的认识存在一些偏差,这将给软件测评专业建设带来风险。

软件测评工程能力,首先是测试意识的提升。技术保障,观念先行,一个研发项目涉及的人员尤其是大多数的开发人员的测试意识是决定性的,只有将软件测试放到软件全生命周期的大背景下来考察,使全体人员对软件质量全程保证的角度来重新认识测试,具体的测试方法、测试技能提升才有普遍意义。

基础理论和方法论的普及,软件测试的本质、含义、定位和作用的深入认识,将是项目能否顺利开展的前提。

软件测试本质上是一个证伪而不是证明的过程。因此,从广义上来说,只要是对软件本身质量保证相关的,都可以纳入软件测试的范围。无论是在软件研发的需求分析、架构设计、详细设计、代码实现还是后面的测试阶段,都可以开展测试活动;无论是系统设计人员、软件编程人员或者验证人员、服务人员、市场人员,都可以成为测试人员;也无论是文档评审、代码审查、功能调试、系统验证等等活动,都可以是一种测试活动;无论是人工验证、形式证明、代码静态分析工具、单元测试工具还是自动化测试工具等手段,都可以成为有效的测试手段。

只要有确定的人员,采用某种确定的方法手段,按照确定的项目内容,对影响软件质量的相关文档、代码、程序、数据等进行验证,都是执行了有意义的测试。经过这些验证活动之后,我们得出有条件的结论,这个条件是在这些项目内容验证之下,

我们判断软件通过或者不通过测试。不通过(证伪)的时候,我们是可以很肯定地说这个有问题;但通过的时候,这种通过是有条件的。

从软件全程质量保证的角度来看待软件测试,测试活动包含以下几层要求:

1.软件质量是满足规定或潜在的用户需求的能力,因此软件开发过程中,从用

户显式或隐含的意思表达到形成用户规格书、再到设计文档、变成代码并调

试运行的过程,最重要的就是保证在这样一个复杂的转换过程中,需求的不

被异化。

2.软件作为一个产品,是用来满足用户需求的,从这个角度来说,需要测量的

是在特定环境下运行达到其任务目标的程度,但软件本身是一组文档、数据

和代码的总和,其中最直接的是代码,从这个角度来说,作为一个产品本身,也需要从机械的符号角度对其内生的质量进行度量和评价。

3.软件的生产过程是一个工程,对应的测试活动有其工程属性,既然测试活动

本身不能证明,只能证伪,测试活动则更需要明确测试界限,给出工程上合

理的进度、资源、方法和结束条件。

采用的测试方法就必须回答如何保证需求不被异化,如何从动态和静态两个角度来评估软件质量,以及如何明确测试界限的问题,而这又必然需要通过一定的技术手段才能得到有效地支撑。

在这种广义的软件质量保证的含义下,我们来重新审视软件全生命周期尤其是研发周期,就会发现,专门的软件测试人员承担的软件质量保证职责是有限的,一个研发项目中占大多数的研发人员,他们的测试意识,对测试活动、测试方法的认识是很关键的。

因此,测评工程能力的提升,首先要通过培训、宣传、会议等各种手段,让项目涉及的相关人员尤其是软件开发人员,重新认识软件研发过程,重新认识软件测试,包括测试本质、测试含义、测试定位、测试方法等等。

1.2软件测试方法

对应上述测试活动的理解,测试方法也首先是一套逻辑严密的需求覆盖体系和分析设计方法,具体表现为测试阶段覆盖的完整性、每个阶段测试分析的完整性、每个阶段测试分析的过程完整性保证,然后才是在此之上的一些操作手段和工具应用技能,同时在管理层面,需要有明确测试界限的一系列手段。

一、测试阶段划分

如前所述,一个明确的软件测试项目包括前期的文档测试,按照软件开发过程包含软件需求分析说明书验证、软件设计文档验证;另外一个是后期动态的单元测试、集成测试、系统测试、验收测试,这时主要的测试对象是程序和数据,当然也涉及到文档。

对于这些测试阶段,应制定规范,对其测试类型、测试技术要求等明确要求。这方面,在军方、航空航天等领域有许多规范就可供参考。实际实施时,规范应根据不同软件类型的重要性、安全性关键等级提供剪裁。

对应每一阶段的要求分别说明如下:

1、文档测试

文档测试的主要测试对象是软件需求规格说明书和软件设计文档。文档通常使用文字进行说明,因此不可避免地具有而二义性和不明确性。软件测试中的文档测试主要是对相关的设计报告和用户使用说明等文档进行测试,一般应符合以下的技术要求:

●对于设计报告主要是测试程序与设计报告中的设计思想是否一致;

●对于用户使用说明进行测试时,主要是测试用户使用说明书中对程序操作方

法的描述是否正确,重点是用户使用说明中提到的操作例子要进行测试,保证采用的例子能够在程序中正确完成操作。

●对于其他文档,一般检查其有效性和无误性。

2、单元测试

单元测试的对象是软件单元。软件单元测试应根据软件单元的重要性、安全性关键等级等对如下技术要求内容进行剪裁,但必须说明理由。单元测试一般应符合以下的技术要求:

●在对软件单元进行动态测试之前,应对软件单元的源代码进行静态测试;

●应建立测试软件单元的环境,其测试环境应通过评审;

●对软件设计文档规定的软件单元的功能、性能、接口等应逐项进行测试;

●软件单元的每个特性应至少被一个正常测试用例和一个被认可的异常测试用

例覆盖;

●测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;

●语句覆盖率要达到100%;

●分支覆盖率要达到100%;

●对输出数据及其格式进行测试。

3、集成测试

集成测试的对象是软件组件,软件组件由软件单元组成。软件集成测试可根据软件组件的重要性、安全性关键等级、重用情况等对如下技术要求内容进行剪裁,但必须说明理由。集成测试一般应符合以下技术要求:

●应对构成软件组件的每个软件单元的单元测试情况进行检查;

●若对软件组件进行必要的静态测试,应先于动态测试;

●组装过程是动态进行的,应标明组装策略;

●应建立组件测试环境,其测试环境应通过评审;

●应逐项测试软件设计文档规定的软件组件的功能、性能等特性;

●软件组件的每个特性应至少被一个正常的测试用例和一个被认可的异常测试

用例覆盖;

●测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;

●应测试软件单元和软件组件之间的所有调用,达到要求的测试覆盖率;

●应测试软件组件的输出数据及其格式;

●应测试软件组件之间、软件组件和硬件之间的所有接口;

●应测试运行条件在边界状态下,进而在人为设定的状态下,软件组件的功能

和性能;

●应按设计文档要求,对软件组件的功能、性能进行强度测试;

●对安全性关键的软件组件,应对其进行安全性分析,明确每一个危险状态和

导致危险的可能原因,并对此进行针对性的测试。

●发现有否多余的软件单元。

4、系统测试

系统测试的对象是完整的、集成的计算机系统(Computer System),重点是新开发的配置项的集合。系统测试是组成系统的多个配置项的测试,组成一个系统的多个相关的软件可以同时进行系统测试。系统测试一般应符合以下技术要求:

●应按系统/子系统设计说明的规定,逐项测试系统的功能、性能等特性;

●系统的每个特性应至少被一个正常测试用例和一个被认可的异常测试用例所

覆盖;

●测试用例的输入应至少包括有效等价类值、无效等价类值和边界数据值;

●应测试系统的输出及其格式;

●应测试配置项之间及配置项与硬件之间的所有接口;

●应在边界状态、异常状态或在人为设定的状态的运行条件下,测试系统的功

能和性能;

●应测试系统的安全性和数据访问的安全保密性;

●应测试系统的全部存储量、输入/输出通道的吞吐能力和处理时间的余量;

●应按系统或子系统设计文档的要求,对系统的功能、性能进行强度测试;

●应测试人机交互界面提供的操作和显示界面,包括测试界面的可靠性;

●应测试设计中用于提高系统安全性和可靠性的方案;

●对安全性关键的系统,应对其进行安全性分析,明确每一个危险状态和导致

危险的可能原因,并对此进行针对性的测试。

●对有恢复或重置功能需求的系统,应测试其恢复或重置功能和平均恢复时间,

且对每一类导致恢复或重置的情况进行测试。

●对软件系统的安装性进行测试;

●对不同的实际问题应外加相应的专项测试。

5、验收测试

验收测试是按照项目任务书或合同、供需双方约定的测试依据文档进行的对整个系统的测试,以决定是否接收或拒收系统。其基本要求和系统测试类似。

二、测试类型分析

测试活动的每个阶段,都有不同的特点和要求,但至关重要的是保证测试分析方法的完整性,需要理解测试对象、测试的基本特点,确定测试的基本特征,提取共性。例如,在军用测试领域就有一套已经形成完整的测试分析方法体系,包括22种测试类型,在测试设计时应首先对照其要求进行分析,分别简要介绍如下。

●文档审查:是对提交的文档的完整性、一致性和准确性所进行的检查。文档

审查应确定审查所用的检查单,而且为适应不同的文档审查,需要用不同的

检查单,检查单的设计或采用应经过评审并得到委托方的确认。

●可测试性审查:主要是对开发的软件文档、软件设计的可测试性进行审核,

包括软件文档是否符合可测性、软件设计是否具有可测试性、代码是否符合

可测性等方面的审查。

●代码审查:是检查代码和设计的一致性、代码执行标准的情况、代码逻辑表

达的正确性、代码结构的合理性以及代码的可读性。代码审查应根据所使用的语言和编码规范确定审查所用的检查单,检查单的设计或采用应经过评审并得到委托方的确认。

●静态分析:是一种对代码的机械性和程序化的特性分析方法。

●代码走查:由测试人员组成小组,准备一批有代表性的测试用例,集体扮演

计算机的角色,沿程序的逻辑,逐步运行测试用例,查找被测软件缺陷。

●逻辑测试:主要测试程序逻辑结构的合理性、实现的正确性。逻辑测试应由

测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

●功能测试:主要对软件需求规格说明或设计文档中的功能需求逐项进行的测

试,验证其功能是否满足要求。功能测试一般需进行:

●性能测试:对软件需求规格说明或设计文档中的性能需求逐项进行的测试,

验证其性能是否满足要求。

●接口测试:对软件需求规格说明或设计文档中的接口需求逐项进行的测试。

●人机交互界面测试:是指对所有人机交互界面提供的操作和显示界面进行的

测试,检验是否满足用户的要求。

●强度测试:强制软件运行在不正常到发生故障的情况下检验软件可以运行到

何种程度的测试。

●可靠性测试:在真实的或仿真的环境中,为做出软件可靠性估计而对软件进

行的功能测试。可靠性测试中必须按照运行剖面和使用的概率分布随机地选择测试用例。

●安全性测试:检验软件中已存在的安全性、安全保密性措施是否有效的测试,

测试应尽可能在符合实际使用的条件下进行。

●恢复性测试:对有恢复或重置功能的软件的每一类导致恢复或重置的情况逐

一进行的测试,验证其恢复或重置功能。恢复性测试是要证实在克服硬件故

障后系统能否正常地继续进行工作,且不对系统造成任何损害。

●边界测试:对软件处在边界或端点情况下运行状态的测试。

●数据处理测试:对完成专门数据处理功能所进行的测试。

●安装性测试:对安装过程是否符合安装规程的测试,以发现安装过程中的错

误。

●互操作性测试:是为验证不同软件之间的互操作能力而进行的测试。

●敏感性测试:是为发现在有效输入类中,可能引起某种不稳定性或不正常处

理的某些数据的组合而进行的测试。

●标准符合性测试:验证软件与相关国家标准或规范(如国家标准、行业标准

以及国际标准)一致性的测试。

●兼容性测试:主要是验证被测软件在不同版本之间的兼容性。有两类基本的

兼容性测试:一类是向下兼容测试,向下兼容是测试软件新版本保留它早期

版本的功能的情况;另一类是交错兼容测试,交错兼容测试是要验证共同存

在的两个相关但不同的产品之间的兼容性,即验证软件在规定条件下共同使

用若干个实体或实现数据格式转换时能满足有关要求能力的测试。

●国际化测试:验证软件在不降低软件原有能力的条件下,处理当地语言能力

的测试。

三、测试分析过程

和软件开发过程类似,一个完整的测试阶段其软件测试过程也应包括:测试需求分析、测试策划、测试设计与实现、测试执行、测试总结(包括评价过程和总结)等。只有对测试分析过程从管理上和技术上提出明确的界限,才能真正判定测试用例设计是否达到设定目的,完全覆盖了测试需求,测试需求是否真正完全覆盖了软件需求、

潜在的各类隐含需求。在设计分析完整的基础上,按照严格的测试过程执行,就能有足够的信息来给出整个项目测试是否达到预期目标的结论。下面对测试设计过程的技术要求加以描述。

1.测试需求分析

测试人员应根据被测软件的需求规格说明书、软件设计文档等,对被测软件进行测试需求分析。通常,测试需求分析一般要求:

●确定需要的测试类型及其测试要求并进行标识(编号),标识应清晰、便于识

别。测试类型包括功能测试、性能测试等类型;测试要求包括状态、接口、数据结构、设计约束等要求。确定的测试类型和测试要求均应与要求的测试阶段、测试类型匹配;

●确定测试类型中的各个测试项及其优先级;

●确定每个测试项的测试充分性要求。根据被测软件的重要性、测试目标和约

束条件,确定应覆盖的范围及范围所要求的覆盖程度;

●确定每个测试项测试终止的要求,包括测试过程正常终止的条件(如测试充

分性是否达到要求)和导致测试过程异常终止的可能情况。

测试人员应建立测试类型中的测试项与软件测评任务书、被测软件的需求规格说明、设计文档或其他依据文件的追踪关系。

2.测试策划

测试人员应根据被测软件的需求规格说明书、软件设计文档等进行测试策划,策划一般要求包括:

●确定测试策略;

●确定测试需要的技术或方法,如:测试数据生成与验证技术、测试数据输入

技术、测试结果获取技术等;

●确定受控的测试工作产品,并列出清单;

●确定用于测试的资源要求,包括:软硬件设备、环境条件、人员数量和技能

等要求;

●进行测试风险分析,如:技术风险、人员风险、资源风险和进度风险等;

●根据被测软件的需求规格说明书、软件设计文档和被测软件的特点,确定测

试任务的结束条件;

●确定被测软件的评价准则和方法;

●应根据测试资源和测试项,确定测试活动的进度;

●应根据测试的要求,确定需采集的度量及采集要求,特别是用例度量、风险

度量、缺陷度量等,并应明确相应的数据库测试需求度量。

3.测试设计和实现

测试人员应根据测试需求规格说明和测试计划进行测试的设计和实现,应完成以下工作:

●按需要分解测试项。将需测试的测试项进行层次化的分解并进行标识,若有

接口测试,还应有高层次的接口图说明所有的接口和要测试的接口;

●说明最终分解后的每个测试项。说明测试用例设计方法的具体应用、测试数

据的选择依据等;

●设计测试用例;

●确定测试用例的执行顺序;

●准备和验证所有的测试用数据。针对测试输入要求,设计测试用的数据,如

数据类型、输入方法等;

●准备并获取测试资源,如测试环境所必须的软、硬件资源等;

●必要时,编写测试执行需要的程序,如开发部件测试的驱动模块、桩模块以

及测试支持软件等;

●建立和校核测试环境,记录校核结果,说明测试环境的偏差。

相关文档