版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第2章 软件测试方法与过程 第2章 软件测试方法与过程 软件测试的复杂性与经济性1软件测试方法2软件测试阶段3其它测试类型4主要内容2.1 软件测试的复杂性与经济性 P21测试无法对程序进行完全的测试缺陷测试无法保证被测程序中无遗留错误修复不能修复所有的软件故障1、软件测试复杂性2、软件测试的经济性测试发现缺陷需要投入(时间和成本)经济性遗留缺陷有风险最佳的测试量2.2 软件测试方法 P231、静态测试和动态测试主持人作者记录员列席人员内审员技术专业人员用户代表不正式正式互审 走读 审查会议运行程序不运行程序,仅通过分析或检查等其他手段达到检测的目的。通过运行被测程序,检查运行结果与预期结果
2、的差异,并分析运行效率和健壮性等性能2、黑盒测试和白盒测试功能测试结构测试客户需求事件驱动输入输出白盒测试黑盒测试测试依据程序内部结构软件规格说明优点能对程序内部的特定部位进行覆盖能站在用户立场上进行测试缺点(1)无法检测程序本身逻辑错误(2)无法对未实现规格说明的程序部分进行测试(1)不能测试程序内部特定部位(2)发现不了规格说明错误或程序超出规格说明的行为3、人工测试和自动化测试人工测试是人为测试和手工测试的统称。人为测试的主要方法有桌前检查 (desk checking) ,代码审查( code review )和走查( walkthrough )。经验表明,使用这种方法能够有效地发现
3、30% 到 70% 的逻辑设计和编码错误。 手工测试指的是在测试过程中,按测试计划一步一步执行程序,得出测试结果并进行分析的测试行为。 自动化测试指的是利用测试工具来执行测试,并进行测试结果分析的测试行为。 2.3 软件测试的阶段 P26单元测试集成测试系统测试验收测试一、 单元测试什么是单元测试单元测试是对软件基本组成单元进行测试,主要是为了发现单元内部可能存在的各种错误和不足主要工作分为两个步骤:人工静态检查和动态执行跟踪一般由开发组在开发组组长监督下进行什么是单元一个函数类或类内成员函数几个函数的集合单元测试误区 1、单元测试是一种浪费时间的工作 2、单元测试仅仅是证明这些代码做了什么
4、3、我是个很棒的程序员, 我是不是可以不进行单元测试? 4、集成测试能捕捉到所有的Bug 5、单元测试的成本效率不高单元测试环境 1、详细设计说明书 2、源程序清单 3、驱动模块 4、桩模块单元测试的主要任务在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。 单元测试策略(三种方式)由顶向下的单元测试先对最顶层的单元测试,把顶层所调用的单元做桩模块,其次对第二层进行测试,使用上面已测试的单元做驱动模块。如此类推,测试完成所有模块由低到上的单元测
5、试先对最低层的模块进行测试,模拟调用该模块做驱动模块,然后再对上一层做单元测试,用下面已被测试的模块做桩模块。如此类推,测试完所有模块孤立测试每个单元模块进行独立的测试,都需为每个模块设计驱动模块和桩模块单元测试用例设计思路(6个步骤)为系统运行设计测试用例证明单元至少在某种正常情况下能够运行了。测试分析技术:规范导出法、等价类划分为正向测试设计用例验证设计说明书所对应的功能或性能指标是否实现。测试分析技术:规范导出法、等价类划分、状态转换测试为逆向测试设计用例验证被测软件单元有没有做它不应该做的事情。测试分析技术:错误猜测法、边界值分析、状态转换测试为满足特殊需求设计测试用例验证系统性能、安
6、全性、保密性等。测试分析技术:规范导出法为代码覆盖设计用例满足特定覆盖标准测试分析技术:分支测试、条件测试、数据定义使用测试、状转换测试单元测试过程:(3个阶段,8个活动)完成测试计划(计划阶段)(1)计划总的方法(项目计划、软件需求文档)(2)确定被测特性(单元需求文档)(3)优化总的计划获得测试集(设计阶段)(1)设计测试集(单元需求文档、测试元素、测试计划等)(2)完成改进的计划和设计度量测试单元(执行和总结阶段)(1)执行测试规程(验证了的测试数据、测试项配置、测试用例规格等)(2)检查结束条件(3)评价测试工作和单元单元测试工具介绍代码静态分析工具Logscope,McCabe QA
7、,CodeTest等代码检查工具PC-LINT,CodeChk,Logiscope等测试脚本工具TCL,Python,Perl等覆盖率检测工具Logiscope,PureCoverage,TrueCoverage,McCabe Test等内存检测工具Purify,BoundsCheck,CodeTest等专为单元测试设计的工具RTRT,Cantata,AdaTest等二 、集成测试什么是集成测试集成测试是在单元测试的基础上,将所有模块按照概要设计要求组装成为子系统或系统所进行的测试集成测试关注的重点模块接口的数据交换各子功能组合起来能否达到预期要求的父功能模块间是否有不利影响全局数据结构是否有
8、问题单个模块的误差是否会累积放大单元测试与集成测试区别测试对象:单元测试对象是实现具体功能的单元,一般对应详细设计中所描述的设计单元。集成测试是针对概要设计所包含的模块以及模块组合进行的测试。测试方法:单元测试所使用的主要测试方法是基于代码的白盒测试。而集成测试所使用的主要测试方法是基于功能的黑盒测试。测试时间:集成测试要晚于单元测试,所以单元测试的好坏直接影响着集成测试。测试内容:单元测试主要包括模块内程序的逻辑等方面,集成测试主要是验证各个接口、接口之间的数据传递关系、模块组合后能否达到预期效果。集成测试方法大爆炸集成Big bang integration (all module tog
9、ether)自顶向下集成Top down integration (from higher levels no test drivers are needed)自底向上集成Bottom up integration (from lower levels No test stubs necessary)三明治集成Sandwich testing (combination of bottom-up and top-down)大爆炸集成 1. 目的 尽可能缩短测试时间,使用最少的测试用例验证系统。 2. 定义 大爆炸集成也称为一次性组装或整体拼装,这种集成测试策略的做法就是把所有通过单元测试的模块一
10、次性集成到一起进行测试,不考虑组件之间的互相依赖性及可能存在的风险。 3. 具体方法 举例来说,假设要对某个系统的部分功能(包括4个模块)进行测试,其功能分解如图:Unit Test D Unit Test C Unit Test B Unit Test A System Test(A,B,C,D)测试过程:先对每个模块分别进行单元测试,然后再把所有模块组装在一起进行测试。4. 优点 (1)可以并行测试所有模块。 (2)需要的测试用例数目少。 (3)测试方法简单、易行。5. 缺点 (1)由于不可避免存在模块间接口、全局数据结构等方面的问题,所以一次运行成功的可能性不大。 (2)如果一次集成的模
11、块数量多,集成测试后可能会出现大量的错误。另外,修改了一处错误之后,很可能新增更多的新错误,新旧错误混杂,给程序的错误定位与修改带来很大的麻烦。 (3)即使集成测试通过,也会遗漏很多错误。 6. 适用范围 (1)只需要修改或增加少数几个模块的前期产品稳定的项目; (2)功能少,模块数量不多,程序逻辑简单,并且每个组件都已经过充分单元测试的小型项目; (3)基于严格的净室软件工程(由IBM公司开创的开发接近零缺陷的软件的成功做法)开发的产品,并且在每个开发阶段,产品质量和单元测试质量都相当高的产品。 自顶向下集成1、 自顶向下的集成测试就是按照系统层次结构图,以主程序模块为中心,从顶层控制(主控
12、模块)开始,自上而下按照深度优先或者广度优先策略,对各个模块一边组装一边进行测试。 采用同设计顺序一样的思路对被测系统进行测试,来验证系统的稳定性。Top-down Integration TestingABCDGFELayer ILayer IILayer IIITest ATest A, B, C, D,E, F, GTest A, B, C, DLayer ILayer I + IIAll Layers 2、 3、优点:较早验证了主要的控制和判断点;功能可行性较早得到证实;最多只需要一个驱动模块;可以与设计并行进行;支持故障隔离等4、缺点:桩开发和维护的成本大;底层组件的一个需求的修改会
13、导致许多顶层组件的修改;底层模块越多,会导致底层测试不充分。5、适用范围:结构化编程方法的软件产品,且产品结构相对简单自底向上集成 1. 定义 自底向上集成是从系统层次结构图的最底层模块开始按照层次结构图,逐层向上进行组装和集成测试的方式。 2.方法 从最底层的模块开始组装; 编制驱动程序,协调测试用例的输入与输出; 测试集成后的构件; 使用实际模块代替驱动程序,按程序结构向上组装测试后的构件; 重复上面的第二步,直到系统的最顶层模块被加入到系统中为止。 Bottom-up IntegrationABCDGFELayer ILayer IILayer IIITest D,GTest FTest
14、 ETest GTest CTest A, B, C, D,E, F, GTest B, E, F3、优点:较早验证底层模块;因驱动模块是额个编写,所以集成策略小;减少桩模块的工作量,支持故障隔离4、缺点:驱动模块开发工作量大;对高层的验证在最后,设计上的错误不能被及时发现。5、适用范围:大部分采用结构化编程方法的软件产品,且产品结构相对简单三明治集成(混合集成)1.目的 综合利用自顶向下和自底向上两种集成测试策略的优点2.定义 三明治集成是一种混合增殖式测试策略,综合了自顶向下和自底向上两种集成方法,把系统划分成三层,中间一层为目标层,目标层上采用自顶向下集成,目标层下采用自底向上集成。Sa
15、ndwich Testing StrategyABCDGFELayer ILayer IILayer IIITest D,GTest FTest ETest GTest ATest A, B, C, D,E, F, GTest B, E, FBottomLayerTestsTopLayerTestsTest BTest DTest CTest A, B, C, D3、优点:集合了上两种集成的优点4、缺点:中间层在被集成前测试不充分。5、适用范围:大部分开发软件项目都可以使用集成测试过程(4个阶段)1、计划阶段输入:需求规格说明书、概要设计文档、产品开发计划输出:集成测试计划2、设计阶段输入:需
16、求规格说明书、概要设计文档、集成测试计划输出:集成测试设计3、实现阶段输入:需求规格说明书、概要设计文档、集成测试计划、集成测试设计输出:集成测试用例、规程、测试代码、测试脚本、测试工具4、执行阶段输入:需求规格说明书、概要设计文档、集成测试计划、集成测试设计集成测试用例、规程、测试代码、测试脚本、测试工具、详细设计、代码、单元测试报告输出:集成测试报告集成测试环境1、硬件环境尽可能考虑实际环境2、操作系统环境不同机型使用不同的操作系统版本3、数据库环境从性能、版本、容量等多方面考虑4、网络环境集成测试工具介绍1、用于单元的测试工具同样可以用于集成测试2、界面测试工具:SQA Robot,QA
17、Run,WinRunner等3、无线测试的仪器:NetHark的协议卡、MGTS、3GTS等三 、系统测试 P33什么是系统测试系统测试是将集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、支持软件、数据等其它系统元素结合在一起,在实际运行(使用)环境下所进行的一系列测试活动。系统测试的目的通过与系统的需求定义比较,检查软件是否存在与系统定义不符合或与之矛盾的地方,以验证软件系统的功能和性能等满足其规约所指定的要求。系统测试方法功能测试强度测试 性能测试 恢复测试 安全测试可靠性测试 安装测试 容量测试文档测试 可用性测试功能测试功能测试是要检查系统是否满足在需求说明书和
18、测试需求列表中规定的功能。功能测试要求测试设计者对产品的规格说明、需求文档、产品业务功能都非常熟悉。强度测试(压力测试)强度测试是要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。例如:把输入数据速率提高一个数量级,确定输入功能将如何响应。设计需要占用最大存储量或其它资源的测试用例进行测试。 性能测试性能测试是要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。性能测试常常需要与强度测试结合起来进行,并常常要求同时进行硬件和软件检测。通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,
19、等等。恢复测试恢复测试是要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。错误探测功能系统能否发现硬件失效与故障;能否切换或启动备用的硬件;在故障发生时能否保护正在运行的作业和系统状态;在系统恢复后能否从最后记录下来的无错误状态开始继续执行作业,等等。安全性测试安全性测试是要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞,以检查系统对非法侵入的防范能力。测试人员扮演非法入侵者。系统安全设计的准则是:使非法侵入的代价超过被保护信息的价值。可靠性测试是为了检验系统的可靠性是否达到预期目标而进行的测试。 平均失效间隔时间 M
20、TBF (Mean Time Between Failures) 是否超过规定时限? 因故障而停机的时间 MTTR (Mean Time To Repairs) 在一年中应不超过多少时间。安装测试安装测试的目的不是找软件错误,而是找安装错误。在安装软件系统时,会有多种选择。 要分配和装入文件与程序库 布置适用的硬件配置 进行程序的联结。安装测试就是要找出在这些安装过程中出现的错误,验证成功安装系统的能力。容量测试容量测试是根据预先分析出的某项指标极限值,测试系统在其极限值状态下是否能保持正常运行。例如, 对于编译程序,让它处理特别长的源程序; 对于操作系统,让它的作业队列“满员”; 对于信息检
21、索系统,让它使用频率达到最大。在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。完成标准可定义为:所计划的测试已全部执行,而且达到或超出指定的系统限制没有出现任何软件故障。文档测试检查用户文档的清晰性和精确性。四 、验收测试 P36验收测试是以用户为主的测试,软件开发人员和QA(质量保证)人员也应参加。由用户参加设计测试用例,使用用户界面输入测试数据,并分析测试的输出结果。一般使用生产中的实际数据进行测试。在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。测试是指软件开发公司组织内部人员模拟各类用户行对即将面市软件产品(称为
22、版本)进行测试,试图发现错误并修正。测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对版本进行改错和完善。五、 其它测试类型回归测试在软件生命周期中的任何一个阶段,只要软件发生了改变,就可能给该软件带来问题。每当软件发生变化时,就必须进行回归测试,重新测试原有的功能,以便确定修改是否达到了预期的目的,检查修改是否损害了原有的正常功能。回归测试需要反复进行 常利用自动测试工具来实现重复的和一致的回归测试 面向对象的软件测试面向对象的单元测试 :类测试面向对象的集成测试 :类簇测试面向对象的系统测试六、 面对对象软件测试1. 面向对象软件的单元测试最小的可测试单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026综合类-社会工作综合能力(中级)-第二章社会工作价值观与专业伦理历年真题摘选带答案详解
- 2026综合类-畜牧兽医考试-兽医化验历年真题摘选带答案详解
- 医院护理培训管理手册
- 环保制冷剂项目运营管理方案
- 住宅小区消防系统运行维护方案
- 功能薄膜材料项目可行性研究报告
- 废弃物分类处理处置培训内容
- 小微企业财务内控管理制度
- 集成电路项目初步设计
- 城市综合管廊日常运行维护方案
- 县域精神富有评价指南
- 20CJ88-1 20CS02-1 餐厨废弃物智能处理设备选用与安装图集(一)
- 《光伏发电工程可行性研究报告编制规程》(NB/T32043-201)中文版
- 建设法规与案例分析教案
- 医疗废物和污水管理领导小组及岗位职责
- 第八版妇产科学配套ppt课件-妊娠特有疾病
- PHP+MySQL动态网站开发基础教程全套完整教学课件
- 端点效应(共12张PPT)
- 体育教学团队申请
- GB/T 1216-2004外径千分尺
- 【QC】提高隧道初期支护喷射砼一次验收合格率
评论
0/150
提交评论