参考文章:
https://www.jianshu.com/p/92c1712d972a
一.什么是接口?
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
二.接口都有哪些类型?
接口一般分为两种:
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)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
六、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代表服务器端超时,没返回结果。
八、cookie与session的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能考虑到减轻服务器性能方面,应当使用cookie。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、所以个人建议:
将登陆信息等重要信息存放为session
其他信息如果需要保留,可以放在cookie中
九、简述软件前后端的工作流程
用户访问前端的地址,获取到前端的界面。
用户在前端界面上操作,前端会使用对应的接口,将用户想要的操作的数据发送给后端。
后端检查用户是否需要登录,然后校验通过后去数据库中查询,或者写入对应的数据,并且把结果返回给前端。
用户看到前端的显示结果。
十、简述cookies和session的区别和作用
主要体现在以下几个方面:
存放位置:
cookie数据存放在客户端的浏览器上,session数据放在服务器上。
安全性:
cookie存放在本地浏览器内,黑客可以分析存放在本地的cookie并进行cookie欺骗;所以考虑到安全应当使用session。
服务器压力:
session会在一定时间内保存在服务器上。当并发量较大时,会比较占用服务器的内存,考虑到减轻服务器性能方面,应当使用cookie。
容量不同:
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;
session 储存数据大小依赖于服务器设置的大小;session的个数也依赖于服务器的设置的数量。 为了不影响服务器性能,我们一般会设置session 删除机制。当session个数超过设定值,服务器会按照预定的规则(如创建时间)进行session的删除清理。
有效期:
cookie可以通过修改属性达到长期有效的目的
session 一般是关闭窗口则会失效
存储方式:
cookie 只保存ASCII 字符串,然后通过编码方式存储为Unicode字符或者二进制数据。
session 可以存储任何类型(如:string、int 、list、map)的数据
跨域问题:cookie 支持跨域名访问,session不支持。
十一、 简述软件的登录校验机制是如何实现的
用户输入账号和密码,通过接口发送给后端。
后端去数据库中校验,账号密码是否匹配。
如果不匹配,返回结果告诉前端账号或者密码不正确。
如果匹配,后端会随机生成一个token值,并且存到session中。
然后将token值发送给前端,前端储存到cookies中。
然后以后用户在操作需要登录的接口的时候,系统就会拿cookies中的token值和session中的token值做对比。
如果匹配,则通过校验,认为用户已经登录。
如果不匹配则认为用户没有登录。