接口测试
Posted czhang2-12
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试相关的知识,希望对你有一定的参考价值。
(整理自网络,便于翻阅)
接口测试 定义(百度百科):
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
什么是接口?
1、程序内部接口
方法间、模块间的交互
登陆和发帖之间,抛出接口,供内部系统调用
2、系统对外接口
像访问别人的网站或服务器,即通过它提供给你的接口进行调用
常见接口:
1、webService接口
是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。可以使用的工具有SoapUI、jmeter、loadrunner等;
2、http API接口:
是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。可以使用的工具有postman、RESTClient、jmeter、loadrunner等;
前端和后端:
前后端的交互,通过接口
什么是接口测试:
通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。没有页面,它是通过接口规范文档上的调用地址、请求参数,拼接报文,然后发送请求,检查返回结果,只需测入参和出参就行了。
接口组成:
接口文档应该包含以下内容:
1、接口说明
2、调用url
3、请求方法(getpost)
4、请求参数、参数类型、请求参数说明
5、返回参数说明
接口至少应该有:
请求地址、请求方法、请求参数(入参出参)、部分接口有请求头
为什么做接口测试?
现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。例如传统测试,你是不是得等前后端都完成你才能进行测试,才能进行自动化代码编写。 而如果是接口测试,只需要前后端定义好接口,那这时自动化就可以介入编写接口自动化测试代码,手工测试只需要后端代码完成就可以介入测试后端逻辑而不用等待前端工作完成。
例子:
比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖?
接口测试的必要性:
1、发现页面上操作发现不了的bug
2、检查系统异常处理能力
3、检查系统的安全性、稳定性
4、前端随便变,接口测好了,后端不用变
接口怎么测?
1、GET和POST请求:
Get请求:直接在浏览器里输入就行了,只要在浏览器里面直接能请求到的,都是get请求
Post请求:需要借助工具来发送
2、Get请求Post请求区别:
1、get 传参 URL;post header
2、get 长度限制(URL上限2KB) post 无限制
3、get 在地址栏明文,相比post不安全
4、get 获取数据;post 发送数据
3、http状态码:
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
1、200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
2、300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
3、400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
4、500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
4、接口测试怎么测?
一:通用接口用例设计
(1)通过性测试:
首先要保证这个接口功能是能用的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,看是否返回正常的结果
(2)参数组合:
现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。
(3)接口安全:
参数是否加密,比如登陆的接口,用户名密码是否加密
密码安全规则,密码的复杂程度校验
绕过身份授权
绕过验证
(4)异常验证:
即不按照接口文档上的要求输入参数,验证接口对异常情况的校验。
比如:必传非必传、参数类型、入参长度
二、根据业务逻辑来设计用例
例如BBS,需求:
1、登录失败5次,就需要等待15分钟之后再登录
2、新注册的用户需要过了实习期才能发帖
3、删除帖子扣除积分
4、......
列出测试点,设计相应测试用例。
总结:
测试流程:
1、测试接口文档(需求文档)
2、根据接口文档编写测试用例(可以依照规则,如等价类划分,边界值)
3、执行测试,查看不同的参数请求,接口的返回的数据是否达到预期目标
测试点:
1、功能测试:
业务流程测试:1、正常场景 2、异常场景
特殊字符
参数类型
参数有无或null
所有必选参数
组合可选参数
边界值测试
……
2、性能测试:
响应时间
吞吐量
并发数
……
3、安全测试:
敏感信息是否加密
必要参数是否后端校验
接口是否防恶意请求
……
以上是关于接口测试的主要内容,如果未能解决你的问题,请参考以下文章