好文档 - 专业文书写作范文服务资料分享网站

1-6 软件测试策略与模式v3

天下 分享 时间: 加入收藏 我要投稿 点赞

中国大学MOOC软件测试课程资源软件测试策略与模式

贺平

撰文

软件具有生命周期的特性,即软件表现为从产生、运行(执行)、更新(修改与升级)、再运行、停止使用(终结执行)的环节,也就是所谓的软件生命周期。

软件测试贯穿整个软件生命周期,因此,测试的基本策略是在其生命周期的每个阶段中确定测试的目标、确认测试的对象、建立测试自身的生命周期、制定和实施测试的策略、选择测试的类型,以及运用具体实施的测试方法六个部分项。下边,我们分别叙述如下:

1.明确测试目标

根据软件生命周期划分的几个阶段,以及软件质量包含的各项属性特征,测试需要对每一阶段和每个部分的目标进行确定。

2.确认测试对象

软件测试是对程序的测试,并贯穿于软件生命周期整个过程。因此,软件开发过程中产生的需求分析、概要设计、详细设计以及编码等各个阶段所获文档,如需求规格说明、概要设计规格说明、详细设计规格说明以及源程序等都是软件测试的对象。

3.建立测试生命周期

软件测试的生命周期是包含在软件的生命周期当中。测试生命周期从大的方面看,主要为横跨两个历程,分为软件生产阶段的测试历程与软件运行维护阶段的测试活动。

下图所示为软件测试生命周期在软件生产阶段的测试活动及运行维护阶段的测试活动过程示意。

这个图示表明了在软件生产阶段每一级均可能产生和引入缺陷或错误,在软件运行时发生失效,而在运行维护阶段在修复缺陷或错误时,也可能产生或引入

引用本文内容敬请注明出处1/7中国大学MOOC软件测试课程资源新的缺陷或错误。

故障①需求规格说明故障②设计故障③编码故障④测试故障故障修复故障⑦故障排除⑥故障分离发生失效⑤故障分类其中:①、②、③可能引入故障,或导致其他阶段故障;④测试发现了失效;⑤、⑥、⑦故障排除。故障排除过程有可能使原本正确执行的程序又出现错误,即排除旧故障引入了新故障。4.制定和实施测试策略

制定和实施一项软件测试的策略包含四项内容:(1)确定测试由谁来执行

软件产品开发中有通常有开发者和测试者两种角色。开发者通过开发形成产品,如分析、设计、编码调试或文档等可交付物。测试者通过测试检测产品中是否存在缺陷,包括根据特定目的而设计的测试用例、测试过程构造、执行测试和评价测试结果。通常的做法是开发者负责完成组件级别的测试,而集成级别和系统级别的测试则由独立的测试人员或专门测试机构完成。但也可有其他策略,如在组件级别的测试,专门测试人员加入。

(2)确定测试的对象

测试经验表明,通常表现在程序中的故障,不一定由编码所起。它可能是由软件详细设计、概要设计阶段,甚至需求分析阶段的问题所致。要排除故障、修

引用本文内容敬请注明出处2/7中国大学MOOC软件测试课程资源正错误必须追溯到前期工作。事实上,软件需求分析、设计和实施阶段是软件故障的主要来源。

(3)确定何时进行测试

测试是与开发并行的过程,还是在开发完成某阶段任务之后的活动,或是在整个开发结束后的活动。软件开发经验和事实证明,随着开发过程深入,越是早期没有进行测试的模块对整个软件潜在隐患及破坏作用就越明显。

(4)确定怎样进行测试

软件的“规格说明”界定了软件本身应达到的目标,而程序的“实现”则是对应各种输入,并如何产生输出的一种算法。即,规格说明界定软件要做什么,而程序实现表达了软件怎样做。确定怎样进行测试,也就是要根据软件“规格说明”和程序实现的对应关系,确定采用何种测试策略与技术方法,设计并生成有效测试用例,对其进行检验。

确定怎样进行测试还包括采用哪些技术方法或手段,如手工测试、自动化测试或混合模式的测试,测试环境构建等等。

5.明确测试类型

一个软件的特性或特征主要表现为软件的功能性和非功能性两方面。功能性方面主要包含了适应性、准确性、互操作性、安全性以及遵从性4类,而非功能性则包含了可靠性、可用性、有效性、可维护性及可移植性5类,每个类又包含若干个子属性。因此,在进行测试设计时需要明确测试类型,并可进一步细分为功能性测试、非功能性测试、恢复性测试与确认性测试。

(1)功能测试(FunctionalTesting)

引用本文内容敬请注明出处3/7中国大学MOOC软件测试课程资源功能测试是验证软件系统输入/输出行为的各种功能,其基础是明确功能的需求和系统行为,定义了其基于功能需求验证,检验其实现的功能,同时检验其功能的正确性和完整性,因此,就需要采用一系列的测试用例来进行验证。其中,每个测试用例要覆盖功能特定的输入/输出行为的检测。

功能测试通常采用黑盒测试技术来设计测试用例。功能测试是所有软件测试活动中最基本与最重要的测试任务,几乎所有的软件都必须要进行功能测试。

功能测试除了输入域定义所期望的输出之外,也常需要进行健壮性测试,即针对无效输入数据的处理情况,检查程序对异常数据的处理能力,是否存在着缺陷,并会导致程序运行的‘瘫痪’,如死机或溢出等。健壮性测试通常也称为功能测试的负面测试(negativetest)。

(2)非功能性的测试(Non-FunctionalTesting)

非功能描述功能行为的属性,或称为系统属性。非功能测试包括:性能测试、负载测试、安全性测试、可靠性(或稳定性)测试、兼容性测试、可维护性测试以及文档测试等。

(3)恢复测试(RecoveryTesting)

这项测试主要检查软件系统的容错能力。当软件出错时,能否在指定时间内修正错误并重启系统。恢复测试首先采用各种办法强迫系统失败,然后验证系统能否尽快恢复。对于自动恢复需验证重新初始化、检查点、数据恢复和重新启动等机制的正确性。对人工干预的恢复系统,还需估测平均修复的时间,确定其是否在可接受范围内。

(4)确认测试(ConfirmationTesting)

详见本课程后续章节内容。引用本文内容敬请注明出处4/7中国大学MOOC软件测试课程资源(5)验收测试(Acceptancetesting)

通常是指软件测试生命周期的一个阶段,是一项确定产品是否能够满足合同或用户所规定需求的测试。由相关用户或独立测试人员根据测试计划和产品(系统)进行测试和接收。验收测试由用户决定是否接收系统。

验收测试一般有三种方法:正式验收;非正式验收;Alpha测试、Beta测试。

更多内容详见本课程后续章节内容。(6)回归测试(Regressiontesting)

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

回归测试策略分完全重复测试和选择性重复测试两种,完全重复测试的意义很明确,实际工作中采用选择性重复测试较多。

选择性重复包括下面几种方式:?

覆盖修改法。它是针对被修改的部分,选取或重新构造测试用例验证没

有错误再次发生的一种用例选择方法;

?

周边影响法。这种方法不但要包含覆盖修改法确定的测试用例,还要分

析其修改后可能产生的扩散影响,对那些受到修改间接影响的部分选择测试用例验证其没有受到不良影响。该方法依赖于测试者的经验,测试程度要比覆盖修改的方法更加充分一些。

?

指标达成法。这是一种类似于单元(组件)测试的方法,在重新执行测

试之前,先确定一个要达到的指标,如,修改部分代码100%的覆盖、与修改有关接口60%的覆盖,等等。基于这种要求,选择一个最小的测试用例集合。

?

选取重要级别高的用例进行回归测试。

引用本文内容敬请注明出处5/7

1-6 软件测试策略与模式v3

中国大学MOOC软件测试课程资源软件测试策略与模式贺平撰文软件具有生命周期的特性,即软件表现为从产生、运行(执行)、更新(修改与升级)、再运行、停止使用(终结执行)的环节,也就是所谓的软件生命周期。软件测试贯穿整个软件生命周期,因此,测试的基本策略是在其生命周期的每个阶段中确定测试的目标、确认测试的对象、建立测试自身的生命周期、制定和实
推荐度:
点击下载文档文档为doc格式
63kz86n2p56et871df8g8njyy26yqz018m6
领取福利

微信扫码领取福利

微信扫码分享