[计算机软件及应用]software testing-测试级别

上传人:tia****nde 文档编号:70373289 上传时间:2019-01-16 格式:PPT 页数:121 大小:4.53MB
返回 下载 相关 举报
[计算机软件及应用]software testing-测试级别_第1页
第1页 / 共121页
[计算机软件及应用]software testing-测试级别_第2页
第2页 / 共121页
[计算机软件及应用]software testing-测试级别_第3页
第3页 / 共121页
[计算机软件及应用]software testing-测试级别_第4页
第4页 / 共121页
[计算机软件及应用]software testing-测试级别_第5页
第5页 / 共121页
点击查看更多>>
资源描述

《[计算机软件及应用]software testing-测试级别》由会员分享,可在线阅读,更多相关《[计算机软件及应用]software testing-测试级别(121页珍藏版)》请在金锄头文库上搜索。

1、,P A R T,软件测试级别,软件生命周期中的测试(1),开发过程中使用的4个测试级别: 单元测试集成测试系统测试验收测试 单元测试:完成对最小的软件设计单元模块的验证工作,只有在保证模块作为一个独立运行单元能够正确运行的条件下,后续的测试才可能进行. 单元测试通常情况下是面向白盒的. 集成测试:把经过单元测试的模块按软件结构组合在一起作为一个系统或一个子系统来综合测试.,软件生命周期中的测试(2),系统测试:测试软件系统和其他的系统元素(及硬件、数据库和人机交互信息)组合构成完整的计算机应用系统中所有的元素配合是否合适以及整个系统的功能、性能、执行强度、安全性等是否达到规定标准. 验收测试

2、:根据产品规格说明书严格检查产品,确保开发的软件产品符合用户的各方面要求。,单元测试概述,测试对象:检查组件的内部行为 测试环境:测试驱动器 测试目标: 功能:测试对象的输入/输出行为 健壮性:组件被调用方式和规格说明是否一致 非功能:对组件质量影响重大的组件特性 效率:组件对计算机资源利用的有效程度 可维护性:修改系统的难易程度,如代码结构、模块化、代码注释的质量、标准符合度、可理解性等(静态测试) 测试策略:白盒测试为主、TDD,单元测试的定义(1),定义:单元测试是对软件基本组成单元(模块)进行的测试 目标:确保模块被正确地编码 依据:详细设计说明和源代码 过程:包括测试用例设计、测试脚

3、本开发、执行测试、调试和分析结果,单元测试的定义(2),执行者:由程序员和测试人员共同完成 测试方法:以白盒测试方法为主,辅以黒盒测试方法 评估:通过所有单元测试用例,代码没有严重缺陷,为何要进行单元测试,尽早发现错误 错误发现越早,成本越低 开发人员过于自信,后期复杂度高,发现解决BUG困难 检查代码是否符合设计和规范,单元测试的目标(1),主要目标是确保单元模块被正确编码,不仅要测试代码的功能,也要确保代码在结构上可靠健全,能够在所有条件下正确响应。 信息能否正确地流入和流出单元; 在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式、内容及相互关系不发生错误,也包括全局变量在

4、单元中的处理和影响;,单元测试的目标(2),在为限制数据加工而设置的边界处,能否正确工作; 单元的运行能否做到满足特定的逻辑覆盖 单元中发生了错误,其中的出错处理措施是否有效。,单元测试的任务1:模块接口测试(1),检查模块接口是否正确 Checklist: 输入的实际参数与形式参数是否一致(个数、类型) 调用其他模块的实际参数与被调模块的形参是否一致(个数、类型) 是否存在与当前模块无关的参数引用 是否修改了只读型参数,单元测试的任务1:模块接口测试(2),全局变量的定义在各模块是否一致 若模块包括外部输入输出,则需要考虑: 文件操作语句是否正确 缓冲区大小与记录长度是否匹配 是否处理了输入

5、输出错误 输出信息中是否有文字性错误,单元测试的任务2:模块局部数据结构测试,检查局部数据结构是否完整正确 Checklist: 不合适或不相容的类型说明 变量无初值 变量初始化或默认值有错 不正确的变量名 从未被使用过的变量 出现上溢、下溢和地址异常,单元测试的任务3:模块边界条件测试,检查边界数据处理的正确性 Checklist: 边界值内合法边界数据的处理 边界值外非法边界数据的处理,单元测试的任务4:模块中所有独立执行路径测试,检查每一条独立执行路径(基路径)的测试,却抱每条语句被至少执行一次,从而发现因错误计算、不正确的比较和不适当的控制流造成的错误。 Checklist: 错误地使

6、用逻辑运算符或优先级 混合类型运算(不同数据类型的对象之间进行比较) 变量初值错误、精度不够、表达式符号出错、循环条件,死循环,单元测试的任务5:模块的各条错误处理通路测试,预见各种出错条件、预设各种出错处理 Checklist: 输出的出错信息难以理解 记录的错误与实际不相符 在程序自定义的出错处理执行之前,系统已经介入 异常处理不当 未提供足够的定位出错的信息,静态测试技术的运用,静态测试技术:不运行被测试程序,对代码通过检查、阅读进行分析。适用于新开发的和重用的代码。 两步曲: 走查 (Walk Through) 审查 (Inspection)/评审(Review),编码的标准和规范,M

7、ISRA C Coding Standard(127条C语言编码标准) 美国国家标准协会(ANST) 国际工程协议(IEC) 国际标准化组织(ISO) 计算机械联合会(ACM) 电子电气工程学会(IEEE),动态测试技术的运用(1),动态测试真正将程序运行起来,需要设计系列的测试用例(综合白盒和黑盒测试方法)保证测试的完整性和有效性。 运行单元程序有时需要基于被测单元的接口,开发相应的驱动模块和桩模块。 驱动模块(drive):对底层或子层模块进行测试所编写的调用这些模块的程序 桩模块(stub):对顶层或上层模块进行测试时所编写的替代下层模块的程序,动态测试技术的运用(2),动态测试技术的运

8、用(3),驱动模块主要完成以下事情: 接受测试输入 对输入进行判断 将输入传给被测单元,驱动被测单元执行 接受被测单元执行结果,并对结果进行判断 将判断结果作为用例执行结果输出测试报告 被测单元用什么语言,驱动就用什么语言写。,动态测试技术的运用(4),/*被测程序*/ int Fun(int in) if (in = 0) return 1; else return -1; ,动态测试技术的运用(5),针对该被测函数,驱动如下: int Ex_TestFun(ClientData clientData,Tcl_Interp * interp,int argc, char* argv) int

9、 i; int ret,iExceptedRet; /打开测试结果记录文件 FILE * out; out = fopen(“D:result.txt“,“a“); /第一步:检查用户输入参数个数是否正确 if (3 != argc) fputs(“Parameters error“,out); fflush(out); return TCL_ERROR; ,动态测试技术的运用(6),/第二步:取出用户输入参数 if (TCL_OK != Tcl_GetInt(interp,argv1,动态测试技术的运用(7),/第四步:将被测函数执行结果和输入的期望结果进行比较,根据比较结果作为用例执行结果

10、输出到测试报告中 if (ret != iExceptedRet) fputs(“test fail“,out); fflush(out); else fputs(“test success“,out); fflush(out); return TCL_OK; ,调试,调试与测试的对象及采用的方法有很大程度上的相似,调试还用到断点控制等排错方法,但其目的却完全不同。测试是为了找出软件中存在的缺陷,而调试是为了解决存在的缺陷。,评估,单元测试通过的一般准则: 软件单元功能与设计需求一致 软件单元接口与设计需求一致 能够正确处理输入和运行中的错误 在单元测试中发现的错误已经得到修改并且通过了测试

11、达到了相关覆盖率的要求 完成软件单元测试报告,单元测试的过程,在详细设计阶段完成单元测试计划; 建立单元测试环境,完成测试设计和开发 执行单元测试用例,并且详细记录测试结果; 判定测试用例是否通过 提交单元测试报告,单元测试的文档,软件需求规格说明书、软件详细设计说明书 单元测试计划 单元测试计划、软件详细设计说明书 单元测试用例 单元测试用例及软件需求规格说明书、软件详细设计说明书 缺陷跟踪报告/缺陷检查表 单元测试用例、缺陷跟踪报告、缺陷检查表 单元测试检查表 评估 单元测试报告,集成测试(1),测试对象:集成测试是将已经通过测试的组件按照设计要求组合起来再进行的测试,以检查这些组件之间的

12、接口是否存在问题。 测试环境:通用的测试驱动器、监视器 测试目标:发现接口与相互之间协作的问题,以及被集成部分之间的冲突。 集成策略:以什么样的顺序对组件进行集成。,集成测试(2),从项目计划、测试计划、系统结构等方面进行测试策略分析。 项目计划:决定系统单个部分开发完成时间、何时可以进行测试。 测试计划:决定测试的内容、深度。 系统结构:决定整个系统包含组件的数量和内容,以及这些组件相互之间的依赖方式。即通过对层次结构图、调用图的分析,划分出集成测试的粒度,并进行接口划分、接口分类和接口数据等接口分析。,集成测试(3),接口划分分析包括要确定系统的边界、子系统的边界和模块的边界;确定模块的内

13、部接口;确定子系统内模块间的接口;确定系统与OS的接口;确定系统与硬件的接口;确定系统与第三方软件的接口。 系统内部接口是各模块相互交互的接口,是集成测试的重点,而系统外部接口是外部系统和系统交互接口,是系统测试的重点。 接口数据分析指分析穿越接口的数据,从中产生测试用例,包括函数接口、消息接口和类接口。,集成测试前的准备,人员安排:有经验的测试人员和软件开发者共同完成; 测试计划:在系统设计阶段制定,包括测试的描述和范围、测试的预期目标、测试环境、集成模式、测试用例设计方法、时间表等 集成策略:采用非渐增式测试模式还是渐增式测试模式; 测试方法:以黑盒测试为主。,常用的集成测试故障(1),配

14、置/版本控制错误; 遗漏、重叠或冲突函数; 不一致的数据结构; 使用冲突的数据视图; 破坏全部存储或数据库数据的完整性; 由于编码错误或未预料到的运行时绑定导致的错误方法调用; 客户发送违反服务的前提条件、顺序约束的消息;,常用的集成测试故障(2),错误的对象和消息的绑定; 错误的参数或不正确的参数值; 由不正确的内存分配引起的失败; 不正确使用虚拟机和OS; 组件之间的冲突; 资源竞争导致的错误。,SATM系统:问题陈述(1),SATM系统:问题陈述(2),SATM系统的语境图,SATM系统的第1层数据流图,SATM系统的实体/关系模型,上层SATM有限状态机,PIN输入有限状态机,SATM

15、系统的一种分解树,三种集成测试方法,基于功能分解的集成测试 自顶向下集成 自底向上集成 三明治集成 大爆炸集成 基于调用图的集成测试 基于路径的集成测试,驱动程序和桩程序,驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。驱动模块在集成测试中接受测试数据,把相关的数据传送给被测模块,启动被测模块,并打印出相应的结果。 桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。桩模块由被测模块调用,它们一般只进行很少的数据处理,例如打印入口和返回,以便于检验被测模块与其下级模块的接口。,自顶向下集成(1),自顶向下集成从主程序(树根)开始。所有被主程序

16、调用的下层单元都作为“桩”出现,桩就是模拟被调用单元的一次性代码。 以SATM系统为例,要执行自顶向下集成测试,第一步就应该是为被主程序调用的所有单元开发以下单元的桩: WatchCardSlot(检查ATM卡槽) ContorlCardRoller(控制ATM卡传送器) ScreenDriver(屏幕驱动器) ValidateCard(检验ATM卡) ValidatePIN (检验PIN) ManageTransaction (管理事务处理) NewTransactionRequest(新事务处理请求),自顶向下集成(2),一旦提供了STAM主程序的所有桩之后,就开始测试主程序(看成一个独立单元),可以使用合适的功能性

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号