1. 程式人生 > >接口自動化:HttpClient + TestNG + Java(一) - 接口測試概述+自動化環境搭建

接口自動化:HttpClient + TestNG + Java(一) - 接口測試概述+自動化環境搭建

系列 深度 理念 eclips 觸發 開始學習 color pip ima

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(一) - 接口測試概述+自動化環境搭建