接口测试的测试用例该怎么写呢?
作者:字节开发测试
链接:https://www.zhihu.com/question/305629217/answer/2530044958
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
一、什么是接口
接口就是有特定输入和特定输出的一套逻辑处理单元。
在计算机领域中,我们所说的接口一般分两种,一种是内部接口,一种是外部接口。
内部接口:内部接口指的是系统内提供的方法、函数等,它是不对外开放的,仅供系统内部调用的
外部接口:外部接口是指系统对外提供的,通过某种特定的协议与外部程序进行交互的方法
二、什么是接口测试
接口测试就是使用某种工具或编写程序与系统提供的外部接口进行交互,通过接口返回的结果判断接口内部逻辑实现是否满足预期的过程。
三、为什么要掌握接口测试
1.接口测试直接测试后端服务,更容易发现影响广泛的bug
2.通过接口自动化完成接口回归测试,让工作更轻松、更高效
3.掌握接口测试思维,对测试框架搭建有很大的帮助
4.测试工程师的招聘一般都要求掌握接口测试
四、接口都有哪些类型
接口一般分为两种:
1.程序内部的接口
2.系统对外的接口
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用。
接口的分类:
1.webservice接口
2.http api接口
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,他与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式,可以转换成JavaScript中的原生对象,可以转换成java中的类对象等。)
五、接口的本质是什么
接口你可以简单的理解他就是URL,工作原理就会说URL通过get或者post请求像服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输与接收。
六、怎样做接口测试
工具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
--也可以用 接口自动化来实现,就是用代码实现,框架和UI自动化差不多,发送请求用断言来判断。
七、接口测测试点是什么
目的:测试接口的正确性和稳定性;
原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;
重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;
核心:持续集成是接口测试的核心;
优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本);
用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);
PS:设计用例时还需要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正需要什么功能;
1、基本功能测试:
由于是针对基本业务功能进行测试,所以这部分是两种测试重合度最高的一块,开发同学通常所指的也主要是这部分的内容。
2、边界分析测试:
在基本功能测试的基础上考虑输入输出的边界条件,这部分内容也会有重复的部分(比如业务规则的边界)。但是,前端的输入输出很多时候都是提供固守的值让用户选择(如下拉框),在这种情况下测试的边界范围就非常有限,但接口测试就不存在这方面的限制,相对来说接口可以覆盖的范围更广,同样的,接口出现问题的概率也更高。
3、性能测试:
这个比较容易区分,虽然都需要做性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用情况等。两种测试时的策略和方法都有很大区别,所以这部分内容是需要分开单独进行测试的,理论上来说这也是不同的部分。
综论:
1、接口测试和app测试的活动有部分重复的内容,主要集中在业务功能测试方面。除此之外,针对各自特性的测试都不一样,需要分别进行有针对性的测试,才能确保整个产品的质量。
2、接口测试可以关注于服务器逻辑验证,而UI测试可以关注于页面展示逻辑及界面前端与服务器集成验证
3、接口测试持续集成:
对接口测试而言,持续集成自动化是核心内容,通过持自动化的手段我们才能做到低成本高收益。目前我们已经实现了接口自动化,主要应用于回归阶段,后续还需要加强自动化的程度,包括但不限于下面的内容:
a) 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。
b) 结果展示:更加丰富的结果展示、趋势分析,质量统计和分析等
c) 问题定位:报错信息、日志更精准,方便问题复现与定位。
d) 结果校验:加强自动化校验能力,如数据库信息校验。
e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。
f) 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。
4、接口测试质量评估标准:
a) 业务功能覆盖是否完整
b) 业务规则覆盖是否完整
c) 参数验证是否达到要求(边界、业务规则)
d) 接口异常场景覆盖是否完整
e) 接口覆盖率是否达到要求
f) 代码覆盖率是否达到要求
g) 性能指标是否满足要求
h) 安全指标是否满足要求
八、接口测试都要掌握哪些知识
①了解系统及内部各个组件之间的业务逻辑交互;
②了解接口的I/O(input/output:输入输出);
③了解协议的基本内容,包括:通信原理、三次握手、常用的协议类型、报文构成、数据传输方式、常见的状态码、URL构成等;
④常用的接口测试工具,比如:jmeter、loadrunner、postman、soapUI等;
⑤数据库基础操作命令(检查数据入库、提取测试数据等);
⑥常见的字符类型,比如:char、varchar、text、int、float、datatime、string等;
如何获取接口相关信息?
一般的企业,都会由开发或者对应的技术负责人员编写接口文档,里面会注明接口相关的地址、参数类型、方法、输入、输出等信息,如果没有,想办法获取。。。
接口文档八要素:
封面:封面最好是本公司规定的封面,有logo,内容标题,版本号,公司名称,文档产生日期;
修订历史:表格形式较好些,包括:版本、修订说明、修订日期、修订人、审核时间审核人等;
接口信息:接口调用方式,常用的GET/POST方式,接口地址;
功能描述:简洁清晰的描述接口功能,比如:接口获取的信息不包括哪些;
接口参数说明:每个参数都要和实际中调用的一样,包括大小写;参数的含义言简意赅的说明,格式,是string 还是int 还是long等格式;
说明部分,说明参数值是需要哪里提供,并详细说明参数怎么生成的,例如时间戳,是哪个时间段的,参数是否必填,一些参数是必须要有的,有些是可选参数等;
返回值说明:
①最好有一个模板返回值,并说明每个返回参数的意义;
②提供一个真实的调用接口,真实的返回值;
调用限制,安全方面:
加密方式,或者自己公司一个特殊的加密过程,只要双方采用一致的加密算法就可以调用接口,保证了接口调用的安全性,比如常见的md5;
文档维护:文档在维护的时候,如有修改一定要写上修改日期,修改人,对大的修改要有版本号变更;
九、其他相关知识
get请求,post请求的区别:
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也可以把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,但是那只是对于小白用户来说的,就算post请求,你通过抓包也是可以抓到参数的。(唯一区别就是这一点,上面3点区别都是不准确的)
http状态码:
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了。
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面。
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果。
webservice接口怎么测试:
它不需要你在拼报文了,会给一个webservice的地址,或者wsdl文件,直接在soapui导入,就可以看到这个webservice里面的所有接口,也有报文,直接填入参数调用,看返回结果就可以了。
cookie与session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为session
其他信息如果需要保留,可以放在cookie中
接口测试的测试用例该怎么写呢?相关推荐
- 自动化测试用例要怎么写
自动化测试用例要怎么写 自动化测试, 不是测试功能,可不可用. 而是一个流程上有没有问题,能不能通过. 上一片说了, 接口的测试用例, 不用像功能测试用例那样, 一个功能写N多个测试点, 因为 ...
- 测试用例,怎么写 ?
本文的测试用例主要针对功能测试. 软件测试中最重要的因素是设计和生成有效的测试用例. 穷举的测试是不可能的,合理的测试策略是通过使用特定的面向黑盒测试的测试用例设计方法,而后使用白盒测试方法对程序的逻 ...
- 史上最详细的小程序测试用例模板,以后再也不怕测试用例不会写了
目录 1. 文档介绍 1.1 文档目的 1.2 文档范围 1.3 读者对象 1.4 术语与缩写解释 2. 功能测试用例 2.1 被测试对象的介绍 2.2 测试范围与目的 2.3 测试环境与测试辅助工具 ...
- 接口测试的测试用例编写
一..接口功能测试的测试方案规格建议可以有如下几点: 1.需求所涉及的接口的背景描述 2.接口跟页面功能交互的关联关系 3.接口逻辑的流程图 4.接口文档定义 5.接口所涉及的缓存,以及缓存对应的ke ...
- 软件测试用例学习,软件测试用例就要这样写!
一.为什么要写测试用例 写测试用例可以让测试的需求覆盖更加全面,让测试工作进行得条理有序,且方便移交和交流, 好的测试用例要做到:结构设置合理,case覆盖全面,且具有可执行性,可重复等特点. 二.软 ...
- 自动化测试用例要怎么写,据说这是最全的......
目录:导读 前言 一.Python编程入门到精通 二.接口自动化项目实战 三.Web自动化项目实战 四.App自动化项目实战 五.一线大厂简历 六.测试开发DevOps体系 七.常用自动化测试工具 八 ...
- 测试用例,必须这么写....
一.为什么要写测试用例 写测试用例可以让测试的需求覆盖更加全面,让测试工作进行得条理有序,且方便移交和交流, 好的测试用例要做到:结构设置合理,case覆盖全面,且具有可执行性,可重复等特点. 二.软 ...
- 新手必看:怎么写一个合格的测试用例?
摘要 前段时间有很多小可爱给我们留言,想知道怎么写一个合格的测试用例. 来一起学习怎么写一个合格的测试用例吧! 1.测试用例是什么? 测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案. ...
- 公司测试员用例写得乱七八糟,测试总监制定了这份《测试用例编写规范》
统一测试用例编写的规范,为测试设计人员提供测试用例编写的指导,提高编写的测试用例的可读性,可执行性.合理性.为测试执行人员更好执行测试,提高测试效率,最终提高公司整个产品的质量. 一.范围 适用于集成 ...
- 初入测试如何编写测试用例?从3个方面带你写一个合格的测试用例
前言 作为一个测试新人,刚开始接触测试,对于怎么写测试用例很头疼,无法接触需求,只能根据站在用户的角度去做测试,但是这样情况会导致不能全方位的测试APP,这种情况就需要一份测试用例了,但是不会写,求指 ...
最新文章
- python的print格式化输出,以及使用format来控制。
- jira mysql 启动 失败_重启机器导致mysql启动失败
- 转:MySQL索引原理及慢查询优化
- 服务器远程管理app,用什么软件远程管理服务器最好? - 选择攻略!
- java虚拟机规范这本书怎么样_JVM规范系列开篇:为什么要读JVM规范?
- XML file does not appear to have any style information associated with it. XHTML程序出现这个错误
- 数据结构课上笔记10
- atitit.短信 验证码 破解 v3 p34 识别 绕过 系统方案规划----业务相关方案 手机验证码 .doc...
- 这项标准,支付宝干成了!中国将有更多主导权!
- markdown与latex:单行式子中连加连乘i放在下面\displaystyle
- 洛谷P2939 [USACO09FEB]改造路Revamping Trails(最短路)
- 【Git/Github学习笔记】GitHub上README写法暨GFM语法解读
- 小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_9、SpringBoot基础HTTP其他提交方法请求实战...
- 如何保持自己 fork 的项目和原始项目同步
- MySQL InnoDB中的锁-间隙锁(Gap Lock)
- VS2013及MFC下载
- 华为ENSP 三层交换
- 计算机应用程序没声音,电脑突然没声音,多半是这三个原因导致的-维修经验...
- 有限差分——图像求偏导
- 华为认证数通方向证书的职业规划和就业选择
热门文章
- 忍之の爱你术 全代码
- svn clean up 失败
- 现身说法 程序员 35 岁后的出路
- 两步解决WIN7 下IE经常未响应的假死现象
- 远程桌面提示“用户帐户限制(例如,时间限制)会阻止你登录。请与系统管理员或技术支持联系以获取帮助。”
- 阿里P9面试官分享:应聘阿里全流程
- vue中的事件修饰符.self、.capture和.passive
- 【Apache+Tomcat+Session+Memcache 高性能群集搭建】
- 2018年软件测试行业状态报告
- matlab 非圆齿轮,非圆齿轮参数化设计关键技术研究