资讯专栏INFORMATION COLUMN

接口测试巧用 “单一变量法”

Snailclimb / 2578人阅读

摘要:测试与实验单一变量法,咋这么熟悉的名字高中生物课化学物理,大学时代的各种实验课中都有提及。就是这个单一变量法,也可用于软件测试领域。

测试与实验

“单一变量法”,咋这么熟悉的名字?
高中生物课、化学、物理,大学时代的各种实验课中都有提及。
就是这个“单一变量法”,也可用于软件测试领域。

示例

doSomething(req)表示为接口测试过程中的某个方法,Java示例代码如下:

public DoSomethingRes doSomething(DoSomethingReq req) {
  // check params
  check(req);
  DoSomethingRes res= null;

  SomeRpc rpc = getSomeRpc();
  SomeRpcReq rpcReq = build(req);
  rpc.doRpcMethod(rpcReq);

  // do something else
  return res;
}

请求参数:

字段名称 类型 取值范围 必填项 备注
user String
type int [0,1,2]
queryStartDate String 格式为yyyy-MM-dd

返回结果:

字段名称 类型 备注
success Bool true表示成功,false表示失败
message String
data Array 对象数组

示例数据:

// 请求参数
{
  "user": "String",
  "type": "1",
  "queryStartDate": "2018-09-30"
}

// 返回结果
{
  "success": true,
  "message": "ok",
  "data":[
    {
      ...
    },
    {
      ...
    }
  ]
}
单一变量法实践如下

选择user、type、queryStartDate三个正确参数,保持其中2个参数不变,仅修改其中1个参数。

(1)检查各个参数进行非空校验的测试用例

user=null,type=1,queryStartDate=2018-09-30

user=helloworld,type=null,queryStartDate=2018-09-30

user=helloworld,type=1,queryStartDate=null

(2)检查各个参数进行空字符串校验的测试用例

user=空字符串,type=1,queryStartDate=2018-09-30

user=helloworld,type=空字符串,queryStartDate=2018-09-30

user=helloworld,type=1,queryStartDate=空字符串

(3)保持user、queryStartDate不变,遍历type枚举项的测试用例

user=helloworld,type=0,queryStartDate=2018-09-30

user=helloworld,type=1,queryStartDate=2018-09-30

user=helloworld,type=2,queryStartDate=2018-09-30

(4)补充测试用例

单一变量法检查接口参数是否正常,可能会导致部分组合参数不能覆盖,需要在测试过程中根据实际代码覆盖率情况补充测试用例。
举例:doSomething内部针对特殊用户,代码执行了不同的业务代码,此时需要对特殊用户增加测试用例。

user=admin(特殊权限用户),type=0,queryStartDate=2018-09-30

user=admin(特殊权限用户),type=1,queryStartDate=2018-09-30

user=admin(特殊权限用户),type=2,queryStartDate=2018-09-30

为何使用单一变量法进行接口测试?

使用单一变量法,可以方便组织测试用例,甚至批量生成用例,并快速进行接口自动化测试。

代码实践

由你来发挥,建议动手实践。

申明

本文由作者同步发布到segmentfault、知乎社区、testerhome。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8840.html

相关文章

  • 巧用 `Promise.all` 实现函数:有一个 Promise 被 resolve 整个函数就被

    摘要:调用分布式服务接口时经常会遇到这样的问题接口方提供多个供用户调用,只要有一个返回成功就算成功。但是请注意不是等到有一个被时返回,而是只要有一个被时就会返回,不论这个是还是。 调用分布式服务接口时经常会遇到这样的问题:接口方提供多个 IP 供用户调用,只要有一个返回成功就算成功。 对于这样的问题,一个比较简单的方案是依次调用各个接口,如果前一个接口未成功返回再调用第二个接口。这样做的好处...

    genefy 评论0 收藏0
  • PHP中巧用curl 并发减少获取第三方网页内容时间

    摘要:老的访问方式以及耗时统计耗时耗时秒并发访问方式以及耗时统计耗时耗时秒帅气吧整个页面访问后端接口的时间节省了一半 前言: 在我们平时的程序中难免出现同时访问几个接口的情况,平时我们用curl进行访问的时候,一般都是单个、顺序访问,假如有3个接口,每个接口耗时500毫秒那么我们三个接口就要花费1500毫秒了,这个问题太头疼了严重影响了页面访问速度,有没有可能并发访问来提高速度呢?今天就简...

    王岩威 评论0 收藏0
  • 正则表达式巧用 Unicode 匹配特殊字符

    摘要:正则表达式巧用匹配特殊字符作者原文章首先声明,本文所有的代码都是在下面运行,需要修改之后才能运行,但是本文没有涉及到太多的新特性,而且由于对修饰符不支持,最后的实现也基本是用的知识写的代码。 正则表达式巧用 Unicode 匹配特殊字符 作者 @zwhu 原文章 @github 首先声明,本文所有的代码都是在 ES6 下面运行,ES5需要修改之后才能运行,但是本文没有涉及到太多的ES6...

    rubyshen 评论0 收藏0
  • CSS(一)伪元素的巧用

    摘要:并且,一些伪元素可以使开发者获取到不存在于源文档中的内容比如常见的还可以为伪元素定制样式。。中新增加的伪元素必须用伪类使用一个冒号例如。就本文而言,我们将把我们探讨的范围限制在和这两个伪元素的巧用上。 作为一门前端er,你肯定熟知 a:hover     a:visited.....我还记得在小本本上记着诀窍:love 与 hate 纠缠不休,大家都懂的吧。。。。        伪类和...

    entner 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<