1、Software Testing 软件测试第1页Software Testing 单元测试第2页本章内容单元测试概述(了解)单元测试概述(了解)单元测试内容(掌握)单元测试内容(掌握)单元测试环境(了解)单元测试环境(了解)单元测试策略(了解)单元测试策略(了解)单元测试活动(了解)单元测试活动(了解)第3页1.1 单元测试概述 概念:概念:单元测试又称模块测试,是针对软件设单元测试又称模块测试,是针对软件设计最小单位计最小单位程序模块,进行正确性程序模块,进行正确性检验测试工作。其目标在于发觉各模块检验测试工作。其目标在于发觉各模块内部可能存在各种差错。内部可能存在各种差错。单元测试需要从程
2、序单元测试需要从程序内部结构内部结构出发设计出发设计测试用例。测试用例。第4页 概念:概念:单元测试是软件开发过程中进行单元测试是软件开发过程中进行最低级最低级别别测试活动。测试活动。单元测试是对软件基本单元测试是对软件基本组成单元组成单元进行测进行测试。试。单元测试普通在单元测试普通在编码之后,由开发人员编码之后,由开发人员完成完成单元测试多采取单元测试多采取白盒测试白盒测试(结构性测试)(结构性测试)技术,系统内多个模块能够并行地进行技术,系统内多个模块能够并行地进行测试。测试。第5页 单元测试目标单元测试目标在于发觉各模块内部可单元测试目标在于发觉各模块内部可能存在各种错误。能存在各种错
3、误。验证代码是否与设计相符合;验证代码是否与设计相符合;发觉设计和需求中存在错误;发觉设计和需求中存在错误;发觉在编码过程中引入错误;发觉在编码过程中引入错误;第6页 单元测试对象单元测试对象普通对应详细设计中单元测试对象普通对应详细设计中所描述基本单元。所描述基本单元。结构化编程语言,如结构化编程语言,如C,单元测试,单元测试对象是对象是函数或者子过程函数或者子过程。面向对象语言,如面向对象语言,如C+,单元测试,单元测试对象是对象是类或者类方法类或者类方法。第7页1.2 单元测试内容在单元测试时,测试者需要依据在单元测试时,测试者需要依据详细详细设计说明书和源程序设计说明书和源程序清单,了
4、解该模清单,了解该模块块I/O条件和模块逻辑结构,主要采条件和模块逻辑结构,主要采取白盒测试测试用例,辅之以黑盒测取白盒测试测试用例,辅之以黑盒测试测试用例,使之对任何合理输入和试测试用例,使之对任何合理输入和不合理输入,都能判别和响应。不合理输入,都能判别和响应。第8页1.2 单元测试内容(续)单元测试内容(续)模块模块错误处理错误处理模块接口模块接口局部数局部数据结构据结构 主要主要执行路径执行路径边界条件边界条件单元测试主要对模块单元测试主要对模块五个基本特征五个基本特征进行评价进行评价第9页1.3 单元测试环境基本单元本身不是一个独立程序,自基本单元本身不是一个独立程序,自己不能运行,
5、要靠其它部分来调用和己不能运行,要靠其它部分来调用和驱动,必须为每个基本单元开发驱动驱动,必须为每个基本单元开发驱动模块或桩模块。模块或桩模块。驱动模块驱动模块(driver)桩模块桩模块(stub)存根模块存根模块第10页单元测试环境驱动模块驱动模块(Driver):被测基本单元主:被测基本单元主程序,它接收测试数据,并把数据传程序,它接收测试数据,并把数据传送给被测单元,最终输出实测结果。送给被测单元,最终输出实测结果。桩模块桩模块(Stub):用来代替被测基本单:用来代替被测基本单元调用其它基本单元。元调用其它基本单元。驱动模块和桩模块是测试使用软件,驱动模块和桩模块是测试使用软件,而不
6、是软件产品组成部分,但它需要而不是软件产品组成部分,但它需要一定开发费用。一定开发费用。第11页单元测试环境测试结果测试结果驱动模块驱动模块桩模块桩模块1被测单元被测单元测试用例测试用例桩模块桩模块3桩模块桩模块2第12页单元测试测试环境举例:单元测试测试环境举例:B BA AC CD DE E待测试模块待测试模块第13页单元测试测试环境举例:被测模块被测模块 B B 驱动模块驱动模块(模拟模块模拟模块A)A)桩模块桩模块(测试存根测试存根)(模拟模块模拟模块E)E)测试用例测试用例测试结果测试结果 许多模块不能用简单软件进行充分单元测试,此时,完全测试可放到集成测试阶段再进行。第14页单元测
7、试测试环境举例单元测试测试环境举例实际配置实际配置测试驱动际配置测试驱动际配置 温度显示模块温度显示模块温度接口温度接口模块模块 温度显示模块温度显示模块程序员编写程序员编写桩模块桩模块(测试存根测试存根)温度值测试文件温度值测试文件第15页被测单元被测单元代码审查单代码审查单需求和设计文档需求和设计文档代码审查代码审查Bug清单和代码审查结果表清单和代码审查结果表设计测试用例设计测试用例驱动模块、桩模块驱动模块、桩模块测试代码等测试代码等输入输入单单元元测测试试流流程程执行测试执行测试测试结果文件测试结果文件单元测试汇报单元测试汇报单元测试评审单元测试评审测试评审结论测试评审结论第16页1.
8、6 单元测试技术单元测试技术从整体上分为单元测试技术从整体上分为白盒测试白盒测试与与黑盒黑盒测试测试。其中白盒测试使用程序设计控制结构导出测其中白盒测试使用程序设计控制结构导出测试用例,试用例,针对程序内在结构(逻辑、数据流)针对程序内在结构(逻辑、数据流)进行测试进行测试。黑盒测试目标是验证单元实现功。黑盒测试目标是验证单元实现功效,而不需要知道程序是怎样实现它们。效,而不需要知道程序是怎样实现它们。黑盒测试黑盒测试关注是单元输入与输出关注是单元输入与输出,不是白盒,不是白盒测试替换品,而是辅助白盒测试发觉其它类测试替换品,而是辅助白盒测试发觉其它类型错误。型错误。白盒测试技术:白盒测试技术
9、:逻辑覆盖测试、路经测试、逻辑覆盖测试、路经测试、数据流测试数据流测试黑盒测试技术:黑盒测试技术:边界值测试、等价类测试、边界值测试、等价类测试、基于决议表测试。基于决议表测试。第17页单元测试难点到底要测试到什么程度到底要测试到什么程度草草了事草草了事/过犹不及过犹不及/何处是平衡点何处是平衡点?确定测试标准之一:覆盖率确定测试标准之一:覆盖率大量测试代码和测试用例大量测试代码和测试用例生成、共享、管理、标注很麻烦生成、共享、管理、标注很麻烦尽可能使用测试工具尽可能使用测试工具第18页Software Testing 谢谢 谢!谢!第19页模块接口测试模块接口测试(1)对经过被测模块数据流进
10、行测试,检验对经过被测模块数据流进行测试,检验进出模块数据是否正确。进出模块数据是否正确。Checklist:模块实际输入与定义输入是否一致模块实际输入与定义输入是否一致模块中对于非内部模块中对于非内部/局部变量是否合理使用局部变量是否合理使用使用其它模块时,是否检验可用性和处理结使用其它模块时,是否检验可用性和处理结果果使用外部资源时,是否检验可用性并及时释使用外部资源时,是否检验可用性并及时释放资源放资源第20页模块接口测试(模块接口测试(2)在做内外存交换时要考虑:在做内外存交换时要考虑:文件属性是否正确;文件属性是否正确;OPEN与与CLOSE语句是否正确;语句是否正确;缓冲区容量与统
11、计长度是否匹配;缓冲区容量与统计长度是否匹配;在进行读写操作之前是否打开了文件;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;在结束文件处理时是否关闭了文件;正文书写正文书写/输入错误,输入错误,I/O错误是否检验并做了处理。错误是否检验并做了处理。返回第21页模块局部数据结构测试模块局部数据结构测试检验局部数据结构能否保持完整性。设计测试检验局部数据结构能否保持完整性。设计测试用例检验数据类型说明、初始化、缺省值等方用例检验数据类型说明、初始化、缺省值等方面问题,还要查清全程数据对模块影响。面问题,还要查清全程数据对模块影响。Checklist:不正确或不一致数据类型说明
12、不正确或不一致数据类型说明不一致数据类型、错误类型转换不一致数据类型、错误类型转换变量初始化或缺省值有错变量初始化或缺省值有错使用还未赋值或还未初始化变量使用还未赋值或还未初始化变量数组越界数组越界非法指针非法指针变量或函数名称拼写错误变量或函数名称拼写错误全局数据对模块影响全局数据对模块影响 返回第22页模块边界条件测试模块边界条件测试采取边界值分析技术,针对边界值及其左、右采取边界值分析技术,针对边界值及其左、右设计测试用例。要尤其注意数据流、控制流中设计测试用例。要尤其注意数据流、控制流中刚好等于、大于或小于确定比较值时犯错可能刚好等于、大于或小于确定比较值时犯错可能性。性。检验临界数据
13、是否正确处理检验临界数据是否正确处理Checklist:普通正当数据是否正确处理普通正当数据是否正确处理普通非法数据是否正确处理普通非法数据是否正确处理边界内最靠近边界边界内最靠近边界(正当正当)数据是否正确处理数据是否正确处理边界外最靠近边界边界外最靠近边界(非法非法)数据是否正确处理数据是否正确处理其它其它返回第23页模块独立执行通路测试模块独立执行通路测试(1)选择适当测试用例,对模块中主要执行选择适当测试用例,对模块中主要执行路径进行测试。检验因为计算错误、判路径进行测试。检验因为计算错误、判定错误、控制流错误造成程序错误。定错误、控制流错误造成程序错误。Checklist:死代码死代
14、码错误计算优先级错误计算优先级精度错误精度错误表示式不正确符号表示式不正确符号循环变量使用错误循环变量使用错误其它其它第24页 比较判断与控制流经常紧密相关,测试用比较判断与控制流经常紧密相关,测试用例还应致力于发觉以下错误:例还应致力于发觉以下错误:1.不一样数据类型对象之间进行比较;不一样数据类型对象之间进行比较;2.错误地使用逻辑运算符或优先级;错误地使用逻辑运算符或优先级;3.因计算机表示不足,期望理论上相等而实际上因计算机表示不足,期望理论上相等而实际上不相等两个量相等;不相等两个量相等;4.比较运算或变量犯错;比较运算或变量犯错;5.循环终止条件或不可能出现;循环终止条件或不可能出
15、现;6.迭代发散时不能退出;迭代发散时不能退出;7.错误地修改了循环变量。错误地修改了循环变量。模块独立执行通路测试模块独立执行通路测试(2)返回第25页模块内部错误处理测试检验内部错误处理设施是否有效(模块错误处检验内部错误处理设施是否有效(模块错误处理功效是否包含有错误或缺点)理功效是否包含有错误或缺点)Checklist:是否检验错误出现是否检验错误出现资源使用前后资源使用前后其它模块使用前后其它模块使用前后出现错误,是否进行错误处理出现错误,是否进行错误处理抛犯错误抛犯错误通知用户通知用户进行统计进行统计错误处理是否有效错误处理是否有效在系统干预前处理在系统干预前处理汇报和统计错误真实详细汇报和统计错误真实详细其它其它返回第26页
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100