热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

调用第三方接口入参是数组_接口测试用例介绍

随着测试分析和分层测试的深化,接口测试出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将详细描述。1接口测试1.1接口测试接口

随着测试分析和分层测试的深化,"接口测试"出现在我们视野的频次越来越高。那么接口测的用例设计常用哪些方法呢?本文将详细描述。

  1 接口测试

  1.1 接口测试

  接口:主要是子模块或者子系统间交互并相互作用的部分。

  这里说的接口是广义的,客户端与后台服务间的协议;插件间通信的接口;模块间的接口;再小到一个类提供的方法;都可以理解为接口。

  接口测试:是指针对模块或系统间接口进行的测试。

  1.2 接口测试发现的典型问题

  接口测试经常遇到的bug和问题,如下:

  (1)传入参数处理不当,导致程序crash;

  (2)类型溢出,导致数据读出和写入不一致;

  (3)因对象权限未进行校验,可以访问其他用户敏感信息;

  (4)状态处理不当,导致逻辑出现错乱;

  (5)逻辑校验不完善,可利用漏洞获取非正当利益等。

2 接口测试用例设计

7afd57da5d4c4a759bd2277e2294c9c8.png

  上图为一个典型的接口。一个接口通常是有输入输出的,输入就是我们常见的入参,输出有时有,有时没有。调用相关接口,接口会执行相关处理逻辑。

  接口测试的用例设计,主要从输入和接口处理两方面考虑:

  1)针对输入,可按照参数类型进行设计;

  2)针对接口处理,可按照逻辑进行用例设计;

  3)针对输出,可根据结果进行分析设计。

2.1 针对输入设计

73acabc5b05a3a8060482fa18e6a2784.png

  对于接口来说,输入就是入参。常见参数类型有:

  (1)数值型(int,long,float,double等)

  (2)字符串类型

  (3)数组或链表

结构体

4fe7e6fdfda2aa4275d7c6d060970fcb.png

  结构体(struct)是一些元素的结合,元素实际也是数值型,字符串型,数组或链表。

  下面详细说明数值型、字符串型、数组或链表三种参数类型用例设计。

  2.1.1 数值型

  数值型的参数主要考虑以下几个方面设计:

  如果参数规定了值的范围,则需要考虑等价类取值范围内、取值范围外,取值的边界,如有需要,可能会遍历取值范围内的各个值。

  例如检查权限的接口:TaskChecker.checkTask(int taskID) taskID的取值范围是1-35,那么设计时考虑:

  ●1-35范围内和范围外的值;

  ●1-35的边界:0,1,35,36;

  ●类型的特殊值:-1,0

  ●数据类型的边界值:int的最小值最大值;

  ●因为1-35代码的权限ID不同,可能需要遍历1-35的每个值。

  常见问题和风险:

  ●特殊值处理不当导致程序异常退出;

  ●类型边界溢出

  ●取值范围外值未返回正确的错误信息等

  2.1.2 字符串型

字符串型的参数,主要考虑字符串的长度和内容:

b5fc3d3e761bc10c92465d5bb86eb68e.png

  例如接口转换设置闹钟的接口DateUtil.getDayOfDDHH(String ddhh),用例可以考虑:

  ●长度为4位,比4位少,比4位多;

  ●边界值:String的最大长度;

  ●特殊值:空字符;

  ●字符串内容可考虑类型:数字,非数字;

  ●特殊字符。

  ●如果是输入用户输入且其他用户可见的内容,则还需要考虑敏感字是否被正常过滤。

  可能出现的问题和风险:

  ●传入非特定类型程序异常退出

  ●超长字符未进行处理,导致存储、显示等异常

  ●其他用户可见设置的敏感字

  2.1.3 数组或链表类型

参数类型为数组或链表时,用例可以考虑:

407fd327aea442e916b783d746792eb7.png

  例如批量提交任务的接口submitTask(int[] taskID),参数用例设计考虑:

  ●正常取值:1-5个权限,范围外:6个权限;

  ●边界值:1-35的边界值,请求允许最大最小值;

  ●特殊值:0个;

  ●合法ID和不合法的;

  ●重复的ID等。

  可能存在的问题和风险:

  ●0个item时程序异常退出;

  ●重复的item处理时未去重导致结果异常等。

2.2 针对逻辑设计

f1a3083290ecd27b0036d6ffc0cf8cc4.png

  接口需要进行一些逻辑处理的,那么按逻辑设计用例可以从以下几个角度分析。

  2.2.1 约束条件分析

  (1)数值限制:分数限制、金币限制、等级限制等等。

  例如:兑换Q币活动要求积分>50才可参与。

  (2)状态限制:登录状态等。

  例如:同步用户信息需要先登录账号。

  (3)关系限制:绑定的关系,好友关系等。

  例如:帮家人防骗功能只能查询绑定家人的来电信息。

  (4)权限限制:管理员等。

  约束条件的测试在功能测试中经常遇到,在接口测试中更为重要。它的意义在于:用户进行操作时,在该操作的前端可以已经进行了约束条件的限制,故用户无法直接触发请求该接口。但是实际上,如果有其他手段:例如UI有bug或者通过技术手段直接调用接口,那么接口是否针对这些条件进行了限制就尤为重要



推荐阅读
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • Android JSON基础,音视频开发进阶指南目录
    Array里面的对象数据是有序的,json字符串最外层是方括号的,方括号:[]解析jsonArray代码try{json字符串最外层是 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
author-avatar
Ss_爱咩咩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有