1、接口测试:接口一般来说有两种,一种是程序内部的接口,一种是系统对外的接口。
系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的,比如说咱们用的app、网址这些它在进行数据处理的时候都是通过接口来进行调用的。
程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块、发帖模块等等,那你要发帖就必须先登录,要发帖就得登录,那么这两个模块就得有交互,它就会抛出一个接口,供内部系统进行调用
现在我们最常用的两种接口就是 webservice 接口和 http api 接口,概念这里就不赘述了,知道有这两种接口和怎么测试就可以了。
webService 接口是走 soap 协议通过 http 传输,请求报文和返回报文都是 xml 格式的,我们在测试的时候都用通过工具才能进行调用,测试。
http api 接口是走 http 协议,通过路径来区分调用的方法,请求报文都是 key-value 形式的,返回报文一般都是 json 串,有 get 和 post 等方法,这也是最常用的两种请求方式。
接口:就是从数据库里面取数据库、插入数据。
客户端、服务端
前端: web :
html js css
ios:object-c、swfit
Android:Android
接口 login?username=niuhanyang&password=112234(?好后面是参数多个参数用&连接)
它们通过接口交互接口反返回的是json
(json通用数据类型所有语言都支持)它是以key:value形式存在
后端:
php、java、python、go等等
接口测试就是功能测试,它比功能测试还简单(功能测试除了要考虑返回值,还要考虑字体、颜色、兼容性)。
为什么要做接口测试
例如:测试支付接口修改订单金额(页面无法测试)
- 可以发现很多在页面上操作发现不了的bug
- 检查系统的异常处理能力
- 检查系统的安全性、稳定性
- 前端随便变,接口测好了,后端不用变
接口测试三要素:
1)请求URL,请求方法(Get、Post用的较多)
2) 传递的参数,数据
3)返回值
GET和POST请求:
get请求,不需要借助任何的工具,在浏览器里面就可以发请求。
GET请求和POST请求的区别:
1、GET使用URL或Cookie传参。而POST将数据放在BODY中。
2、GET的URL会有长度上的限制,则POST的数据则可以非常大。
3、POST比GET安全,因为数据在地址栏上不可见。
4、一般get请求用来获取数据,post请求用来发送数据。
sesion和cookie
seesion
http://www.nnzhp.cn/archives/426
就是存在服务端的一个键值对
key - vaule
cookie
就存在客户端的一个键值对
key - value
登录的时候已经把账号密码写到cookie里面了,咱们再去打开京东页面的时候,浏览器会自动把京东这个网站下面的cookie发给京东的服务端,会和服务端session的键值对做匹配校验。
接口签名
为了防止别人恶意刷请求,它是一个加密后的字符串
http://api.nnzhp.cn/reg?username=xxx&passwd=xxx&sign8eea855efc702130d9c9cafcd9f4d91a
Refer
是为了判断网页从哪里跳转过来
URL编码
中文等特殊字符在传输过程中会变为%23%232%232%这样的url编码
https://www.bejson.com/enc/urlencode/ URL在线编码、解码工具
http状态码
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功,常见的状态码有以下几种:
- 200 2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了。
- 300 3开头的代表重定向,最常见的是302,把这个请求重定向到别的地方了,
- 400 400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403表示没有权限访问这个页面,404代表没有这个页面
- 500 5开头的代表服务器有异常,500代表服务器内部异常,504代表服务器端超时,没返回结果
3.怎么设计接口用例
通过性验证:
首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试
参数组合:
type传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合
接口安全:
1、绕过验证,修改订单价格或数量,后端有没有做验证
2、绕过身份授权,普通用户,能否修改商品信息
3、参数是否加密,登录用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息了,加密规则是否容易破解。
4、密码安全规则,密码的复杂程度校验
异常验证:
异常的,三种,必传非必传、参数类型、入参长度
根据业务逻辑来设计的话,就是根据自己系统的业务来设计用例
举个例子,拿bbs来说,bbs的需求是这样的:
1、登录失败5次,就需要等待15分钟之后再登录
2、新注册的用户需要过了实习期才能发帖
3、删除帖子扣除积分
4、......
把这些测试点列出来,然后再去造数据测试对应的测试点。
咱们测试接口的话,肯定要写测试用例,写测试用例的话,就要有一个用例模板,那需要有哪些字段呢?见“测试用例.xlsx"
1、项目 是哪个项目的
2、模块 这个接口是属于哪个功能模块的
3、用例id
4、接口名称
5、用例标题 用例是干嘛的
6、请求方式 GET/POST
7、请求url url地址
8、请求参数
9、前置条件 有依赖的时候,比如说要测登录失败3次的
10、结果验证 预期结果
11、请求报文
12、返回报文
13、测试结果 通过/失败
14、测试人员
用例模板