《第7讲软件测试.ppt》由会员分享,可在线阅读,更多相关《第7讲软件测试.ppt(43页珍藏版)》请在三一办公上搜索。
1、第7讲 软件测试,毛新军 教授计算机科学与技术系602教研室 0731-(45)73649,软件工程导论 之,用工程化的方法来开发软件,Copyright Xinjun Mao,软件测试,2,序言,初步的软件系统存在错误,如何:发现错误?纠正错误?软件测试是软件质量保证活动中关键步骤对SRS、设计规格说明书以及编码的最后复审其工作量往往占软件开发总工作量的40%以上软件测试是确保软件质量的一种有效(可操作)手段软件测试有其特殊性和规律 因为软件是逻辑产品,Copyright Xinjun Mao,软件测试,3,本讲内容,基本概念软件测试技术软件测试策略基于CASE的软件测试和排错,Copyri
2、ght Xinjun Mao,软件测试,4,软件测试的基本概念,软件错误软件系统的功能和性能与预期的功能和性能不一致软件测试是发现软件错误的过程,Copyright Xinjun Mao,软件测试,5,软件测试的目标,目标发现软件中的错误,提高软件质量注意软件测试中没有发现错误并不意味着软件就没有错误=测试不充分,潜在错误不能发现,Copyright Xinjun Mao,软件测试,6,软件测试的信息流程,软件测试思想数据处理 设计测试用例 判断结果,Copyright Xinjun Mao,软件测试,7,软件测试方法,二种测试方法 白盒测试 黑盒测试,Copyright Xinjun Mao
3、,软件测试,8,白盒测试,思想已知程序内部工作流程,通过测试检验程序内部动作是否按规格说明书规定正常运作依据程序的内部逻辑结构,针对程序的逻辑路径设计测试用例特点必须了解程序的内部工作流程,Copyright Xinjun Mao,软件测试,9,黑盒测试,思想根据已知程序的功能和性能(而不是内部细节),通过测试检验每个功能和性能是否正常依据程序的功能和性能描述特点知道程序的功能和性能,不必了解程序的内部结构和处理细节,Copyright Xinjun Mao,软件测试,10,软件测试步骤,软件开发从高抽象层次向低层次抽象过渡软件测试从低层次抽象向高层次抽象过渡软件测试的层次单元测试:测试程序中
4、每个模块是否有错误(白盒)集成测试:测试软件总体结构是否有错误(黑盒)确认测试:测试软件是否满足用户需求(黑盒),Copyright Xinjun Mao,软件测试,11,需求分析,概要设计,详细设计,编码,单元测试,集成测试,确认测试,软件开发过程,软件测试过程,软件开发活动和软件测试活动间的关系,Copyright Xinjun Mao,软件测试,12,本讲内容,基本概念软件测试技术软件测试策略基于CASE的软件测试和排错,Copyright Xinjun Mao,软件测试,13,软件测试技术,白盒测试白盒测试是根据程序的控制结构来设计测试用例,Copyright Xinjun Mao,软
5、件测试,14,白盒测试,要设计多少测试用例?覆盖准则语句覆盖分支覆盖路径覆盖:程序通道基本路径覆盖,Copyright Xinjun Mao,软件测试,15,基本路径测试的思想,基本路径至少引入一个新语句或者新判断的程序通道 思想路径=基本路径=基本路径测试前提软件模块的逻辑结构(流程图)如何设计测试用例确保基本路径覆盖=哪些基本路径=流图=流程图,Copyright Xinjun Mao,软件测试,16,流程图和流图示意图,Copyright Xinjun Mao,软件测试,17,步骤1:根据程序逻辑画出流程图,void Func(int nPosX,int nPosY)while(nPos
6、X 0)int nSum=nPosX+nPosY;if(nSum 1)nPosX-;nPosY-;else if(nSum-1)nPosX-=2;else nPosX-=4;/end of while,Copyright Xinjun Mao,软件测试,18,步骤2:将流程图转换为流图(1/2),流图刻画了程序的控制结构但不涉及程序的过程性细节节点(过程块,结合点,判定点)有向边判定点不含复合条件,否则应按照下列方式增加判定点,Copyright Xinjun Mao,软件测试,19,步骤2:将流程图转换为流图(2/2),Copyright Xinjun Mao,软件测试,20,步骤3:确定基
7、本路径的集合(1/2),基本路径流图Cyclomatic复杂度正好是基本路径的数目V(G)=E N+2 V(G)=11-9+2=4,Copyright Xinjun Mao,软件测试,21,步骤3:确定测试路径的集合(2/2),1-111-2,3-6-7-9-10-1-111-2,3-4,5-10-1-111-2,3-6-8-9-10-1-11,Copyright Xinjun Mao,软件测试,22,void Func(int nPosX,int nPosY)while(nPosX 0)int nSum=nPosX+nPosY;if(nSum 1)nPosX-;nPosY-;else if(
8、nSum-1)nPosX-=2;else nPosX-=4;/end of while,Copyright Xinjun Mao,软件测试,23,步骤4:针对测试路径设计测试用例,1-11nPosX 取-1,nPosY取任意值1-2,3-4,5-10-1-11nPosX 取1,nPosY取11-2,3-6-7-9-10-1 11nPosX 取1,nPosY取-11-2,3-6-8-9-10-1-11 nPosX 取1,nPosY取-3,Copyright Xinjun Mao,软件测试,24,void Func(int nPosX,int nPosY)while(nPosX 0)int nSu
9、m=nPosX+nPosY;if(nSum 1)nPosX-;nPosY-;else if(nSum-1)nPosX-=2;else nPosX-=4;/end of while,Copyright Xinjun Mao,软件测试,25,黑盒测试,黑盒测试技术测试软件是否满足功能和性能要求,它不涉及模块的内部过程性细节主要的黑盒测试技术等价分类法边界分类法,Copyright Xinjun Mao,软件测试,26,等价分类法(1/2),思想把程序的输入数据集合按输入条件划分为若干个等价类,每一个等价类对于输入条件而言为一组有效或者无效的输入,然后为每一个等价类设计一个测试用例优点减少测试次数,
10、不丢失发现错误的机会,Copyright Xinjun Mao,软件测试,27,等价分类法(2/2),输入条件为一范围划分出三个等价类:(1)有效等价类(在范围内),(2)大于输入最大值,(3)小于输入最少值输入条件为一值划分为三个等价类:(1)有效,(2)大于,(3)小于输入条件为集合划分二个等价类:(1)有效(在集合内),(2)无效(在集合外)输入条件为一个布尔量划分二个等价类,(1)有效(此布尔量),(2)无效(布尔量的非),Copyright Xinjun Mao,软件测试,28,等价分类法例子,z=func(x,y):当 0 x 1024 并且 y=0,z=-1否则,z=x*lg(y
11、)关于x的等价类:(0,1024),(-#,0,1024,+#)关于y的等价类:0,(-#,0),(0,+#),测试用例:9个,;,;,Copyright Xinjun Mao,软件测试,29,边界值分析法,输入条件是一范围(a,b)a,b以及紧挨a,b左右的值应作为测试用例输入条件为一组数选择这组数的最大者和最小者,次大和次小者作为测试用例如果程序的内部数据结构是有界的应设计测试用例使它能够检查该数据结构的边界,Copyright Xinjun Mao,软件测试,30,本讲内容,基本概念软件测试技术软件测试策略基于CASE的软件测试和排错,Copyright Xinjun Mao,软件测试,
12、31,单元测试,对软件的最小单元模块进行测试多采用白盒测试(1)模块接口测试(2)模块局部数据结构测试(3)模块独立执行路径测试(4)模块中各条错误处理通道测试(5)模块边界条件测试,Copyright Xinjun Mao,软件测试,32,单元测试(续),Copyright Xinjun Mao,软件测试,33,集成测试,模块相互调用时引入接口问题=集成测试集成测试方法(1)自顶向下集成从目标软件系统的主控模块开始,按照软件的控制层次结构,以深度优先或者广度优先的策略把各个模块集成在一起进行测试(2)自底向上集成从软件结构最底层模块开始自底向上进行组装和测试,Copyright Xinjun
13、 Mao,软件测试,34,集成测试例子,Copyright Xinjun Mao,软件测试,35,确认测试,任务判断目标软件系统是否满足用户的功能和性能需求;文档资料是否完整、准确依据和标准软件需求规格说明书确认测试的类型测试测试,Copyright Xinjun Mao,软件测试,36,排错(1/2),测试是为了发现错误,当发现错误后就要将它改正,改正错误主要依靠排错技术排错过程,Copyright Xinjun Mao,软件测试,37,排错(2/2),排错方法原始法回溯法排除法基于归纳和演绎的方法:收集与出错有关的所有数据,假想一组出错的原因,用这组数据证明或者反驳之,Copyright
14、Xinjun Mao,软件测试,38,本讲内容,基本概念软件测试技术软件测试策略基于CASE的软件测试和排错,Copyright Xinjun Mao,软件测试,39,基于CASE的软件测试和排错,静态分析器通过静态的扫描源程序,找出可能导致程序出错的异常情况代码审查器检查源程序代码是否满足最基本的代码标准断言处理器检查程序员关于程序行为的断言在程序执行过程中是否成立测试数据产生器,Copyright Xinjun Mao,软件测试,40,软件测试和软件调试,目的发现错误;定位和纠正错误独立性可有独立的测试小组进行;必须由开发人员完成,Copyright Xinjun Mao,软件测试,41,本讲小结,基本概念(软件测试的概念、目标,方法和过程等)软件测试技术(白盒和黑盒软件测试方法)软件测试策略(步骤,方法等)基于CASE的软件测试和排错,Copyright Xinjun Mao,软件测试,42,思考题,思考题只要设计足够多的测试用例,软件测试是否完全可以发现软件中的所有错误?,Copyright Xinjun Mao,软件测试,43,Q&A,An Introduction to Software Engineering,Practice,Practice,and Practice,