【软件测试】4、测试用例的设计

众所周知,试图对软件进行完全的测试并发现全部的问题是一件不可能的任务,对于测试而言,最有效的思想就是努力使测试尽可能完全。

在这个过程中,测试用例的设计至关重要。因为软件测试最关键的问题是:如何从所有可能的测试用例全集中寻找可能发现错误最多的子集。

1、白盒测试

白盒测试的重点在于测试用例的执行程度,或测试用例覆盖程序源码逻辑结构的程度。完整的白盒测试将走过程序运行路径的每一种可能,然而这是不可能的。因此需要设定一些准则来约束并不完善的测试用例子集,以求尽可能多的发现程序中的潜在错误。

(1)语句覆盖

语句覆盖要求将程序的每一行代码都执行过一次。这个准则通常并不完善,依照此准则设计的测试用例常常会遗漏许多的错误。

(2)判定覆盖

判定覆盖又称为分支覆盖,该准则比语句覆盖稍强。判定覆盖要求设计足够的测试用例,使得代码中的每一个判断都至少得到一个为真和一个为假的输出结果。需要注意的分支或判定语句包括switch、do-while和if-else等。判定覆盖包含语句覆盖,要求每个判断都有是非两种判定结果,并且每条语句都被执行一遍。然而,仅仅是判定覆盖依然是不完善的,存在很多遗漏错误的可能。

(3)条件覆盖

条件覆盖是比判定覆盖稍强的准则。条件覆盖于判定覆盖不同的一点在于,条件覆盖重点考察判断中每个条件的所有可能结果。如存在判断if(A & B),则条件覆盖要求测试用例实现A为真+B为假,和A为假+B为真的情况,而不关心选择的结果。显而易见,条件覆盖也并不完善。

(4)判定/条件覆盖

该准则要求将所有条件的所有可能至少执行一次,将每个判断的所有可能结果至少执行一次,将每个入口点都至少调用一次。然而该准则也不是尽善尽美,因为有些特定的条件会屏蔽其他条件,所以并非所有可能性都被执行到。

(5)多重条件覆盖

多重条件覆盖要求设计足够多的测试用例,将每个判定中给所有可能的条件结果的组合,以及所有的入口点都至少执行一次。

2、黑盒测试

黑盒测试又称功能测试,作用在于检测软件是否可以正常实现其设定的功能。

(1)等价划分

等价划分法的两种思想:①每个测试用例尽可能体现更多不同的输入情况,以最大限度减小全部测试用例规模;②尽量将程序输入范围进行划分为数量有限的等价类。

等价划分法设计测试用例的步骤:

确定等价类:每选取一个输入条件,将其划分为两个或更多个组,其中至少包括一个有效等价类和一个无效等价类。

生成测试用例:①首先编写新的测试用例,尽可能多的覆盖尚未被涵盖的有效等价类,直到所有有效等价类都被覆盖。②编写新的测试用例,仅仅覆盖一个尚未被包括的无效等价类。

(2)边界值分析

如果开发经验较为丰富,那么可以理解很多程序的错误都发生在边界条件上。因此选择处于有效等价类边缘的测试用例常常比选择典型的用例更加有效。

边界值分析法的原则:

  1. 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
  2. 如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
  3. 根据规格说明的每个输出条件,使用前面的原则1)。
  4. 根据规格说明的每个输出条件,应用前面的原则2)。
  5. 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
  6. 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
  7. 分析规格说明,找出其它可能的边界条件。

(3)因果图

当输入条件之间产生相互关系和组合的时候,情况可能会变得比较复杂,此时可考虑因果图法。因果图方法最终生成的就是判定表,适合于检查程序输入条件的各种组合情况。

生成测试用例:

  1. 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。
  2. 分析软件规格说明描述中的语义。找出原因与结果之间,原因与原因之间对应的关系. 根据这些关系,画出因果图。
  3. 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现. 为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件。
  4. 把因果图转换为判定表。
  5. 把判定表的每一列拿出来作为依据,设计测试用例。

从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。

时间: 2024-10-26 00:38:26

【软件测试】4、测试用例的设计的相关文章

《软件测试技术实战:设计、工具及管理》—第2章 2.1节运用等价类/边界值设计测试用例

第2章 传统的软件测试的设计方法软件测试技术实战:设计.工具及管理从本章开始介绍软件测试的各种设计方法,这是学习软件测试的重要内容. 一般来说,软件测试设计方法分为5类:传统的黑盒测试方法.基于质量的测试方法.基于风险的测试方法.基于经验的测试方法以及白盒测试方法.本章主要介绍传统的黑盒测试方法和白盒测试方法,共分7节. 5种黑盒测试方法如下. 等价类/边界值. 决策表. 状态转换图. 决策树. 正交法. 7种白盒测试的方法如下:. 语句覆盖. 分支覆盖. 条件覆盖. 判定/条件覆盖. MC/D

《软件测试技术实战:设计、工具及管理》—第1章 1.1节软件测试的基本理论

第1篇 软件测试设计技术 软件测试技术实战:设计.工具及管理 如何把用户的需求转换为软件测试设计,这是软件测试工程师的工作重心所在.本书第一篇通过6个章节来讲述一下如何进行软件测试设计. 本篇共分以下几个章节. 第1章,软件测试的基本知识:首先讲解一些软件测试的基本知识,如果你对软件测试的基本概念已经非常熟悉了,那么就可以简单浏览,甚至跳过本章的内容. 第2章,传统的软件测试的设计方法:本章主要介绍软件测试中最经典的5个黑盒测试方法(等价类/边界值.决策表.状态转换图.决策树和正交测试法)和7个

总结测试用例的设计

作为一位功能测试人员,其主要的职能就是进行测试用例的设计,并根据测试用例执行测试,通过全面的测试来验证产品的质量.因此测试用例也从侧面反映了一个测试人员的测试思路的严密和发散性,要做好功能测试,测试用例的重要性无法忽视.现将本人设计测试用例的流程和思路进行总结,也方便进行交流和探讨: 1) 首先要对测试用例的组织结构进行划分 如果公司的测试流程还算规范完整的话,在进行需求评审的时候,测试人员就应该根据需求对测试用例的结构进行分类,如果是一个比较大型的管理系统,那么测试用例就可以根据功能模块来进行

浅谈功能测试用例模板设计

测试用例设计和执行是测试工作的核心,也是工作量最大的任务之一,设计良好的测试用例模板能提高测试用例的设计质量,便于跟踪测试用例的执行结果,自动生成测试用例覆盖率报告.这几年测试技术和理论有了长足的发展,就功能测试用例设计要素而言,样式上均大同小异,一般都包含主题.前置条件.执行步骤.期望结果等. 测试用例可以用数据库.Word .Excel .xml 等格式进行管理,市面亦有成熟的商业软件工具和开源工具等,对于一般中小软件企业,使用文档来管理测试用例是较为方便.经济的途径. Word 格式的文档

功能测试用例基础设计模型

功能测试用例基础设计模型 一. 异常测试 异常数据输入:空数据库输入.特殊字符数据输入.超长数据输入. 错误数据输入 异常操作输入:省略操作步骤.重复关键步骤.插入多余操作步骤 异常环境:网络环境异常.硬件环境异常.软件环境异常 二. 用例合并 用例合并:异常测试等价类.测试数据等价类.测试步骤等价类.测试 结果等价类 三. 功能组合 功能内组合测试:改变组合输入顺序.必选功能和可选功能组合 功能间组合测试:正交组合法.场景插入法.地标法 与运行环境的组合:操作系统兼容性(2.1-4.0).浏览

软件测试用例的设计

一个测试用例,就是设定输入数据,运行被测试函数,然后判断实际输出是否符合预期.输入数据是测试用例的核心,输入数据的定义是:被测试函数所读取的外部数据及这些数据的初始值. 1.自动测试工具的选择 目前通过使用自动化工具对于软件的质量进行保障已经司空见惯,我们可以通过在测试中应用自动化工具来大幅度提高软件测试的效率和质量.常用的白盒测试自动化工具有Telelogic公司的Logiscope软件.Compuware公司的DevPartner软件和IBM公司的Rational Purify等:而黑盒测试

软件测试用例的设计心得

1.了解软件的原始需求(测试目的) 在编写一个软件或者模块的测试用例时候,一定要明白这个功能的原始需求,也就是软件的使用者(客户)的需求.理解原始需求后,编写的测试用例才更有目的性. 2.熟悉软件的功能需求(测试点) 这个功能需求是指软件的细化需求点,这个一般在需求文档里面都会体现.这里要做的是把 "粗略"的需求,细化成一个个小需求点.熟悉功能需求后,要知道软件是怎么使用的,这也才能覆盖到各种操作. 总之,测试用例一定要全部覆盖所有的需求点,这是最基本的一点. 3.熟悉软件的实现原理(

软件测试-java测试用例的编写,难度是如何的

问题描述 java测试用例的编写,难度是如何的 java测试用例的编写 能否举个简单的例子呢 其他编程语言的测试用例是如何编写的 测试用例的本质是神马呢 解决方案 测试本质就是写一些代码来调用你编写的函数,给出测试用的参数,看返回值是否符合预期,从而判断代码是否有错误. 测试用例就是用来测试的输入数据,每组数据是一个测试用例. 编写测试用例的原则是尽量提高代码分支覆盖率和代码路径覆盖率,测试各种典型和边界数据.比如如下函数: void foo(int i, int j) { if (i > 0)

软件测试工具LR场景设计、点击率和用户数的相互联系

LR场景设计.点击率和用户数的相互联系 1.场景设计.点击率和用户数关系图 2.如何获得需要的测试数据 测试的数据来源于:1)需求:2)系统日志. 从日志中获取数据,可以采用日志分析工具,常用的日志分析工具有Awstat和WebTrends,对于它们的区别是前者是轻量级分析工具,分析速度快,报告简单实用,后者是重量级工具,分析速度慢,报告丰富多样. 估算虚拟用户数,虽然有多种方法,但是这里重点推荐以下两种方法: 方法一,采用Little`s Law方法,它是从服务器端提出的一种计算虚拟用户数的方