




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第九章:软件测试(二)1. 软件测试用例设计 设计测试用例就是为测试准备测试数据。由于测试用例不同,发现程序错误的能力也就不同,为了提高测试效率降低测试成本,应该选用高效的测试用例。 白盒测试用例设计主要采用逻辑覆盖,包括语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。 黑盒测试用例设计包括等价划分、边界值分析和错误推测等几种方法。 通常的做法是,用黑盒法设计基本的测试方案,再用白盒法补充一些必要的测试方案。具体地说,可以使用下述策略结合各种方法: (1) 在任何情况下都应该使用边界值分析的方法。经验表明, 用这种方法设计出的测试用例暴露程序错误的能力最强。 (2) 必要时用等价划分法补充测试用例。 (3) 必要时再用错误推测法补充测试用例。 (4) 对照程序逻辑,检查已经设计出的测试方案。可以根据对 程序可靠性的要求采用不同的逻辑覆盖标准。 1.1 白盒测试用例设计白盒测试用例设计主要采用的是逻辑覆盖,这是一种以程序内部逻辑结构为依据的用例设计方法,包括语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖等几种覆盖强度各不相同的逻辑覆盖形式。 (1)语句覆盖 为了暴露程序中的错误,至少每个语句应该执行一次。语句覆盖的含义是,选择足够多的测试数据,使被测程序中每个语句至少执行一次。 (2)判定覆盖 判定覆盖含义是:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。 判定覆盖能够包含语句覆盖,因此判定覆盖比语句覆盖强。(3)条件覆盖 条件覆盖的含义是:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。(4)判定-条件覆盖 判定-条件覆盖是指既能满足判定覆盖,又能满足条件覆盖,其含义是:选取足够多的测试数据,使得判定表达式中的每个条件都取到各种可能的值,而且每个判定表达式也都取到各种可能的结果。 (5)条件组合覆盖 条件组合覆盖是更强的逻辑覆盖标准,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。 (6)点覆盖 点覆盖的含义是:选取足够多的测试数据,使得程序执行路径至少经过了程序图中每个节点一次。显然,点覆盖标准和语句覆盖标准是相同的。 (7)边覆盖 边覆盖的含义是:选取足够多的测试数据,使得程序执行路径至少经过程序图中每条边一次。通常,边覆盖和判定覆盖是一致的。 (8)路径覆盖 路径覆盖的含义是:选取足够多的测试数据,使程序的每条可能的路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。 1.2 黑盒测试用例设计 (1)等价类划分 等价类划分的特点是把所有可能的输入数据(有效的和无效的)划分成若干个等价类,并做出如下假定:每个等价类中的一个典型值在测试中的作用与这一类中所有其他值的作用相同。因此,可以从每个等价类中只取一组数据作为测试数据。 在使用等价类划分法设计测试用例时,首先需要划分输入数据的等价类,为此需要研究程序的功能说明,从而确定输入数据的有效等价类和无效等价类。 在确定输入数据的等价类时,常常还需要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据的等价类。 例如,学生成绩的录入与输出。假如录入的是百分制成绩,范围是:0100分;输出的是等级制成绩,等级是:优秀(85100分)、合格(6084分)、不合格(059分)。则根据等价划分划分的原则,可以考虑以下的用例设计方案。 根据录入数据,可以确定以下3个等价类: = 0并且 录入数据 100 (无效类) 根据输出结果,还可以将录入数据的有效类继续细分为以下3个等价类: = 85并且录入数据 = 60并且 录入数据 = 0并且录入数据 = 85) & (grade = 85 漏了一个“=”号,由此使得85分不能输出结果。 在使用边界值分析方法设计测试用例时,首先需要确定边界情况,然后在边界附近选取测试数据,应该选取刚好等于、稍小于和稍大于等价类边界值的数据作为测试数据。 例如学生成绩的录入与输出问题。可以按照边界值分析原则设计出以下一组测试用例。即:(1,0,1),(59,60,61),(84,85,86),(99,100,101)。 (3)错误推测 错误推测法依靠测试人员的测试经验与直觉。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试用例。例如前面单元测试中列出的一些常见错误,就是模块测试经验的总结。 对于程序中容易出错的情况,也可以总结出一些经验来。例如,输入数据为零或输出数据为零往往容易发生错误;在进行数据表操作时,一个没有任何记录的空表容易带来操作错误;等等。 程序中的错误还具有成堆聚集的特点,也就是说,一段程序中已经发现的错误数目往往和尚未发现的错误数成正比。这可能与设计、编码时的工作疏忽或理解错误等因素有关。因此,一旦在程序的某个位置发现了错误,则意味着需要对这段程序进行重点测试,应该着重测试那些已发现了较多错误的程序段。 2. 面向对象测试 2.1面向对象单元测试 不能孤立地测试单个操作,而应该把操作作为类的一部分来测试。 2.2面向对象集成测试 面向对象软件是基于类而构造的,类之间的关系是依赖与引用关系。因此,面向对象软件中已经没有了分层的控制结构,传统的自顶向下和自底向上的集成策略也就没有意义了面向对象软件的集成测试可以采用以下两种策略。 (1)基于线程的测试:其特点是把响应系统的一个输入或一个事件所需要的一组类集成起来。分别集成并测试每个线程,同时应用回归测试以保证没有产生副作用。 (2)基于使用的测试:其特点是首先测试几乎不使用其他类的那些类,称为独立类。在把独立类都测试完之后,接下来测试使用独立类的下一个层次的类,称为依赖类。对依赖类的测试一个层次一个层次地持续进行下去,直至构造出整个软件系统为止2.3面向对象确认测试 研究系统的用例模型和活动模型,设计出确认测试时的用户操作脚本。与传统的确认测试一样,面向对象确认测试也是面向用户的,其主要测试内容是用户可见的动作和用户可识别的输出。3. 软件调试 软件调试也叫做排错,涉及以下两个步骤。 (1) 诊断:用于确定程序中出现错误的性质与错误位置。 (2) 排错:对出现错误的程序段进行修改,由此排除错误。 在进行软件调试的上述两个步骤中,诊断是关键。3.1 调试方法常用的调试方法有:输出存储器内容、在程序中插入输出语句、使用自动调式工具。(1)输出存储器内容 这种方法通常以八进制或十六进制的形式输出存储器的内容。这是一种效率很低的调试方法,其主要缺点是: a. 很难把存储单元和源程序变量对应起来。 b. 输出信息量极大,而且大部分是无用的信息。 c. 输出的是程序的静态映像,然而为了找出故障,往往需要研究程序的动态行为。 d. 输出的存储器内容常常并不是程序出错时的状态,使其往往不能提供有用的调试线索。e. 输出信息的形式不易阅读和解释。 (2)在程序中插入输出语句 这种方法是把程序设计语言提供的一些输出语句插到源程序的关键位置中去,以便输出关键变量的中间值。这种方法能够对源程序的执行情况进行一定的动态追踪,能够显示程序的动态行为,而且给出的信息容易和源程序对应起来。 这种方法的缺点主要是: a. 可能会输出大量的需要分析的信息,对于大型系统来说,情况更是如此。 b. 必须修改源程序才能插入输出语句,这有可能改变一些关键的时间关系,从而可能掩盖错误。 (3)使用自动调式工具 使用自动调式工具进行程序调试是目前使用最多的调试方法。在一些集成开发环境中,自动调式工具往往和整个程序创建工作结合在一起,因此可以非常有效地提高程序调试速度与质量。自动调式工具一般具有对程序的动态调试功能,能够发现程序运行过程中出现的错误。自动调式工具主要的调试功能包括逐行或逐过程地执行源程序、在源程序中设置中断点、在源程序中设置需要监控的变量或表达式等。 3.2 调试策略 调试策略是指在对程序进行调试时可以采取的对策。常用的调试策略有: 试探法、回溯法、对分查找法、归纳法、演绎法。 (1)试探法 调试人员分析错误征兆,猜测故障的大致位置,然后使用前述的一两种调试方法检测程序中被怀疑位置附近的信息,由此获得对程序错误的准确定位。 (2)回溯法 调试人员分析错误征兆,确定最先发现“症状”的位置,然后人工沿程序的控制流程往回追踪源程序代码,直到找出错误根源或确定故障范围为止。 回溯法对于小程序而言是一种比较好的调试策略,但是对于大规模的程序,由于需要回溯的路径数目太多,以致回溯变得困难起来。 (3)对分查找法 如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后检查程序的输出。如果输出结果是正确的,则故障在程序的前半部分;反之,故障在程序的后半部分。对于程序中有故障的那部分再重复使用这个方法,直到把故障范围缩小到容易诊断的程度为止。 (4)归纳法 归纳法是一种从个别推断一般的系统化的错误定位方法。归纳法往往以程序的错误征兆为线索,通过分析这些线索之间的关系,由此找出故障。 归纳法的使用主要有下述四个步骤: a. 收集有关的数据 列出已经知道的关于程序工作的一切数据,然后分析哪些数据结果是正确的,哪些数据结果是错误的。 b. 组织数据 因为归纳法是从特殊推断出一般的方法,所以需要整理数据以便发现规律。常用的组织数据的方法是对数据进行分类。 c. 导出假设 分析线索之间的关系,力求找出它们的规律,从而提出关于故障的一个或多个假设。如果无法做出推测,则可以再设计并执行一些测试用例,以便获得更多的数据;如果可以做出多种假设,则可以首先选取最有可能成为出错原因的那一个假设。 d. 证明假设 假设不等于事实,不经证明就根据假设排除故障,往往只能消除错误的征兆或只能改正部分错误。因此,需要对假设的合理性证明。证明假设的方法是,用它解释所有原始的测试结果。如果能圆满地解释一切现象,则假设得到证实,否则要么是假设不成立或不完备,要么是有多个故障同时存在。 (5)演绎法 演绎法则从一般原理或前提出发,经过排除和精化的过程推导出结论。使用演绎法进行程序调试时,需要先列出所有看来可能成立的原因或假设,然后一个一个地排除列举出的原因,最后,证明剩下的原因确实是错误的根源。 演绎法的使用主要有下述四个步骤: a. 列出所有可能的原因 根据错误信息,将所有可能的原因以假设形式列举出来,对于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 混凝土高温环境施工技术方案
- 供热管网及设施更新改造工程建设工程方案
- 石油伴生气回收综合利用项目建设工程方案
- 离婚协议书中精神损害赔偿协议范本
- 民用建筑租赁合同模板(含装修改造限制)
- 2025年脑血管介入考试题及答案
- 离婚财产分割及子女教育费用分担合同范本
- 离婚复婚再离婚复杂子女抚养权变更协议
- 离婚财产分割合同:女方继承全部家庭资产
- 2025年开学编程考试试题及答案
- 室内装修安全生产培训课件
- 2025租房合同范本下载(可直接打印)
- 2025年秋青岛版(2024)小学科学二年级上册教学计划及进度表(2025-2026学年第一学期)
- 《公民意味着什么》课件
- 2025辽宁交投集团所属运营公司招聘30人考试参考题库及答案解析
- 树枝掉落砸车赔偿协议书
- 【《我国小学生课外培训现状调查及问题和建议浅析》10000字(论文)】
- 民航招飞面试常见的面试问题及答案
- 2025湖南湘潭市市直事业单位招聘(选调)工作人员48人考试参考试题及答案解析
- 2025-2026秋学生国旗下演讲稿:第4周涵养文明习惯点亮成长底色-养成教育
- 2025秋新部编版一年级上册语文教学计划+教学进度表
评论
0/150
提交评论