软件测试软件测试导论(课堂PPT)_第1页
软件测试软件测试导论(课堂PPT)_第2页
软件测试软件测试导论(课堂PPT)_第3页
软件测试软件测试导论(课堂PPT)_第4页
软件测试软件测试导论(课堂PPT)_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

1、1软件测试第一章第一章 软件测试导论软件测试导论第二章第二章 软件测试技术软件测试技术第三章第三章 软件测试用例的设计方法软件测试用例的设计方法第四章第四章 软件测试的过程方法软件测试的过程方法21.1 1.1 软件测试的基本概念软件测试的基本概念1.2 1.2 软件测试的依据与人员组织软件测试的依据与人员组织1.3 1.3 软件测试的生命周期与模型软件测试的生命周期与模型1.4 1.4 软件测试计划及其相关文档软件测试计划及其相关文档第一章第一章 软件测试导论软件测试导论31.1.11.1.1 软件测试的定义软件测试的定义1.1.2 1.1.2 软件测试的必要性软件测试的必要性1.1.3 1

2、.1.3 软件缺陷软件缺陷1.1.4 1.1.4 软件测试的原则软件测试的原则1.1.5 1.1.5 软件测试的误区软件测试的误区1.1.6 1.1.6 软件测试与软件质量保证的关系软件测试与软件质量保证的关系1.1.7 1.1.7 软件测试技术的发展软件测试技术的发展1.11.1 软件测试的基本概念软件测试的基本概念4 软件质量是软件的生命软件质量是软件的生命。为了保证软件的质为了保证软件的质量,人们在长期的量,人们在长期的软件软件开发过程中积累了许多开发过程中积累了许多经验经验,形成了许多有效的方法形成了许多有效的方法(技术的和管理(技术的和管理的)的)。但是借助这些方法,只能减少软件中的

3、。但是借助这些方法,只能减少软件中的错误和不足,但不能完全避免错误。错误和不足,但不能完全避免错误。技术:软件开发技术,技术:软件开发技术, 软件测试属于技术软件测试属于技术管理:软件项目管理管理:软件项目管理软件产品特点软件产品特点:无形性、逻辑性、复杂性,无形性、逻辑性、复杂性,一般产品质量通过参数确定,软件产品?一般产品质量通过参数确定,软件产品? 1.11.1 软件测试的基本概念软件测试的基本概念51. 1. 什么是软件测试什么是软件测试 软件测试就是在软件投入运行前,对软件软件测试就是在软件投入运行前,对软件需求分析、架构设计和编码实现的需求分析、架构设计和编码实现的最终最终复审,复

4、审,是软件质量保证的关键。对软件测试的定义很是软件质量保证的关键。对软件测试的定义很多,但一般可描述如下:多,但一般可描述如下: 软件测试是根据软件开发各阶段的规格说软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一组测试用例,明和程序的内部结构而精心设计一组测试用例,利用测试用例去运行程序,以发现程序错误的利用测试用例去运行程序,以发现程序错误的过程。简言之,软件测试是为了发现错误而执过程。简言之,软件测试是为了发现错误而执行程序的过程。行程序的过程。1.1.11.1.1 软件测试的定义软件测试的定义61. 1. 什么是软件测试什么是软件测试 目前,根据侧重点的不同,主要有以

5、下三种观点:p 1983年IEEE将软件测试定义为:“使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。明确地提出了软件测试是以检验软件是否满足需求为目的。p Myers认为:“是为了发现错误而执行程序的过程”。明确提出软件测试是以对软件“寻找错误”为目的。p 多数软件开发商认为:软件测试是一种重要的软件质量保证活动,其动机是通过一些经济、高效的方法,捕捉软件中的错误,保证软件内在质量。明确提出软件测试是以保证软件内在质量。1.1.11.1.1 软件测试的定义软件测试的定义72.2.软件测试与软件调试的区别软件测试与软件调试的区

6、别u概念不同:软件测试是一个在可控环境中执概念不同:软件测试是一个在可控环境中执行软件的过程,以验证是否按预期运行。软行软件的过程,以验证是否按预期运行。软件调试是一个分析和定位软件件调试是一个分析和定位软件BUGBUG的过程。的过程。u作用不同:调试是测试的一个基础,调试支作用不同:调试是测试的一个基础,调试支持测试,但不能完全替代测试。持测试,但不能完全替代测试。u目的不同:调试使软件能正确运行,而测试目的不同:调试使软件能正确运行,而测试是发现软件中的错误。是发现软件中的错误。u对象不同:调试的对象是代码,测试的对象对象不同:调试的对象是代码,测试的对象是开发过程中的所有的产品。是开发过

7、程中的所有的产品。1.1.11.1.1 软件测试的定义软件测试的定义83. 3. 软件测试的目的软件测试的目的 基于不同的立场,存在两种完全不同的测试目的。基于不同的立场,存在两种完全不同的测试目的。从用户的角度,希望通过软件测试暴露软件中隐藏从用户的角度,希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否接受该产品。的错误和缺陷,以考虑是否接受该产品。从开发者的角度,希望通过软件测试表明软件产品从开发者的角度,希望通过软件测试表明软件产品中不存在错误,验证软件已正确地实现了用户的要中不存在错误,验证软件已正确地实现了用户的要求,确立对软件质量的信心。求,确立对软件质量的信心。综合明来,测

8、试的目的是通过对软件错误的原因和综合明来,测试的目的是通过对软件错误的原因和分布进行归纳,来发现并排除软件产品的缺陷,对分布进行归纳,来发现并排除软件产品的缺陷,对在需求和设计过程中存在的问题查缺补漏,确保软在需求和设计过程中存在的问题查缺补漏,确保软件产品的质量。件产品的质量。 1.1.11.1.1 软件测试的定义软件测试的定义94. 4. 软件测试的基本职责软件测试的基本职责 软件测试有两个基本职责:软件测试有两个基本职责: 一是验证一是验证:前后阶段的需求是否一致前后阶段的需求是否一致。即。即正向思维正向思维,所有特性功能通过,达到预期。,所有特性功能通过,达到预期。 二是二是确认确认:

9、满足最终需求。满足最终需求。即反向思维即反向思维,存在错误而尽力发现错误,直到找不到错误存在错误而尽力发现错误,直到找不到错误1.1.11.1.1 软件测试的定义软件测试的定义101. 1. 为什么要进行软件测试为什么要进行软件测试软件由人开发,人会犯错误软件由人开发,人会犯错误软件(程软件(程序序+ +数据数据+ +文档)都有缺陷。文档)都有缺陷。无法避免人犯错,但是可以通过努力寻找隐无法避免人犯错,但是可以通过努力寻找隐藏在软件中的缺陷。藏在软件中的缺陷。 多、快、好、省多、快、好、省提高软件质量。提高软件质量。1.1.2 1.1.2 软件测试的必要性软件测试的必要性11用户所说的需求分析

10、人员理解的系统需求规格说明书开发人员理解的实际软件人不是完美的,在设计和实现时会出错 信息传递的误差1.1.2 1.1.2 软件测试的必要性软件测试的必要性1. 1. 为什么要进行软件测试为什么要进行软件测试12工程硕士12没有软件工程和项目管理概念下,软件开发现象1.1.2 软件测试的必要性132. 2. 软件缺陷案例软件缺陷案例 软件缺陷将造成灾难性危害或对用户产生巨大的影响。软件缺陷将造成灾难性危害或对用户产生巨大的影响。u 2003 2003年,软件问题造成美国东部及加拿大停电,导致年,软件问题造成美国东部及加拿大停电,导致50005000万人受影响,万人受影响,3 3人丧生,人丧生,

11、6060亿美元的损失。亿美元的损失。u 2000 2000年,美国海军飞机控制软件问题导致飞机坠落,年,美国海军飞机控制软件问题导致飞机坠落,4 4人人丧生。丧生。u 1997 1997年韩国空难,导致年韩国空难,导致225225人丧生(雷达控制软件问题)人丧生(雷达控制软件问题)u 2004 2004年,北美银行已新安装的软件的缺陷,使数以百万年,北美银行已新安装的软件的缺陷,使数以百万计的客户受影响,缺陷修复花费两个星期,造成亿元损失。计的客户受影响,缺陷修复花费两个星期,造成亿元损失。u 2003 2003年,美国专门为学生贷款的公司由于软件出错,错年,美国专门为学生贷款的公司由于软件出

12、错,错误计算误计算8080万学生的贷款利率,导致万学生的贷款利率,导致800800万元的损失万元的损失1.1.2 1.1.2 软件测试的必要性软件测试的必要性143. 3. 软件测试是软件开发的重要环节软件测试是软件开发的重要环节4. 4. 软件测试软件测试是保证软件质量的主要手段。是保证软件质量的主要手段。 1.1.2 1.1.2 软件测试的必要性软件测试的必要性151.1.31.1.3 软件缺陷软件缺陷1 1软件缺陷的定义软件缺陷的定义u 软件缺陷(软件缺陷(bugbug)的定义很多)的定义很多,综合说来是程序综合说来是程序中存在破坏软件正常运行的问题、错误或瑕疵,导致中存在破坏软件正常运

13、行的问题、错误或瑕疵,导致软件产品在某种程度上不能满足用户的需要。软件产品在某种程度上不能满足用户的需要。u 软件缺陷是指软件产品中所存在的导致不能完全软件缺陷是指软件产品中所存在的导致不能完全满足用户需求的错误。满足用户需求的错误。u 按按IEEE 729IEEE 729标准,软件缺陷的含义有标准,软件缺陷的含义有2 2个方面:个方面: 软件产品的内部:软件缺陷是软件产品开发软件产品的内部:软件缺陷是软件产品开发或维护过程中所存在的错误、瑕疵等。或维护过程中所存在的错误、瑕疵等。 软件产品的外部:软件缺陷是软件所需要实软件产品的外部:软件缺陷是软件所需要实现的某种功能的失效或违背。现的某种功

14、能的失效或违背。162. 2. 软件缺陷外部表现的判断规则软件缺陷外部表现的判断规则u 软件未实现产品说明书要求的功能。软件未实现产品说明书要求的功能。u 软件出现产品说明书指明不会出现的错误。软件出现产品说明书指明不会出现的错误。u 软件实现软件实现超出超出产品说明书提到的功能。产品说明书提到的功能。u 软件未实现产品说明书虽未明确指出但应该实现软件未实现产品说明书虽未明确指出但应该实现的的功能功能。 u 软件难以理解,不易使用,运行缓慢或用户认为软件难以理解,不易使用,运行缓慢或用户认为不好。不好。 第条规则是全面的。如果软件测试员发现某些第条规则是全面的。如果软件测试员发现某些地方不对劲

15、,无论什么原因,都可认为是缺陷。地方不对劲,无论什么原因,都可认为是缺陷。1.1.3 1.1.3 软件缺陷软件缺陷17 以计算器为例说明判断规则。以计算器为例说明判断规则。 若产品说明书声称能够准确无误地进行加、减、乘、除运算,当你按下若产品说明书声称能够准确无误地进行加、减、乘、除运算,当你按下()键,结果什么反应也没有;根据第条规则,是一个缺陷。假如得到()键,结果什么反应也没有;根据第条规则,是一个缺陷。假如得到错误答案;根据第条规则,同样是一个缺陷。错误答案;根据第条规则,同样是一个缺陷。 若产品说明书声称永远不会崩溃、锁死或者停止反应,当你任意敲键盘若产品说明书声称永远不会崩溃、锁死

16、或者停止反应,当你任意敲键盘,计算器停止接受输入。根据第条规则,是一个缺陷。,计算器停止接受输入。根据第条规则,是一个缺陷。 若在测试计算器过程中,发现除了加、减、乘、除之外它还可以求平方若在测试计算器过程中,发现除了加、减、乘、除之外它还可以求平方根,而产品说明书中没提到该功能。根据第条规则,是一个缺陷。根,而产品说明书中没提到该功能。根据第条规则,是一个缺陷。 若在测试计算器过程中,发现电池电量很少时,会导致计算不正确,但若在测试计算器过程中,发现电池电量很少时,会导致计算不正确,但产品说明书未指出该问题。根据第条规则,是一个缺陷。产品说明书未指出该问题。根据第条规则,是一个缺陷。 若若“

17、”键布置的位置使其极不好按,或在明亮光下显示屏难以看清键布置的位置使其极不好按,或在明亮光下显示屏难以看清。根据第条规则,是一个缺陷。根据第条规则,是一个缺陷。 1.1.3 1.1.3 软件缺陷软件缺陷183 3软件缺陷的种类软件缺陷的种类 从功能表现形式分,软件缺陷有三种类型:从功能表现形式分,软件缺陷有三种类型:l 完全没有实现的功能。例如用户要求实现完全没有实现的功能。例如用户要求实现A A、B B、C C三个功能,但是三个功能,但是软件软件只实现了只实现了A A、B B两个功能两个功能。l 基本实现了用户需求的功能,运行时出现功能或基本实现了用户需求的功能,运行时出现功能或性能上的问题

18、。例如满足软件要求,但运行经常报性能上的问题。例如满足软件要求,但运行经常报错、死机,响应时间要求为错、死机,响应时间要求为5 5秒,实际为秒,实际为1010秒。秒。l 实现了用户不需要的功能。例如用户要求实现实现了用户不需要的功能。例如用户要求实现A A、B B、C C三个功能,实际实现了三个功能,实际实现了A A、B B、C C、D D四个功能四个功能。1.1.3 1.1.3 软件缺陷软件缺陷19 还表现在其他方面。如:特性没有实现或部分还表现在其他方面。如:特性没有实现或部分实现;设计不合理;实际结果和预期结果不一致;实现;设计不合理;实际结果和预期结果不一致;运行出错运行出错( (运行

19、中断、系统崩溃、界面混乱运行中断、系统崩溃、界面混乱) );数据;数据结果不正确、精度不够;用户不能接受的其他问题结果不正确、精度不够;用户不能接受的其他问题( (存取时间过长、界面不美观存取时间过长、界面不美观) )。1.1.3 1.1.3 软件缺陷软件缺陷204 4软件缺陷的级别软件缺陷的级别 软件测试员发现的大多数缺陷是难以觉察软件测试员发现的大多数缺陷是难以觉察的简单错误的简单错误,不明显不明显,也不严重;且有些是真正也不严重;且有些是真正的错误,有些不是。一般来说,问题越严重的的错误,有些不是。一般来说,问题越严重的错错误误,优先级越高,越应得到及时纠正。软件公司,优先级越高,越应得

20、到及时纠正。软件公司对缺陷后果的严重程度的定义不尽相同,但一般对缺陷后果的严重程度的定义不尽相同,但一般可以分为可以分为4 4种级别:种级别:1.1.3 1.1.3 软件缺陷软件缺陷214 4软件缺陷的级别软件缺陷的级别l 致命的:指造成系统或应用程序崩溃、死机、悬挂,致命的:指造成系统或应用程序崩溃、死机、悬挂,或造成数据丢失、主要功能完全失效等。或造成数据丢失、主要功能完全失效等。l 严重的:指功能或特性没有实现,主要功能部分丧严重的:指功能或特性没有实现,主要功能部分丧失,次要功能完全丧失,或致命的错误声明。失,次要功能完全丧失,或致命的错误声明。l 一般的:指虽然不影响系统的基本使用,

21、但没有很一般的:指虽然不影响系统的基本使用,但没有很好实现功能,没有达到预期效果。如次要功能丧失,提好实现功能,没有达到预期效果。如次要功能丧失,提示信息不太准确,用户界面差,操作时间长等。示信息不太准确,用户界面差,操作时间长等。l 微小的:微小的:指指对功能几乎没有影响,产品及属性仍可对功能几乎没有影响,产品及属性仍可使用,如有个别错别字、文字排列不整齐等。使用,如有个别错别字、文字排列不整齐等。u 除了这除了这4 4种之外,有时需要种之外,有时需要“建议建议”级别来处理测试人员所提出的建议或质级别来处理测试人员所提出的建议或质疑,如建议程序做适当的修改,来改善程序运行状态,或对设计不合理

22、、不明白疑,如建议程序做适当的修改,来改善程序运行状态,或对设计不合理、不明白的地方提出质疑。的地方提出质疑。 1.1.3 1.1.3 软件缺陷软件缺陷22l轻微: 词语拼写错误l中等: 误导或重复信息l使人不悦: 被截断的信息,0.00¥帐单l影响使用: 有些交易没有处理l严重: 丢失交易l非常严重: 不正确的交易处理l极为严重: 经常出现“非常严重”的错误l无法忍受: 数据库破坏l灾难性: 系统停机l容易传染: 扩展到其他系统的系统停机缺陷类型具体可参见软件异常IEEE标准分类(IEEE,1993)1.1.3 1.1.3 软件缺陷软件缺陷235. 5. 软件缺陷的状态软件缺陷的状态 为便于

23、跟踪和管理软件的缺陷,可以定义不同的为便于跟踪和管理软件的缺陷,可以定义不同的状态。软件缺陷的状态一般有状态。软件缺陷的状态一般有3 3种:种:l 激活状态:问题还没有解决,测试人员新报的激活状态:问题还没有解决,测试人员新报的bugbug,或验证后,或验证后bugbug仍然存在。仍然存在。l 已修正状态:开发人员针对所存在的缺陷,修改已修正状态:开发人员针对所存在的缺陷,修改程序,认为问题已解决,或通过单元测试。程序,认为问题已解决,或通过单元测试。l 关闭或非激活状态:测试人员验证已经修正的关闭或非激活状态:测试人员验证已经修正的bugbug后,确认后,确认bugbug不存在后的状态。不存

24、在后的状态。 1.1.3 1.1.3 软件缺陷软件缺陷246 6软件缺陷产生的原由软件缺陷产生的原由 造成软件缺陷的原由归纳起来有造成软件缺陷的原由归纳起来有3 3个方面:个方面:l 技术问题技术问题 算法错误。算法错误。 语法错误。语法错误。 计算方法与精度要求不匹配或取值精度不够。计算方法与精度要求不匹配或取值精度不够。 结构不合理。结构不合理。 接口参数不匹配。接口参数不匹配。 1.1.3 1.1.3 软件缺陷软件缺陷25l 团队工作问题团队工作问题 与用户的沟通不够,对需求不是十分清楚。与用户的沟通不够,对需求不是十分清楚。 不同阶段的开发人员对同一问题理解不一致。不同阶段的开发人员对

25、同一问题理解不一致。 设计或编程上的假定或依赖性沟通不充分。设计或编程上的假定或依赖性沟通不充分。l 软件本身问题软件本身问题 文档错误、内容不正确或拼写错误文档错误、内容不正确或拼写错误。 数据考虑不周全,引起强度或负载不合理。数据考虑不周全,引起强度或负载不合理。 对边界考虑不周全,如漏掉几个边界条件。对边界考虑不周全,如漏掉几个边界条件。 实时软件的同步不精确,引起时间不协调、不一致实时软件的同步不精确,引起时间不协调、不一致 没有考虑系统崩溃后在安全性、可靠性的隐患。没有考虑系统崩溃后在安全性、可靠性的隐患。 硬件或系统软件上存在的错误。硬件或系统软件上存在的错误。 软件开发标准或过程

26、上的错误。软件开发标准或过程上的错误。 1.1.3 1.1.3 软件缺陷软件缺陷267 7软件缺陷的构成软件缺陷的构成 从按软件开发过程来看,不同阶段的工作从按软件开发过程来看,不同阶段的工作,导致软件缺陷的差异性很大,如图所示。需,导致软件缺陷的差异性很大,如图所示。需求分析是软件缺陷出现最多的阶段。求分析是软件缺陷出现最多的阶段。图1-1 软件缺陷构成示意图1.1.3 1.1.3 软件缺陷软件缺陷27 缺陷放大模型 因此因此,从需求开始,从需求开始,则制定测试计划,则制定测试计划,坚持软件坚持软件开发的阶段性技术评审,才能在开发过程中尽早发现开发的阶段性技术评审,才能在开发过程中尽早发现和

27、预防错误,把出现的错误克服在早期,杜绝隐患,和预防错误,把出现的错误克服在早期,杜绝隐患,提高软件质量。提高软件质量。1. 1. 尽早不断地进行软件测试尽早不断地进行软件测试 IBMIBM的研究结果表明,缺陷存在放大趋势。从图的研究结果表明,缺陷存在放大趋势。从图可可见,问题发现越早,解决问题的代价就越小,这是软见,问题发现越早,解决问题的代价就越小,这是软件开发过程中的黄金法则。件开发过程中的黄金法则。1.1.41.1.4 软件测试的原则软件测试的原则282. 2. 不可能完全测试不可能完全测试 对程序完全测试则意味着在测试结束之后,不会对程序完全测试则意味着在测试结束之后,不会再发现软件错

28、误。但这是不可能的,主要原因有以下再发现软件错误。但这是不可能的,主要原因有以下几点:几点: 不可能对程序所有可能输入的响应进行测试。不可能对程序所有可能输入的响应进行测试。 不可能对程序所有可能执行的路径进行测试。不可能对程序所有可能执行的路径进行测试。 无法找出所有的设计错误。无法找出所有的设计错误。 不能采用逻辑来证明程序的正确性。不能采用逻辑来证明程序的正确性。1.1.41.1.4 软件测试的原则软件测试的原则29如果测试一个计算器程序的功能,需要进行多少次输入?不计其数!l 整型: 从 1+1 到 999999999999999999999999999999+ 99999999999

29、9999999999999999999l 小数:1.0+0.1,1.0+0.2等等l 键盘上的任何一种组合l 乘法和除法运算重复上面的操作测 试 时 间测 试 范 围可 用 资 源系 统 测 试集 成 测 试单 元 测 试单 元 测 试1.1.41.1.4 软件测试的原则软件测试的原则30 由小到大是指软由小到大是指软件测试的粒度。即多件测试的粒度。即多个单元组合过渡到集个单元组合过渡到集成测试,集成测试过成测试,集成测试过渡到系统测试渡到系统测试。虚线虚线是测试阶段的发布基是测试阶段的发布基线线,随着测试的逐步随着测试的逐步深入,范围的逐步扩深入,范围的逐步扩大,测试时间、可用大,测试时间、

30、可用资源也随之增大。资源也随之增大。3. 3. 由小到大增量测试由小到大增量测试测试过程关系图测试过程关系图1.1.41.1.4 软件测试的原则软件测试的原则314.4.避免程序员测试自己的程序避免程序员测试自己的程序 程序员不会轻易承认自己的程序有错误。程序员不会轻易承认自己的程序有错误。 程序员的测试思路有局限性,测试时容易受到编程程序员的测试思路有局限性,测试时容易受到编程思路的影响。思路的影响。 多数程序员没有严格正规的职业训练,缺乏专业测多数程序员没有严格正规的职业训练,缺乏专业测试人员的意识。试人员的意识。 程序员没有养成错误跟踪和回归测试的习惯。程序员没有养成错误跟踪和回归测试的

31、习惯。 由别人测试,会更客观,更有效。由别人测试,会更客观,更有效。 1.1.41.1.4 软件测试的原则软件测试的原则325. 5. 设计周密的测试用例。设计周密的测试用例。 测试用例是测试工作的测试用例是测试工作的核心核心,只有设计,只有设计周密细致的测试用例,才能保证测试工作的周密细致的测试用例,才能保证测试工作的质量。质量。 1.1.41.1.4 软件测试的原则软件测试的原则336. 6. 注意错误集中的现象注意错误集中的现象 对错误群集的程序段进行重点测试,以提高对错误群集的程序段进行重点测试,以提高测试投资的效益。测试投资的效益。 软件缺陷的软件缺陷的“扎堆扎堆”现象的常见形式:现

32、象的常见形式:对话框的某个控件功能不起作用,其他控件的功对话框的某个控件功能不起作用,其他控件的功能也可能不起作用。能也可能不起作用。 某个文本框不能正确显示双字节字符,其他文本某个文本框不能正确显示双字节字符,其他文本框也可能不支持双字节字符。框也可能不支持双字节字符。安装文件某个对话框的安装文件某个对话框的“上一步上一步”或或“下一步下一步”按钮被截断,在其他对话框中这两个按钮也可能按钮被截断,在其他对话框中这两个按钮也可能被截断。被截断。1.1.41.1.4 软件测试的原则软件测试的原则34 7. BUG7. BUG有效性确认有效性确认 有时测试人员提交的有时测试人员提交的BUGBUG并

33、不是真正的并不是真正的BUGBUG,无效,无效BUGBUG的来源如图所示。一般由的来源如图所示。一般由A A测试测试人员发现的人员发现的BUGBUG,一定要由,一定要由B B测试人员进行确认,测试人员进行确认,如果发现严重的如果发现严重的BUGBUG可以召开评审会进行讨论可以召开评审会进行讨论和分析。和分析。1.1.41.1.4 软件测试的原则软件测试的原则35ABABCABCDEF基本结构(a)(b)(c)单纯依赖多重依赖复合依赖无效BUG来源构成图1.1.41.1.4 软件测试的原则软件测试的原则36 8. 合理安排测试计划 合理的测试计划有助于测试工作顺利有序地进行。 测试计划应结合多种

34、针对性强的测试方法,列出所有可使用资源,建立一个正确的测试目标。要有明确规定,不要随意解释。 本着严谨、准确的原则,周到细致地做好测试前期的准备工作,避免测试的随意性。尤其是要尽量科学合理地安排测试时间。 严格执行测试计划,排除测试的随意性。 妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。,1.1.41.1.4 软件测试的原则软件测试的原则37NoImage错误依赖关系9. 9. 回归测试回归测试 错误之间存在简单的依赖或复杂的多重依赖关系。(a)图中:A错误依赖于B错误的关闭而关闭;(b)图中:A错误依赖于B错误和C错误的同时关闭而关闭;(c)图是(a)和(b)的复合方

35、式。程序中的错误存在着一对多、多对多的复杂关系而变得难以处理,且有些依赖关系处于隐性状态。 1.1.41.1.4 软件测试的原则软件测试的原则38 10. 10. 测试结果的统计和分析测试结果的统计和分析l 只有对测试输出信息进行深入地统计、只有对测试输出信息进行深入地统计、分析和比较,才能正确的鉴别测试输出的数分析和比较,才能正确的鉴别测试输出的数据,给出清晰的错误分析报告。当输出的信据,给出清晰的错误分析报告。当输出的信息很庞大时,可以借助专业的测试工具。息很庞大时,可以借助专业的测试工具。1.1.41.1.4 软件测试的原则软件测试的原则39 11.11.及时更新测试及时更新测试 导致测

36、试失败的原因有很多,一般有如下几点:导致测试失败的原因有很多,一般有如下几点: 1 1、测试团队管理者失职;、测试团队管理者失职; 2 2、测试团队中沟通不好;、测试团队中沟通不好; 3 3、测试团队和项目团队沟通不良;、测试团队和项目团队沟通不良; 4 4、测试过程中,执行角色无准确定义;、测试过程中,执行角色无准确定义; 5 5、测试团队缺乏良好的培训。、测试团队缺乏良好的培训。 1.1.41.1.4 软件测试的原则软件测试的原则40 误区1 调试和测试是一样的 误区2 软件测试在软件开发过程中并不重要 误区3 在软件开发结束之后进行测试 误区4 过分依赖Beta测试 误区5 过分依赖自动

37、化测试 误区6 测试是可穷尽的 误区7 测试是证明软件的正确性 误区8 可以忽略测试的设计 1.1.51.1.5 软件软件测试的测试的误区误区4141SQA (Software Quality Assurance) :为确保软件开发过程和结果符合预期要求而建立的一系列规程,以及依照规程和计划采取的一系列活动及其结果评价。面向管理层,提供正确的信息,工作的对象是产品;促进和协调过程改进;预防问题。软件测试:使用人工或者自动手段来运行或测定某个系统的过程,检验其是否满足规定的需求或判定预期结果与实际结果之间的差别。工作的对象是开发的软件,寻找缺陷;强调书写正式的测试文档,实现可重复的结构化软件测试

38、;发现问题。1.1.6 1.1.6 软件测试与质量保证的关系软件测试与质量保证的关系42 软件=程序+数据+文档+服务软件质量:系统、组件或过程满足明确的需求。 -IEEE Standard Glossary of Software Engineering Technology软件测试:挑毛病,发现Bug(缺陷)。软件测试是软件质量保证的手段。1.1.6 1.1.6 软件测试与质量保证的关系软件测试与质量保证的关系43 1 1软件测试技术的发展历史软件测试技术的发展历史 起步阶段(19571971)-验证为导向 在软件发展初期,就实施软件测试,但不是真正意义的软件测试,更多是调试。直到1957

39、年,随着高级语言诞生,程序复杂性远超过以前,软件测试才与软件调试区别开来。但测试没有计划和方法,测试用例的设计和选取凭经验随机的,测试目的是证明软件可以正常运行。另外,由于软件仍处于次要位置,测试理论和方法的发展比较缓慢,软件正确性的把握仍然主要依赖于编程人员的技术水平。1.1.7 软件测试技术的发展软件测试技术的发展44 1 1软件测试技术的发展历史软件测试技术的发展历史 初级阶段(19721982)-确认为导向 软件技术的成熟和完善,软件测试规模和复杂度加大,软件测试逐渐形成一套体系并走向规范。随着计算机处理速度的提高、存储容量的增加,软件变得越来越重要。随着软件开发技术的成熟和完善,软件

40、规模越来越大,复杂度增加,软件的可靠性面临着前所未有的危机,主动寻找缺陷给软件测试带来新的挑战,也造就了一批批出色的测试人才。1.1.7 软件测试技术的发展软件测试技术的发展45 1 1软件测试技术的发展历史软件测试技术的发展历史 发展阶段(1983198?)-质量为导向 在软件产业化发展的趋势下,人们对软件质量、成本和进度的要求越来越高,质量控制已不是传统的软件测试(执行测试)-基于代码运行且是软件开发的后期进行的。大量研究表明,设计阶段引入的错误占所有错误数量的50%65%,规范软件开发过程是质量控制的基础。在整个软件开发过程中,测试不再仅是基于程序代码的开发活动,而是基于整个软件生命周期

41、的质量控制活动,贯穿于软件开发全过程。 1.1.7 软件测试技术的发展软件测试技术的发展46 1 1软件测试技术的发展历史软件测试技术的发展历史 成熟阶段(198?现在)-预防为导向 1.1.7 软件测试技术的发展软件测试技术的发展472 2软件测试的现状软件测试的现状国外现状软件测试在软件公司中占有重要地位软件测试理论研究蓬勃发展,每年举办各种各样的测试技术年会,发表了大量的软件测试研究论文,引领软件测试理论研究的国际潮流软件测试市场繁荣国内现状我国软件测试起步于“六五”期间(90),目前国家863、973以及大力支持软件测试的研究1990年,成立中国软件评测中心,测试服务开始发展软件测试正

42、在逐步成为一个新兴的产业国家确定“软件评测师”的职业资格认证;“以测代评”正成为我国科技项目择优支持的一项重要举措;第三方测试机构繁荣发展1.1.7 软件测试技术的发展软件测试技术的发展48 与一些发达国家相比,国内测试工作还存在一定的差距。在我国,软件测试可能算不上一个真正的产业,软件开发企业对软件测试认识淡薄,软件测试人员与软件开发人员比例失调,而在发达国家和地区软件测试已经成了一个产业。 但在软件测试实现方面并不比国外差,国际上优秀的测试工具,我们基本都有,这些工具所体现的思想我们也有深刻的理解,很多大型系统在国内都得到了很好的测试。1.1.7 软件测试技术的发展软件测试技术的发展491

43、.2 1.2 软件测试的依据与人员组织软件测试的依据与人员组织1.2.1 软件测试的依据1.2.2 软件测试人员职责分配1.2.3 软件测试人员必需的素质 1.2.4 软件测试的经验50501. 软件质量标准ISO9000-3软件质量标准:考虑软件行业的特殊性制定,是ISO质量管理和质量保证标准在软件开发、供应和维护中的使用指南。核心内容包括:合同评审需求规格说明开发计划质量计划设计和实现测试和确认验收复制、交付和安装维护1.2.11.2.1 软件软件测试的依据测试的依据51512. 2. 软件测试规范软件测试规范软件测试规范就是对软件测试的流程过程化并对每一个过程元素进行明确的界定,形成完整

44、的规范体系,包括:规范目的、范围、文档结构、词汇表、参考信息、可追溯性、方针、过程/规范、指南、模板、检查表、培训、工具、参考资料等等。1.2.11.2.1 软件软件测试的依据测试的依据52523. 软件测试国家标准GB/T9386-1988 计算机软件测试文件编制规范GB/T15532-1995 计算机软件单元测试规范GB/T17544-1998信息技术软件包质量要求和测试GB/T16260.1-2003软件工程产品质量第1部分质量模型GB/T16260.2-200X软件工程产品质量第2部分外部度量GB/T16260.3-200X软件工程产品质量第3部分内部度量GB/T16260.4-200

45、X软件工程产品质量第4部分使用质量度量GB/T18905.1-2002软件工程产品质量第1部分概述GB/T18905.2-2002软件工程产品质量第2部分策划和管理GB/T18905.3-2002软件工程产品质量第3部分开发者用的过程GB/T18905.4-2002软件工程产品质量第4部分需求方用的过程GB/T18905.5-2002软件工程产品质量第5部分评价者用的过程GB/T18905.6-2002软件工程产品质量第6部分评价模块文档编制1.2.11.2.1 软件软件测试的依据测试的依据53 1. 软件测试的组织结构和人员结构 软件测试在组织结构上一般分为功能测试组、性能测试组和文档工作组

46、。 软件测试在人员结构上一般需要有测试文档审核师、测试工程师和操作人员。1.2.21.2.2 软件软件测试人员的职责分配测试人员的职责分配54工程硕士54 2. 2. 测试职责分配测试职责分配需求阶段缺陷概要设计阶段缺陷详细设计阶段缺陷代码阶段缺陷放大n 1 倍 放大n 2 倍放大n 3 倍系统分析设计人员系统分析设计人员软件开发人员软件开发人员软件测试人员软件测试人员配置管理员配置管理员质量保证人员质量保证人员对测试过程进行对测试过程进行审计审计对测试文档及测对测试文档及测试代码等进行配试代码等进行配置管理置管理提出测试需求;提出测试需求;进行测试需求跟进行测试需求跟踪;进行软件系踪;进行软

47、件系统可测性分析;统可测性分析;确定测试的对确定测试的对象、范围和方法象、范围和方法提供软件开发计划提供软件开发计划SDP,参与测试计,参与测试计划的制定和评审,划的制定和评审,提供软件功能需求提供软件功能需求规格、需求分析、规格、需求分析、测试建议、响应测测试建议、响应测试需求、参与测试试需求、参与测试方案的评审;跟踪方案的评审;跟踪解决缺陷问题报告解决缺陷问题报告单,参与测试报告单,参与测试报告的评审。的评审。 制定测试计划、方制定测试计划、方案并组织评审,实案并组织评审,实现测试用例,代码现测试用例,代码和工具等设计、编和工具等设计、编写测试规程;执行写测试规程;执行测试、反馈并跟踪测试

48、、反馈并跟踪缺陷问题报告单,缺陷问题报告单,完成测试报告并组完成测试报告并组织评审,输出测试织评审,输出测试案例、总结等经验案例、总结等经验文档文档 551.1.软件测试人员必需的基本素质软件测试人员必需的基本素质 三心二意一能力细心耐心责任心服务意识团队意识沟通能力1.2.31.2.3 软件软件测试人员必需的素质测试人员必需的素质 562. 2. 软件测试人员必需的知识素养软件测试人员必需的知识素养 深入理解软件测试理论 掌握各类软件测试技术 接受专门的测试训练 对软件缺陷警觉性高 对缺陷出现的各种情况较熟悉 掌握多种计算机语言 掌握一般的软硬件、数据库及网络知识 对所要测试的软件的功能、结

49、构、要求有深入的认识。1.2.31.2.3 软件软件测试人员必需的素质测试人员必需的素质 5757(1 1)心理素质最重要心理素质最重要开发人员我不会犯错-任何人都可能犯错这种错误不能算作错误-质量是由用户来评价的发现我的错误是对我工作的否定-是对我的工作的帮助测试人员责任心不够,反正测试是不可能发现所有错误的职业教育+激励措施没有创造性、枯燥总结经验,培养敏锐度,提升个人价值和权威技术比开发人员差,自信心不足代表用户,决定成功的是用户满意1.2.41.2.4 软件软件测试的经验测试的经验5858(2 2)测试前必须明确预期的输出结果测试前必须明确预期的输出结果否则实际的输出结果很可能成为检验

50、的标准,测试失去意义(3 3)必须检查每一个实际输出结果)必须检查每一个实际输出结果很可笑,但是却是事实:不认真检查输出结果(4 4)一段程序中存在错误的概率与这段程序中已经发现的)一段程序中存在错误的概率与这段程序中已经发现的错误数成正比错误数成正比编码规范、需求理解、技术能力、内部耦合性都会导致这种“虫子窝“现象1.2.41.2.4 软件软件测试的经验测试的经验59工程硕士59(5 5)可能的情况下,避免测试自己的软件)可能的情况下,避免测试自己的软件发现不了思路错误发现不了环境错误心理因素导致测试可能不够彻底和全面(6 6)依照用户的要求、配置环境和使用习惯进行测试并)依照用户的要求、配

51、置环境和使用习惯进行测试并评价结果评价结果(7 7)测试设计决定了测试的有效性和效率,测试工具只)测试设计决定了测试的有效性和效率,测试工具只能提高测试效率能提高测试效率1.2.41.2.4 软件软件测试的经验测试的经验60工程硕士60(8 8)注意保留测试设计,并注意测试设计的可重用性和说明)注意保留测试设计,并注意测试设计的可重用性和说明文档文档(9 9)测试活动要有组织、有计划、有选择)测试活动要有组织、有计划、有选择穷举测试是不可能的不充分的测试是不负责任,过度的测试是浪费资源有计划的活动能提高效率(1010)不要放弃随机测试的方法)不要放弃随机测试的方法测试的不成熟性和艺术性1.2.

52、41.2.4 软件软件测试的经验测试的经验61 1. 1. 软件测试人员的工作内容软件测试人员的工作内容u 根据软件需求规格说明书、设计说明书、代码等软件产物选取恰当的输入组合u 运行被测试对象u 输入数据u 执行操作u 查看输出结果是否和预期的结果一致,如果一致则认为被测对象没有问题,否则,则认为被测对象中可能存在缺陷u 缺陷修改完毕,验证缺陷修改,确认缺陷是否修改正确,是否引入新问题1.2.51.2.5 软件软件测试人员的工作流程测试人员的工作流程62l核心工作产品核心工作产品l测试用例l缺陷报告单l其他重要的工作其他重要的工作产品产品l测试计划l测试策略l测试报告l。2. 2. 软件测试

53、人员的工作流程软件测试人员的工作流程1.2.51.2.5 软件软件测试人员的工作流程测试人员的工作流程63 3. 软件测试人员的工作目标 GMyers给出了关于测试的一些规则,可以把它看作是测试人员的工作目标:u 软件测试是为了发现错误而执行程序的过程。u 测试是为了证明程序有错,而不是证明程序无错。u 一个好的测试用例在于他能发现至今未发现的错误。u 一个成功的测试是发现了至今未发现的错误的测试。u 要强调的是软件测试不只是软件测试人员的工作,也是软件开发人员和软件使用者的工作。1.2.51.2.5 软件软件测试人员的工作流程测试人员的工作流程641.3 软件测试的生命周期与模型1.3.1

54、软件的开发模型1.3.2 软件测试的生命周期1.3.3 软件测试与软件开发的关系65 1.经典瀑布模型经典瀑布模型 由美国Winston Royce向IEEE WESCON(Royce, Winston 1970)提交的一篇名为管理大规模软件系统的开发的论文中首次提出的。由于方法的一个阶段成瀑布流入下一个阶段,所以为“瀑布模型或线性模型”。瀑布模型有很多的变化,但都包括以下的阶段:需求分析与定义,系统设计与软件设计,系统实施与单元测试,系统集成与系统测试,系统运行与系统维护,也是软件开发的基本过程。需求分析:可行性分析与软件需求分析 软件需求分析:业务需求 功能需求 非功能需求1.3.1 1.

55、3.1 软件的开发模型软件的开发模型66该处测试仅指执行测试1.3.1 1.3.1 软件的开发模型软件的开发模型67n 2.2.原型模型原型模型n 直观、形象,更多地遵循了人们认识事物的规律,因而更容易被人们接受。n 采用模拟的手段,缩短了用户和系统分析、设计人员之间的距离。n 在整个系统开发过程中反馈是及时的,标准是统一的,可及时地暴露问题,确保系统实现的正确性。n 充分利用了新一代的软件工具,使得系统开发和运行的效率都大大提高。 1.3.1 1.3.1 软件的开发模型软件的开发模型681.3.1 1.3.1 软件的开发模型软件的开发模型691.3.1 1.3.1 软件的开发模型软件的开发模

56、型701.3.1 1.3.1 软件的开发模型软件的开发模型3. 3. 增量与迭代模型增量与迭代模型增量开发增量开发迭代开发迭代开发71 AnalysisDesignCodeTestDelivery of 1st incrementIncrement1AnalysisDesignCodeTestAnalysisDesignCodeTestDelivery of 2nd incrementDelivery of 3rd incrementIncrement2Increment31.3.1 1.3.1 软件的开发模型软件的开发模型72 风险分析风险分析风险分析风险分析原型1原型2原型3可用原型建模模

57、拟评价软件需求需求确认操作概念需求计划开发计划软件产品设计设计确认与验证集成与测试计划详细设计编码单元测试集成测试接收测试实现成本评审制订下阶段计划确定下阶段目标和约束条件风险分析、构造原型开发、验证阶段软件产品过程迭代 4. 4. 螺旋模型螺旋模型( (风险驱动的过程模型风险驱动的过程模型,增量模型与爆布模型相结合,增量模型与爆布模型相结合) ) 1.3.1 1.3.1 软件的开发模型软件的开发模型73 5. 5. 渐进模型渐进模型1.3.1 1.3.1 软件的开发模型软件的开发模型74 软件测试的生命周期分为6个阶段,前个阶段是引入错误时期,也就是开发过程中的需求规格说明、设计、编码阶段,

58、此时极易引入错误或者导致开发过程中其他阶段产生错误。后3个阶段是通过测试发现错误、时期,这需要通过使用一些适当的测试技术和方法来共同完成,主要任务是进行缺陷分类、缺陷隔离和解决缺陷。其中在修复旧缺陷的时候很可能引进新的错误,导致原来能够正确执行的程序出现新的缺陷。 在软件测试生命周期的每个阶段都要完成一些确定的任务,在执行每个阶段的任务时,可以采用行之有效的结构分析设计技术和适当的辅助工具;在结束每个阶段的任务时都进行严格的技术审查和管理复审。最后提交最终软件配置的一个或几个成分(文档或程序)。1.3.2 1.3.2 软件测试软件测试的生命周期的生命周期75图1-2软件测试生命周期1.3.2

59、1.3.2 软件测试软件测试的生命周期的生命周期76 1 1测试与开发各阶段的关系测试与开发各阶段的关系 软件开发过程是一个自顶向下,逐步细化的过程。首先在软件计划阶段定义软件的作用域,进行软件需求分析,建立软件的数据域、功能和性能需求、约束和一些有效性准则。然后进入软件开发-软件设计和编写代码。 测试过程则是依相反的顺序安排的自底向上,逐步集成的过程,低一级测试为上一级测试准备条件。首先对每一个程序模块进行单元测试,消除程序模块内部在逻辑上和功能上的错误和缺陷。再对照软件设计进行集成测试,检测和排除子系统(或系统)结构上的错误。随后再对照需求,进行确认测试。最后从系统全体出发,运行系统,看是

60、否满足要求。 1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系77图1-3 软件测试与软件开发过程的关系1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系78 2 2测试与开发的并行性测试与开发的并行性 在软件的需求得到确认并通过评审后,概要设计工作和测试计划制定设计工作就要并行进行。如果系统模块已经建立,对各个模块的详细设计、编码、单元测试等工作又可并行。待每个模块完成后,可以进行集成测试、系统测试。并行流程如图1-4所示。1.3.3 1.3.3 软件测试与软件开发的关系软件测试与软件开发的关系79图1-4 软件测试与软件开发的并行性1.3.3

温馨提示

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

评论

0/150

提交评论