1. 程式人生 > >介面自動化:HttpClient + TestNG + 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,開啟專案自帶的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方法請求的介面自動化測試用例。