一、什么是接口?
接口测试主要用于外部系统和内部子系统之间的交互点,定义具体的交互点,然后通过这些交互点,通过一些特殊的规则,也就是协议,进行数据交互。
接口有哪些类型?
通常有两种接口:
1.程序内部的接口
2.系统的外部接口
系统外部接口:比如你想从其他网站或服务器获取资源或信息,别人肯定不会和你共享数据库。他只能给你提供一个他们编写的获取数据的方法,你引用他提供的接口就可以使用他编写的方法,从而达到数据共享的目的。
程序内部接口:方法、模块间的交互、程序内部抛出的接口,如bbs系统、登录模块、发帖模块等。如果要发帖,必须先登录,然后这两个模块要交互,它会抛出一个接口让内部系统调用。
接口分类:
1.webservice接口
2.http api接口
webService接口使用soap协议通过http传输,请求消息和返回消息都是xml格式,所以我们在测试时只能通过传递工具来调用和测试它们。
http api接口是一种使用http协议按路径区分调用的方法。请求消息都是键值形式,返回消息一般是json字符串,包括get和post方法,这也是最常用的两种请求方法。
Json是一种通用的数据类型,所有语言都可以识别。(json的本质是字符串,与其他语言无关,但稍加处理就可以转换成其他语言的数据类型,比如Python中的字典、键值形式、javaScript中的原生对象、Java中的类对象等。)
3.接口的性质和工作原理是什么?
你可以简单理解为接口就是URL,工作原理会说URL通过get或者post请求向服务器发送一些东西,然后得到一些相应的回报。
价值本质上是数据的传输和接收。
4.什么是接口测试?
接口测试是测试系统组件之间接口的一种测试。接口测试主要用于检测外部系统和内部子系统之间的交互点。测试的重点是检查数据交换、传输和控制管理过程,以及系统之间的相互逻辑依赖等。
百度百科
简单来说,就是通过服务器或者其他模块之类的URL来传输我们想要传输的数据,然后看它们返回的是否是我们所期望的。
5.为什么要做接口测试?
发现bug越低,其修复成本越低。
前端随便改,界面实测,后端不改,前后端两个人开发。
检查系统的安全性和稳定性,前端传输参数不可信。比如在JD.COM购物,前端价格不能调到-1元,但是可以通过接口调到-1元。
如今,随着系统复杂性的不断增加,传统测试方法的成本急剧增加,测试效率大幅下降,接口测试可以为这种情况提供解决方案。
.界面测试相对容易实现自动化和持续集成,对UI自动化相对稳定,可以减少人工回归测试的人力成本和时间,缩短测试周期,支持后端快速发布需求。持续的接口集成是低成本高利润的根源。
目前很多系统的前后架构是分离的。
从安全级别来看:
(1)仅仅依靠前端进行限制根本无法满足系统的安全需求(太容易绕过前端),需要后端进行控制。在这种情况下,有必要从接口级别进行验证。
(2)还需要验证前后端传输、日志打印等信息是否加密,尤其是用户的隐私信息,如身份证、银行卡等。
6.接口测试怎么做?
由于我们项目的前端和后端调用主要是基于http协议的接口,所以在测试接口的时候,我们主要是通过工具或者代码来模拟http请求的发送和接收。有很多工具,比如postman、jmeter、soupUI、java httpclient、robotframework httplibrary等等。
-也可以通过界面自动化实现,即通过代码实现,框架类似UI自动化,发送请求通过断言判断。
7.接口测试点有哪些?
目的:检验接口的正确性和稳定性;
原理:模拟客户端向服务器发送请求消息的过程,服务器收到请求消息后处理相应的消息并向客户端返回响应,客户端收到响应;
要点:检查数据交换、传输和控制管理流程,包括处理次数;
核心:持续集成是接口测试的核心;
优势:为高复杂度平台带来高效的缺陷监控和质量监管能力。平台越复杂,系统越庞大,界面测试效果越明显(提高测试效率,改善用户体验,降低研发成本);
用例设计要点:一般主要测试最外层的两个接口,数据进入系统接口(调用外部系统的参数为本系统所用)和数据流出系统接口(验证系统处理的数据是否正常);
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等;
如何学这些技能?
①系统间业务交互逻辑:通过需求文档、流程图、思维导图、沟通等很多渠道和方式;
②协议:推荐《图解http》这本书,内容生动,相对算是入门级的书籍,其他的还有《图解tcp、IP》等;
③接口测试工具:百度这些工具,然后你会发现,好多的教学博客、相关问题解决方案、以及一些基于工具的书籍,当然,选择合适的书很重要;
④数据库操作命令:学习网站(W3C、菜鸟教程)、教学博客,以及一些数据库相关书籍,入门级推荐:《mysql必知必会》、《oracle PL/SQL必知必会》等
⑤字符类型:还是百度,有句话这么说:内事不决问百度,外事不决问Google。。。
如何获取接口相关信息?
一般的企业,都会由开发或者对应的技术负责人员编写接口文档,里面会注明接口相关的地址、参数类型、方法、输入、输出等信息,如果没有,想办法获取。
接口文档八要素:
封面:封面最好是本公司规定的封面,有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中
转载地址:https://zhuanlan.zhihu.com/p/58447588