接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
--百度百科
为什么介绍接口测试?
接口常被开发挂在嘴边,在开发过程中无处不在,但对于测试人员来说,它又如此朦胧,无形无色无味,难以触碰。相信这也是测试人员比较难理解的一种测试类型。查询的大部分资料都是介绍一堆模糊的概念。所以,我打算以浅薄的认知来介绍接口测试,当然会举例子。
我所知道的接口测试
我所了解的模块接口测试大体分为两类:模块接口测试和web接口测试。
模块接口测试
模块接口测试是单元测试的基础。它主要测试模块的调用与返回。
package com.java.base;
public class InterfaceTest {
//求两个整数相加的和
public static int add(int a, int b){
return a + b;
}
public static void main(String[] args) {
//测试整数相加
int resule = add(1,2);
if(resule == 3){
System.out.println("success!");
}else{
System.out.println("fail!");
}
}
}
我擦!这明明是一个没有使用单元测试框架的单元测试嘛!但其实我们也可以把add()方法看成一个接口,这个接口接收两个整数并返回两个整数的和。
通过这个例子放大了来看,假如几个开发人员去完成一个系统,他们分别开发一些功能模块,最终数据会在这些功能模块之间传递。当A开发好自己负责的功能模块后会提供相应的接口(类方法、函数),B肯定需要模拟数据调用A写的接口,检查返回值是否正确。
当然,测试的手段遵循测试的一些要点。
1、检查接口返回的数据是否与预期结果一致。
2、检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或字符串呢?
3、接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。
4、接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。
5、接口的安全性,如果是外部接口的话,这点尤为重要。
web接口测试
web接口测试又可分为两类:服务器接口测试和外部接口测试。
服务器接口测试:是测试浏览器与服务器的接口。这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用html/css/javascript等技术。后端开发人用php/java/python/ruby等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。
外部接口测试:这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。
对于服务器接口测试,我们来看例子。
==================================
准备:
Python 下载地址: https://www.python.org/
Flask 微型web框架。flask安装:> pip install flask
==================================
查看flsk是否安装成功。
来写一个例子hello.py:
from flask import Flask
app = Flask(__name__)
@app.route("/user/<name>")
def user(name):
return "<h1>hello %s !</h1>" %name
if __name__ == '__main__':
app.run(debug=True)
运行hello.py
通过浏览器访问:http://127.0.0.1:5000/user/zhangsan
这是一个最简单的get请求,我们可以把“zhangsan”改成任意字符来时行测试。
对于web接口测试来说有哪些测试要点:
1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。
2、检查返回数据的正确性与格式;json是一种非常创建的格式。
3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。
4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果都没返回,果断弃用。
===================
讲这个话题我是比较冒险,对于接口测试我并没有全面的理解和认识。欢迎留言说出你对接口测试的理解。