接口测试:
cms: 网站 http://cms.duoceshi.cn/cms/manage/login.do
1、接口测试?
定义:测试系统和系统之间的数据交换,和模块与模块之间的数据交互。
案例1:系统和系统,多测师线上官网课程,开通微信支付。(多测师系统,微信系统交互)
案例2:模块和模块的交互:多测师的官网论坛, 注册模块,登录模块,发帖模块 之间的数据交互 。(注册和登录 两个,模块直接的交互)
案例3:前端输入数据(ui页面设置)通过接口传输==后端逻辑(判断)
接口理解为:一个管道,
2、为什么做接口?
(1)提前进入测试,(早进入测试,早发现bug,提高工作效率)
(2)能发现功能测试无法测试的场景
(案例:页面限制金额的输入:整数,前端输入不了负数,在接口中测试,在参数中输入复数)
(3)节约时间
(案例:接口测试通了,功能也是正常,做接口测试效率高,你在测试功能页面上的问题)
1、顶层:功能测试一般是在ui界面形成以后测试
2、中间: api 动态数据是通过api传到数据库中获取资源(静态资源和动态资源)
3、底层:代码
越低层,要求越高
ui自动化测试在什么时候?
在功能测试和接口测试以后,用来回归测试。
ui自动化主要在回归,项目的稳定和版本不是频繁改动下我们可以做ui自动化
接口测试在什么时候开始?
不同公司的情况分三种:
(1)第一种:(功能测试前)ui界面未形成之前,后端代码完成,测试接口,一定要有环境,开发提测。
(2)第二种:(功能测试时)任务:功能 和接口分开中,有专门人做接口,测试功能的时候,同时进行。
(3)第三种:功能测试完以后,在进行接口测试(功能无法测试的场景),检验项目的正确性
公司具体情况?
在企业中,前端与后端是独立开发的,最终的项目会进行前后端的接口联调,来确保
后端的数据能正常的在前端页面展示,因此需要确保接口功能能正常的传输数据
联调测试性质:集成测试,又称组装测试、联合测试、联调测试、子系统测试、部件测试。不同的称呼而已,侧重点在于模块间接口的正确性、各模块间的数据流和控制流是否按照设计实现其功能、以及集成后整体功能的正确性。
所以联调测试涉及面广,要掌握的知识面广。
联调测试工作内容:联调测试介于白盒、黑盒之间,可以称为灰盒测试,所以需要熟悉白盒、黑盒。
联调测试的关注点是模块间的接口。至于模块怎么划分要根据具体项目来有针对性地划分。
拓展知识:
桩,mock ,功能(模拟目前没有实现场景)
mock测试,源自于英文单词fake,意为假的测试(参考链接:https://www.cnblogs.com/xiaolehua/p/13686943.html)
=============================================================
接口基础知识:
tcp/ip(协议)
常见的协议:http 和https
http的协议:
https=http+tls/ssL
一、https和http的区别?(面试题)
(1)端口号不一样:http是80,https是443
(2)https是加密传输,http不加密传输
(3)http页面相应速度比https快
(4)https比http更耗费服务资源
(握手)建立连接:三次握手
例子:1、对话案例 2、恋爱案例
(挥手)断开连接:四次挥手
例子:关键:双方相互断开所以需要四次
常用的接口测试工具:
(1)fiddler 抓包工具
(2)postman接口
(3)jmeter接口
(4)python中request库做接口
=================================================================================
=================================================================================
接口测试的流程:按下面方式
知识点:接口是开发开发,开发根据需求来开发项目,开发拿到需要,自己开发接口,开发接口,输出接口文档
接口测试:
1、 拿到接口文档(开发编写) 有就参考接口文档,没有接口,自己抓接口,使用抓包工具,
2、编写接口用例(入参,返回参),导入用例管理工具
3、执行接口测试
4、bug管理工具提bug
5、接口测试报告
面试题:
(一)接口测试流程?
1、拿到接口文档,
2、编写接口用例
3、部署环境(有环境就不需要)
4、接口工具(postman,jmeter,python中request 其中一种)
5、根据文档填写具体的参数
6、执行接口
7、发现bug,提给开发,开发修复
8、在验证
9、通过以后,输出接口测试报告
(二)如果没有接口文档?
使用接口抓包工具,自己抓取接口
方法一:fiddler
方法二:f12
============================================================================
get请求:
http://cms.duoceshi.cn/cms/manage/loginJump.do?userAccount=admin&loginPwd=123456
post请求
主要:post ,get ,(次要put,delete)(重点)
get和post区别:
(1)get请求无消息体,只能携带少量数据,而且不安全
post请求有消息体,可以携带大量数据,且安全
(2)携带数据的方式:
get请求将数据存放在url中
post请求将数据存放在消息体中
(3)get方式提交的数据最多只能有1024个字节,而post则没有限制
面试题:post和get 区别?
=============================================
url 统一资源标识符
url:http://cms.duoceshi.cn/cms/manage/index.do
uri统一资源定位符
cms/manage/index.do
urn 统一资源名称
http://cms.duoceshi.cn/
=========================================
cookie和session和token了解(重点)
cookie:cookie是有服务器生成,发送给浏览器,浏览器把cookie以kv形式保存在某个一个路径下的文本文件内,下一次请求同一个网站时会把cookie发送给服务器;
coolkie的数据存放在浏览器上,所以浏览器加入了一些限制,确保cookie不会被恶意使用,
同时不会占据太多磁盘空间,所以每个域的cookie的数量是有限的。
cookie是一个非常具体的东西,指的就是里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。
备注:单个cookie不能超过4k,很多浏览器限制一个站点最多保存20个cookie
session:就是一个会话,服务器给每个客户端一个身份标识,作为识别,浏览器一般用cookie,
服务器使用seeion把用户的信息临时保存在服务器上,用户离开网站后session会被销毁。
这种用户信息存储方式相对cookie更安全,但如果web服务器做了负载均衡,session请求另一台服务器时会丢失。
个人建议:登录信息,交易信息等保存在session中,其他信息放在cookie中
token:token是客户端首次登陆时,服务端生成的一串字符串,再次登陆只需要token即可,无需用户名和密码。(qq登录一次,有记录账号和密码功能)
最简单的toeken组成:uid(用户唯一的身份标识)time(当前时间戳)sign(签名)等
token:目的是减轻服务器压力,减少频繁的查询数据库,使服务器更加健壮。
token原理:
(1)第一次登陆成功以后,服务器就产生一个token值,这个token值会被服务器保存,同时将token发送给客户端,
(2)客户端拿到token值要进行保存,
(3)等再次发起客户端网络请求后,再将请求中tonken值会发送给服务器。
(4)服务接收到客户端的请求后,会进行token值对比。
结果1:一致,登录成功,处于登录状态
结果2:不一致,信息失效,需重新登录
结果3:若不在服务中,处于未登录状态
同步接口:
发送一个请求必须要等到响应结果才能发起下一个接口请求(比如:绑定银行卡,支付接口)
异步接口:
发送一个请求不需要等到响应结果就能发送下一个就看请求(借款接口,)
=========================================================================
拓展知识(一):
web接口请求简单鉴权机制