• 0
  • 0
分享
  • 你不知道的接口测试之接口本身
  • 大椿 2020-10-20 10:11:26 字数 2192 阅读 1302 收藏 0

在我们测试接口提供的数据,支持的业务功能之前,我们非常有必要再提一下接口本身的规则,即便我们在前面的章节已经隐隐约约的提到过。

1. 接口文档

如果让我给接口文档下个定义,文档是使用接口的人对于接口的约束

  • 口头协定(对,你没看错,这是我最经常见的)

  • word/Excel/txt 文件

  • api管理平台(rap2/yapi等等)

文档应该出现且不限于以下几点内容:

  • 接口访问的地址

  • 接口参数

    • 必须传的参数

    • 非必须传的参数

    • 指定数据类型参数

  • 请求方式

    • GET请求

    • POST请求

  • 返回字段的含义

至于为什么是上面几条,不赘述,大家可以想一哈

2. 遵循接口文档

对于测试人员来讲,遵循接口文档,就是按照文档进行测试。测试也可以分为两种风格:

  • 懒汉式
    测试人员并非在文档形成之初,就按照文档进行严格的测试,而是在业务功能基本完成之时,才介入测试。然后当发现调用出错,或者功能出错时,才去翻阅接口文档,反馈给开发修改再测试

  • 饿汉式
    文档一形成,测试人员就开始介入,抛开业务需求,变换参数组合,请求方式等对于接口本身进行测试,直至符合文档。后期功能完成后,再把重点放到功能层面

3. 设计测试用例

对于接口本身的测试用例,由于测试的主要目标是接口本身而非业务功能,所以我们只要针对接口文档中主要的几点进行编写即可:

  • 使用get请求访问

  • 使用post请求访问

  • 必传参数为空

  • 非必传参数为空

  • 非指定类型参数请求

  • 参数组合

当然,如果我们稍微了解以下后端代码是如何实现接口的,还可以编写一些特定的测试用例,比如如果操作数据库,可以尝试传入部分sql语句,进行安全方面的测试,在这里暂不做过多的说明

4. 举个例子

仍然以上一篇中的getList为例子:

<?php// 告诉浏览器返回为json类型header('Content-Type:application/json; charset=utf-8');// 获取参数$page = $_GET['page'];$size = $_GET['size'];/**
 * 在真正的开发过程中,会操作数据库,我们暂时用一个多维数组代替
 */$data_list = array(
    array('id'=>1,'name'=>'成龙'),
    array('id'=>2,'name'=>'周润发'),
    array('id'=>3,'name'=>'周星驰'),
    array('id'=>4,'name'=>'李连杰'),
    array('id'=>5,'name'=>'梁朝伟'),
    array('id'=>6,'name'=>'张曼玉'),
    array('id'=>7,'name'=>'惠英红'),
    array('id'=>8,'name'=>'林青霞'),
    array('id'=>9,'name'=>'王祖贤'),
    array('id'=>10,'name'=>'巩俐'));foreach($data_list as $key=>$value){
    if($key >= ($page -1) * $size &&  $key < $page * $size){
        $temp[] = $value;
    }}// 组织的数据$data = array(
    'code' => 200,
    'msg' => '请求成功',
    'result' => $temp);// PHP数组转json$rst = json_encode($data,JSON_UNESCAPED_UNICODE);// 打印结果echo $rst;
  • 使用get请求访问 =====> 成功,无异常

  • post请求访问 =====> 失败

[@HymandeMBP:~]$ curl localhost/about_test/getList.php -X POST -d 'page=4&size=2'<br /><b>Notice</b>:  Undefined index: page in <b>/Library/WebServer/Documents/about_test/getList.php</b> on line <b>8</b><br /><br /><b>Notice</b>:  Undefined index: size in <b>/Library/WebServer/Documents/about_test/getList.php</b> on line <b>9</b><br /><br /><b>Notice</b>:  Undefined variable: temp in <b>/Library/WebServer/Documents/about_test/getList.php</b> on line <b>40</b><br />{"code":200,"msg":"请求成功","result":null}

因为这个接口接受的请求方式是GET,没有处理请求方式是POST的情况,其他测试与此类似

下一篇,我们主要介绍关于业务功能的测试,从一个更加的真实的需求出发,说一下考法测试流程

5. 总结

测试文档是约束

测试文档几个要点


作者:茧城寒舍

链接:https://www.jianshu.com/p/31ae4cc54906

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   需求:两个线程组(A线程组与B线程组)A线程组的变量信息被B线程组引用。  操作:  1. A线程组使用登录接口获取token、通过Json提取器获取到登录token, 然后添加"BeanShell 后置处理程序"使用"setProperty"函数字符串(全局变量)。  ①. "setProperty"函数字符串来源:选择工具??打开函数助手对话框。  ②. 下拉选择"setProperty",输入属性名称、属性值(Value of property),点击生成(点击生成会自动复制函数字符串)。  ③. 把全局...
            0 0 1178
            分享
          •   Twitter的蓝标认证制度近日引发了一系列争议。自从特斯拉CEO埃隆?马斯克收购了这家社交网络公司后,他就对Twitter的认证政策进行了多次调整,引起了用户和媒体的不满。  最初,马斯克取消了几乎所有在他收购之前就已经获得蓝标认证的账号,包括一些政治人物、名人和媒体机构。他表示,用户需要付费8美元每月才能获得蓝标认证,以此来提高Twitter的收入。然而,不久后有消息曝出,马斯克私下给三位明星Twitter用户加上了蓝标,分别是演员汤姆·克鲁斯、歌手碧昂斯和作家J·K·罗琳。这一举动引发了其他用户的不平之鸣。  随后,Twitter又宣布恢复了许多拥有超过100万粉丝的账号的蓝标认证,...
            0 0 709
            分享
          • 对于业内人士而言,软件测试要做到与时俱进还真不容易。因为测试团队与领导之间在测试方法、测试地点和时间问题上有着许多误解,所以使得准时的、高质量的发布具有一定的挑战性。如果高层领导从测试之初就参与进来,你就能够克服很多这样的问题。虽然他们不会参与到实际测试,但是他们能够从基层了解到从测试到交付一个优质软件需要做到什么。通过设定明确的质量预期,并了解满足测试团队的需求(例如培训、练习、工具等等),才能从顶层建立领导力。由于公司在持续交付中进行测试,测试计划的必要成为他们质疑的一点。现代测试计划可以为构建和传达测试策略和方法提供帮助。他们给测试团队提供的是交流各类假设和方法的渠道,其中也包括了对测试...
            0 1 1472
            分享
          •   从事测试工作的各位同学都知道,测试用例在软件测试活动中是最重要的,它是测试工作的指导,是软件测试必须遵守的准则,更是软件测试质量待定的根本保障。  在实际的软件产品或是项目中,测试用例的设计,基本上都是几百条,或是上千条,如遇到大项目或是新建系统或平台,可能是几千条以上的测试用例,在项目紧张的周期下,组织项目中的各位专家对每条测试用例进行逐一评审的可能性和可行性极低,但测试用例的评审又是重中之重。  测试列表  评审测试用例,除了了解测试人员对测试用例设计的方法、思路,还审视测试用例是否覆盖得正确、全面、连贯和可操作性。  因此,需要对测试用例的设计方法、思路及场景进行分类和归纳,继而对分...
            11 11 1262
            分享
          •   在软件相关行业中,如果说开发属于一个开创型的岗位,是从无到有的过程,那么测试则是一个需要多重沟通的岗位。为什么我们常说测试是衔接岗位呢,原因不仅是测试参与的项目环节很多,并且测试对接的人员,需要打交道的人员比较杂,是一个承前启后不可或缺的一环,测试在整个过程中更多的是发挥推动的作用。测试岗位越往上走,越能发掘沟通的重要性。  如果想做好一个测试管理人才,除了跟进项目上的事情,还要学会跟不同的人员沟通。这样才能推动问题有效的快速解决。我们从三个方面说明测试衔接的必要性。  第一部分:功能测试参与的项目过程  先来看下测试为了保障软件质量,需要做的事情,在每一个环节中测试都需要衔接不同环节。 ...
            0 0 752
            分享
      • 51testing软件测试圈微信