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,打开项目自带的pom.xml文件,加入以下依赖信息:

   <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.4</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.testng/testng -->
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.8.8</version>
<scope>test</scope>
</dependency>

修改完毕后保存,就可以看到eclipse会在后台开始去自动下载并添加以上所有项目依赖的jar包。

我们现在主要引入的是httpclient、httpcore以及testNG三个依赖包:

  • httpclient是一个高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,我们用它来创建和管理请求;
  • HttpCore是对HTTP协议的基础封装的一套组件,我们测试接口过程中会用到其中的底层网络方法;
  • testNG是一套单元测试框架,为我们提供测试入口和测试组织。

后续如果用到其他依赖包我们再去添加。

下一篇我们就开始写第一个get方法请求的接口自动化测试用例。

接口自动化:HttpClient + TestNG + Java(一) - 接口测试概述+自动化环境搭建的更多相关文章

  1. 接口自动化:HttpClient + TestNG + Java(五) - 接口测试数据驱动

    在上一篇中,我们实现了post方法请求的封装和测试,这一篇我们做测试数据的分离. 5.1 测试数据处理思路 5.1.1 测试数据分离 这里我想到,我们之前的测试demo里,全都是在testNG类里去写 ...

  2. 接口自动化:HttpClient + TestNG + Java(二) - 第一个接口测试:get请求

    在上一篇中,我们搭建好了HttpClient + TestNG + Java的自动化接口测试环境,这一篇我们就赶紧开始编写我们的第一个接口测试用例. 本篇会对问题解决的思路进行更详尽的阐述. 2.1 ...

  3. 【小程序自动化Minium】一、框架介绍和环境搭建

    微信小程序自动化测试系列分享 一.Minium 简介 minium 是微信团队为小程序专门开发的自动化框架,我们可以用它来做小程序的UI自动化测试,但是它的能力却不仅仅在于UI自动化. 正是得益于官方 ...

  4. JAVA基础学习——1.1 环境搭建 之jdk安装,环境变量配置 (系统Win10,64bit)

    大学里虽然老师教过JAVA,但我没学.后来工作了,断断续续的也碰到了JAVA的项目,都是拉过来就干的节奏.也没有好好系统的学习一下. 从今天开始系统学习整理一下JAVA,以后再碰到JAVA项目的时候, ...

  5. python+selenium自动化软件测试(第1章):环境搭建,你也可以直接用Anaconda!

    1.1 环境搭建 1.1.1 selenium简介Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测试 ...

  6. Java不走弯路教程(1.环境搭建)

    1.环境搭建在开始写第一个Java程序之前,我们需要做一些简单的准备工作. 1.1 还记得DOS吗 我们可以通过图形界面来操作我们的电脑.但作为程序员,你首先需要学会用命令行的方式来操作电脑,因为不是 ...

  7. 01_Struts2概述及环境搭建

    1.Struts2概述: Struts2是一个用来开发MVC应用程序的框架. Struts2提供了web应用程序开发过程中一些常见问题的解决方案; 对用户输入的数据进行合法性验证 统一的布局 可扩展性 ...

  8. JAVA WEB快速入门之环境搭建

    前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...

  9. Jmeter 接口测试知识梳理——环境搭建篇

    Jmeter 使用也有很长时间了,但是一直没有做一下知识梳理,近期会对公司同事做一下这方面的培训,借此机会,把使用过程中应用到的知识,或是遇到的问题,整理出来,方便大家学习! 环境搭建篇 很多文章介绍 ...

随机推荐

  1. VMware12安装虚拟机教程、Ubuntu16.04安装教程(包括vmware tools的安装)

    转自https://jingyan.baidu.com/article/c275f6ba07e269e33d756714.html 方法/步骤 1 虚拟机.Linux操作系统介绍及下载地址 虚拟机VM ...

  2. Spark学习之Spark调优与调试(一)

    一.使用SparkConf配置Spark 对 Spark 进行性能调优,通常就是修改 Spark 应用的运行时配置选项.Spark 中最主要的配置机制是通过 SparkConf 类对 Spark 进行 ...

  3. sau交流学习社区--songEagle开发系列:Vue.js + Koa.js项目中使用JWT认证

    一.前言 JWT(JSON Web Token),是为了在网络环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519). JWT不是一个新鲜的东西,网上相关的介绍已经非常多了.不是很了解的 ...

  4. itest 开源测试管理项目中封装的下拉列表小组件:实现下拉列表使用者前后端0行代码

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景       像easy ui 之类的纯前端组件,也有下拉列表组件,但是使用的时候,每个下拉列表,要配一个URL ...

  5. vue项目使用websocket技术

    一.为什么需要websocket? 前端和后端的交互模式最常见的就是前端发数据请求,从后端拿到数据后展示到页面中.如果前端不做操作,后端不能主动向前端推送数据,这也是http协议的缺陷. 因此,一种新 ...

  6. DSAPI多功能组件编程应用-HTTP监听服务端与客户端_指令版

    前面介绍了DSAPI多功能组件编程应用-HTTP监听服务端与客户端的内容,这里介绍一个适用于更高效更快速的基于HTTP监听的服务端.客户端. 在本篇,你将见到前所未有的超简化超傻瓜式的HTTP监听服务 ...

  7. 正确分析结构使用正确的HTML标签。CSS样式写一起。

    在内容中 一行内容包括三张图片,每张图片下面有标题和具体介绍,那么可以使用: 分析和解决如下步骤: 1,一行三块,先向左浮动成为一行float:left. 2,把他们的宽度平分三份,33.3%.三份都 ...

  8. 从Windows转向Linux(在Windows下建立Deepin、Windows10双系统)

    我是19年3月转向使用Linux进行开发,没啥特别的理由,就是觉得使用Linux系统是每个程序员必须经历的吧. 选择版本 一开始,在网上了解到现在流行的Linux发行版有基于Redhat的,还有基于d ...

  9. windows系统库

    内部组件 这些程序库文件通常不会被程序直接使用,不过它们却是用来实现其他程序库功能的重要程序库. Hal.dll Windows系统的硬件抽象层就是由Hal.dll实现[1].HAL提供很多函数,而这 ...

  10. SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper

    上篇文章我们介绍了SpringBoot和MyBatis的整合,可以说非常简单快捷的就搭建了一个web项目,但是在一个真正的企业级项目中,可能我们还需要更多的更加完善的框架才能开始真正的开发,比如连接池 ...