干货-测试工程师必备武器

如何进行用例设计,如何让设计好的用例覆盖全面,将代码存在的问题在上线前更早发现是每一个测试工程师必备的技能。那么如何达到这些指标呢?如何将用例设计既快又全面呢?今天小编就告诉大家常用设计用例的方法,以及每个方法的适用范围,便于大家更快的选择出最优的方法。

从需求到用例设计

在项目中我们从拿到产品需求到最后的用例设计完成,都要经历哪些事情,包括今天要讲的用例设计方法是在哪个阶段使用,下面的图会告诉你答案。

设计用例方法


1.等价类

定义:把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。等价类数据一般分为有效等级类和无效等级类。

构造测试用例方法:

1)明确需求

2)分析需求中包含功能数

3)确认每一个独立功能具有多少输入

4)确认每个输入的规则

5)针对每个输入设计等价类表:有效数据和无效数据。以三边是否能组成三角形为例 

  6)构造测试用例:输入和操作进行组合

2.边界值

定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充。这种情况下,其测试用例来自等价类的边界。

与等价划分的区别:

       1)边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。 

    2)边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。

构造测试用例方法:

       1)针对每一个输入规则设计等价类边界值表

       2)增加边界值数据:上点、离点

  注:上点是边界上的点;离点是指距离上点最近的点,开区间在域内,闭区间在域外。

3.判定表

定义:判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。

判定表的组成:

判定表通常由四个部分组成如下图所示:  

 1) 条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次 序无关紧要。

 2) 动作桩(Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺 序没有约束。

 3)条件项(Condition Entry):列出针对它左列条件的取值。在所有可能情况下的 真假值。

 4)动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。

 5)规则及规则合并

A 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列。

 B 化简:就是规则合并。

 a.  有完全相同的动作桩;

 b.  条件桩中只有一个不同项

构造测试用例方法:

 1)需求中找到条件桩:输入参数要满足的条件

 2 )需求中 找到 动作桩:满足条件后得到的结果

 3 )组合所有的条件桩形成2的n次方个组合,n代表条件桩的个数

 4 )分析需求 中提到的 每一组条项桩所对应的一个或多个动作桩

 5 )查看是否可以合并, 但合并时要谨慎,因为合并后容易发生漏测

 6 )写测试用例,每一列对应一条测试用例(不存在的结果可以忽略,因没有数据可取)

 以下 是形成 普通 三角形 的判定表 :


4.流程分析法(场景设计)

简介:现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。类似于白盒测试中的路径覆盖,通过画流程图分析功能的路径。

  如下图所示,用例经过的每条路径都用基本流和备选流来表示,直黑线表示基本流,是经过用例的最简单的路径。备选流用不同的色彩表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中(如备选流1和3);也可能起源于另一个备选流(如备选流2),或者终止用例而不再重新加入到某个流(如备选流2和4)。    

快速画流程图方法:

1 )从需求 中找到 判定条件(如果,假如,当)

2 )将这些判定框罗列到流程图中(可以暂时不用考虑顺序),注意挖掘SRS中没有提到的隐性判定条件

3 )先画基本流(正常路径),再画备选流(分支)

构造测试用例方法:

1 )分析业务,画出流程图

2 )根据基本路径写基于业务场景的测试用例(用例 数= 判定条件个数+1)

5.正交试验

简介:把影响实验指标的条件称为因子。影响实验因子的条件叫因子的状态(水平)。利用正交试验设计方法设计用例时,首先要从需求中找出影响其功能实现的操作对象和外部因素,把他们当作因子。而各个因子的取值当作状态。确定因子与状态是设计测试用例的关键。因此要求尽可能全面的正确的确定取值,以确保测试用例的设计作到完整与有效。

构造测试用例方法:

1)从需求中找出因子(输入参数)

2)从需求中找出因子状态(输入参数对应的取值)并编号,画出因子状态表

3)合并或补充因子状态表,代入正交表

4)拆分正交表,替换成文字,一行是一条用例,以打印机功能为例,正交试验表如下:

6.因果图

定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

构造测试用例方法:

1)需求分析找出原因,然后给原因编号

2)需求分析找出结果,然后给结果编号

3)根据需求分析文档,分析原因与结果之间的关系

4)根据需求分析文档,分析原因与原因之间的关系

5)根据需求分析文档,分析结果与结果之间的关系

6)根据需求分析文档,画因果图

7)依据因果图去除判定表中不存在的组合

8)判定表中每一列对应一条测试用例


7.输入域覆盖

简介输入的数据包含一些易引出内存溢出和内存泄露(区别,定义)的类型边界,或者一些特殊值如电话号码等。

构造测试用例方法:

1 )SRS分析对应的输入参数是否存在特殊值和类型边界

2 )若存在,则补充特殊值和类型边界的测试数据(检查是否会出现内存溢出)

8.输出域覆盖

简介:分析输出结果的形式(提示信息,输出的显示结果,数据库的记录等)

构造测试用例方法:

1 )通过与开发的沟通,明确对应功能所有可能的输出结果有哪些

2 )逐一罗列(输出的形式主要针对提示信息和显示结果)

3 )检查对照现有测试用例是否已经覆盖了所有的输出

4 )若没有完全覆盖,则根据输出结果要求,倒推补充测试用例  

9.异常分析

  定义:基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性  的设计测试用例的方法

基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。如网络异常、断电、服务器宕机等

构造测试用例方法:

1)根据需求分析文档,构造环境异常(网络、电源、服务器、程序关闭) 

2)补充异常测试用例

适用范围

通过上述的介绍,设计用例的方法这么多,如何选择使用哪种方法呢?文章开篇中的流程图,处理过程为什么用流程分析而不用状态迁移法呢?下面小编总结了各种方法的优缺点以及适用范围,希望可以帮助大家。

 我们在实际工作中,可能一个功能会存在多种情况,所以大家要灵活使用方法,必要时设计用例方法要进行组合使用,设计出的用例才能更全面。一般情况下,一份用例最少用到2种以上方法才能全面覆盖测试点。

    如果有任何疑问,欢迎添加qq群测试入门到大神 755431660 共同学习~

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,542评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,822评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,912评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,449评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,500评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,370评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,193评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,074评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,505评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,722评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,841评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,569评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,168评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,783评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,918评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,962评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,781评论 2 354

推荐阅读更多精彩内容

  • 黑盒测试案例设计技术篇 1 概述 本章介绍黑盒测试的概念和进行黑盒测试的目的与意义,及关于等价类划分、边界值分析、...
    西边人阅读 16,919评论 0 41
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    Mr希灵阅读 21,957评论 7 278
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,724评论 5 100
  • 等价类划分方法: 一.方法简介 1.定义是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个...
    繼續hug阅读 5,598评论 1 16
  • 文章来自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鹏阅读 9,192评论 2 126