软件工程测试工程_第1页
软件工程测试工程_第2页
软件工程测试工程_第3页
软件工程测试工程_第4页
软件工程测试工程_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

软件工程第七章测试技术测试的基本概念1静态分析方法4小结5黑盒测试方法3白盒测试方法2本章学习目标123掌握基本的白盒测试和黑盒测试方法。了解软件测试的目标、评估准则、软件静态分析的通用评审过程等及主要类型。理解软件测试的定义、常用术语、基本原则和代码审查。软件测试的重要性据推测,由于软件缺陷而引起的损失额每年高达595亿美元。这一数字相当于美国国内生产总值的0.6%。软件测试是软件开发过程中包装软件质量、提高软件可靠性的最主要的手段之一,它是在软件产品在交付之前,对分析、设计、编码等开发工作的最后检查和复审。在整个软件系统的开发过程中,软件测试占了其中40~50%的工作量。软件测试的定义定义1软件测试在IEEEStandard.610.12中定义如下:在某种指定的条件下对操作系统或组件,观察或记录结果,对系统或组件的某些方面进行评估的过程。定义2软件测试在IEEEStandard.829中定义如下:分析软件各项目以检测现有的结果和应有结果之间的差异(即软件缺陷),并评估软件各项目的特征的过程。其他定义其他定义如下:软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试的对象软件测试的对象:软件测试不等于程序测试。软件测试贯穿于软件定义和开发的整个过程。软件开发过程中所产生的需求规格说明、概要设计规格说明、详细设计规格说明以及源程序都是软件测试的对象。软件测试的常用术语1.软件缺陷至少满足下列一个条件才称发生了一个软件缺陷:软件未实现产品说明书要求的功能。软件出现了产品说明书指明不能出现的错误。软件实现了产品说明书未提到的功能。软件未实现产品说明书虽未明确提及但应该实现的目标。软件难以理解、不易使用、运行缓慢或者——从测试员的角度看——最终用户会认为不好。软件缺陷的定义定义在IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。软件测试的常用术语2.验证和确认验证(Verification):保证软件特定开发阶段的输出已经正确完整地实现了规格说明确认(Validation):根据原始需求检查开发结果的过程称为确认举例验证:我们是否正确地完成了产品?确认:我们是否完成了正确的产品?软件测试的常用术语3.测试与质量保证软件测试人员的目标是尽早找出软件缺陷,并确保缺陷得以修复软件质量保证人员的主要职责是创建和执行改进软件开发过程并防止软件缺陷发生的标准和方法人员职责上有交叉软件测试的常用术语4.质量与可靠性功能性(functionality):系统所需具备的能力的所有特征。可靠性(reliability):软件产品在具体使用中持续地提供其功能的能力。可用性(usability):软件着眼于用户使用方面的特性效率(efficiency):软件为完成任务所消耗的资源和所需要的时间。可维护性(maintainability):软件着眼于可进行指定的修改的特性。可移植性(portability):软件着眼于可从一种使用环境迁移到另一种使用环境的特性。软件测试的常用术语5.软件测试与调试两者都包含有处理软件缺陷和查看代码的过程二者的区别在于,测试的目标是发现软件缺陷的存在,调试的目标是定位与修复缺陷。软件测试的常用术语6.测试用例测试用例(testcase)是测试输入、执行条件以及预期结果的集合,是为特定的目的开发的,例如执行特定的程序路径或验证与指定的需求相符合。软件测试的目标(IEEE1983)确认系统满足其预期的使用和用户的需要。确认解决了所需解决的问题(如实现商业规则和使用合适的系统假定)。为测试的过程建立责任和可解释性。便于及早发现软件和系统的异常。及早提供软件和系统的性能的评估。为管理提供真实信息,以决定在当前状态下发布产品在商业上的风险鉴别出程序在功能等方面的异常集聚之处。注意:测试用例的设计应尽力发现系统中的错误,而不是“说明程序能正确地执行它应有的功能”,也不是“表明程序没有错误”。

软件测试的基本原则穷尽测试是不可能的测试无法显示潜伏的软件缺陷测试活动应尽早进行软件缺陷具有群聚性注意杀虫剂现象应尽量由独立的测试团队进行测试软件测试方法软件测试方法动态测试静态测试黑盒测试白盒测试在不知道程序内部结构,只知道程序规格的情况下采用的测试技术或策略。在知道程序内部结构的情况下采用的测试技术或策略。黑盒测试方法和白盒测试方法综合的策略。不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态分析技术。实际运行程序,并通过观察程序运行的实际结果来发现错误的软件测试技术。白盒测试灰盒测试

静态测试与动态测试1.静态测试静态测试是采用人工检测和计算机辅助静态分析的手段对程序进行检测,方法如下:人工测试:是指不依靠计算机运行程序,而靠人工审查程序或评审软件。计算机辅助静态分析:指利用静态分析软件工具对被测试程序进行特性分析,从程序中提取一些信息。2.动态测试动态测试与静态测试相反,主要是设计一组输入数据,然后通过运行程序来发现错误。软件测试的主要方法黑盒测试黑盒测试指忽略系统或组件的内部机制,仅关注于那些响应所选择的输入及相应执行条件的输出的测试形式,也称功能性测试。白盒测试白盒测试指考虑系统或组件的内部机制的测试形式(如分支测试、路径测试、语句测试等),也称结构性测试。灰盒测试测试方法兼具备黑盒测试和白盒测试的特性。软件测试的评估准则覆盖率故障插入变异分值覆盖率给定一个测试需求集合TR和一个测试集合T,覆盖率可以定义为T满足的测试需求占TR总数的比例。100%覆盖率在实际中是不现实的商用自动化测试工具故障插入故障插入(faultseeding)是一种统计方法,用于评价遗留在一个程序中的故障的数量和种类。具体而言,在测试前被有意地插入一些故障到程序中,在测试执行中,有一部分插入的故障会因测试而显露出来,但可能一些故障在测试中没有暴露出来,仍存在于程序中。变异分值该指标和变异测试密切相关。所谓变异测试是一种特殊的测试方法,在这种测试方法中,程序进行两个或更多个变异,然后用同样的测试用例执行测试,可以评估这些测试用例探测程序变异间的差异的能力。也叫玻璃盒测试、结构测试或逻辑驱动测试,对软件的过程性细节做细致的检查。这一方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,来设计或选择测试用例,对程序所有逻辑路径进行测试。

白盒测试是在程序内部进行,主要用于完成软件内部操作的验证。

白盒测试关键技术:如何设计测试用例进行彻底的测试

白盒测试技术基于代码的测试白盒测试局限性:是穷举路径测试,贯穿程序独立路径数是天文数字,即使每条路径都经过了测试,仍可能有未发现错误。白盒测试的局限性白盒测试技术分类基于逻辑结构的测试基于控制流图的测试逻辑覆盖测试逻辑覆盖是以程序内部的逻辑结构为基础的设计

测试用例的技术。它属白盒测试。语句覆盖分支覆盖条件覆盖条件组织覆盖问题:若AND错写为OR,或X>1错写为X<1,则错误无法由上例测出。入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FFTestcase:A=2,B=0,X=4.abcde⑴语句覆盖(Statementcoverage):选择足够多的测试数据,使被测程序中每个语句至少执行一次。语句覆盖⑵判定覆盖(Branchcoverage):在⑴的基础上,每个判定的每个分支至少执行一次。也成分支覆盖。Testcases:①A=3,B=0,X=3②A=2,B=1,X=1问题:若X>1错写为X<1,仍然无法被测出。入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FFacbed判定覆盖⑶条件覆盖(Conditioncoverage):在⑴的基础上,使每个判定表达式的每个条件都取到各种可能的结果。入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FFdbace条件覆盖⑶条件覆盖(Conditioncoverage):在⑴的基础上,使每个判定表达式的每个条件都取到各种可能的结果。入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FFdbace真真真真假假假假Testcases:①A=2,B=0,X=4(满足A>1,B=0;A=2,X>1)②A=1,B=1,X=1(满足A1,B0;A2,X1)条件覆盖⑶条件覆盖(Conditioncoverage):在⑴的基础上,使每个判定表达式的每个条件都取到各种可能的结果。Testcases:①A=2,B=0,X=4(满足A>1,B=0;A=2,X>1)②A=1,B=1,X=1(满足A1,B0;A2,X1)问:条件覆盖?判定覆盖答:不一定。反例:①A=2,B=0,X=1②A=1,B=1,X=2入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FFdbace条件覆盖(4)条件组合覆盖:每个判定表达式中条件的各种可能组合都至少出现一次。入口A>1ANDB=0TA=2ORX>1TX=X/AX=X+1返回FF全部可能的条件组合为:①A>1,B=0②A>1,B0③A1,B=0④A1,B0⑤A=2,X>1⑥A=2,X

1⑦A

2,X>1⑧A

2,X

1问题:没有测试到(TF)的情形,没有覆盖所有的路径。ecabd条件组合覆盖4种覆盖对比4种覆盖标准的对比

发弱现错误能力强语句覆盖每条语句至少执行一次判定覆盖每个判定的每个分支至少执行一次条件覆盖每个判定的每个条件应取到各种可能的值条件组合覆盖每个判定中各条件的每一种组合至少出现一次控制流图覆盖测试控制流图覆盖测试是将代码转变为控制流图,基于其进行测试的技术。节(结)点覆盖边覆盖路径覆盖符号○为控制流图的一个节点,表示一个或多个无分支的

温馨提示

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

评论

0/150

提交评论