当前位置: 首页 > 编程日记 > 正文

接口设计文档_app端接口用例设计方法和测试方法(一)

前言

接口测试作为测试的重要一环,重点关注的是数据层面的输入输出,今天小编介绍一种常用的接口测试用例设计方法和测试方法,希望对大家有所帮助,由于内容较多,分三次给大家讲解,今天先介绍“请求层面的用例设计方法”。

前车之鉴

小编先介绍一下自身在测试过程中遇到的接口测试问题。这类问题历历在目,任何一个问题上线都会造成线上事故,用“幸亏我意识到了”形容非常恰当。

教训一:线上资讯信息流图集频道返回非图片信息。

原因:客户端发送图集请求时,携带的Content-Type与服务端接口定义的不一致,因此服务端返回异常。

教训二:刷新资讯信息流,获取线上数据时出现浏览器闪退。

原因:客户端发送资讯请求时,读取数据库参数失败,导致空指针异常,浏览器闪退。

教训三:浏览器地址栏下方不显示热词信息。

原因:服务端返回的是否显示热词信息的开关双方定义为0或者1;但是服务端返回却是True或者False,导致客户端不兼容,不显示热词信息。

类似这样的事件举不胜数,如何才能避免类似的问题再次出现呢,那么就要求我们的检查点不能遗漏,既要用例case命中率高,也要最大限度的覆盖检查点。

3a1b230fbde1ad265db3b5c81d76493f.png

言归正传

做接口测试之前,先了解接口测试的目的,通常目的是通过需求承载的(这里就不介绍了),然后就是了解接口文档,将接口文档中信息筛选出来,梳理出检查点,滴水不漏。

通常情况下,在测试接口时,均会有接口文档作为辅助,以接口文档规定的细节作为验收标准,但是也有特殊情况(没有接口文档),此时可以向开发或者配合方询问以下细节,确保在没有辅助材料的情况下不遗漏测试点。

a)     数据请求域名以及接口b)     数据请求的协议c)      数据请求的类型d)     数据请求的Content-Type类型e)     数据请求参数f)      数据请求的拼接内容g)     数据请求的时机h)     云端返回数据信息i)       返回的数据信息存储路径j)       返回的数据信息存储方式k)     更新/替换本地存储的数据时机l)       清除存储数据的时机4013669f3e2c6dda51967e0ab8497308.png

通用的用例结构

接口测试用例结构要符合实际请求和下发的数据结构,这样方便了解数据结构特点,快速掌握接口数据含义,熟悉接口业务。先介绍请求数据的用例结构

举个栗子:若接口文档中标明客户端请求数据格式如下:

字段名

类型

必填

示例

说明

A

string

必填

aswedz

鉴权字符串

B

string

可选填

12asdwdf

秘钥

C

object

必填

应用信息

D

object array

必填

图片信息

C字段信息如下:

字段名

类型

必填

示例

说明

appName

string

可选填

app应用名

pkgName

string

可选填

app应用包名信息

用例结构参考如下:

b76c8cf77c7dce0d490ed73ebfa39c04.png给大家准备的干货

用例结构中“数据来源”是为了接下来做请求拼接容错处理,对应接口测试检查点中的【数据请求的拼接内容】。

6edd1d20128384b7cba70675f6460ea2.png

值得注意的是,除此之外,数据来源还有两种逻辑处理和移动设备信息。

b4c09f8859d377746bb795100e396f30.png

加餐

本篇文章只是讲述请求层面的用例设计方法,特此概括一下:

a)  梳理接口文档中关于获取数据的内容,方式等信息,为的是不遗漏测试点;b)  梳理获取数据参数来源,为的是评估拼接请求的容错范围;c)  代码写死的参数信息,不需要做容错;系统API获取到的参数信息,只需要考虑获取到的为空或者获取不到的情况下即可;d)  接口用例的设计结构要符合实际请求和获取到的数据结构;e)   拼接请求的参数来源于数据库/配置文件等需要做容错;f)    拼接请求的参数容错不需要考虑参数的数据类型;g)   请求拼接参数不需要做数据类型容错,因为不管存储的参数是什么类型,客户端均按照string拼接在一起的。

总结

关于数据返回的用例设计方法以及接口测试方法,小编接下来会分两次给大家讲述,欢迎大家批评指正~

5bbf5f1a29e44ce1c899e099fe1bac2c.png

搜狗测试微信号:Qa_xiaoming

9e5a0ffe837807e4a3d6f23bb6b7adb6.png

搜狗测试QQ粉丝群:459645679

40a7b8f492a34d3f1396e55bcefb4ce8.png

相关文章:

一个在raw里面放着数据库文件的网上例子

https://www.cnblogs.com/yutingliuyl/p/6880103.html转载于:https://www.cnblogs.com/strongdady/p/9052046.html

as3绕过策略文件给视频截图

接上篇 http://www.cnblogs.com/DarkMaster/p/5973593.html 这篇同样是在老外博客上找到的,分享给大家,再次感叹老外牛逼啊。 原文地址:http://gamespoweredby.com/blog/2014/11/netstream-playnull-bitmapdata-workaround/ 老规矩直接上关键…

数据库和区块链的异同

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 前几日有好友询问我关于数据库和区块链的异同,我觉得这个问题非常好,今天刚好有空把当时的聊天情况回忆了一下,可…

java并发编程实战:第十六章----Java内存模型

一、什么是内存模型,为什么要使用它 如果缺少同步,那么将会有许多因素使得线程无法立即甚至永远看到一个线程的操作结果 编译器把变量保存在本地寄存器而不是内存中编译器中生成的指令顺序,可以与源代码中的顺序不同处理器采用乱序或并行的方…

子div超出父div_菜鸟学 react props 子到父

我们都知道在 vue 中可以使用事件将子组件的数据传递给父组件,也可以通过拿到父组件的实例直接调用父组件的方法先来个子组件class ChildCom extends React.Component {constructor(props) {super(props)this.state {msg: 这是子元素的数据 hello ChildCom}}sendCh…

Linux笔记:使用Vim编辑器

Vi编辑器是Unix系统上早先的编辑器,在GNU项目将Vi编辑器移植到开源世界时,他们决定对其作一些改进。 于它不再是以前Unix中的那个原始的Vi编辑器了,开发人员也就将它重命名为Vi improved,或Vim。 为了方便使用,几乎所有…

实现中心钱包系统

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 很多业务上去中心化的应用上,需要很多中心化的管理,例如交易所,每秒交易量非常大,这都是 比特币&…

南大算法设计与分析课程OJ答案代码(5)--割点与桥和任务调度问题

问题 A: 割点与桥 时间限制: 1 Sec 内存限制: 5 MB提交: 475 解决: 34提交 状态 算法问答 题目描述 给出一个无向连通图,找到所有的割点和桥输入 第一行:点的个数,如果点个数是n,他们的编号为0 ~ n-1 余下的行:每行…

小程序生命周期_来,简单说说小程序的生命周期?

简单说说小程序的生命周期?在小程序中生命周期分为三大类应用生命周期页面生命周期组件生命周期应用生命周期onLaunch(){ console.log(onLaunch监听小程序初始化);}onShow(){ console.log(onShow监听小程序显示);}onHide() { console.log(onLaunch监听小程序隐藏);}页面生命周…

模板引擎:VelocityFreeMarker(转)

Velocity,名称字面翻译为:速度、速率、迅速,用在Web开发里,用过的人可能不多,大都基本知道和在使用Struts,到底Velocity和Struts(Taglib和Tiles)是如何联系?在技术上Velocity要比Struts Struts(…

去中心化的尺度

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 摘要:有些人因为其底层技术而对区块链感兴趣, 另外一些人对它的商业可能性着迷, 还有一些人关心它的社会和政治影…

在tomcat中用jndi配置数据源启动java web程序

1.在web.xml中添加: <resource-ref> <res-ref-name>jdbc/MTSDB</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> 2.在tomcat的context.xml中配置数据源:…

centOS7.4服务器 yum安装 搭建lamp环境

// 红色加粗是linux命令安装gcc和gcc-cyum -y install gcc gcc-cyum list httpd*安装apcheyum -y install httpd.x86_64 httpd-devel.x86_64 httpd-tools.x86_64开启服务/bin/systemctl start httpd.service停止服务/bin/systemctl stop httpd.service设置Apache服务开机启动sy…

好想学python怎么猜人_学手艺我好想学个手艺哦可是脑子怎么想也想 – 手机爱问...

2009-03-25学点东西学什么好呢&#xff1f;我今年快40了建议&#xff1a;你以前一直当销售&#xff0c;销售这个职业最大的特点就是说、说、说&#xff0c;跟人打交道最多。那么&#xff1a;(1)如果你厌倦了跟人打交道&#xff0c;厌烦了每天不停跟陌生人说说说的&#xff0c;建…

用Python从零开始创建区块链

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 前言 如果你还没有听说过 3 点钟区块链群&#xff0c;说明你还不是链圈的人&#xff1b;如果你还没有加入 3 点钟区块链群&#xff0c;说明你还不是…

动态添加跨行表格_学会这2招,轻松搞定数据透视表动态更新,效率猛增一倍...

私信回复关键词【福利】&#xff0c;获取丰富办公资源&#xff0c;助你高效办公早下班&#xff01;Hello&#xff0c;大家好&#xff0c;我是最近在研究数据透视表的小爽~最近&#xff0c;我收到了一个学员的求助&#xff1a;简单归纳一下&#xff0c;这个问题就是&#xff1a;…

alpha阶段个人总结(201521123031林庭亦)

一、个人总结 第一部分&#xff1a;硬的问题 第二部分&#xff1a;软的问题&#xff0c;在成长路上学到了什么&#xff1f; 1 当你看到不靠谱的设计、糟糕的代码、过时的文档和测试用例的时候&#xff0c;不要想 “既然别人的代码已经这样了&#xff0c;我的代码也可以随便一点…

python统计列表内元素个数

代码如下&#xff1a; list01 [a,b,c,a,c] set01 set(list01)print(set01)dict01 {}for item in set01:dict01.update({item:list01.count(item)}) print(dict01)结果&#xff1a; c, b, a} {c: 2, b: 1, a: 2}转载于:https://www.cnblogs.com/zhangyux/p/5999109.html

比特币的货币属性是什么?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 作为比特币被设计之初的用意就是作为交易的一种支付手段。作为全新的货币形式&#xff0c;比特币本身的性质就是其去中心化的特性能够和传统的货币很…

病虫害模型算法_基于深度学习的目标检测算法综述

sigai 基于深度学习的目标检测算法综述导言目标检测的任务是找出图像中所有感兴趣的目标&#xff08;物体&#xff09;&#xff0c;确定它们的位置和大小&#xff0c;是机器视觉领域的核心问题之一。由于各类物体有不同的外观&#xff0c;形状&#xff0c;姿态&#xff0c;加上…

windows 常用命令

一. 工具类 calc 启动计算器 mspaint 画图板 write 打开写字板 notepad 打开记事本 mstsc 远程桌面连接 regedt32 注册表编辑器 osk 打开屏幕键盘 magnify 放大镜 eudcedit 造字程序二. 系统和用户类 compmgmt.msc 计算机管理 devmgmt.m…

良好的用户体验应该...

这篇文章只有一个图片&#xff0c;原创的&#xff0c;谢谢&#xff01; 转载于:https://www.cnblogs.com/saper/p/9064601.html

区块链知识点简解

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。 分布式存储&#xff1a;是一种数据存储技术&#xff0c;通…

laravel和dingoapi的结合使用

dingoapi是一个laravel的开源插件&#xff0c;可以在github上搜索到&#xff0c;现在在做一个项目&#xff0c;项目中总是会有后端跟前端的json数据交互&#xff0c;而这个dingoapi为json交互提供了很大的便利。 先安装dingoapi 1、在composer.json中的require中添加"ding…

uc的剪切板能关掉吗_关掉网络游戏,小孩就有美好的未来吗?

“关掉&#xff0c;关掉&#xff01;一定要关掉&#xff01;再不关掉那些网络游戏&#xff0c;小孩哪有美好的未来&#xff0c;哪有美好的前程&#xff0c;祖国哪有栋梁之才。”最近&#xff0c;一条魔性的小视频在网上刷屏。这条小视频里&#xff0c;一个小女孩用朗诵腔调大喊…

2017-2018-2 20165236 实验四《Android开发基础》实验报告

2017-2018-2 20165236 实验四《Android开发基础》实验报告 一、实验报告封面 课程&#xff1a;Java程序设计 班级&#xff1a;1652班 姓名&#xff1a;郭金涛 学号&#xff1a;20165236 指导教师&#xff1a;娄嘉鹏 实验日期&a…

区块链4.0DexChain是什么?

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 为了更好的理解Eos-DexChain,我们了解一下区块链4.0的标准。 1&#xff09;零成本发token 零成本上交易所流通 3&#xff09;去中心化交易所会借助…

Linux内核情景分析之异常访问,用户堆栈的扩展

情景假设&#xff1a;在堆内存中申请了一块内存&#xff0c;然后释放掉该内存&#xff0c;然后再去访问这块内存。也就是所说的野指针访问。当cpu产生页面错误时,会把失败的线性地址放在cr2寄存器.线性地址缺页异常的4种情况1.如果cpu访问的行现地址在内核态,那么很可能访问的是…

系统性能测试方案

转载&#xff1a;http://www.cnblogs.com/yunman/articles/5482134.html 1引言 1.1编写目的 编写本方案的目的是用于指导XXXX系统的性能测试,主要从测试环境、测试工具、测试策略、测试具体执行方法、任务与进度表等事先计划和设计。 1.2适用范围 XXXX系统性能测试组 XXXX系统开…

python跨行字符串 变量_在Python中有没有在多行字符串中使用变量的方法?

所以我把这个作为邮件发送脚本的一部分&#xff1a;try:content ("""From: Fromname To: Toname MIME-Version: 1.0Content-type: text/htmlSubject: testThis is an e-mail message to be sent in HTML formatThis is HTML message.This is headline."&q…