一、关于”好的“测试用例
  在设计测试用例的时候有多种设计方法和策略可以使用,使得测试用例设计得更丰富,尽可能覆盖到更多的程序路径和功能场景。常见的测试用例设计方法被提到最多的就是等价类划分、边界值分析、错误推断法等,而且在常规思路中希望测试用例越全面越完整越好。但是在复杂测试问题场景中,设计出完整全面的测试用例不是不可能,但是数量巨大的测试用例往往严重降低了测试效率,甚至可以说不是很好的用例设计。从我自己的经验,作为一名测试新手,最开始设计测试用例的时候希望做到”全面“,眼花缭乱的用例乍一看很是惊艳,可是真正测试起来便知其效率有多低下、冗余有多繁杂。因而,设计出全面完整的测试用例不是难事,难在如何将用例做减法。也就是说,如何用尽可能少的测试用例覆盖到更多的程序路径和功能场景,这才算是一份‘好的”的测试用例。
  二、关于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. HTML、CSS常用技巧

    一.HTML 在介绍HTML之前,我们先看一下HTML的文档树结构,主要包括哪些: (一).头部标签 1,Doctype Doctype告诉浏览器使用什么样的HTML或XHTML规范来解析HTML文档 ...

  2. centOS 7 换ssh端口

    centos 最少安装时缺少semanage的,要这样装补上,因为默认是安装了SElinux的 [root@localhost ~]# sestatus SELinux status: enabled ...

  3. [luoguP2709] 小B的询问(莫队)

    传送门 个数 1 2 3 4 5 答案 1 4 9  16 25 做差 1 3 5 7 9 显然增加一个数只需要增加 ton[a[x]] << 1 | 1 即可 减去一个数也减去这个 注意 ...

  4. noip模拟赛 星空

    分析:非常神的一道题.迭代加深搜索+rand可以骗得20分.状压n的话只有24分,必须对问题进行一个转化. 在爆搜的过程中,可以利用差分来快速地对一个区间进行修改,把一般的差分改成异或型的差分: b[ ...

  5. es6异步编程 Promise 讲解 --------各个优点缺点总结

    //引入模块 let fs=require('fs'); //异步读文件方法,但是同步执行 function read(url) { //new Promise 需要传入一个executor 执行器 ...

  6. 姓名与ID(codevs 1027 未结题)

    题目描述 Description 有N个人,各自有一个姓名和ID(别名).每个人的姓名和ID都没有重复.这些人依次进入一间房间,然后可能会离开.过程中可以得到一些信息,告知在房间里的某个人的ID.你的 ...

  7. msp430入门学习13

    msp430的定时器--Timer_B(定时器B)

  8. Linux下汇编语言学习笔记15 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  9. Writing Code-Codeforces511C**

    http://codeforces.com/problemset/problem/544/C 完全背包 dp[i][j]表示第i行有j个bug #include<stdio.h> #inc ...

  10. 【天道酬勤】 腾讯、百度、网易游戏、华为Offer及笔经面经(转)

    应届生上泡了两年,一直都是下资料,下笔试题,面试题.一直都在感谢那些默默付出的人.写这个帖子花了我两 个夜晚的时间,不是为了炫耀,只是为了能给那些“迷惘”的学弟学妹,一点点建议而已.大家何必那么认真, ...