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

我理解的接口测试(一)

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

接口


应用(模块)提供对外信息交互的功能。其实可以把被测模块想象成一个黑盒,那么接口就是用来从盒子里拿东西(data)和放东西(data)。

接口测试验证点


网上很多资料说验证返回字段、验证数据持久化内容等,那我的理解是:验证接口的意图!

接口不会平白无故的设计,接口的设计是为具体的业务功能服务,而我们对该接口的测试就是验证该接口设计是否符合需求,能否正常为业务功能服务。

验证方向:

  • 接口设计文档的参数和返回是否满足前端GUI完成登录操作(判断登录成功参数是否足够、返回值是否满足登录操作后的展示页面、参数和返回值的类型是否符合需要、返回值是否冗余等)

  • 传入参数后并接口处理完后,是否按需求正确的返回值(正确的传参是否会返回相关返回值、返回的返回值类型和值是否符合接口设计文档、可选参数传入影响返回值、必传参数和可选参数传入符合文档设计、返回内容是否过大等)

  • 传入参数后,接口处理符合需求(接口对应持久化的数据,是否持久化)

  • 传入参数后,接口处理过程中的性能指标符合需求[性能测试]

  • 传入参数后,接口处理恶意数据符合需求[安全测试]

    大致就这么多,其实后两者更多属于接口性能和接口安全,但秉着测试左移和测试更高效化,应该在项目前期做更多类型的测试,确保大部分问题在项目前期就能得到解决(性能测试和安全测试建议在接口功能趋于稳定后再做)

接口测试原理


  1. 通过工具模拟调用方往被测应用发送请求报文

  2. 被测应用接受请求报文后,会对该报文处理然后再将响应报文发送给调用方(工具)

  3. 调用方(工具)接受响应报文、断言响应报文和验证处理结果

接口测试流程


跟功能测试一样,需求讨论=>评审需求=>确定需求=>产出接口协议文档=>根据需求静态测试接口文档=>根据需求文档和接口协议文档设计测试用例(测试用例主要从业务场景、上述验证点来考虑)=>评审用例=>冒烟测试接口=>接口测试=>输出测试报告

接口测试价值


测试左移、降低成本、提高效率、提高集成测试版本质量、降低版本发布风险、加深测试人员对被测应用技术架构理解,更加全面测试被测应用

接口测试用例设计


接口测试用例设计除了日常的业务场景以外,还需考虑文中提到的接口测试验证点。

  • 输入参数测试:针对输入参数进行的测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法(不合法)、输入参数为空、为null、输入参数超长、部分参数不传等。

  • 功能测试:接口是否满足了所提供的功能,相当于正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例觉有更好的可读性和可维护性

  • 逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试的界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常(利用传入参数尽可能覆盖代码的各个分支和异常)

  • 异常情况测试:接口实现是否对各种情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何异常都进行处理

当然接口测试用例也应该和普通的功能测试用例一样具有:有效性、可理解性、清晰性、可维护性、可重现性

接下来,会讲讲如何开始做接口测试,敬请期待……

转载于:https://www.cnblogs.com/xwgoss/p/6682493.html

相关文章:

android jni语法,Android NDK中的JNIEXPORT和JNICALL

基本上是一个Windows问题,如果你看看oracle Java jdk附带的文件jni_md_win32.h这是宏定义:/** (#)jni_md.h 1.14 03/12/19** Copyright 2004 Sun Microsystems, Inc. All rights reserved.* SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.*/#ifnd…

Win7编译volley成jar包

首先安装git和ant,当然jdk也是必须的。 git clone搞到volley的源码。 git clone https://android.googlesource.com/platform/frameworks/volley 此时volley的目录里面应该是这样的,没有AndroidManifest.xml文件。 cd进volley目录,敲下一…

c语言的求素数算法,C语言求素数的算法

最后一次是出了素数的问题C语言解决题目(面试),当时用了最粗暴的算法。回来细致參考资料,事实上答案有非常多种:1,小学生版本号:推断 x 是否为质数,就从 2 一直算到 x-1。static rt_uint32_t array1[ARRAY_…

Python全栈Day 15部分知识点

全局变量与局部变量 约定俗成的规则:全局变量名大写,局部变量名小写。 全局变量没有缩进,顶格写。 如果函数的内容无global关键字,优先读取局部变量,能读取全局变量,无法重新赋值,但是对于可变类…

SQL执行并返回执行前/后结果

SQLServer: 1、插入数据,并返回插入的数据:INSERT INTO TestTB(Province,City) output inserted.Province, inserted.City VALUES(广东,深圳)2、同理,删除数据也是一样的,只不过是使用deleted表罢了。delete from Test…

WebStorm 运行Rect Native 项目

今天教大家如何直接使用WebStorm这个IDE直接完成编码运行项目工作.这样就可以不用打开Xcode了. 1.首先点击WebStorm右上方的下拉箭头弹出的Edit Configurations.... 2.然后会进入一个配置页面.点击左上方的.在弹出的列表中选中npm.如图. 3.在右边的配置框中,先选择Command为hel…

Win7下用VS2010编译QGIS2.9.0

折腾了两天了,终于吧QGIS2.9.0在VS2010下面编译过了。 参考了许多的博客,在网络环境极为和(e)谐(lie)的情况下用Google查了好多资料。 其实原创的东西真的不多,但是毕竟是自己亲身实践得到的成…

软件工程第二次课后作业——Gaoooo

代码量:9行 码云仓库:https://gitee.com/Gaooo/2016035107059.git 实现时间:emmmmm(9行代码,自己估计!!) 程序对表达式类型的支持程度:全部支持! 能支持两个操…

android检测本地是否安装,在本地测试模块的安装

Play 核心库可让您在本地测试应用是否能够执行以下操作,而无需连接到 Play 商店:请求并监控模块的安装。处理安装错误。本页介绍了如何将应用的拆分 APK 部署到测试设备,以便 Play 核心自动使用这些 APK 模拟从 Play 商店请求、下载和安装模块…

IsPostBack的使用

protected void Page_Load(object sender, EventArgs e){//当前用户通过Index.aspx页面中“添加用户”链接跳转到该页面时,这是一次get请求,所以不会提交表单,拿不到隐藏域的值。当前页面显示完成,用户在表单中输入数据以后单击提…

WebStorm下ReactNative代码提示设置

ReactNative 代码智能提醒 (Webstrom live template) https://github.com/virtoolswebplayer/ReactNative-LiveTemplate ReactNative的代码模板,包括: 1.组件名称 2.Api 名称 3.所有StyleSheets属性 4.React组件 安装 方法一 file -> import settings -> ReactNative.ja…

WinXp安装Oracle 11g Express Edition

由于在虚拟机上学习(怕把真机器搞坏了),这次是在Windows XP上安装Oracle 11g Express。 本文安装的是Oracle 11g Express,是Oracle数据库的快速版(学习版),安装包大小只有几百MB。 到Oracle的…

html语言书写注意事项,CSS命名规范参考及书写注意事项

CSS书写顺序*{/*显示属性*/displaypositionfloatclearcursor…/*盒模型*/marginpaddingwidthheight/*排版*/vertical-alignwhite-spacetext-decorationtext-align…/*文字*/colorfontcontent/*边框背景 为什么要把 boder和background放在最后的原因是修改的频率会较之前的频繁&…

关于移动端rem适配

var num 1 / window.devicePixelRatio; var fontSize document.documentElement.clientWidth / 10; document.getElementsByTagName(html)[0].style.fontSize fontSize px; 适配移动端rem单位,实际使用的时候用量取到的像素值/75即为计算后的rem值,标…

JavaWeb基础—JSP

一、什么是JSP JSP 全称是 Java Server Pages,是一种开发动态web资源的技术 在原HTML上添加JAVA脚本(灵魂工程师,为页面添加灵魂),可以说 jsp html java代码 jsp标签 二、JSP的原理 JSP基本原理: JSP…

react-native 常用命令

创建项目 react-native init AwesomeProject //AwesomeProject是项目名启动 Node.js web server react-native start启动android react-native run-android启动ios react-native run-ios运行特定模拟器:react-native run-ios --simulator "iPhone 5"

使用WinPcap和libpcap类库读写pcap文件(001)开发环境配置

最近的项目要求写一个读写pcap文件的小程序,用来修改pcap中的部分信息,实现pcap的定制。 所以必须学会使用wireshark并能有利用WinPcap库和libpcap库进行开发。 虽然本文记录的都是windows下使用WinPcap进行开发,但是由于希望程序能够跨平台…

MySql忘记密码了咋办

对内 忘记密码终端修改操作: #停止mysql服务 sudo /opt/lampp/lampp stopmysql #参数启动mysqld sudo /opt/lampp/sbin/mysqld --skip-grant-tables #新建开一个终端(复制会话)进入 sudo /opt/lampp/bin/mysql -uroot #使用mysql权限&…

html资源文件记载进度条,用进度条显示文件读取进度《 HTML5:文件 API 》

在这个文档里,我添加了一个 标签 .. 上面定义了一个 ID 是 eventstatus … 我们可以把进度条放在这个容器里面 … 先找到用来显示进度条的容器 …// 找到显示事件状态的容器var eventStatus document.getElementById("eventstatus");然后再去创建进度条需…

JS中根据某个值进行大小排序

//从大到小排序 function compareBigToSmall(property){return function(a,b){var value1 a[property];var value2 b[property];return value2 - value1;} }; //从小到大排序 function compareSmallToBig(property){return function(a,b){var value1 a[property];var value…

react native 常用学习或查资料网址

react-native facebook官网:http://facebook.github.io/react-native/ 中文网:http://reactnative.cn/ react 官网地址:http://facebook.github.io/react/ Github地址:https://github.com/facebook/react 阮一峰教程&#xff1a…

使用WinPcap和libpcap类库读写pcap文件(002)PCAP文件格式

本文基本翻译自https://wiki.wireshark.org/Development/LibpcapFileFormat,主要分析pcap文件的格式。 其中一些字段可能和现在的WinPcap类库里的字段不同,请结合当前WinPcap库分析。 libpcap文件格式 libpcap文件格式是TcpDump/WinDump,Wir…

图论-最短路径--3、SPFA算法O(kE)

SPFA算法O(kE) 主要思想是: 初始时将起点加入队列。每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将其入队。直到队列为空时算法结束。 这个算法,简单的说就是队列优化的bellman-…

如何在HHDI中进行数据质量探查并获取数据剖析报告

通过执行多种数据剖析规则,对目标表(或一段SQL语句)进行数据质量探查,从而得到其数据质量情况。目前支持以下几种数据剖析类型,分别是:数字值分析、值匹配检查、字符值分析、日期值分析、布尔值分析、重复值…

html5网页怎么实现内容追加,纯js实现网页内容复制后自动追加自定义内容

网页操作内容复制内容后纯js实现监听自动追加自定义内容不少网站技术或者博客上有这样的处理,当我们复制代码的时候,会自动加上一段本信息版权为XXXX,这是怎么实现的呢?其实实现的方式很简单,可以在我的网站页面上绑定…

ios Standard Framework和Umbrella Framework

Standard Framework:标准库,通过引用对应的header文件而不是引用master header 文件来引用类(也可以通过引用Master Header file来引用需要使用的类),只需要暴露对应的header文件到Header文件夹下即可,不强制引用master header文件…

Win7使用Visual Studio 2010编译用于Qt4.8.6的MySQL驱动

其实编译过程在Qt Creator 的帮助文档里有,我就是照着做的,但是没成功,因为不能照搬照抄! 1.确保path环境变量里有QTDIR,这个就不细说了。 2.打开"开始"->"Microsoft Visual Studio 2010"->…

ios 常见性能优化

1. 用ARC管理内存 2. 在正确的地方使用reuseIdentifier 3. 尽可能使Views透明 4. 避免庞大的XIB 5. 不要block主线程 6. 在Image Views中调整图片大小 7. 选择正确的Collection 8. 打开gzip压缩 9. 重用和延迟加载Views 10. Cache, Cache, 还是Cache! 11. 权衡渲染方…

强化学习(七)时序差分离线控制算法Q-Learning

在强化学习(六)时序差分在线控制算法SARSA中我们讨论了时序差分的在线控制算法SARSA,而另一类时序差分的离线控制算法还没有讨论,因此本文我们关注于时序差分离线控制算法,主要是经典的Q-Learning算法。 Q-Learning这一…

react遇到的各种坑

标签里用到<label for>的&#xff0c;for 要写成htmlFor标签里的class要写成className组件首字母一定要大写单标签最后一定要闭合如果html里要空格转义&#xff0c; 注意不要漏了分号;style要写成style{{clear: both,backgroundColor:red,width:200px}}组件里能用<but…