文档详情

软件测试技术(第三版) 课件 第5章 单元测试.pptx

发布:2025-02-23约5.41千字共41页下载文档
文本预览下载声明

第5章单元测试

单元测试的定义单元测试目标单元测试的意义单元测试的内容5.1单元测试概述

5.1.1单元测试定义1.概念单元(Unit)指一个可独立运行的代码段,独立运行是指的是这个工作不受前一次或接下来的程序运行的结果影响。单元测试(unittesting)对软件设计的最小单元进行功能、性能、接口和设计约束等正确性进行检验,主要测试其在语法、格式和逻辑上的错误,并验证程序是否符合规范所要求功能的最具有实践意义的方法。

5.1.1单元测试定义单元测试是对软件基本组成单元进行的测试。单元测试从程序的内部结构出发来进行测试的,多采用白盒测试(结构性测试)技术。单元测试是软件开发过程中进行的最低级别的测试活动。测试进行得越早越好。测试工作主要是由程序开发人员进行自测和互测,同时还需要单独的测试角色,来进行测试和评审。

5.1.1单元测试定义1.测试对象:“单元”结构化编程语言单元测试对象是函数或者子过程。面向对象语言单元测试对象是类或者类的方法。如一个菜单、屏幕显示界面或对话框等

5.1.1单元测试定义2.单元测试方法静态测试动态测试

5.1.2单元测试目标3.目标(1)单元测试能更准更全面地找到错误,显著提高软件质量检查代码实现是否符合设计测试依据是详细设计描述(2)单元测试能够大量削减开发时间和成本尽早发现错误

5.1.3单元测试的意义1.单元测试对软件的设计实现的意义加强代码的可测试性,促进代码的重构;更加清晰的揭示出开发中的设计流程;对架构的反思:更清楚怎样使用该被测试单元。软件的代码更容易维护。保证软件项目组人员的良好沟通;有效的单元测试是推行全局质量文化的一部分,而这种质量文化将会为软件开发者带来无限的商机。

5.1.3单元测试的意义2.单元测试对软件开发者的意义更清晰的认识设计规格书中所要求的功能;锻炼程序开发人员逻辑思维能力,代码静态分析技能;促进代码编写标准的一致性;接触部分以外的其他领域;提供一个学习的机会。

单元测试的内容很多,我们需要通过各种测试方法来找到错误,通过不断的总结,形成了许多检查列表(CheckList)。通过它帮助开发人员形成良好的编程风格,提高源程序的可读性和可维护性,降低出错的机会。同时也可以使得测试更加全面,避免遗漏。5.1.4单元测试的内容

单元测试主要对模块的五个基本特性进行评价错误处理模块接口局部数据结构重要的执行路径边界条件模块

1)模块接口测试对通过被测模块的数据流进行测试,检查进出模块的数据是否正确。Checklist:模块的实际输入与定义的输入是否一致个数、类型、顺序模块中对于非内部/局部变量是否合理使用使用其他模块时,是否检查可用性和处理结果使用外部资源时,是否检查可用性并及时释放资源内存、文件、硬盘、端口等其他

1)模块接口测试(续)在做内外存交换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写/输入错误;I/O错误是否检查并做了处理。

2)模块局部数据结构测试检查局部数据结构能否保持完整性Checklist:变量从来没有被使用可能别的地方使用了错误的变量名变量没有初始化错误的类型转换数组越界非法指针变量或函数名称拼写错误使用了外部变量或函数其他

3)模块边界条件测试检查临界数据是否正确处理Checklist:普通合法数据是否正确处理普通非法数据是否正确处理边界内最接近边界的(合法)数据是否正确处理边界外最接近边界的(非法)数据是否正确处理其他

4)模块独立执行路径测试对模块中重要的执行路径进行测试。检查由于计算错误、判定错误、控制流错误导致的程序错误。Checklist:死代码错误的计算优先级精度错误比较运算错误赋值错误表达式的不正确符号:、=;=、==、!=循环变量的使用错误错误赋值其他

5)模块内部错误处理测试检查内部错误处理设施是否有效Checklist:是否检查错误出现资源使用前后其他模块使用前后出现错误,是否进行错误处理抛出错误通知用户进行记录错误处理是否有效在系统干预前处理报告和记录的错误真实详细其他

静态测试动态测试5.2单元测试的策略和方法

不实际运行程序,而是通过检查和阅读等手段来发现错误并评估代码质量的软件测试技术。也称为静态代码分析技术。它有助于提高产品质量、安全性,甚至缩短上市时间。代码走读(Codewalkthrough)代码审查(CodeInspection)代码评审(codeReview)5.2.1静态测试

定义:开发组内部进行的,采用讲解、讨论和模拟运行的方式进行的查找错误的活动。经验:限时避免跑题参加人员经验丰富的开发人员和本模块相关的开发人员本项目

显示全部
相似文档