用路径分析法来编写测试用例

熟悉测试理论的人都知道,路径覆盖是白盒测试中一种很重要的方法,广泛应用于单元测试。那么基于路径覆盖的分析方法是不是只能应用于单元测试呢,能不能将其推而广之呢。一般而言,在单元测试中,路径就是指函数代码的某个分支,而实际上如果我们将软件系统的某个流程也看成路径的话,我们将可以尝试着用路径分析的方法来设计测试用例。采用路径分析的方法设计测试用例有两点好处:一是降低了测试用例设计的难度,只要搞清了各种流程,就可以设计出高质量的测试用例来,而不用太多测试方面的经验;二是在测试时间较紧的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍。下面就具体的介绍一下如何用路径分析的方法编写测试用例。

  首先是将系统运行过程中所涉及到的各种流程图表化,可以先从最基本的流程入手,将流程抽象成为不同功能的顺序执行。在最基本流程的基础上再去考虑次要或者异常的流程,这样将各种流程逐渐细化,这样既可以逐渐加深对流程的理解,还可以将各个看似孤立的流程关联起来。完成所有流程的图表化后就完成了所有路径的设定。

  找出了所有的路径,下面的工作就是给每条路径设定优先级,这样在测试时就可以先测优先级高的,再测优先级低的,在时间紧迫的情况下甚至可以考虑忽略一些低优先级的路径。优先级根据两个原则来选取:一是路径使用的频率,使用越频繁的优先级越高;二是路径的重要程度,如果失败对系统影响越大的优先级越高。将根据两个原则所分别得到的优先级相加就得到了整个路径的优先级。根据优先级的排序就可以更有针对性的进行测试。

  为每条路径设定好优先级后,接下来的工作就是为每条路径选取测试数据,构造测试用例。一条路径可以对应多个测试用例,在选取测试数据时,可以充分利用边界值选取等方法,通过表格将各种测试数据的输入输出对应起来,这样就完成了测试用例的设计。

  对于测试人员而言,测试用例的设计是一件非常困难的工作,而同时测试用例的设计好坏又直接关系到整个系统的设计质量。本文介绍了一种更理论化的设计方法来尽量简化这种工作,将一般应用于单元测试的路径分析方法推广到集成测试、系统测试等后续测试过程中,希望能给大家一点启示。我会将自己尝试过的一些感受以及具体例子跟在本贴之后。

  如果想让本方法很好的用在实际的工作中,那么流程就必须明确的规范的(就是有画出相应业务或者功能走向图),这样就可以极大的加快了用例编写的速度和质量,但是如果碰到没有明确流程图的时候,可能会花不少的时间去捉摸功能点的流程走向问题,这又让工作进度慢了下来(流程不明确是因为需求没有明确表述和设计没有相应流程描述),所以在实际工作中想使用这种方法来加快和改进测试用例的进度和质量,还要说服项目组尽可能的规范需求和设计的文档规范性,毕竟软件质量的控制不是我们一组人就能做到的。

  拿到这个流程时,第一眼看上去,是不是有点晕晕的呢,确实如此,因为这不能称为标准的流程图,我们需要做一些改进,不妨事先约定,画流程图时,在有判定条件处,就往下走,而就往左走,以下是简化后的流程:


上面这个流程图看上去是不是清晰很多,确实如此,从心理学的角度来讲,正常人的思维是很难接受一个横向很复杂的事物。而且上面的流程图也更规范一点,所以建议大家以后这样画流程图。下图是作进一步的改进:这个流程图是不是更方便你设计用例呢,尤其是用路径分析法,是不是很方便就能找出其中的路径。

  这个流程图是不是更方便你设计用例呢!尤其是用路径分析法,是不是很方便就能找出其中的路径。

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-22 07:55:48

用路径分析法来编写测试用例的相关文章

Eclipse中使用Junit编写测试用例

Eclipse自带Junit插件,不用安装就能在项目中编写测试用例,非常方便. 在项目中添加Junit库 在编写测试用例之前,需要先引入Junit.对项目根目录右键,选择Properties,Java Build Path,Libraries,如图: Add Library,选择Junit: 点Next选择Junit版本,然后Finish就完成了引入. 编写测试用例 假设有如下类: package choon.test; public class Calculate { public int  

软件测试--编写测试用例

视频地址(第六课时):https://pan.baidu.com/s/1gfLVC2n    资源: 用于存放自己的关键字  

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

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

软件测试中用正交实验法设计测试用例

软件测试中用正交实验法设计测试用例 正交实验法的由来 一.正交表的由来 拉丁方名称的由来 古希腊是一个多民族的国家,国王在检阅臣民时要求每个方队中每行有一个民族代表,每列也要有一个民族的代表. 数学家在设计方阵时,以每一个拉丁字母表示一个民族,所以设计的方阵称为拉丁方. 什么是n阶拉丁方? 用n个不同的拉丁字母排成一个n阶方阵(n<26 ),如果每行的n个字母均不相同,每列的n个字母均不相同,则称这种方阵为n*n拉丁方或n阶拉丁方.每个字母在任一行.任一列中只出现一次. 什么是正交拉丁方? 设有

用正交实验法设计测试用例

一.用正交表设计测试用例的步骤 (1) 有哪些因素(变量) (2) 每个因素有哪几个水平(变量的取值) (3) 选择一个合适的正交表 (4) 把变量的值映射到表中 (5) 把每一行的各因素水平的组合做为一个测试用例 (6) 加上你认为可疑且没有在表中出现的组合 二.如何选择正交表 ● 考虑因素(变量)的个数 ● 考虑因素水平(变量的取值)的个数 ● 考虑正交表的行数 ● 取行数最少的一个 三.设计测试用例时的三种情况 (1)因素数(变量).水平数(变量值)相符 (2)因素数不相同 (3)水平数不

软件测试用例的认识误区

软件测试用例是为了有效发现软件缺陷而编写的包含测试目的.测试步骤.期望测试结果的特定集合.正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性. 在实际软件项目测试过程中,由于对软件测试用例的作用和设计方法的理解不同,测试人员(特别是刚从事软件测试的新人)对软件测试用例存在不少错误的认识,给实际软件测试带来了负面影响,本文对这些认识误区进行列举和剖析. 误区之一:测试输入数据设计方法等同于测试用例设计方法 现在一些测试书籍和文章中讲到软件测试用例的设计方

浅说《测试用例》----给测试新手的

     在此之前我搜集一些关于测试用例的知识,后来在我们的QQ群里专门定了一期讨论,来探讨测试用例,毕竟这是一个很大的话题,很难做到面面俱到,但我会尽量全面,用通俗的语言来说测试用例. --------------------------------------------------------------------------------------- 注:我们这里要说的测试用例指功能测试用例. 一.什么是测试用例?      测试用例是为某个特殊目标而编制的一组测试输入.执行条件以及预

浅谈软件测试用例

发现: 人来了,又走了! 有篇博文如是说,大体意思是有些的程序员,中途转测试,但很快又转回程序员.为何会这样,难道说测试不值得他们一试吗?普遍流行说测试工作如何如何简单,就是会点点鼠标.按钮就能做的工作:然而,事实恰恰相反,这些老到的程序员却是因为测试工作的复杂而没有既来之,则安之的. 软件测试乍看起来是件简单的工作,深入其中后,发现并不如所想,程序中各个模块之间的接口调用错综复杂(特别是大型程序),加之程序员的编写代码技巧以及个人习惯,使得一个程序有多种编程思路,只为实现功能,而不考虑代码的优

软件测试用例设计方法

前面有曰:测试结果的准确性取决于测试用例的设计,故测试用例设计显得尤为重要.今天就好好梳理下,测试用例的相关内容. 重要性:Test Case贯穿整个测试执行过程,分两大类:数值计算类和数据处理类 概述:编写一组前提条件,输入,执行条件,预期结果的组合方案.完成对某个特定需求或目标的测试,体现测试方案,方法,技术和策略的文档. 1.什么是测试用例,为什么要编写? 测试用例就是编写一组条件,输入,执行条件,预期结果的并完成对特定需求或目标的测试,体现测试方案,方法,技术和策略的文档. 由于测试用例