软件测试引论_第1页
软件测试引论_第2页
软件测试引论_第3页
软件测试引论_第4页
软件测试引论_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件测试引论

郑人杰

内容

一、软件缺陷

二、排除软件缺陷的两种重要手段

1.软件测试

2.软件评审

三、软件测试的基本概念

1.测试的目的

2.测试的对象

3.软件测试的原则

4.软件测试信息流

5.为什么不可能做到穷举测试

内容

四、测试策略

1.测试步骤

2.生存期各阶段VV&T活动

3.集成测试

4.验收测试

5.黑盒测试与白盒测试

6.静态分析与动态测试

五、如何对待测试工作

六、测试工作评估

七、小结

八、参考资料

、软件缺陷

1、软件缺陷是对软件产品预期属性的偏离现象

a,对产品规格说明的偏离。如:规格说明规定了a+b=>c,而软件产品

实际上做的不是。

b.对用户期望的偏离,即用户要求未体现在产品中(可能是规格说明

有疏漏,也可能是实现中的问题。)

2、缺陷有三种

a.错误:未将规格说明正确实现。

b.遗漏:规定的或预期的需求未体现在产品中(可能未将规格说明全

面实现,也可能在开发过程中追加了需求。)

c.额外的实现:规格说明并未规定的需求被纳入产品,得到实现。

3、软件缺陷不可能完全避免

、软件缺陷

4、缺陷和事故

a.机械和建筑业的对比。

b.缺陷是软件内部的“裂缝”,在未影响到用户和系统运行的

情况下是隐蔽状态,并未表现出来。

c.当缺陷引发运行错误或产生负面影响时,构成事故,造成损

失或伤害。

内部隐含外部表现

缺错误失效损失

遗漏或或

陷冗余事故危害

DefectFailure

二、排除软件缺陷的两种重要手段

1、软件测试

>测试在软件开发中占有重要地位

>测试成本占有开发成本的近一半

软件开发成本分布

开发成本按阶段分布%

软件类型

需求与设计实现测试

控制软件462034

航空航天软件342046

操作系统331750

科技计算软件442630

商业应用软件442828

2、软件项目评审

测试策划

三、软件测试的基本概念

1、测试目的(J.Myers)

♦测试是程序执行的过程,目的在于发现错误(缺陷)

♦好的测试用例能有效地发现别的测试用例未发现的

错误(缺陷)

♦成功的测试是发现了未曾发现的错误(缺陷)

三、软件测试的基本概念

2、测试的对象

1)程序测试:发现程序中的缺陷

程序正确性的各种情况

a.程序编写无语法错误

b.程序执行中未发现明显的运行错误

c.程序中无不适当语句

例:某程序------------------

说明部分D……L,……对L说明

语句部分S……

L=3;对L赋值I

M=L+5对L引用R

DDRDDDD

IRRII

RII

正常异常

程序正确性的各种情况

d.程序运行时能通过典型的有效测试数据,得到正确的预期结果。

e.程序运行时能通过典型的无效测试数据,得到正确的结果。

f.程序运行时能通过任何可能给出的数据,给出正确的结果。

2)软件测试:发现程序及前期开发的缺陷

3软件测试的原则

1)在测试工作开始以前,不应设想程序中没有缺陷或找不出缺陷。

(测试心理学)

2)测试以前应预知测试的结果数据。

3)尽可能避免测试自己写的程序。坚持独立测试原则,必要的情况

下建立独立测试机构。

4)测试用例应兼顾有效输入和无效输入。

5)不仅要检验程序是否做了该做的事,还应检验是否做了不该做的

事。

6)测试的充分性。

7)测试的有效性。

8)限于人力、物力,测试工作适可而止。(测试经济学)

9)保留一切测试用例。

10)任何已测程序的变更都应重新进行测试。(回归测试)

软件测试信息流

回归测试

测试计划

测试用例

测试程序

预期结果

测试成本曲线

为什么不可能做穷举测试

<=20次

循环次数012.......20

独立路径数51+52+53+.........+521旬014(1百万亿)

每个测试用例(考虑、执行、验证结果)5分钟

共需测试时间10亿年

为什么不可能做穷举测试

程序P---------Z

若X、Y为所有可能的整数

在字长32位机上

测试Xi、YinZi

Xn、Yn=>Zn

n=232X232=264=1.84xlO19

四、测试策略

1.测试步骤

(集成)

测试与开发前期工作的关系

系统测试

测试查错曲线

7O7O

6O现6O

5O错5O

4O数4O

OO

33

OO

22

OO

11

OO

1234567周1234567周

2、生存期各阶段V、V&T活动

排除隐错的相对成本

25

需求隐错

20-

15

设计隐错

10

编码隐错

5

1

0111

e66e6(t6d

静态分析

软件生存期各阶段的VV&T活动

1.需求分析阶段

a.制定本项目的VV&T计戈I」

b,设置基于需求的测试用例

c.对需求进行评审与分析

d,对用户手册初稿进行评审与分析

2.概要设计阶段

a.修订VV&T计戈I」

b.制定基于设计的测试步骤

c.对概要设计进行评审与分析

3.详细设计阶段

a,设置基于设计的功能测试数据

b,对详细设计进行评审与分析

软件生存期各阶段的VV&T活动

4.程序编写和单元测试

a.完成测试用例说明书

b.进行单元测试

c.进行集成测试

5.安装

a.进行系统测试

b.进行验收测试

6.运行和维护阶段

a.软件评价

b.软件修改评价

c.回归测试

(弓I自美国国家标准局信息处理标准FIPSPUB101)

3、集成测试过程

集成测试过程

(c)

(d)

4、软件验收测试

验收期、保修期和返修期

(>5年)

5、黑盒与白盒测试

特点测试依据方法举例

需求规格

黑盒测试不给程序等价类划分

说明

事出程序

白盒测试程序逻辑覆盖

黑盒测试与白盒测试能够发现的错误

A只能用黑盒测试发现的错误

C只能用白盒测试发现的错误

B用黑盒测试或白盒测试都能发现的错误

D用黑盒测试或白盒测试均无法发现的错误

A+B能用黑盒测试发现的错误

B+C能用白盒测试发现的错误

A+B+C用两种测试能发现的错误

A+B+C+D软件中的全部错误

五、如何正确对待测试工作

1.明确测试工作意义

2.加强责任心,疏忽可能造成恶果

3.学习——实践——钻研,积累经验,

努力提高业务水平

4.处理好与编程人员关系

六、测试工作评估问题

1.你单位是否有专人负责测试工作?

2.你们是否有、是否用测试计划规范?

3.你们是否有、是否用单元计划规范?

4.你们是否有、是否用测试报告规范?

5.测试过程(包括计划和实施)与整人开发过程是否并行开展?

(测试在开发初期着手,在开发结束完成)

6.测试能够确认规格说明得到正确的实现吗?

7.除规格说明以外,你能否确认用户的期望也能满足吗?

8.测试人员能验证开发的阶段(如需求和设计)的精确性和完全性

吗?

9.测试人员向开发人员报告缺陷以期进一步采取措施吗?

10.在制定计划之前测试人员能估计业务风险吗?

测试工作评估问题

11.针对被测软件是否提出了可度量的测试目标?

12.如已提出,它与商业风险有关吗?

13.测试中发现的缺陷是否做了纪录和总结,使其用于改进开发过程

和测试过程?

14.测试人员是否根据以前的工作经验判断可能的缺陷?

15.是否有改进测试过程的办法?

16.你为缺陷命名吗?

17.是否利用缺陷记录、总结和事故数据来评价测试过程的有效性?

18.是否采用度量(如千行代码缺陷数)来计划和评价测试过程?

19.是否已建立了测试人员的培训制度?

20.采用测试工具来支持测试过程吗?

不同等级的测试机构

级状态特点

♦测试依赖于测试人员个人的技巧和创造性

17-把测试工作当作♦对测试人员无指导,无要求

1

20技艺(art)♦测试工作效果不稳定,有时好、有时糟

♦顾客和用户不能靠测试的有效性判断质量

♦有测试过程、规范、标准和测试计划

13-把测试工作当作♦测试计划得不到实施

2

16工艺(craft)♦测试人员只热衷于找缺陷,报告开发人员

♦用户不信任测试过程,只好做验收测试

♦测试过程已被定义,单位但未得到有效执行

执行已确切定义♦测试工作针对规格说明,重视问题的需求

39-12

的测试过程♦测试结束时没有提供表明被测软件能否投入使用的正

式报告

不同等级的测试机构

45-8先进的测试机构♦有明确的测试目标,可优化利用测试资源实现目标

♦重视测试过程薄弱环节的改进

50-4最先进的测试机♦测试工作基于降低风险,测试人员工作有效

构♦测试得到度量,过程得到很好定义

♦缺陷得到记录、分析和总结,且用其改进过程

♦测试成本显著卜降

♦顾客和用户相信测试过程,不依靠验收测试取得满意

产品

七、小结

1.选择测试用例是测试工作的关键

2.测试的有效性不应被忽视

测试后评审其充分性

3.重要的是何时停止测试

4.回归测试一定不可省

软件测试参考资料

1.RichardA.DeMilloetal.,SoftwareTestingand

Evaluation,Benjamin/CummingsPublishing

Company,1987.

2.J.Myers,TheArtofSoftwareTesting,JohnWiley&

Sons,Inc.,1979.

3.BorisBeizer,SoftwareTestingTechniques,2ndEdition,

VanNostrand,1990.

4.IEEETransactionsonSoftwareEngineering.

5.R.S.Pressman,SoftwareEngineering:A

Practitioner^Approach,2ndEdition,McGraw-Hill,

1987.

软件测试参考资料

6.Musa,SoftwareReliability,McGrawHill,1990.

7.WilliamPerry,EffectiveMethodsforSoftwareTesting,

JohnWiley&Sons,Inc.,1995.

8.郑人杰,计算机软件测试技术,清华大学出版社,

1992o

9.MarkFewster&DorothyGraham著,舒智勇等译,

软件测试自动化技术与实例详解,电子工业出版社,

2000.

io.WilliamE.Perry,EffectiveMethodsforSoftware

Testing,SecondEdition,JohnWiley&Sons.2000.

逻辑驱动测试

郑人杰

被测程序段流程图

(A>1)AND(B=O)

[A>1)A(B=OJ

<»NY

X=X/A

(A=2)OR(X>1)

A=2)V(X>1J

N

X=X+1

.、五种逻辑驱动测试

设计若干测试用例,运行被测程序,使之作到:

1)语句覆盖:程序中每一可执行语句至少执行一次

A=2

此4列仅用一个测试用例,

<B=O

ace通常需要多个

X=3

2)判定覆盖:程序中每个判定的取真分支和取假分

支至少执行一次(也称分支覆盖)

A=2A=1

<B=0ace及JB=Oabd

X=3x=i

'A=3

A=2

<B=0acd及B=1abe

、X=3X=1

3)条件覆盖:使程序的判定中每个条件的真假取值

至少满足一^次

例中设条件i一取真表为11取假表为

B=0十2

T2

A=2亍3

T3

、〒纭

ABX经历覆盖分支覆盖条件

203acece%T2T3T4

十十

101abdbdT234

%十十

211abebe2T34

另一例:4分支4条件8取值

ABX经历覆盖分支覆盖条件

103abebeT2T3T4

211abebeT]十2十4

2分支4条件8取值

4)判定/条件覆盖:判定中每个条件的所有可能取值至少满

足一次,每个判定的分支至少执行一次。

上例中需考虑4个条件的8种组合

①A>1,B=O⑤A=2X>1T3T4

②A>1,BRO丁尸2⑥A=2X<1丁3十4

③A01,B=O亍1丁2⑦A'2X>1十3T4

@A<1,B^O十1十2⑧A,2X<1千3十4

ABX覆盖组号经历覆盖条件

203①⑤ace

%T2T3T4

211②⑥ace

T1亍2T3十4

102③⑦abeT2亍3T4

111④⑧abd亍2亍3亍4

(事实上3组已够,第一组冗余)

4)路径覆盖:覆盖程序中所有可能的路径。

ABX覆盖路径

203aceL1

101abdL2

211abeL3

301acdL4

三、实施

初始化Cd)

c⑴=(X1)+1

C(2)=C(2)+1

C(n)=C(n)+1

打印(Xi)

插装程序中插入的语句

因果图方法

、因果图方法概述

1、一种黑盒测试方法

2、方法的依据:

需求规格说明中的因果关系

二、因果图符号

C[=l=>e^l

5=0=>句=0

5=1i=>e^O

5=0i=>e^l

C]=l或C2=l或C3=l

e[=1

否则L=>句=0

C]=l且C2=l

f=>ei=1

否贝4=0

输入条件的约束

*-,/

E约束(异):a,b中至多有一个可能

、、、、_为1即a和b不能同时为1

一Q

二二二二___I约束(或):a,b和c中至少有一个

通必须是1,即a、b和c不能同时为0

0约束(唯一):a和b中必须有一个

0<、

©且仅有一个为1

Q

R约束(要求):a是1时,b必须是1

即不可能a是1时b为0

输出条件的约束

M约束(强制):若结果a是1时,

则结果b强制为0

三、因果图方法举例

某程序要求:

第一列字符必须是A或B,第二列字符必须是

一个数字,在此情况下对文件进行修改。但第一

列字符不正确,则给出信息L;若第二列字符不

是一个数字,则给出信息M。

〔分析]

原因结果

1——第一列字符是A21-----修改文件

2——第一列字符是B22——给出信息L

3——第二列字符是一个数字23——给出信息M

因果图

323

〔解)判定表和测试用例

12345678

条©11110000

件©11001100

Z~\

原©10101010

111100

000011

(101000

果010101

)

测试A3AMB5BNC2DY

用例A8A?B4B!X6D;

测试工具

一、软件测试工具概述

在IS09000-3实施指南中的4.11节有关于“检

验、测量实验设备的控制”的要求(原文是

Controlofinspection,measuringandtestequipment)。

应如何理解这一节的要求?

我们知道,在传统的制造业中计量设备、化

验设备在生产过程中对质量控制是至关重要的。

如果千分尺、天平、实验炉的温度计不准,它所

引起的后果可想而知。因此必须规定对这些设备

的控制、校准和维修的办法,并建立文件化程序。

对于软件企业呢,这里应该指的是软件测试

工具的控制。

1、什么是软件测试工具?

——软件测试是软件开发的重要阶段,往往投入

成本的40-60%。

——软件测试工具是一种测试软件,开发人员借

助它来提高软件测试工作的效率。

——目前国内软件企业采用软件测试工具还不够

2、软件测试工具的分类

①按工作方式分:

——静态分析工具

——动态测试工具

②按工具功能分:

—测试计划工具:支持制订测试计划

——测试设计与开发工具:支持测试数据生成,测试问题的

捕捉与重演

——测试执行工具:支持特定的测试方法、支持回归测试

——测试评价工具:报告测试覆盖情况

——测试管理工具:协助进行测试的组织工作

——其它辅助工具:如数据比较、模拟运行

3、如何控制

①自行开发的测试工具待成熟才可投入使用

②采购产品的选择:优秀的、名牌的

③使用前充分检测

4、参考:

《计算机软件测试技术》郑人杰

清华大学出版社1992.12第七章

二、几类软件测试工具简介

1、评审与检查用工具Toolsforreviewsandinspections

①复杂度分析工具Complexanalysis

•程序复杂性度量:McCabe程序环路度量

Halstead程序工作量度量

・程序复杂度给测试人员启示,如何掌握测试工作投入

量即复杂性大的程序部分要投入更大的测试工作量,

同时也必须投入更夫的成本和足够的测试时间(Cost

schedule)

②代码理解工具Codecomprehension

•帮助理解程序:依赖关系、程序逻辑、程序图形表示、

识别死代码段,从而提醒我们,哪些程序需作重点检

查。

,通常代码检查(inspection)会花很多时间准备,该工

具能帮助进行分析、理解和实施逆向工程(reverse

engineering)o

③语法和语义分析工具SyntaxandSemanticanalysis

•该工具能深入地查找出编译系统查不出的错误

,与语言相关,(如C语言,Fortran,........)

也还有依据方言开发的

•将发现的错误列出表格

2、5则试计戈工具ToolsforTestplanning

•制订测试计划的目的在于确定测试活动的范围、方法、

资源(包括工具)以及进程。测试计划给出了整个测

试活动的依据。

,IEEE/ANSIStandardfbrSoftwareTestDocumentation

(Std.829-1983)给出了测试计划的目的、大纲和内容,

还在附录中给出商业数据处理的例子。

・有的工具帮助决定为实现充分测试所需的人员和进度。

这要比人主观计划更为客观。

・类型:

——测试计划文档样本

——测试进程和人员配备统计

——复杂性分析器

•评审和检查的工具对测试计划的制订有用。

例如,识别出复杂程序,就应加强测试和额外的测试。

3、测试,殳计与开发工具ToolsforTestDesign&Development

•测试设计----针对软件的特征(features)将测试计划

描述测试方法(approach)详细化的过程

•测试开发是将测试设计转换成特征的测试用例过程。

•类型:

----测试数据生成TestDataGenerator

——基于需求的测试设计工具

Requirement-basedTestDesign

(这类工具尚未流行,例如,因果图方法)

----返回捕捉capture/playback

----覆盖分析

4、测试执行与评价工具TestExecution&Evaluation

・任务是执行测试用例及评价测试结果。包括:

——选择执行的测试用例

——建立测试环境

——执行选定的测试

------1己录执行活动

——分析产品可能的失效

——度量测试工作的效率

•类型

------Capture/Playback

----覆盖分析

----存储测试memorytesting

----模拟和执行Simulator&Performance

,Capture/Playback

•覆盖分析

——覆盖分析工具是测试质量定量度量的手段。他告

诉我们测试的程度。那些部分测试过,那些部分

尚未测试到需要进一步测试。它对所有的测试机

构都是重要的。

——最常用的仍然是语句覆盖和判定覆盖两种。

——有的开发机构规定了覆盖率至少要达到某个值。

,存储测试MemoryTesting

----又称bounds-checker,memorytester,run-time,error

detector,或泄露探察器leakdetectoro

——功能的探察:

存储问题

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论