
第7讲软件测试ppt课件.ppt
43页第第7讲讲 软件测试软件测试毛新军毛新军 教授教授xjmaonudt.edu计算机科学与技术系计算机科学与技术系602教研室教研室 0731-(45)73649软件工程导论软件工程导论 之之用工程化的方法来开发软件用工程化的方法来开发软件用工程化的方法来开发软件用工程化的方法来开发软件序文序文n初步的软件系统存在错误,如何:n发现错误?n纠正错误?n软件测试是软件质量保证活动中关键步骤n对SRS、设计规格阐明书以及编码的最后复审n其任务量往往占软件开发总任务量的40%以上n软件测试是确保软件质量的一种有效 (可操作)手段n软件测试有其特殊性和规律 – 由于软件是逻辑产品本讲内容本讲内容1.根本概念2.软件测试技术3.软件测试战略4.基于CASE的软件测试和排错软件测试的根本概念软件测试的根本概念n软件错误n软件系统的功能和性能与预期的功能和性能不一致n软件测试是发现软件错误的过程软件测试的目的软件测试的目的n目的n发现软件中的错误,提高软件质量n留意n软件测试中没有发现错误并不意味着软件就没有错误 => 测试不充分, 潜在错误不能发现软件测试的信息流程软件测试的信息流程n软件测试思想n数据处置 设计测试用例 判别结果软件测试方法软件测试方法n 二种测试方法n 白盒测试n 黑盒测试白盒测试白盒测试n思想n知程序内部任务流程,经过测试检验程序内部动作能否按规格阐明书规定正常运作n根据n程序的内部逻辑构造,针对程序的逻辑途径设计测试用例n特点n必需了解程序的内部任务流程黑盒测试黑盒测试n思想n根据知程序的功能和性能(而不是内部细节),经过测试检验每个功能和性能能否正常n根据n程序的功能和性能描画n特点n知道程序的功能和性能,不用了解程序的内部构造和处置细节软件测试步骤软件测试步骤n软件开发n从高笼统层次向低层次笼统过渡n软件测试n从低层次笼统向高层次笼统过渡n软件测试的层次n单元测试:测试程序中每个模块能否有错误〔白盒〕n集成测试:测试软件总体构造能否有错误〔黑盒〕n确认测试:测试软件能否满足用户需求〔黑盒〕需求分析需求分析概要设计概要设计详细设计详细设计编码编码单元测试单元测试集成测试集成测试确认测试确认测试软件开发过程软件开发过程软件测试过程软件测试过程软件开发活动和软件测试活动间软件开发活动和软件测试活动间的关系的关系本讲内容本讲内容1.根本概念2.软件测试技术3.软件测试战略4.基于CASE的软件测试和排错软件测试技术软件测试技术 n白盒测试n白盒测试是根据程序的控制构造来设计测试用例白盒测试白盒测试n要设计多少测试用例? n 覆盖准那么n语句覆盖n分支覆盖n途径覆盖: 程序通道n根本途径覆盖根本途径测试的思想根本途径测试的思想n根本途径n至少引入一个新语句或者新判别的程序通道 n思想n途径 ==> 根本途径 ==> 根本途径测试n前提n软件模块的逻辑构造〔流程图〕n如何设计测试用例确保根本途径覆盖 n==> 哪些根本途径 ==> 流图 ==> 流程图流程图和流图表示图流程图和流图表示图步骤步骤1:根据程序逻辑画出流程图根据程序逻辑画出流程图 void Func(int nPosX, int nPosY) {while (nPosX > 0) {int nSum = nPosX + nPosY;if (nSum > 1) { nPosX--; nPosY--;}else { if (nSum < -1) nPosX -= 2; else nPosX -= 4; }}// end of while}步骤步骤2:将流程图转换为流图将流程图转换为流图(1/2)n流图描写了程序的控制构造但不涉及程序的过程性细节n节点(过程块,结合点,断定点)n有向边n断定点不含复合条件,否那么应按照以下方式添加断定点步骤步骤2:将流程图转换为流图将流程图转换为流图(2/2)步骤步骤3:确定根本途径的集合确定根本途径的集合(1/2)n根本途径n流图Cyclomatic复杂度正好是根本途径的数目nV(G) = E – N + 2 nV(G) = 11 - 9 + 2 = 4 步骤步骤3:确定测试途径的集合确定测试途径的集合(2/2)n1 - 11n1 - 2, 3 - 6 - 7 - 9 - 10 - 1 - 11n1 - 2, 3 - 4, 5 - 10 - 1 - 11n1 - 2, 3 - 6 - 8 - 9 - 10 - 1 - 11 void Func(int nPosX, int nPosY) {while (nPosX > 0) {int nSum = nPosX + nPosY;if (nSum > 1) { nPosX--; nPosY--;}else { if (nSum < -1) nPosX -= 2; else nPosX -= 4; }}// end of while}步骤步骤4:针对测试途径设计测试用例针对测试途径设计测试用例n1-11nnPosX 取-1, nPosY取恣意值n1 - 2, 3 - 4, 5 - 10 - 1 - 11nnPosX 取1, nPosY取1n1- 2, 3 - 6 - 7 - 9 - 10 - 1 – 11nnPosX 取1, nPosY取-1n1- 2, 3 - 6 - 8 - 9 - 10 - 1 - 11 nnPosX 取1, nPosY取-3void Func(int nPosX, int nPosY) {while (nPosX > 0) {int nSum = nPosX + nPosY;if (nSum > 1) { nPosX--; nPosY--;}else { if (nSum < -1) nPosX -= 2; else nPosX -= 4; }}// end of while}黑盒测试黑盒测试n黑盒测试技术n测试软件能否满足功能和性能要求,它不涉及模块的内部过程性细节n主要的黑盒测试技术n等价分类法n边境分类法等价分类法等价分类法(1/2)n思想n把程序的输入数据集合按输入条件划分为假设干个等价类,每一个等价类对于输入条件而言为一组有效或者无效的输入,然后为每一个等价类设计一个测试用例n优点n减少测试次数,不丧失发现错误的时机等价分类法等价分类法(2/2)n输入条件为一范围n划分出三个等价类:(1) 有效等价类(在范围内),(2) 大于输入最大值,(3)小于输入最少值n输入条件为一值n划分为三个等价类: (1) 有效,(2) 大于,(3) 小于n输入条件为集合n划分二个等价类: (1) 有效(在集合内),(2) 无效(在集合外)n输入条件为一个布尔量n划分二个等价类,(1) 有效(此布尔量),(2)无效(布尔量的非)等价分类法例子等价分类法例子nz = func(x, y):n当 0 < x < 1024 并且 y = 0, z = -1n否那么,z = x * lg(y)n关于x的等价类: (0, 1024), (-#, 0], [1024, +#) n关于y的等价类: 0, (-#, 0), (0, +#)n测试用例: 9个n<1, 0>, <1, -2>, <1, 2>;n<-1, 0>, <-1, -2>, <-1, 2>;n<1024, 0>, <1024, -2>, <1024, 2> 边境值分析法边境值分析法n输入条件是一范围(a,b)na,b以及紧挨a,b左右的值应作为测试用例n输入条件为一组数n选择这组数的最大者和最小者,次大和次小者作为测试用例n假设程序的内部数据构造是有界的n应设计测试用例使它可以检查该数据构造的边境本讲内容本讲内容1.根本概念2.软件测试技术3.软件测试战略4.基于CASE的软件测试和排错单元测试单元测试n对软件的最小单元-模块进展测试.多采用白盒测试n(1) 模块接口测试n(2) 模块部分数据构造测试n(3) 模块独立执行途径测试n(4) 模块中各条错误处置通道测试n(5) 模块边境条件测试单元测试单元测试(续续)集成测试集成测试n模块相互调用时引入接口问题 => 集成测试n集成测试方法n(1) 自顶向下集成n从目的软件系统的主控模块开场,按照软件的控制层次构造,以深度优先或者广度优先的战略把各个模块集成在一同进展测试n(2) 自底向上集成n从软件构造最底层模块开场自底向上进展组装和测试集成测试例子集成测试例子确认测试确认测试n义务n判别目的软件系统能否满足用户的功能和性能需求;n文档资料能否完好、准确n根据和规范n软件需求规格阐明书n确认测试的类型nα测试nβ测试排错排错(1/2)n测试是为了发现错误,当发现错误后就要将它矫正,矫正错误主要依托排错技术n排错过程排错排错(2/2)n 排错方法n原始法n回溯法n排除法n基于归纳和演绎的方法:搜集与出错有关的一切数据,假想一组出错的缘由,用这组数据证明或者反驳之本讲内容本讲内容1.根本概念2.软件测试技术3.软件测试战略4.基于CASE的软件测试和排错基于基于CASE的软件测试和排错的软件测试和排错n静态分析器n经过静态的扫描源程序,找出能够导致程序出错的异常情况n代码审查器n检查源程序代码能否满足最根本的代码规范n断言处置器n检查程序员关于程序行为的断言在程序执行过程中能否成立n测试数据产生器软件测试和软件调试软件测试和软件调试n目的n发现错误;定位和纠正错误n独立性n可有独立的测试小组进展;必需由开发人员完成 本讲小结本讲小结1.根本概念(软件测试的概念、目的, 方法和过程等)2.软件测试技术(白盒和黑盒软件测试方法)3.软件测试战略(步骤,方法等)4.基于CASE的软件测试和排错思索题思索题n思索题n只需设计足够多的测试用例,软件测试能否完全可以发现软件中的一切错误?Q & AQ & AAn Introduction to Software EngineeringPractice, Practice, and Practice。












