接口测试全流程扫盲

接口测试全流程扫盲

扫盲内容:前端

1.什么是接口?java

2.接口都有哪些类型?web

3.接口的本质是什么?算法

4.什么是接口测试?数据库

5.问什么要作接口测试?json

6.怎样作接口测试?后端

7.接口测测试点是什么?api

8.接口测试都要掌握哪些知识?浏览器

9.其余相关知识?安全

一.什么是接口?

接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,而后经过这些交互点来,经过一些特殊的规则也就是协议,来进行数据之间的交互。

二.接口都有哪些类型?

接口通常分为两种:

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请求像服务器发送一些东西,而后获得一些相应的返回值,本质就是数据的传输与接收。

四.什么是接口测试?

简答的说就是经过URL像服务器或者其余模块等,传输咱们想传输的数据,而后看看他们返回的是否是咱们预期想要的。

五.问什么要作接口测试?

①.越底层发现bug,它的修复成本是越低的。

②.前端随便变,接口测好了,后端不用变,先后端是两拨人开发的。

③.检查系统的安全性、稳定性,前端传参不可信,好比京东购物,前端价格不可能传入-1元,可是经过接口能够传入-1元。

④.现在的系统复杂度不断上升,传统的测试方法成本急剧增长且测试效率大幅降低,接口测试能够提供这种状况下的解决方案。

⑤. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,能够减小人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为何能低成本高收益的根源。

⑥. 如今不少系统先后端架构是分离的,从安全层面来讲:

(1)、只依赖前端进行限制已经彻底不能知足系统的安全要求(绕过前面实在太容易), 须要后端一样进行控制,在这种状况下就须要从接口层面进行验证。

(2)、先后端传输、日志打印等信息是否加密传输也是须要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

六.怎样作接口测试?

工具备不少如:postman、jmeter、soupUI、java+httpclient、robotframework+httplibrary等。

--也能够用 接口自动化来实现,就是用代码实现,框架和UI自动化差很少,发送请求用断言来判断。

七.接口测测试点是什么?

目的:测试接口的正确性和稳定性;

原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文作处理并向客户端返回应答,客户端接收应答的过程;

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;

核心:持续集成是接口测试的核心;

优势:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提升测试效率,提高用户体验,下降研发成本);

用例设计重点:一般状况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);

PS:设计用例时还须要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正须要什么功能;

一、基本功能测试:

因为是针对基本业务功能进行测试,因此这部分是两种测试重合度最高的一块,开发同窗一般所指的也主要是这部分的内容。

二、边界分析测试:

在基本功能测试的基础上考虑输入输出的边界条件,这部份内容也会有重复的部分(好比业务规则的边界)。可是,前端的输入输出不少时候都是提供固守的值让用户选择(以下拉框),在这种状况下测试的边界范围就很是有限,但接口测试就不存在这方面的限制,相对来讲接口能够覆盖的范围更广,一样的,接口出现问题的几率也更高。

三、性能测试:

这个比较容易区分,虽然都须要作性能测试,但关注点确大不相同。App端性能主要关注与手机相关的特性,如手机cpu、内存、流量、fps等。而接口性能主要关注接口响应时间、并发、服务端资源的使用状况等。两种测试时的策略和方法都有很大区别,因此这部份内容是须要分开单独进行测试的,理论上来讲这也是不一样的部分。

综论:

一、接口测试和app测试的活动有部分重复的内容,主要集中在业务功能测试方面。除此以外,针对各自特性的测试都不同,须要分别进行有针对性的测试,才能确保整个产品的质量。

二、接口测试能够关注于服务器逻辑验证,而UI测试能够关注于页面展现逻辑及界面前端与服务器集成验证

三、接口测试持续集成:

对接口测试而言,持续集成自动化是核心内容,经过持自动化的手段咱们才能作到低成本高收益。目前咱们已经实现了接口自动化,主要应用于回归阶段,后续还须要增强自动化的程度,包括但不限于下面的内容:

a) 流程方面:在回归阶段增强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

b) 结果展现:更加丰富的结果展现、趋势分析,质量统计和分析等

c) 问题定位:报错信息、日志更精准,方便问题复现与定位。

d) 结果校验:增强自动化校验能力,如数据库信息校验。

e) 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提升代码覆盖率。

f) 性能需求:完善性能测试体系,经过自动化的手段监控接口性能指标是否正常。

四、接口测试质量评估标准:

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请求的区别:

一、GET使用URL或Cookie传参。而POST将数据放在BODY中。

二、GET的URL会有长度上的限制,则POST的数据则能够很是大。

三、POST比GET安全,由于数据在地址栏上不可见。

四、通常get请求用来获取数据,post请求用来发送数据。

其实上面这几点,只有最后一点说的是比较靠谱的,第一点post请求也能够把数据放到url里面,get请求其实也没长度限制,post请求看起来参数是隐式的,稍微安全那么一些些,可是那只是对于小白用户来讲的,就算post请求,你经过抓包也是能够抓到参数的。(惟一区别就是这一点,上面3点区别都是不许确的)

http状态码:

一、200 2开头的都表示这个请求发送成功,最多见的就是200,就表明这个请求是ok的,服务器也返回了。

二、300 3开头的表明重定向,最多见的是302,把这个请求重定向到别的地方了。

三、400 400表明客户端发送的请求有语法错误,401表明访问的页面没有受权,403表示没有权限访问这个页面,404表明没有这个页面。

四、500 5开头的表明服务器有异常,500表明服务器内部异常,504表明服务器端超时,没返回结果。

webservice接口怎么测试:

它不须要你在拼报文了,会给一个webservice的地址,或者wsdl文件,直接在soapui导入,就能够看到这个webservice里面的全部接口,也有报文,直接填入参数调用,看返回结果就能够了。

天气预报wsdl地址:http://www.webservicex.net/globalweather.asmx?wsdl

cookie与session的区别:

一、cookie数据存放在客户的浏览器上,session数据放在服务器上。

二、cookie不是很安全,别人能够分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session。

三、session会在必定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。

四、单个cookie保存的数据不能超过4K,不少浏览器都限制一个站点最多保存20个cookie。

五、因此我的建议:

将登录信息等重要信息存放为session

其余信息若是须要保留,能够放在cookie中

相关文章
相关标签/搜索