1、什么是接口?
答:接口,是组件与组件之间进行通信交流的沟通媒介。可以理解为,连接两个水管之间的管件。有了中间连接的管件,一端的水流就能顺利流入另一端。换成计算机就是,一端的数据信息可以通过接口传给另外一端。
2、计算机中的接口分类?
答:从软硬件层面,可以分为硬件接口和软件接口。软件接口,又可以分为服务器接口和第三方接口。第三方接口,比如微信支付接口、支付宝支付接口等。服务器接口,可以分为两类:http-api接口和webservice接口。最常用的便是,http协议接口。
从内外部而言,可以分为内部接口和外部接口。软硬件接口都属于外部接口。内部接口,一般是程序中的接口,比如Java中的接口。
3、什么是http-api接口和webservice接口?他们之间又有什么区别呢?
答:http-api接口,使用http协议,通过路径区分调用的方法,请求报文是key-value形式,响应报文一般是json串。常有的请求方法有get和post。
webservice接口,使用soap协议,但是其底层还是http协议。请求报文和响应报文都是xml形式。
http-api接口和webservice接口的区别是:
1)http-api接口,采用的是http协议。webservice接口采用soap协议。
2)http协议和soap协议都是底层通信协议,但是两者的请求报文和响应报文格式不一样。
3)soap协议可以传输结构化的数据,但是http协议只能传送纯文本信息。
4)http协议的响应速度更快,因为soap协议要多加一个步骤,就是先解析xml语言。
4、Java中的接口是什么?
答:Java中的接口的引入是为了解决Java没有多继承的问题。
由于Java中的类只能单继承,不能多继承,但是可以连接多个接口。所以有时候为了实现一些业务,必须用到多继承的时候,只能使用多个接口。接口本质上是一种特殊的类,与一般类的区别在于:接口的类只能由常量和方法,不能有方法具体的实现方式。当要使用多个接口时,就要写一个实现类来连接多个接口,并且在这个实现类中把接口类中的方法具体化。
5、什么是接口测试?
答:接口测试,是通过对入参和出参的设计来验证接口是否满足需求说明书上的功能需求、性能需求、安全需求,属于灰盒测试的一种测试手段。
6、接口测试的意义何在?
答:1)提升软件测试的效率。接口更适合进行自动化测试。相较于UI而言,接口的变动没有那么频繁,更加稳定,因此更加适合使用自动化来提升测试效率。
2)发现更加底层的问题。有些问题是黑盒测试发现不了的,如用户的敏感信息是否加密,后端是否有对数据进行校验。如果后端没有对数据进行校验,那么攻击者可以很容易地绕过前端,直接通过接口攻击系统,造成损失。
3)缩短项目周期。现在项目多数采用前后端分离的方式进行开发。那么当后端开发好接口后,就可以进行接口测试,实现并行,缩短项目的开发周期。
7、如何进行接口测试?流程是什么样的?
答:需求评审,确定要实现什么样的业务功能,需要满足什么样的性能需求或是安全需求。
测试计划,测试计划的目的是为了让大家对这次的测试内容、策略、进度等有一个统一认识。
编写接口测试用例,主要是通过对接口的入参和出参进行设计。
用例评审,看看是否缺失了一些考虑。
编写接口测试所需的脚本,有些业务场景比较复杂,可能会用到关联,需要提前写好脚本。
执行用例和脚本,提出和记录bug。
分析结果,编写阶段性测试报告。
8、如何设计接口测试用例?
答:主要从接口的输入数据类型和处理逻辑进行设计。
输入数据类型,可以用等价类划分、边界值、错误推断法进行设计。
处理逻辑,可以从正常场景和异常场景进行设计。
9、接口测试的要点?
答:1)正向用例:符合业务逻辑的有效等价类
2)特殊字符:如,&、>、<、=、""、空格、null等,这些符号在get/post请求中是关键字,要看看有没有转义,没有转义显示就会出错
3)空值:验证必填项
4)参数类型:输入与需求说明书上不符的参数类型,查看接口是否做出正确的相应
5)参数长度:输入超出需求说明书上说明的参数长度,查看接口是否会报错
6)参数组合:参数不同方式进行组合
7)异常情况:重复提交、并发(暴击)、大量数据等
8)接口性能:并发量、CPU、IO等资源是否符合需求说明书上的要求
9)接口安全:数据是否会被篡改;业务流程是否可以跳跃;SQL注入等
10、接口测试质量评估标准?
答:1)业务功能是否覆盖完全
2)业务流程是否覆盖完全
3)参数验证是否符合需求
4)接口的异常场景是否覆盖完全
5)接口覆盖率是否达到要求
6)代码覆盖率是否达到要求
7)性能指标是否满足要求
8)安全指标是否满足要求