资源描述
,单击此处编辑母版标题样式,*,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,自顶向下集成,内容提要,1,.,集成测试的目的,2.,集成测试的方法,3.,实例讲解,2,1.,集成测试的目的,在我看来,目的就是保证每一功能模块的功能正确和性能良好,以至于这些模块组装在一起时他们可以很好地协调工作,保证整个系统功能和性能的良好。,3,内容提要,1,.,集成测试的目的,2.,集成测试的方法,3.,实例讲解,4,2.,集成测试的方法,2.1,分析、准备工作,2.2,制定集成策略,2.3,具体实施,2.4,需要注意的问题,5,2.1,分析、准备工作,a.阅读相关文档,主要是概要设计说明书,了解整个系统的组织构造以与开发人员制定的开发顺序等内容,先从整体上把握这个系统,以便制定适宜的集成策略。,6,b.,了解系统的开发环境,使用的语言、开发工具,以便提出必要的资源需求。,2.1,分析、准备工作,7,2.2,制定集成策略,常用的增量,(Incremental),型集成方式:,自顶向下集成,(Top-Down),自底向上集成,(Bottom-Up),8,自顶向下集成,从最具控制力的模块开场,按控制层次减弱的顺序向系统中增加模块,直至实现整个系统。,待测系统,9,自顶向下集成,先为最顶层的模块制造桩模块,组成一个测试系统,对它进展测试来发现待测模块存在的问题。,待测系统,桩模块,10,自顶向下集成,这个测试系统的测试通过后,用实际模块替换掉先前制造的桩模块,进而又形成了新的待测系统。,待测系统,11,自顶向下集成,为新的待测系统制造新的桩模块,形成又一个测试系统,同样对它进展测试来发现待测系统的问题。,待测系统,桩模块,12,自顶向下集成,当所有实际的模块都被使用进来的时候,目前的待测系统其实就是工程所要开发的系统,此时的集成测试就自然的过渡到了确认测试。,待测系统,13,自底向上集成,从控制力最弱的模块开场,按控制层次增强的顺序向系统中增加模块,直至实现整个系统。,待测系统,14,自底向上集成,先为最底层的模块制造驱动模块,组成一个测试系统,对它进展测试来发现待测模块存在的问题。,待测系统,驱动模块,15,自底向上集成,这个测试系统的测试通过后,用实际模块替换掉先前制造的驱动模块,进而又形成了新的待测系统。,待测系统,16,为新的待测系统制造新的驱动模块,形成又一个测试系统,同样对它进展测试来发现待测系统的问题。,待测系统,自底向上集成,驱动模块,17,当所有实际的模块都被使用进来的时候,就也形成了工程所要开发的系统,此时的集成测试也过渡到了确认测试。,待测系统,自底向上集成,18,两种方式的总结,自底向上集成对小型到中型系统比 较有效。,自顶向下集成适用于几乎所有范围或体系构造。,在实际工作中可以灵活的混合使用。,19,2.3,具体实施,2.3.1,制造桩,2.3.2,制造驱动,20,制造桩,目的是模拟待测系统运行的实际环境,为其提供可用来调用的模块。桩和待测系统的关系是待测系统调用桩,桩是用来满足待测系统调用其他功能模块的需要的。,比方我们要测试一只笔能否写字,就要拿来一张纸,这张纸就是测试笔时所使用的桩。,21,如果为一个类制造桩,所要关心的是该类中定义使用的其他类的实例对象。即要搞清该类都使用了哪些外部的资源。然后我们以最简单的方式来提供这些资源。,22,制造桩的问题,一般都会归结到编写函数上,即便这个桩是一个类。通常的,C+,函数有返回值和不返回值两种情况,当待测模块调用一个有返回值的函数时,我们就可以编写一个简单返回数值的函数供其调用;当待测模块调用无返回值的函数,我们就编写一个打印简单提示信息的函数供其调用,仅仅用来当函数得到调用时提示一下。,23,制造驱动,目的是模拟待测系统运行的实际环境,提供调用待测系统的模块。驱动和待测系统的关系是驱动调用待测系统,驱动是用来满足待测系统被其他模块调用的需要的。,还是用测试笔写字的例子,只有笔待测系统和纸桩还不能实现写字,还必须有一只手拿着笔才可以,这时的手即是驱动。,24,如果为一个类制造驱动,所要关心的是该类提供了哪些供调用的公有(public)函数,即要了解怎样才能使用这个类的功能。然后在驱动模块中对这些函数进展调用,观察这些函数的工作情况。这时就需要对函数的调用参数,调用方式等方面设计测试用例。,25,如右图,要对CDownload类进展驱动的话,就在程序的某处这样写:,CDownload m_Download;,m_Download.Download(/*参数*/);,m_Download.Stop(/*参数*/);,26,需要注意的问题,1.类内部使用全局变量。,2.类内部使用全局函数。,3.类内部使用库函数。,4.使用宏定义。,上述这些情况也是模块类与外界发生联系的方式,但这些情况往往在相关文档中描述较少,在程序中又很隐蔽,这就需要我们测试人员对源程序多做一些内部的观察,还要与开发人员多进展沟通。,27,内容提要,1,.,集成测试的目的,2.,集成测试的方法,3.,实例讲解,28,3.,实例讲解,一个假想的学校人员管理系统,29,模块关系图,30,测试,CSchoolManagerDlg,待测模块,测试系统,桩模块,建立一个新的CSchool类来代替原来的CSchool类,但他要比原先的CSchool类简单。对于CSchoolManagerDlg类有用的只是CSchool类的公有函数,所以新建的桩模块不需要有原来CSchool类的属性,只保存所有的公有函数就可以了。并且这些函数只须在被调用时返回一个简单值或提示用户。,31,待测系统,测试系统,桩模块,继续,32,继续,系统中还有一些模块,如存储表,用来输入数据的对话框等,他们都是由,CSchoolManagerDlg,直接使用,而,CSchool,、,CTeacher,、,CStudent,类都不直接使用。,33,1.在MFC程序中,要测试对话框类,不仅要导入类的 文件,还要将对话框的模版导入进来。,2.在测某一模块时,一定要明确该模块的功能,不属于该模块的功能就不需要测。比方对于一个充当主界面的对话框,他的一个消息响应函数调用了另一个函数。我们测试这个功能时,只要消息响应函数正确的调用了相应函数,就算测试通过了,而不用关心被调用函数到底怎样了。,几点问题,34,3.在测某一模块时,千万不要为了整个测试系统能正确运行而去改变模块内部的东西,虽然这些对我们是可见的,我们要以只读的态度去对待这些源代码。,35,本次课内容回忆,?,36,参考资料,?软件工程-实践者的研究方法?美 ROGER S PRESSMAN著,?面向对象系统的测试?,集成测试指南,37,Everyone,Any Question?,38,谢谢 大家,39,谢谢欣赏,40,Thank You!,不尽之处,恳请指正!,
展开阅读全文