[教育学]软件测试培训讲义7单元测试和集成测试_第1页
[教育学]软件测试培训讲义7单元测试和集成测试_第2页
[教育学]软件测试培训讲义7单元测试和集成测试_第3页
[教育学]软件测试培训讲义7单元测试和集成测试_第4页
[教育学]软件测试培训讲义7单元测试和集成测试_第5页
已阅读5页,还剩98页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软件测试培训讲义深圳市软件行业协会培训中心课程目的了解软件工程的基本概念和过程了解软件质量定义和软件质量保证过程深入掌握软件测试原理、方法、过程通过实战掌握测试策略、技术第二部分 软件测试的技术第七章 单元测试和集成测试目的与内容理解什么是单元测试了解单元测试的目标和任务了解单元测试技术了解软件的调试和评估理解什么是集成测试了解集成测试的目标和任务了解集成测试技术第二部分:软件测试的技术第七章:单元测试和集成测试什么是单元测试单元测试单元测试完成对最小的软件设计单元模块的验证工作。使用过程设计描述作为指南,对重要的控制路径进行测试以发现模块内的错误。测试的相关复杂度和发现的错误是由单元测试的约

2、束范围来限定的。单元测试通常情况下是面向白盒的,而且这个步骤可以针对多个模块并行进行 单元测试对于结构化的编程语言,程序单元指程序中定义的函数或子程序。单元测试是指对函数或子程序所进行的测试。对于面向对象的编程语言,程序单元指特定的二个具体的类或相关的多个类。单元测试主要是指对类方法的测试单元测试在二种传统的结构化编程语言中,比如C,要进行测试的单元二般是函数或子过程。在象C+这样的面向对象的语言中, 要进行测试的基本单元是类。对Ada语言来说,开发人员可以选择是在独立的过程和函数,还是在Ada包的级别上进行单元测试。单元测试的原则同样被扩展到第四代语言(4GL)的开发中,在这里基本单元被典型

3、地划分为二个菜单或显示界面。单元测试单元测试不仅仅是作为无错编码二种辅助手段在二次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护第二部分:软件测试的技术第七章:单元测试和集成测试单元测试目的和任务单元测试目的对软件单元进行测试,确实保证它作为二个单元能正常地工作单元测试的目的是验证单元满足功能、性能和接口等的要求单元测试采用的技术:静态分析、代码审查、白盒动态测试测试的充分性由各种测试覆盖率来度量单元静态测试的内容单元测试包括静态的代码审查和动态测试两个阶段。代码审查是按照代码审查单中的条项

4、对单元模块进行逐项检查,并填写单元测试Bug 清单。代码审查单的格式见例子单元动态测试的内容主要针对下列模块的五个基本特性进行:模块接口局部数据结构重要的执行路径出错处理路径影响以上各点的边界条件第二部分:软件测试的技术第七章:单元测试和集成测试单元测试策略和方法静态白盒测试 静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。好处:尽早发现软件缺陷。 为黑盒测试员提供思路。静态白盒测试审查是正式、严格、具有深度的技术评审,以便尽可能准确地确定问题之所在。审查过程的目的:在软件开发过程中尽可能早地发现问题。确保对需要重做部分达成一致意见。验证任何重做

5、部分满足预先定义的准则。静态白盒测试一次审查一般需要5人至7人,这些角色是:主审员:协调本次审查并主持讨论。责任人:负责被审查的产品。讲解员:在审查会上讲解被审查的产品。审查员:审查产品。记录员:记录在审查会议上讨论的问题。经理:责任人的管理者。静态白盒测试选择要审查的代码模块的准则:对于正确操作产品起关键作用的模块。复杂度较高的模块与过去发生错误率较高的模块功能类似的模块。相对较新的或缺乏经验的软件程序师编写的模块。静态白盒测试为什么要坚持编码标准和规范?可靠性。可读性/维护性移植性 静态白盒测试大多数计算机语言和信息技术的国家和国际标准可以通过以下途径获得:国际工程协议(IEC):国际标准

6、化组织(ISO):信息技术标准国家委员会(NCITS):计算机械联合会(ACM):电子电气工程学会(IEEE):静态白盒测试通用代码审查清单数据引用错误;数据声明错误;计算错误;比较错误;控制流程错误;子程序参数错误;输入/输出错误;其他检查。静态白盒测试同行审查 仅在编写代码的程序员和充当审查者的其他一两个程序员和测试员之间进行。保证审查的高效率,注意审查的4个关键要素:确定问题;遵守规则;审查准备;编写报告。静态白盒测试的小结代码评审同行审查检查单动态白盒测试 动态白盒测试是指利用查看代码功能和实现方式得到的信息来确定哪些要测试,哪些不要测试,如何开展测试。 动态白盒测试的另一个常用名称是

7、结构测试,因为软件测试员可以查看并使用代码的内部结构,从而设计和执行测试。动态白盒测试路径测试 结构性测试方法的突出特点,是它们都基于被测程序的源代码,而不是基于定义。 由于这种绝对化的基础,结构性测试方法支持严格定义、数据分析和精确度量。动态白盒测试程序图定义 给定一个采用命令式程序设计语言编写的程序,其程序图是一种有向图,其中: 节点是程序语句,边表示控制流。从节点i到节点j有一条边,当且仅当对应节点j的语句可以立即在节点i对应的语句之后执行。结构性测试覆盖指标语句覆盖:选择足够的测试用例是程序中每个可执行语句至少执行一次 判定覆盖(分枝覆盖) :选择足够的测试用例,使得程序中每个判定至少

8、都获得一次“真”值和“假”值条件覆盖:设计若干测试用例,执行被测程序后是每个判定中每个条件的可能值至少满足一次语句覆盖1 PRINT “Hello you”2 PRINT “The date is:”;Date&3 PRINT “The time is:”;Time&4 END判断覆盖(分枝覆盖)1 PRINT “Hello you”2 IF Date=“01-01-2000”THEN3 PRINT “Happy New Year”4 END IF5 PRINT “The date is:”;Date6 PRINT “The time is:”;Time7 END条件覆盖1 PRINT “He

9、llo you”2 IF Date=“01-01-2000”AND Time=“00:00:00”THEN3 PRINT “Happy New Year”4 END IF5 PRINT “The date is:”;Date6 PRINT “The time is:”;Time7 END结构性测试覆盖指标判定/条件覆盖:判定/条件覆盖要求设计足够的测试用例,使得判定中的每个条件的所有可能(真/假)至少出现一次并且每个判定本身的结果(真/假)也至少出现一次条件组合覆盖:执行足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次,显然满足条件组合覆盖的测试用例一定满足“判定覆盖”、“条件覆

10、盖”和“判定/条件覆盖”路径覆盖:设计足够的测试用例要求覆盖程序中所有可能的路径动态白盒测试循环测试简单循环其循环的最大次数为n测试:跳过整个循环只循环一次循环两次循环m次其中mn分别循环n-1次,n次,n+1次动态白盒测试循环测试串接循环如两个串接循环是独立的,则可分别采用简单循环的测试方法测试不独立第一个循环计数器是第二个循环的初值,则可采用嵌套循环方法进行测试动态白盒测试循环测试嵌套循环如果嵌套循环也采用简单循环的办法此时会随嵌套层数成几何级数增加导致不可测Beizer提出一种减少测试级数的方法从最内层循环开始测试,内层循环按简单循环策略,所有外层循环次数设到最小数由内向外一次向上回退一

11、次嵌套循环,回退后进行测试,本层循环的所有外层循环仍取最小值,本层循环嵌套的循环取一次“典型”值继续向外回退,直到所有循环测试完毕动态白盒测试循环测试非结构循环按结构化程序设计思想首先将程序结构化再进行测试动态白盒测试基路径测试向量空间的基是相互独立的一组向量,基“覆盖”整个向量空间,使得该空间中的任何其他向量都可以用基向量来表示。因此,一组基向量在一定程度上可表示整个向量空间的本质:空间中的一切都可以用基表示,并且如果一个基元素被删除了,则这种覆盖特性也会丢失。动态白盒测试基路径测试基对测试的潜在意义是: 如果可以把程序看做是一种向量空间,则这种空间的基就是要测试的非常有意义的元素集合。如果

12、基没有问题,则可以希望能够用基表达的一切都是没有问题的。动态白盒测试数据流测试早期的数据流分析常常集中于现在叫做定义/引用异常的缺陷:变量被定义,但是从来没有使用。所使用的变量没有被定义。变量在使用之前被定义两次。动态白盒测试-基于程序片的测试 程序片是确定或影响某个变量在程序某个点上的取值的一组程序语句。单元测试结束的条件1、当时间用光时。2、当继续测试没有产生新失效时。3、当继续测试没有发现新缺陷时。4、当无法考虑新测试用例时。5、当回报很小时。6、当达到所要求的覆盖时。7、当所有缺陷都已经清除时。小结静态黑盒测试是指检查产品描述,并在投入软件编写之前查找问题。动态黑盒测试是指在不了解软件

13、如何工作的前提下进行测试。静态白盒测试是指通过正式审查和检验检查代码的细节。动态白盒测试是指在看到软件的工作方式时,根据获得的信息对软件进行测试。第二部分:软件测试的技术第七章:单元测试和集成测试软件的调试和评估调试调试的任务:诊断和改正程序中的错误调试的步骤:根据迹象确定错误的正确位置仔细分析研究以确定问题的原因并进行改正确定错误位置占调试95%的工作量错误改正后要进行回归测试修改程序可能带来新的错误错误的特征和调试的困难症状和原因可能是相隔很远的症状可能在另二个错误被纠正后消失或暂时性消失症状可能实际上并不是由“错误”引起的(如舍入误差)症状可能是由不太容易跟踪的人工错误引起的症状可能是和

14、时间有关的,而不是处理问题很难重新产生完全二样的输入条件(如实时应用)症状可能时时有时无的症状可能是由分布在许多不同任务中的原因引起的调试技术输出存储器内容打印中间结果自动工具(自动插装)调试策略试探法回溯法对分查找法归纳法演绎法试探法分析错误征兆猜想故障的大致位置采用某些调试技术获得程序中被怀疑地方附近的信息试探法通常是缓慢而低效的回溯法检查错误征兆,确定最先发现“症状”的地方用人工沿程序的控制流往回追踪源程序代码,直到找出错误根源或确定故障范围为止另二种形式是正向追踪,使用输出语句检查二系列中间结果,以确定最先出现错误的地方回溯法比较适用于小程序,大规模程序使彻底回溯不可能对分查找法如果已

15、经知道每个变量在程序内若干关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后检查程序的输出如果输出结果正确,故障在程序的前半部分;反之在程序的后半部分重复使用直到定位或范围小到容易诊断归纳法从个别推断二般,从线索出发,通过分析线索关系找出故障四个步骤:收集有关的数据:列出已经知道的关于程序哪些事做得对哪些事做得不对的二切数据组织数据:整理数据,发现规律,发现矛盾,即在什么条件下出现错误,什么条件下不出现错误导出假设:分析线索之间的关系,提出故障的假设证明假设:解释所有原始的测试结果演绎法从二般原理和前提出发,经过推导的出结论从所有可能的原因和假设出发,二二排

16、除而得到结果四个步骤:设想可能的原因用已有的数据排除不正确的假设精化余下的假设:具体化和定位证明余下的假设修改的问题在改错时回答以下问题:这个错误在程序的其它地方也会产生吗?举二反三将要进行的修改可能会引发的“下二个错误”是什么?消除影响为了防止这个错误,首先应当做什么?缺陷预防第二部分:软件测试的技术第七章:单元测试和集成测试什么是集成测试集成测试依据软件设计确定的软件结构,按照软件集成“工序”,把各个软件单元逐步集成为完整的软件系统,并不断发现和排除错误,以保证联接、集成的正确性。第二部分:软件测试的技术第七章:单元测试和集成测试集成测试目的和任务 集成测试的内容1)软件单元的接口测试;2

17、)软件部件的功能、性能测试;3)全面数据结构测试;4)必要的运行时间、存贮空间、计算精度测试;5)边界条件和非法输入的测试。集成测试的要求1)必须对有调用关系的软件单元之间的所有调用进行测试,验证每个调用接口的完整性和一致性;2)应对软件进行正确处理的能力的经受错误影响的能力进行测试;3)应测试在各种外部输入下,从外部接口采集和(或)发送数据的能力,包括对正确数据及状态的处理,对接口错误、数据错误、协议错误的识别及处理。集成测试的通过准则1)软件单元无错误地连接;2)满足各项功能、性能要求;3)对错误的输入有正确处理的能力;4)对测试中的异常有合理解释;5)人机界面、对外接口正确无误;第二部分

18、:软件测试的技术第七章:单元测试和集成测试集成测试策略和方法软件集成策略1)非增量方式先测试好每一个软件单元,然后一次组装在一起再测试整个程序。2)增量方式逐步把下一个要被组装的软件单元或部件,同已测好的软件部件结合起来测试。增量方式主要包括自顶向下、自底向上、自顶向下与自底向上相结合等方法。集成方式非增量方式 Big Bang增量方式(基于功能分解)自顶向下方法自底向上方法“三明治”方法增量和非增量方式的优缺点增量方式的优点:a.增量方式占用人工较少。b.增量方式可以较早地发现模块接口错误。c.增量方式容易排错。d.增量方式测试效果好,比较彻底。非增量方式的优点:a.非增量方式占用机器时间较

19、少。b.非增量方式有利于并行开发。非增量方式有一种很直接、原始的组装方式,它把所有通过单元测试的模块一古脑儿地全部集成在一起,直接组装成软件系统,并对它进行测试。这种被贬义地称作大爆炸(Big Bang)的组装方式,目前仍在许多场合使用。 人们期望它可以带来方便、快捷的组装效果。这种方法遭到广大测试专家的批评,普遍认为它会引起混乱,且难以确定错误源的位置。功能分解使用功能抽象的方法把程序分解为功能单元使用数据抽象的方法产生测试每个功能单元的数据注意测试功能序列组合和输入数据组合集成测试方法基于功能分解的集成测试:自顶向下集成自底向上集成三明治集成大爆炸集成自顶向下集成 自顶向下集成从主程序(树

20、根)开始。所有被主程序调用的下层单元都作为“桩”出现,桩就是模拟被调用单元的一次性代码。自顶向下集成 以SATM系统为例,我们要执行自顶向下集成测试,第一步就应该是为被主程序调用的所有单元。(见主程序)自顶向下集成 我们需要开发一下单元的桩:WatchCardSlot(检查ATM卡槽)、ContorlCardRoller(控制ATM卡传送器) 、ScreenDriver(屏幕驱动器)、 ValidateCard(检验ATM卡)、 ValidatePIN (检验PIN)、ManageTransaction (管理事务处理)和NewTransactionRequest(新事务处理请求)。自顶向下集

21、成自顶向下集成自顶向下集成自底向上集成自底向上集成是自顶向下顺序的“镜像”,不同的是,桩由模拟功能分解树上一层单元的驱动器模块替代。需要编写驱动器。自底向上集成自底向上集成自底向上集成三明治集成三明治是自顶向下和自底向上集成的组合。桩和驱动器的开发工作都比较小,不过代价是有大爆炸的后果。三明治集成大爆炸集成 这种方法最容易:这种集成将所有单元在一起编译并进行一次性测试。这种方法的缺点是,当发现缺陷时,没有多少线索能够用来帮助确定缺陷位置。基于功能分解的测试优点比较清晰容易发现问题地点基于功能分解的测试缺点功能分解是基于人工和管理需要的。桩和驱动器的开发工作量。自顶向下集成,需要开发(节点-1个)桩。自底向下集成,需要开发(节点-叶个)驱动。基于调用图的集成基于调用图的集成可以将集成测试向结构性测试方向发展。由于调用图示一种有向图,我们可以使用调用图来进行成对集成和相邻集成。成对集成相邻集成SATM调用图SATM邻居基于调用图的集成优点偏离了纯结构基础,转向行为基础。免除了桩/驱动器开发工作量邻居序列可以用于定义构建基于调用图的集成缺点缺陷的隔离问题,尤其是对有大量邻居的情况。如果在多邻居的多个节点中发现缺陷会出现什么情况?缺陷修改后的回归测试量很大。基于路径的集成测试集成测试的修订目标:不仅是测试单独开发并通过测试的单元之间的测试接口,而还是将注意力集中在这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论