接⼝测试(基础知识)
扫盲内容:
1.什么是接⼝?
2.接⼝都有哪些类型?
app接口测试工具3.接⼝的本质是什么?
4.什么是接⼝测试?
5.问什么要做接⼝测试?
6.怎样做接⼝测试?
7.接⼝测测试点是什么?
8.接⼝测试都要掌握哪些知识?
9.其他相关知识?
1.什么是接⼝?
接⼝测试主要⽤于外部系统与系统之间以及内部各个⼦系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过⼀些特殊的规则也就是协议,来进⾏数据之间的交互。
2.接⼝都有哪些类型?
接⼝⼀般分为两种: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中的类对象等。)
3.接⼝的本质及其⼯作原理是什么?
接⼝你可以简单的理解他就是URL,⼯作原理就会说URL通过get或者post请求像服务器发送⼀些东西,然后得到⼀些相应的返回值,本质就是数据的传输与接收。
4.什么是接⼝测试?
接⼝测试是测试系统组件间接⼝的⼀种测试。接⼝测试主要⽤于检测外部系统与系统之间以及内部各个⼦系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
–百度百科
简答的说就是通过URL像服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回的是不是我们预期想要的。
5.问什么要做接⼝测试?
1.越底层发现bug,它的修复成本是越低的。
2.前端随便变,接⼝测好了,后端不⽤变,前后端是两拨⼈开发的。
3.检查系统的安全性、稳定性,前端传参不可信,⽐如京东购物,前端价格不可能传⼊-1元,但是通过接⼝可以传⼊-1元。
4.如今的系统复杂度不断上升,传统的测试⽅法成本急剧增加且测试效率⼤幅下降,接⼝测试可以提供这种情况下的解决⽅案。
5. 接⼝测试相对容易实现⾃动化持续集成,且相对UI⾃动化也⽐较稳定,可以减少⼈⼯回归测试⼈⼒成本与时间,缩短测试周期,⽀持后端快速发版需求。接⼝持续集成是为什么能低成本⾼收益的根源。
6. 现在很多系统前后端是分离的,从安全层⾯来说:
(1)、只依赖前端进⾏限制已经完全不能满⾜系统的安全要求(绕过前⾯实在太容易),需要后端同样进⾏控制,在这种情况下就需要从接⼝层⾯进⾏验证。
(2)、前后端传输、⽇志打印等信息是否加密传输也是需要验证的,特别是涉及到⽤户的隐私信息,如⾝份证,银⾏卡等。
6.怎样做接⼝测试?
–由于我们项⽬前后端调⽤主要是基于http协议的接⼝,所以测试接⼝时主要是通过⼯具或代码模拟http请求的发送与接收。⼯具有很多如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。
–也可以⽤接⼝⾃动化来实现,就是⽤代码实现,框架和UI⾃动化差不多,发送请求⽤断⾔来判断。
7.接⼝测测试点是什么?
⽬的:测试接⼝的正确性和稳定性;
原理:模拟客户端向服务器发送请求报⽂,服务器接收请求报⽂后对相应的报⽂做处理并向客户端返回应答,客户端接收应答的过程;
重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;
核⼼:持续集成是接⼝测试的核⼼;
优点:为⾼复杂性的平台带来⾼效的缺陷监测和质量监督能⼒,平台越复杂,系统越庞⼤,接⼝测试的效果越明显(提⾼测试效率,提升⽤户体验,降低研发成本);
⽤例设计重点:通常情况下主要测试最外层的两类接⼝:数据进⼊系统接⼝(调⽤外部系统的参数为本系统使⽤)和数据流出系统接⼝(验证系统处理后的数据是否正常);
PS:设计⽤例时还需要注意外部接⼝提供给使⽤这些接⼝的外部⽤户什么功能,外部⽤户真正需要什么功能;
问题1.1、后端接⼝都测试什么?
–回答这个问题,我们可以从接⼝测试活动内容的⾓度下⼿,看⼀下⾯这张图,基本反应了当前我们项⽬后端接⼝测试的主要内容:
–回答这个问题,我们可以直接对⽐接⼝测试和app端测试活动的内容,如下图为app测试时需要覆盖或考虑内容:
从上⾯这两张图对⽐可以看出,两个测试活动中相同的部分有功能测试、边界分析测试和性能测试,其它部分由于各⾃特性或关注点不同需要进⾏特殊的测试,在此不做讨论。接下来我们针对以上三部分相同的内容再进⾏分析:
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) 安全指标是否满⾜要求
8.接⼝测试都要掌握哪些知识?
①了解系统及内部各个组件之间的业务逻辑交互;
②了解接⼝的I/O(input/output:输⼊输出);
③了解协议的基本内容,包括:通信原理、三次握⼿、常⽤的协议类型、报⽂构成、数据传输⽅式、常见的状态码、URL构成等;
④常⽤的接⼝测试⼯具,⽐如:jmeter、loadrunner、postman、soapUI等;
⑤数据库基础操作命令(检查数据⼊库、提取测试数据等);
⑥常见的字符类型,⽐如:char、varchar、text、int、float、datatime、string等;
如何学这些技能?
①系统间业务交互逻辑:通过需求⽂档、流程图、思维导图、沟通等很多渠道和⽅式;
②协议:推荐《图解http》这本书,内容⽣动,相对算是⼊门级的书籍,其他的还有《图解tcp、IP》等;
③接⼝测试⼯具:百度这些⼯具,然后你会发现,好多的教学博客、相关问题解决⽅案、以及⼀些基于⼯具的书籍,当然,选择合适的书很重要;
④数据库操作命令:学习⽹站(、)、教学博客,以及⼀些数据库相关书籍,⼊门级推荐:《mysql必知必会》、《oracle PL/SQL必知必会》等
⑤字符类型:还是百度,有句话这么说:内事不决问百度,外事不决问Google。。。
如何获取接⼝相关信息?
⼀般的企业,都会由开发或者对应的技术负责⼈员编写接⼝⽂档,⾥⾯会注明接⼝相关的地址、参数类型、⽅法、输⼊、输出等信息,如果没有,想办法获取。。。
接⼝⽂档⼋要素:
封⾯:封⾯最好是本公司规定的封⾯,有logo,内容标题,版本号,公司名称,⽂档产⽣⽇期;
修订历史:表格形式较好些,包括:版本、修订说明、修订⽇期、修订⼈、审核时间审核⼈等;
接⼝信息:接⼝调⽤⽅式,常⽤的GET/POST⽅式,接⼝地址;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论