第二软件测试策略与过程_第1页
第二软件测试策略与过程_第2页
第二软件测试策略与过程_第3页
第二软件测试策略与过程_第4页
第二软件测试策略与过程_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

1、软件测试教程第二章 软件测试策略与过程第一章 回顾n软件测试的定义n软件开发过程n软件开发与软件测试的关系n软件测试过程n软件质量保证n软件测试职业本章内容n2.1软件测试的复杂性分析n2.2软件测试方法与策略n2.3单元测试n2.4集成测试n2.5确认测试n2.6系统测试n2.7验收测试n2.8软件测试不同分类之间的关系软件测试策略与过程n教学目标: 理解软件测试的方法与策略;掌握单元测试、集成测试、系统测试、验收测试等各个测试环节的要点;区别测试与调试n教学重点: 1.理解软件测试的不同方法 2.掌握各个测试环节的要点n教学难点: 掌握集成测试的两种方法软件测试的复杂性分析2.1软件测试的

2、复杂性分析2.1.1无法对程序进行完全测试n测试所需要的输入量太大n测试的输出结果太多n软件实现的途径太多n软件规格说明没有客观标准2.1.2测试无法显示潜在的软件缺陷和故障 软件测试报告软件已被发现的缺陷或故障,并不是全部软件缺陷或故障。假若继续进行测试,又会发现一些新的缺陷或故障问题。软件测试的复杂性分析2.1.3存在的故障现象与发现的故障数量成正比 发现一个软件故障可能接二连三发现故障。2.1.4不能修复所有的软件故障(1)没有足够的时间进行修复(2)修复的风险较大(3)不值得修复(4)可不算做故障的一些缺陷(5)“杀虫剂现象”软件测试的复杂性分析2.1.5测试工作量和软件缺陷数量之间的

3、关系 测试工作量软件测试方法与策略2.2软件测试策略n软件测试策略是描述软件测试活动的总体方法和目标。n为了检验开发的软件能否符合规格说明书的要求,测试活动可以采用各种不同的策略。这些策略的区别在于它们表明了不同的出发点、不同的思路以及采用不同的手段和方法。软件测试方法与策略n软件测试方法n按照软件测试是否执行程序划分:n静态测试和动态测试n按软件测试用例的设计方法划分:n白盒测试和黑盒测试软件测试方法与策略n按照测试时是否运用工具: n手工测试、自动测试n按软件测试的过程划分:n单元测试、集成测试、确认测试、系统测试、验收测试软件测试方法与策略1.软件测试策略软件工程 测试策略 测试工程所运

4、用的模板 软件测试(1)程序模块层 整个系统(2)不同测试技术适用于不同测试进程时间点(3)软件开发人员和软件测试组织(4)测试与调试是不同的过程提供低层测试(检验源代码是否得以正确实现)提供高层测试(验证整个系统的功能是否符合用户的需求)软件测试方法与策略2.软件测试充分性准则(1)对任何软件都存在有限的充分测试集合(2)单调性 (测试数据)(3)非复合性(对软件所有成分都进行了充分测试)(4)非分解性 (对软件整体测试是充分的)(5)软件测试的充分性与软件的需求和软件的实现都相关(6)复杂性(越复杂,需要测试数据越多)(7)回报递减率(测试得越多,充分性增长越少)软件测试方法与策略2.2.

5、1静态测试与动态测试1.静态测试n不实际运行软件,主要对软件的编程格式、结构等方面进行评估n 静态测试包括过程步骤和实现技术n静态测试主要由人工方式进行,同时借助软件测试专用工具软件测试方法与策略n静态分析与编译系统的区别?2.静态测试的过程步骤 静态测试的过程和步骤是需求分析、概要设计、详细设计和计划执行。3.静态测试技术n测试活动n代码检查(人工工具)(人工工具)n静态结构分析 (主要由软件工具自动进行)(主要由软件工具自动进行)n代码质量度量 (主要由软件工具自动进行)(主要由软件工具自动进行)软件测试方法与策略(1)代码检查n代码检查包括代码走查、桌面检查、代码审查。主要检查代码和设计

6、的一致性;发现违背程序编写标准的问题。n在实际使用中,代码检查比动态测试更为有效,可以发现30%70的逻辑设计和编码缺陷。软件测试方法与策略(2)静态结构分析n以图形的方式表现程序的内部结构,如函数调用关系图、函数内部控制流图(3)代码质量度量(三种度量参数)nLine复杂度(代码行数)nHalstead复杂度(程序中的运算符与运算元数量)nMcCabe复杂度(程序流程图转化为有向图,图论)软件测试方法与策略n静态测试与人工测试方式有着根本区别n静态测试可由人工进行,也可以借助软件工具自动进行。n使用静态测试可以发现大约1/3-2/3的逻辑设计和编码错误。但是代码中仍会有隐藏的故障无法通过静态

7、测试发现,因此除了静态测试方法外,还必须通过动态测试进行详细地分析。软件测试方法与策略4.静态测试活动(1)静态测试检查细节(2)静态测试的作用:发现错误;找出问题根源;提供程序缺陷的间接信息5.静态测试评审与检查过程(1)静态测试评审(2)静态测试的检查软件测试方法与策略6.动态测试n运行被测程序n输入测试用例n对运行情况(输入与输出对应关系)分析软件测试方法与策略 动态测试在单元测试、集成测试、系统测试及验证测试有不同的测试内容及过程。测试阶段对象执行人环境单元测试模块中不合格产品 开发者开发环境集成测试模块与接口开发组织开发环境融入测试管理系统测试功能测试组织测试环境验收测试软件用户用户

8、实际的软件运行环境软件测试方法与策略7.测试活动n功能确认与接口测试n覆盖率分析n性能分析n内存分析8.静态测试与动态测试的检查与评估n确定评审参检部门与人员。n评审活动时间和资源分配。n评审过程注意事项。软件测试方法与策略n黑盒测试n将被测试程序当做一个黑盒,在不考虑程序内部结构和内部特性,测试者只知道该程序输入和输出之间的关系或程序功能的情况下,依靠能够反映这一关系和程序功能需求规格的说明书,来确定测试用例和推断测试结果的正确性。?X=2y=4软件测试方法与策略软件测试方法与策略n黑盒测试法特点n与软件的具体实现过程无关n与软件实现同时进行n可用于软件测试的各个阶段n黑盒测试方法n边界值分

9、析法n等价类划分法n因果图法n决策表法软件测试方法与策略n黑盒测试能够获得软件的功能、性能n软件系统有层次性,软件开发把原始问题转换成计算机处理的形式,经过一系列变化,得到程序编码。n在哪个层次上测试呢?n黑盒测试的缺点n无法进行穷举测试n输入和输出结果是否正确无法明确。软件测试方法与策略n白盒测试n用来分析程序的内部结构,依赖于对程序细节的严密检验,针对特定条件和循环设计测试用例,对程序的逻辑路径进行测试。y=2xX=2y=4软件测试方法与策略软件测试方法与策略n白盒测试的缺点n穷举路径测试不能查出程序结构的错误n穷举路径测试不能查出程序因遗漏路径而出错n白盒测试方法n语句覆盖n分支覆盖n判

10、断覆盖n条件覆盖n判断/条件覆盖n路径覆盖软件测试方法与策略n两种测试方法从不同的角度出发n反映了软件的不同侧面n适用于不同的开发环境黑盒测试黑盒测试白盒测试白盒测试软件测试方法与策略黑盒测试与白盒测试比较项目项目黑盒测试黑盒测试白盒测试白盒测试规划功能测试结构测试优点从用户角度出发测试对程序内部特定部位进行覆盖测试缺点无法测试程序内部特定部位若规格说明有误,无法发现问题无法检查程序的外部特征无法对未实现规格说明的程序内部欠缺部分进行测试应用范围边界分析法等价类划分法决策表测试因果图法语句覆盖分支覆盖路径覆盖软件测试方法与策略2.2.3手工测试和自动化测试自动化测试是对手工测试的一种补充。手工

11、测试:软件界面的美观(人的逻辑思维)自动测试:重复工作量(回归测试)1.手工测试(1)测试用例的设计(2)界面和用户体验测试(3)正确性的检查软件测试方法与策略n2.自动化测试n自动化测试由测试工具完成,部分代替手工测试。2.2.4探索性测试1.定义2.核心思想3.探索性测试的基本过程4.探索性测试管理软件测试方法与策略n黑盒、白盒、动态、静态测试之间关系n只是从测试的不同角度分类n同一个测试,都有可能属于这几种测试,他们之间还有包含交叉的关系 n黑盒测试有可能是动态测试(运行程序,只看输入和输出),也可能是静态测试(不运行程序,只看界面)n白盒测试有可能是动态测试(运行程序,分析代码结构),

12、也可能是静态测试(不运行程序,只是静态查看代码)软件测试方法与策略n动态测试有可能是黑盒测试(运行程序,只看输入和输出),也可能是白盒测试(运行程序,分析代码结构)n静态测试有可能是黑盒测试(不运行程序,只是查看界面),也可能是白盒测试(不运行程序,只是静态查看代码)软件测试方法与策略软件测试过程n软件测试过程分为以下几个步骤:n单元测试(模块测试)n集成测试(子系统测试)n确认测试n系统测试n验收测试软件测试过程n软件测试过程 模块及文档 通过测试的 模块 集成测试通过 的软件 模块及文档 模块及文档 通过了综合 测试的软件 可运行的软件 交付软件 单元测试 单元测试 单元测试 集成测试 确

13、认测试 系统测试 验收测试 软件测试过程软件测试的过程流程软件测试过程测试阶段对象方法单元测试单元模块黑盒、白盒集成测试模块组合方式黑盒、白盒确认测试软件的功能与性能需求黑盒系统测试系统的兼容性验收测试软件产品质量单 元 测 试n单元测试n检查程序的最小单元n模块进行正确性检验的测试工作n测试模块在语法、格式和逻辑上的错误n单元测试目的n保证每个模块单独运行正确n检查模块控制结构的某些特殊路径n期望覆盖尽可能多的出错点单 元 测 试n单元测试可分为静态测试和动态测试n静态单元测试n代码走读等检查性测试方式,不需要编译和运行代码n动态单元测试n编写测试代码,需要编译和运行代码n单元测试可用人工方

14、式和自动方式。单 元 测 试n单元测试有两种模式n测试驱动模式和代码先行模式n单元测试的主要任务n单元测试在编码完成后进行;多个模块时可并行独立开展测试工作。n对每个模块进行测试n解决以下5个方面的测试问题n模块接口n局部数据结构n边界条件n独立路径n错误处理单 元 测 试n模块接口测试n针对模块接口测试应进行的检查,主要涉及十八个方面的内容,见书47页。单 元 测 试n模块局部数据结构n内部数据能否保持完整性n应注意几类错误n不正确或不一致的类型说明n错误的初始化或默认值n错误的变量名,如拼写错误或缩写错误n下溢、上溢或者地址错误注意:全程数据对模块的影响单 元 测 试n路径测试n也称为覆盖

15、测试n常见错误见书47页单 元 测 试n模块边界条件测试n数据边界处模块能否正常工作n软件常在边界处发生错误(循环条件)n通常为单元测试的最后一步,仔细限制数据处理,设置边界n边界条件设置注意项n首个、最后一个;最大、最小;最长、最短;最高、最矮等特征 单 元 测 试n出错处理n若模块在工作中发生错误n检查程序出错处理时,可能情况n对运行发生的错误描述难以理解n所报告的错误与实际遇到的错误不一致n出错后,在错误处理之前就引起了系统的干预n例外条件的处理不正确n提供的错误定位信息不足,以致无法找到出错的准确原因单 元 测 试n单元级别的性能测试n软件结构多样,支持用户扩大,性能问题显现。n性能测

16、试从单元测试阶段开始(1)代码效率评估(2)应用单元性能测试工具(3)数据库优化性能测试可使用代码效率测试工具单 元 测 试n单元测试与白盒测试的区别n白盒测试关注的是类中的一个方法,单元测试需要多个类 (驱动和桩)n白盒测试不关注类接口,单元测试的内容就是类接口单 元 测 试n单元测试管理规范n单元测试人员组织与分工n单元测试的策略指引n单元测试用例的设计n代码标准和规范n代码审查制定n建立单元测试的流程n单元测试与每日构建结合单 元 测 试n进行单元测试时,需设置若干辅助测试模块。n驱动模块(Driver)n模拟被测试模块的上级模块n用来传送测试数据,启动被测模块并输出结果n被调用模拟子模

17、块/桩模块(Sub)n模拟被测模块工作过程中所调用的模块单 元 测 试n驱动模块与桩模块单元测试的设置环境单 元 测 试n什么时候进行单元测试?n由谁来进行单元测试?n单元测试的依据是什么?n单元测试的通过标准是什么?程序员编码之后,但要程序员编码之后,但要做必要准备工作做必要准备工作白盒测试工程师或开发白盒测试工程师或开发人员人员源程序源程序 (程序和注释);(程序和注释);项目项目详细设计详细设计文档文档不同公司有不同标准不同公司有不同标准测试后的调试n测试的目的是显示存在错误。n调试(也称排错)的目的是确定错误的原因和准确位置,并加以纠正。n调试是测试之后的活动。测试测试用例用例执行执行

18、测试用例测试用例追加测试追加测试被怀疑的原因被怀疑的原因已识别的原因已识别的原因回归测试回归测试修正程序修正程序调试调试结果结果测试后的调试调试过程 测试后的调试n调试基本任务n诊断和改正程序中的错误n调试技术n输出存储器内容n打印语句n自动工具测试后的调试n输出存储器内容 此法一般以八进制或十六进制的形式打印出存储器的内容。如果单纯依靠这种方法进行调试,那么效率是很低的。原因如下:n很难把源程序变量和存储单元对应起来; n输出信息量太大,而且大部分是无意义的信息;n输出的是程序的程序在某一时刻的状态,然而为了找出故障往往需要研究程序状态随时间变化的情况;n输出的内容常常并不是程序出错时的状态

19、因此通常并不能提供有用的信息;n输出信息的形式不易阅读和解释。测试后的调试n打印语句 这种方法就是程序设计语言提供的标准打印语句插在源程序中各个部分,以便输出所有关键变量的值。它要比第一种方法好,因为它显示程序的动态行为,而且给出的信息很容易和源程序对应。可这种方法也有缺点:n可能输出大量需要分析的信息,特别是对于大型程序系统来说更是如此;n因为必须修改源程序才能插入打印语句,这就可能改变了关键的时间关系,从而既可能掩盖错误,也有可能引入新的错误。测试后的调试n自动工具 这种方法和第二种方法相类似,也能提供有关程序动态行为的信息,但不需要修改源程序。它主要利用程序设计语言的调试功能或使用专门的

20、软件工具分析程序的动态行为。可供利用的典型语言功能有输出有关语句执行、子程序调用和更改指定变量的踪迹。用于调试的软件工具的共同功能是设置断点,即当执行到特定的语句或改变特定变量的值时,程序突然停止执行,程序员可以在终端上观察程序此时的具体状态。但使用这种调试方法也会产生大量无意义的信息。 测试后的调试n调试策略n试探法n调试人员分析错误征兆,猜想故障的大致位置,然后使用前述的一两种调试技术,获取程序中被怀疑的地方附近的信息。n该策略缓慢而低效。 测试后的调试n回溯法n确定最先发现“症状”的地方,然后人工沿程序的控制流往回追踪源程序代码,直到找出错误根源或确定故障范围为止。n回溯法的另一种形式是

21、正向跟踪,也就是使用输出语句检查一系列中间结果,以确定最先出现错误的地方。n回溯法适用于小程序。 测试后的调试n对分查找法n如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中间点附近“注入”这些变量的正确值,然后检查程序的输出。如果输出结果是正确的,则故障在程序的前半部分;反之,故障在程序的后半部分。对于程序中有故障的那部分再重复使用这个方法,直到把故障范围缩小到容易诊断的程度为止。 测试后的调试n归纳法n所谓归纳法就是从个别推断一般的方法。从线索(错误征兆)出发,通过分析这些线索之间的关系而找出故障,具体步骤如下:n收集有关的数据n组织数据n导出假设n证明假设测试后的调试n演绎法 n演绎法从般原理或一般前提出发,经过删除和细化的过程推导出结论。用演绎法调试开始,首先列出所有看来可能成立的原因或假设,然后一个个排除列举出的原因,最后,证明剩下的原因确实是错误的根源。演绎法主要分为下面四个步骤:n设想可能的原因n用已有的数据排除不正确的假设n细化余下的假设n证明余下的假设小结n软件测试的策略与方法n静态测试与动态测试(自主学习)n黑盒测试与白盒测试n手工测试与自动化测试(自主学习)n单元测试与白盒测试n单元测试n黑盒、白

温馨提示

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

评论

0/150

提交评论