一、关于”好的“测试用例
  在设计测试用例的时候有多种设计方法和策略可以使用,使得测试用例设计得更丰富,尽可能覆盖到更多的程序路径和功能场景。常见的测试用例设计方法被提到最多的就是等价类划分、边界值分析、错误推断法等,而且在常规思路中希望测试用例越全面越完整越好。但是在复杂测试问题场景中,设计出完整全面的测试用例不是不可能,但是数量巨大的测试用例往往严重降低了测试效率,甚至可以说不是很好的用例设计。从我自己的经验,作为一名测试新手,最开始设计测试用例的时候希望做到”全面“,眼花缭乱的用例乍一看很是惊艳,可是真正测试起来便知其效率有多低下、冗余有多繁杂。因而,设计出全面完整的测试用例不是难事,难在如何将用例做减法。也就是说,如何用尽可能少的测试用例覆盖到更多的程序路径和功能场景,这才算是一份‘好的”的测试用例。
  二、关于PairWise策略
  PairWise(又称全对偶)策略是组合测试中的一种设计测试用例的方法,在很早之前就被提出,且被多项文章和实验证明是成效显卓。为了更好地理解PairWise,我们先假设一个常见的测试场景。假如我们测试公司电脑能够正常打印,需要测试两个因素,操作系统和打印机类型。假设操作系统有win7、mac、win8三个,打印机类型有EP、HP两种。我们此时设计一下测试用例:
  假如此时我们再增加一个测试因素,打印类型(打印单面、打印双面两个值),按照“全面”的测试用例设计方法,此时我们的测试用例个数达到6*2=12个,当然这也可以接受。
  但是我们考虑到这其中有冗余的情况,比如7号测试用例win7-HP这两个因素组合的情况已经由1号测试用例测试过了,且7号测试用例HP-双面这两个因素的组合也会由8号测试用例测试。因而7号测试用例就是多余的,因为它可能发现的bug,1号和8号完全可以测试出来。按照这个思路,我们需要的是在一组测试用例中能够保证至少一个用例中的每个其他变量的每个取值都配对过。这样的话我们只要6个测试用例就够了:
  事实上,如果这三个参数中的某两个参数的值的任意不同的组合会触发一个bug的话,那表格上的那组测试用例也可以发现该bug。
  相对于所有组合情况来说,PairWise的测试效率要高很多。例如,如果你想测试10个参数且每个参数都有26个值的功能,所有组合情况将导致存在141167095653376个测试用例。而PairWise测试法就只要测试1094个测试用例就可以。因而善于利用PairWise设计测试用例,可以利用较少的测试用例覆盖尽可能全的测试路径。
三、PairWise策略设计用例实践
  在云阅读接口测试的用例设计过程中,有时会用到PairWise设计策略,以保证测试覆盖率的同时提升测试效率。比如在最近的”阅读圈评论大师榜“的接口测试中,测试人员要设计不同的大师评论,查看调用接口时返回的数据是否完整。大师评论设计的因素主要有:评论主体(书籍、资讯、文章)、选中文字还是不选中文字(选中、不选中)、原评论还是子评论(原评论、子评论)。其中是否选中文字只是针对书籍或者文章这两种评论主体才会有的区分。如果我们按照全面完整的思路设计测试用例时,我们会得到4+2+4=10个测试用例。
  如果我们按照PairWise策略设计测试用例的话,我们只需要6个测试用例就可以了:
  这样的话我们只需要设计6种评论就可以满足测试要求了,可以提高测试效率。那这样设计测试用例是否是完备的呢?验证一下。从倒数第二个表格中,我们可以看一下省掉的这4个测试用例,其中的一个是4号测试用例(书籍+选中+子评论),这个用例需要验证的点包括:接口返回书籍详细信息、接口返回评论的选中文字、接口返回子评论和原评论的全部信息,所以这个用例完全可以由1号测试用例(书籍+选中+原评论)与6号测试用例(文章+选中+子评论)这两个测试用例验证出。也就是说,4号用例能测试出来的bug,1号与6号也能测试出来。自然我们可以不需要4号测试用例。当然,这也仅仅是使用PairWise策略设计测试用例的一次小实践,10个用例减少到6个,但是这种测试策略和原理掌握了的话,在以后更为复杂繁琐的测试场景中,合理地利用PairWise能够更大地减少不必要测试用例的数量、提高测试效率。PairWise自然也有其缺点,就是难以发现在特殊因素组合情况下产生的bug,但是这种策略的优势体现在复杂的测试场景中在比较完备的测试用例和测试效率之间的平衡折衷。

策略设计测试用例实践(2)--Pairwise(转)的更多相关文章

  1. 来自Google资深工程师的API设计最佳实践

    来自Google资深工程师Joshua Bloch的分享:API设计最佳实践 为什么API设计如此重要?API是一个公司最重要的资产. 为什么API的设计对程序员如此重要? API一旦发布,出于兼容性 ...

  2. MaxCompute表设计最佳实践

    MaxCompute表设计最佳实践 产生大量小文件的操作 MaxCompute表的小文件会影响存储和计算性能,因此我们先介绍下什么样的操作会产生大量小文件,从 而在做表设计的时候考虑避开此类操作. 使 ...

  3. RESTful API 设计最佳实践

    背景 目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个"万能"的设计标准:如何鉴权?API ...

  4. Atitit 词法分析器的设计最佳实践说明attilax总结

    Atitit 词法分析器的设计最佳实践说明attilax总结 1.1. 手写的优点:代码可读,对源代码中的各种错误给出友好的提示信息,用户体验高,1 1.2. 使用状态表比较简单,dfa比较麻烦1 1 ...

  5. atitit.基于http json api 接口设计 最佳实践 总结o7

    atitit.基于http  json  api 接口设计 最佳实践 总结o7 1. 需求:::服务器and android 端接口通讯 2 2. 接口开发的要点 2 2.1. 普通参数 meth,p ...

  6. ****RESTful API 设计最佳实践(APP后端API设计参考典范)

    http://blog.jobbole.com/41233/ 背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而 ...

  7. RESTful API 设计最佳实践(转)

    摘要:目前互联网上充斥着大量的关于RESTful API(为了方便,以后API和RESTful API 一个意思)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API格式如何?你的API ...

  8. RESTful API 设计最佳实践(转)

    背景 目前互联网上充斥着大量的关于RESTful API(为方便,下文中“RESTful API ”简写为“API”)如何设计的文章,然而却没有一个”万能“的设计标准:如何鉴权?API 格式如何?你的 ...

  9. Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践

    前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...

随机推荐

  1. c网购物车流程图

    1. 流程图 2. 流程介绍 1) 客人浏览模式下(未登录状态)加入购物车 这个时候回校验一下商品的可售数量,以及状态等等,校验成功后会保存到cookie和memcache,数据操作校验以memcac ...

  2. Android : reletive layout

    在兄弟的上下左右: android:layout_toRightOf="@id/btn1"/> android:layout_toLeftOf="@id/img1& ...

  3. 56. spring boot中使用@Async实现异步调用【从零开始学Spring Boot】

    什么是"异步调用"? "异步调用"对应的是"同步调用",同步调用指程序按照定义顺序依次执行,每一行程序都必须等待上一行程序执行完成之后才能执 ...

  4. HDU 2280 状压DP

    用dfs找到状态的最优解 且那个正方形块可以由两个水平块组成,所以无需考虑 #include <cstdio> #include <cstring> #include < ...

  5. hdu 4325

    #include<stdio.h>//数据弱线段树延迟更新水过 #define N 100100 struct node { int x,y,yanchi,num; }a[N*4]; vo ...

  6. [NOIP2004] 提高组 洛谷P1091 合唱队形

    题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2, ...

  7. POJ 3041_Asteroids

    题意: N*N网格中有小行星,光束能将一整行或者一整列的行星消灭,问消灭所有行星至少需要多少光束? 分析: 最小顶点覆盖问题,将每个小行星看成边,左右顶点为横纵坐标,可以转化为二分图,利用二分图中最小 ...

  8. 组队训练1 回放(转载至cxhscst2's blog)

      第一场组队训练……意料之中的爆炸. 开场先看题,H是斐波那契水题,qw把H切了. 同时czy看I题(排列),cst继续读其他题. czy尝试交I,PE. cst发现K是水题. cst上来敲K,WA ...

  9. XJTUOJ13 (数论+FFT)

    http://oj.xjtuacm.com/problem/13/ 题意:wmq如今开始学习乘法了!他为了训练自己的乘法计算能力,写出了n个整数, 并且对每两个数a,b都求出了它们的乘积a×b.现在他 ...

  10. Windows 10+Ubuntu 16.04在MBR分区上安装双系统之后启动菜单的System Setup选项提示:can't find command "fwsetup"

    背景: 硬盘分区方式:MBR 硬盘容量256,Windows 100,Ubuntu 156,其中主分区安装的是Windows,Ubuntu安装在逻辑分区上,文件系统为Ext4,整个Ubuntu就挂载在 ...