接口测试相关
内容源于网络,未找到原出处,感谢分享!
"GET/POST的区别?" 1. 从HTTP协议本身的角度GET/POST没有区别、只是语义不同 2.从浏览器实现、REST表征状态转移角度、具有很多区别... GET是安全的/也是幂等的,而POST既不是安全的/也不是幂等的
1)、GET和POST请求:
GET 请求
查询字符串(名称/值对)是在 GET 请求的 URL 中发送的
/test/demo_form.asp?name1=value1&name2=value2
GET 请求可被缓存
GET 请求保留在浏览器历史记录中
GET 请求可被收藏为书签
GET 请求不应在处理敏感数据时使用
GET 请求有长度限制
GET 请求只应当用于取回数据
------------------
POST 请求
查询字符串(名称/值对)是在 POST 请求的 HTTP 消息主体中发送的
POST 请求不会被缓存
POST 请求不会保留在浏览器历史记录中
POST 不能被收藏为书签
POST 请求对数据长度没有要求
GET产生一个TCP数据包;POST产生两个TCP数据包
-------------
1. 什么是接口?
接口一般有两种:一种是程序内部的接口,一种是系统对外的接口.
系统对外的接口:其他公司的网站或系统提供的写好的接口文档中描述的接口, 通过引用该接口实现数据交换和数据共享的目的。
程序内部的接口:方法和方法之间, 模块与模块之间的交互, 程序内部抛出的接口, 如bbs系统,登陆模块,发帖模块等,两个模块间有交互, 就得提供内部系统的接口.
----------------
一、常见接口:
1、webServer接口:是走soap协议通过http传输, 请求报文和返回报文都是xml格式的, 我们在测试的时候都是通过工具进行调用测试.可以使用的工具有SoapUI、jmeter、loadrunner、
2、http api接口:是走http协议,通过路径来区分调用的方法, 请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等.
---------------
二、前端和后端:
前端渲染效果, 后端数据处理.
-------------
三、什么是接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换, 传递和控制管理过程, 以及系统间的相互逻辑依赖关系等.
所谓接口测试就是通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求.
接口测试没有页面它是通过接口规范文档上的调用地址、请求参数、拼接报文、然后发送请求, 检查返回结果, 所以它只需测入参和出参就行了.
------------
四、接口组成
接口都有那些部分组成呢?
首先, 接口文档应该包含以下内容:
1、接口说明
2、调用url
3、请求方法(get\post)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
-------------------------
由接口文档可知, 接口至少应有请求地址、请求方法、请求参数(入参和出参)组成, 部分接口有请求头header. 请求头 (header)是服务器以HTTP协议传HTML资料到浏览器前所送出的字串, 在请求头与 HTML 文件之间尚需空一行分隔, 一般存放cookie、token等信息
------------------------
header和入参有什么关系?
首先、它们确实都是发送到服务器里的参数, 但它们是有区别的, header里存放的参数一般存放的是一些校验信息, 比如cookie, 它是为了校验这个请求是否有权限请求服务器, 如果有, 它才能请求服务器, 然后把请求地址连同入参一起发送到服务器, 然后服务器会根据地址和入参来返回出参。也就是说, 服务器是先接受header信息进行判断该请求是否有权限请求, 判断有权限后, 才会接受请求地址和入参的。
------------------
五、为什么要做接口测试:
①、可以发现很多在页面上操作发现不了的bug
②、检查系统的异常处理能力
③、检查系统的安全性、稳定性
④、前端随便变, 接口测好了, 后端不用变
-------------------
六、接口测试怎么测:
在进行接口测试前, 还需要了解:
2)、http状态码
每发出一个http请求之后, 都会有一个响应, http本身会有一个状态码, 来标示这个请求是否成功, 常见的状态码有以下几种:
1、200 2开头的都表示这个请求发送成功, 最常见的就是200, 就代表这个请求是ok的, 服务器也返回了。
2、300 3开头的代表重定向, 最常见的是302, 把这个请求重定向到别的地方了,
3、400 400代表客户端发送的请求有语法错误, 401代表访问的页面没有授权, 403表示没有权限访问这个页面, 404代表没有这个页面
4、500 5开头的代表服务器有异常, 500代表服务器内部异常, 504代表服务器端超时, 没返回结果
-------------
接下来再说接口测试怎么测:
1)、通用接口用例设计
1>通过性验证:首先肯定要保证这个接口功能是好使的, 也就是正常的通过性测试, 按照接口文档上的参数, 正常传入, 是否可以返回正确的结果。
2>参数组合: 现在有一个操作商品的接口, 有个字段type, 传1的时候代表修改商品, 商品id、商品名称、价格有一个是必传的, type传2的时候是删除商品, 商品id 是必传的, 这样的, 就要测参数组合了, type传1的时候, 只传商品名称能不能修改成功, id、名称、价格都传的时候能不能修改成功。
3>接口安全:
1、绕过前端验证,跳过前端校验,之间通过接口向后端发送请求, 验证后端是否有非负数、数据合法性校验等。
2、绕过身份授权, 比如说修改商品信息接口, 那必须得是卖家才能修改, 那我传一个普通用户, 能不能修改成功, 我传一个其他的卖家能不能修改成功
3、参数是否加密, 比如说我登陆的接口, 用户名和密码是不是加密, 如果不加密的话, 别人拦截到你的请求, 就能获取到你的信息了, 加密规则是否容易破解。
4、密码安全规则, 密码的复杂程度校验
4>异常验证:所谓异常验证, 也就是我不按照你接口文档上的要求输入参数, 来验证接口对异常情况的校验。比如说必填的参数不填, 输入整数类型的, 传入字符串类型, 长度是10的, 传11, 总之就是你说怎么来, 我就不怎么来, 其实也就这三种, 必传非必传、参数类型、入参长度。
2)、根据业务逻辑来设计用例
根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例,这个每个公司的业务不一样,就得具体的看自己公司的业务了,其实这也和功能测试设计用例是一样的。
举个例子,拿bbs来说,bbs的需求是这样的:
1、登录失败5次,就需要等待15分钟之后再登录
2、新注册的用户需要过了实习期才能发帖
3、删除帖子扣除积分
4、......
像这样的你就要把这些测试点列出来,然后再去造数据测试对应的测试点。
七、用什么工具测
接口测试的工具很多,比如 postman、RESTClient、jmeter、loadrunner、SoapUI等
1)、Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。
2)、jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。
--------------
cookie和session的区别
cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案
cookie数据存放在客户的浏览器上,session数据放在服务器上
cookie不是很安全,可以分析存放在本地的COOKIE并进行COOKIE欺骗, 考虑到安全应当使用session
session会在一定时间内保存在服务器上, 访问增多,会比较服务器的性能, 通过使用COOKIE来缓解服务器压力
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie
通过将重要信息存放为SESSION,将其他信息保留到Cookies中
---------------
token
token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库
-----------------
接口测试其实就是几个步骤。
1. 拿到接口的url地址
2. 查看接口是用什么方式发送
3. 添加请求头, 请求体
4. 发送查看返回结果, 校验返回结果是否正确
#