什么是接口测试
百度百科上面是这么说的:接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
听了上面这个解释没做过接口测试的人可能心里要来一句:MMP,说人话!其实在芒果看来接口测试就是实现系统各个功能的子模块或者外部系统对模块的调用了,比如我们要下订单,就必须先登录,那这两个模块就得有交互,登录模块就会抛出一个接口,供包括下订单模块的模块对它进行调用。
现在大家说的接口测试,基本都是基于HTTP协议的接口测试,包括现在大家接触得比较多的webservice跟dubbo都可以封装为HTTP协议的模式,那我们这里不得不介绍一下HTTP协议了。
HTTP协议
HTTP(HyperText Transport Protocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP协议的详细内容请参考RFC2616。
HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME的消息结构。服务器以一个状态行作为响应,响应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
我们在做基于HTTP协议的接口测试就是模拟客户端向服务器发送一个HTTP请求,然后查看服务器返回的应答是否正确的过程。这里我们一般关注调用url,请求方法(getpost),请求参数、参数类型、请求参数说明,返回参数说明这四大部分。
为什么要学习接口测试
如今系统越来越复杂,传统的靠前端测试已经大大降低了效率,而且现在我们都推崇测试前移,希望测试能更早的介入测试,那接口测试就是一种及早介入的方式。传统的系统测试,我们必须等前后端都完成你才能进行测试。 而如果是接口测试,只需要前后端定义好接口,我们就可以进行。
对于自动化测试而言,只做UI层的自动化测试是不科学的,从而很难从本质上保证产品的质量。如果你妄图实现全面的UI层的自动化测试,那更是一个劳民伤财的举动,投入了大量人力时间,最终获得的收益可能会远远低于所支付的成本。根据分层测试模型,越往上层,其维护成本越高,所以我们应该把更多的自动化测试放在单元测试与接口测试阶段进行。
现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
接口测试工具
接口测试的工具很多,比如 postman、jmeter、RESTClient、SoapUI、fiddler等。当然也可以使用java httpclient、python requests、robotframework httplibrary这些接口自动化代码框架来实现。
接口测试具体怎么做
写到这里肯定有同学会问了,那http的请求与相应应该怎么模拟,这些接口测试工具应该怎么使用,接口自动化的代码又怎么实现?