版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、软件测试,第五章单元测试,内容,本课的教学方法,牵引启发式教学法将采用以“4H1”为主线的教学方法。那么,“4H1”是什么?什么为什么什么时候谁怎样,教学目录,知识回顾什么是单元测试的定义为什么你必须进行烦人的单元测试什么时候谁来做单元测试典型的单元测试是如何进行的?需求分析、设计、编码、测试和维护作为未来的软测量从业者,你认为问题是什么?2.软件开发的模型是什么?告诉我你知道的模型,瀑布模型,快速原型模型,增量模型,螺旋模型。首先是知识复习。首先是知识复习。温斯顿罗伊斯在1970年提出了著名的瀑布模型。直到20世纪80年代初,它还是唯一被广泛使用的软件开发模式。它规定了它们从上到下连接的固定
2、顺序,就像瀑布一样向下流淌,因此得名。主要缺点:项目不同阶段之间的反馈很少。结果只能在项目生命周期的后期看到。1.知识评论,v模型:对应于瀑布模型。1.知识回顾,w模型:测试在每个开发阶段同步进行;1.知识评论,1。知识回顾,h模型:测试是贯穿整个生命周期的独立过程;2.什么单元测试的定义,也称为模块测试,是开发过程中最底层的活动。这是一个细粒度的测试。根据详细的设计规范,为模块中所有重要的控制路径设计测试用例,以便发现模块内部的错误。3.什么是软件测试模型?简单介绍一下。v模型W模型H模型,第一,知识回顾,第二,什么单元测试的定义,第二,什么,单元测试的对象:单元是软件中可以独立执行编码的最
3、小单元,通常一个人完成编程。对于用流语言设计的软件(如C,VisualBasic等)。),一个单元可以由一个或几个最接近的函数或过程组成。对于用面向对象语言设计的软件(如Java、C等等)。),单元可以是类或类的实例,或者是由方法实现的函数。对于网页或用户窗口界面,该单元可以是文本输入窗口或按钮。为什么你想做单元测试?单元测试很烦人,它浪费了太多时间?一旦编码完成,开发人员就迫不及待地进行集成,这样他们就可以看到实际的系统启动。在这一发展步骤中,真正的进步被外在的进步所取代。大量的时间将花在追踪包含在不同单元中的简单错误上。第二,单元测试的对象是什么:结构化程序,单元测试的单元是指功能,面向对
4、象程序,单元测试的单元一般是指类。但是,在实践中,以类为测试单元的复杂性高,可操作性差,仍然提倡以函数为单元测试的测试单元,但是一个类的所有测试函数都可以由一个测试类来组织。简单、实用和高效是最后一句话。在实践中,执行一个完整的计划单元测试和编写代码需要大致相同的能量。在确保手头有可靠组件的情况下,开发人员可以进行更有效的系统集成工作。因此,完整计划下的单元测试是一种更有效的时间利用。为什么,我是一个伟大的程序员,我不能做单元测试吗?人不是圣人,能做什么呢?编码不是一次性的过程。在现实世界中,必须维护软件产品以响应操作需求的变化。修改后,可重复的单元测试可以减少不必要的副作用。回归测试?为什么
5、,在任何情况下,集成测试会捕捉所有的错误?代码越大,它就越复杂,寻找bug也就越昂贵。图表列出了基于功能点的每个测试阶段的效率。单元测试的效率是集成测试的两倍,是系统测试的三倍。领域测试:软件投入使用后某一领域的所有测试活动。经验表明,一个认真的单元测试方法会在软件开发的这个阶段发现许多错误,并且修改它们的成本非常低。开发人员可以专注于单元之间的交互和全局功能的实现,而不是被困在充满错误的单元中。(4)单元测试何时进行,越快越好,通常是在编码阶段。在实际工作中,不必过分强调开发和测试的顺序,但效果是重要的。1.编码后;2.系统测试前;3.在编写测试用例之后;4.综合测试后;5.谁来做谁?白盒测
6、试,也叫程序员测试。同样,在大多数情况下,单元测试是由开发人员设计和执行的。执行单元测试的一般步骤是编译和运行程序(看它是否能正确运行)、静态测试(检查代码是否符合规范)和动态测试(深入检查代码的正确性、容错性和边界值),其中静态测试需要提前准备一个“代码规范检查表”,动态测试需要提前设计一些测试步骤和测试数据。第六,如何内容和方法,#包括无效是零(int m)如果(m!=0) printf(%d,m);else printf(%d,1);void main()int a5;int I=0;Printf(请输入五个整数n);对于(I=0;I=4;I)扫描(%d),测试步骤:编译并运行程序。首先
7、,编译程序。没有语法错误,编译通过。然后运行程序,输入1 2 3 4 0,并按回车键。产出1 2 3 4 1,符合预期结果。静态测试检查不符合编码规范(参考C语言编程规范)的程序,发现程序没有注释,所以应该注明程序的基本信息和每个功能的主要功能。动态测试深入检查代码的正确性、非法数据的容错性和边界值。6.单元测试模块接口测试本地数据结构测试路径测试错误处理测试边界测试模块接口测试检查进出程序单元的数据流是否正确。模块接口测试必须在任何其他测试之前进行。6.如何内容和方法、模块接口测试清单:(1)调用被测模块时的输入参数在数量、类型和顺序上是否与模块的形式参数一致;(2)被测模块调用子模块时,其
8、输入到子模块的参数在数量、类型和顺序上是否与子模块中的形式参数一致;(3)仅作为输入值的形式参数是否会被修改(4)调用标准函数的参数在数量、类型和顺序上是否正确;(5)各模块中全局变量的定义是否一致。本地数据结构测试在模块的工作过程中,需要测试模块的内部数据是否能够保持完整性,包括内部数据的内容、形式和相互关系是否无误。本地数据结构测试清单:(1)从未使用过变量,包括本地变量或在其他地方使用的函数。(2)变量未初始化。(3)错误的类型转换。(4)数组越界。(5)变量或函数名的拼写错误(6)不适当或不兼容类型的描述,以及(6)边界条件测试主要检查关键数据是否被正确处理。核对表:(1)普通法律数据
9、处理是否正确;(2)普通非法数据处理是否正确;(3)最接近边界的(合法/非法)数据是否被正确处理。独立路径测试在单元测试中,最重要的测试是路径测试。测试用例必须能够发现由计算错误、错误判断或异常控制流引起的错误。独立路径测试清单:死代码错误的计算优先级;精度误差,包括比较运算误差和赋值误差;表达式的符号不正确,包括,=,=,=,=,=;循环变量的错误使用,包括错误的赋值。,VI .错误处理测试错误处理的重点是模块中的错误处理工具是否有效。错误处理检查表:在使用资源之前和之后是否检查其他模块是否有错误,是否处理错误,抛出错误并通知用户记录错误处理是否有效,并在系统干预之前处理报告和记录的错误。其
10、他,6.2单元测试流程,6.2.1规划单元测试,确定测试需求,确定单元测试策略,确定单元测试的输入单元测试输出,哪些是关键模块?哪些程序最复杂和最容易出错?哪些程序相对独立,应该提前测试?哪些程序最容易传播错误?哪些程序对开发者最没有信心?帕累托法则:80的缺陷集中在20的模块中,经常出错的模块在纠正后也会出错?底层模块是什么?哪些模块最常用?要确定单元测试的策略,一旦单元测试的重点明确,就有必要进一步确认应用了什么测试方法。前面已经介绍了具体的方法,这里给出了一个综合的策略:确定单元测试的策略,首先根据需求规范、概要设计规范、详细设计规范、应用场景法、等价类划分法、规范推导法、状态转移法等。
11、首先,检查程序是否正确地实现了它的功能,其次,采用静态测试方法,如代码审查、遍历、桌面检查,重点是它是否符合编码规范以及模块接口是否正确。确定单元测试的策略,然后应用条件测试、分支测试和循环测试等测试程序路径来实现语句覆盖、决策覆盖和条件覆盖。最后,使用边界值分析、错误猜测、鲁棒性分析等方法来调查边界、异常和错误处理是否满足要求。单元测试输入、软件需求规范、软件详细设计规范、软件编码和单元测试任务书、软件集成测试计划、软件集成测试计划、用户文档、单元测试输出、单元测试计划、单元测试计划、需求跟踪规范或需求跟踪记录代码、静态检查记录、定期检查报告、问题记录、问题跟踪和解决记录、软件代码开发版本、
12、6.2.2设计单元测试、单元测试模型当我们进行单元测试时, 单元本身并不能构成一个实用的、可操作的程序系统,因此我们需要开发用于单元测试的打桩模块和驱动模块,从而完成我们的单元测试目的,即打桩模块和驱动模块的功能。 (1)驱动程序用于模拟被测模块的上层模块,相当于被测模块的主程序。它接收数据,将相关数据传输到被测模块,启动被测模块,并打印相应的结果。(2)存根用于模拟被测模块工作过程中调用的模块。他们通常不做什么数据处理。6.2.2设计单元测试,单元测试模型,6.2.2设计单元测试,例如,假设项目组有7个人分配任务,每个人负责实现一个模块。你负责B模块,你很优秀。你是第一个完成编码的人,现在你
13、需要进行单元测试。例如,因为B模块不是顶层模块,它不能包含主功能(A模块包含主功能),所以它不能独立运行。2.B模块调用D模块和E模块,但是D模块和E模块都还没有开发出来,所以B模块不可能被编译器编译。举个例子,那么我们如何测试B模块呢?需要做的事情:1 .分别编写两个模块Sd和Se,而不是D模块和E模块(函数名、返回值和传递的参数相同),这样就可以编译B模块了。Sd模块和Se模块是堆模块。2.写一个模块Da来代替包含主要功能的模块A。您可以在主函数中调用B模块,使B模块运行。Da模块是驱动模块。驱动模块主要完成以下工作:1 .接受测试输入;2.判断输入;3.将输入发送给被测单元并驱动被测单元
14、执行;4.接受被测试单元的执行结果并对结果进行判断;5.将判断结果作为用例的执行结果,输出测试报告。桩模块应完成以下工作:1 .编译程序;2.模拟被替换模块的各种可能值;6.2.2 .设计单元测试。示例1:如果要测试三个功能单元A、B和C,功能A是顶层功能,第二层是功能B和C。对UT使用自顶向下的策略:(在三个步骤C中分别测试功能A、B和C) 1。分别为函数a编写DRIVER,测试函数a,为函数b和c编写STUB。2.用函数a的DRIVER测试函数b,函数c的存根保持不变。3.函数A的驱动程序,测试函数C,示例2如果要测试五个函数单元A、B、C、D和E,函数A是顶层函数,第二层函数B、C和D,
15、第三层函数E在函数B下。对UT使用自下而上的策略:(分五步测试函数EBCDA。为函数E编写驱动程序,并测试函数E 2。为函数C编写驱动程序并测试函数C.为函数D编写驱动程序并测试函数D.5.为函数A编写驱动程序,测试函数A,并在下一层使用测试过的函数B、C和D作为堆栈模块。6.2.3执行单元测试,(1)设置测试环境,以确保所有必要的元素(硬件、软件、工具、数据等)。)已经实现并处于测试环境中。(2)初始化测试环境,以确保所有组件都处于正确的初始状态。(3)执行测试过程。应该注意的是,测试过程的执行将随着具体情况而改变:测试模式是自动的还是手动的,以及必要的测试组件是用作驱动器还是桩模块。自动测
16、试的测试脚本是在测试步骤的实现过程中创建的。当出现以下两种情况之一时,测试执行结束或终止:(1)正常:所有测试过程(或脚本)都按预期执行。如果测试正常终止,“验证测试结果”活动将继续进行,以确定测试结果是否可靠。(2)异常或提前终止:测试过程(或脚本)未按预期执行或未完全执行。当测试异常终止时,测试结果可能不可靠。有必要确定并纠正测试终止的原因,并在执行其他测试活动之前重新执行测试。如果测试异常终止,继续执行“恢复暂停的测试活动”,其目的是确定测试是否成功完成并达到预期目标。6.2.4单元测试的评估,(1)测试完整性的评估,主要是检查测试过程中是否所有的测试用例都已经执行,对于新的测试用例,测试方案是否已经及时更新等。(2)代码覆盖率评估,主要根据代码覆盖率工具提供的语句覆盖率报告,检查其是否满足方案中的要求。在大多数情况下,声明覆盖范围需要达到100。然而,在许多情况下,在执行后很难实现第一轮测试用例。此时,应在评估过程中对覆盖率进行分析,主要从以下几个方面进行:不可能的路径或条件或冗余代码不足的测试用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 打击传销责任制度
- 执法部门工作责任制度
- 承包锅炉责任制度
- 投资部岗位责任制度范本
- 护理责任制度
- 拣货验货工作责任制度
- 接料口岗位责任制度
- 搏击馆岗位责任制度
- 收费站两个责任制度
- 政府食堂法律责任制度
- 日管控、周排查、月调度记录表
- GB/T 5752-2013输送带标志
- GB/T 3146.1-2010工业芳烃及相关物料馏程的测定第1部分:蒸馏法
- GB/T 31087-2014商品煤杂物控制技术要求
- GB/T 30812-2014燃煤电厂用玻璃纤维增强塑料烟道
- 住院医师规范化培训临床技能结业考核体格检查评分表(神经外科)
- 小学二年级下册体育教案(全册)
- 中国外文出版发行事业局所属企事业单位公开招聘71人模拟试卷【共500题附答案解析】
- 《导游基础知识》61中国古典园林概说课件
- (中职)客房服务与管理项目二楼层服务与管理 典型任务一 进行客房清洁(2课时)教案
- 中石化设备管理制度(全套方案)
评论
0/150
提交评论