http接⼝测试java_接⼝⾃动化:
HttpClient+TestNG+Java(⼀)-。。。
1.1 接⼝测试简介
1.1.1 什么是接⼝测试
开始学习接⼝⾃动化测试之前,我们先要来了解什么是接⼝,以及什么是接⼝测试。
我们都知道,测试从级别上划分可以分为
组件测试
集成测试
系统测试
验收测试
其中在集成测试这个阶段,⼀个最主要的测试活动就是接⼝测试。在组件测试中,我们对单个组件⾃⾝的
功能性能等指标进⾏验证,上升到集成测试级别,我们则进⼀步去验证组件之间的交互和集成。⽽组件之间的交互,就是通过‘接⼝’来达成的。所以⼀定程度上,集成测试和接⼝测试概念是⼤幅度重叠的。(就组件集成/接⼝测试⽽⾔,其实还有系统集成测试)
⽐如在主流的web项⽬中,前端和后端之间的交互,就要通过接⼝,也是我们这个系列要应对的主要任务。
1.1.2 为什么要做接⼝测试
我经常喜欢⽤⼀台汽车做为例⼦来讲述组件,集成和系统测试之间的关系。
⽐如,现在有⼀台汽车需要做质量检测,那么我们可以怎么测试?
组件测试 - 测试这台汽车的各个部件(如发动机、底盘、变速箱、制动器、转向系统、轮毂轮胎)
集成测试 - 测试这台汽车各部件之间的联动(变速箱如何控制发动机的运作?转向系统如何对轮毂产⽣影响?)
系统测试 - 测试这台汽车做为⼀个整体的功能性能
有⼀个疑问是,难道我在系统测试这个级别,就不能测试上述例⼦中的“变速箱如何控制发动机的运作”指标吗?其实⼀定程度⽽⾔是可以的,这也是为什么在过去⼀段时间内,其实⼤量的测试⼈员是被堆积在系统测试级别的。但随着我们的⾏业越来越发展,测试理念越来越先进,测试⼈员的技能储备也更加丰富,现在的IT项⽬中已经越来越重视测试的左移和测试的深度。
接⼝测试在笔者看来,其最⼤的好处莫过于如下两点:
1.  可以尽早的让测试介⼊项⽬,更早的发现和解决问题。⽐如在整体系统还未开发完毕时,部分接⼝其实已经可供测试了。
2.  可以从更底层的⾓度进⾏测试,从⽽弥补系统测试级别容易忽略和难以触发的⼀些测试。
完备的接⼝测试可以给项⽬质量带来远超系统测试的收益,参考测试⾦字塔理论:
1.1.3 HTTP请求的类别
本系列会主要应对是http类型的接⼝测试。
我们先通过⼀个表格来列举出8种http请求的类别定义,具体请求⽅法的实际应⽤我们在后续的⾃动化实例中再进⼀步探讨。
在实际⼯作中,最常见的是GET以及POST⽅法。
1.2 接⼝⾃动化⼯具准备
1.2.1 必备⼯具
要搭建http接⼝测试环境,我们需要以下的东西:
JDK:推荐使⽤1.8
集成开发环境:这⾥我们使⽤eclipse
⾃动化构建管理:Maven
其他相应的依赖包我们通过maven管理
1.2.2 JDK的安装
JDK的下载安装和环境变量配置⽹上有⼤量教程,本⽂不再赘述。
1.2.3 Eclipse的安装
eclipse的安装也⾮常简单,本⽂不再赘述。
1.2.4 Maven的安装
Maven的下载安装和环境变量配置⽹上有⼤量教程,本⽂不再赘述。
以上不再赘述的部分如果遇到问题,欢迎留⾔我会跟进:)
1.3 接⼝⾃动化项⽬
在eclipse中新建⼀个maven项⽬MavenAPIProject,打开项⽬⾃带的l⽂件,加⼊以下依赖信息:
org.apache.httpcomponents
httpclient
4.5.2
java环境变量自动配置org.apache.httpcomponents
httpcore
4.4.4
testng
6.8.8
test
修改完毕后保存,就可以看到eclipse会在后台开始去⾃动下载并添加以上所有项⽬依赖的jar包。
我们现在主要引⼊的是httpclient、httpcore以及testNG三个依赖包:
httpclient是⼀个⾼效的、最新的、功能丰富的⽀持 HTTP 协议的客户端编程⼯具包,我们⽤它来创建和管理请求;HttpCore是对HTTP协议的基础封装的⼀套组件,我们测试接⼝过程中会⽤到其中的底层⽹络⽅法;
testNG是⼀套单元测试框架,为我们提供测试⼊⼝和测试组织。
后续如果⽤到其他依赖包我们再去添加。
下⼀篇我们就开始写第⼀个get⽅法请求的接⼝⾃动化测试⽤例。