XXX接口自動化測試方案

XXX接口自動化測試方案

一、引言

  1.1 文檔版本

版本html

做者編程

審批網絡

備註框架

V1.0編程語言

XXXX分佈式

 

建立測試方案文檔post

 

 

 

 

  1.2 項目狀況

項目名稱性能

XXX單元測試

項目版本測試

V1.0

項目經理

XX

測試人員

XXXXX,XXX

所屬部門

XX

備註

 

  1.3 文檔目的

    本文檔主要用於指導XXX-YY項目經常使用接口自動化測試工做的開展。本文檔的主要目的在於提供項目接口自動化測試的技術方案、實施方案和計劃方案等。

二、接口自動化實施目標

  2.1 實施原則

    XXX-YY項目採用接口自動化測試,主要目的是爲了應對迭代版本測試過程當中的重複工做任務,以期達到效果以下:

  • 下降測試成本
  • 提升測試效率
  • 更頻繁地執行覆蓋重要接口
  • 提供更高的準確性和一致性
  • 節約時間成本

  雖然能達到上述預期效果,但實際實施過程當中須要注意的是,接口自動化的高效應用,對於被測系統有着更高的要求,也須要遵循合理的方法流程,現總結以下:

  • 接口自動化的實施應該被用於解決測試過程當中高重複性的工做,很大一部分是用於迴歸測試老的功能接口,不然其自己工做量投入會大於其收益,因此不能盲目對全部接口或功能追求自動化。
  • 對於提測版本,自身穩定性須要有必定程度的保障。過於頻繁的接口變更,會加大後續接口自動化的實施難度,增長自動化腳本維護地成本。
  • 接口自動化的總體實現應採用分佈進行,測試過程當中優先覆蓋功能穩定且比較重要的接口,進而逐步擴展到總體項目的接口迴歸。
  • 接口自動化測試是一個長期的過程,隨着項目版本的不停迭代優化,項目自己的接口也會不斷優化或新開發,因此後續自動化測試腳本的代碼維護和調優也具備可觀的工做量。

  2.2 接口自動化測試範圍

    系統範圍:

自動化實施階段

被測模塊

功能接口範圍

第一階段

登陸獲取token,YY標籤頁

 

第二階段

 

 

 

 

 

    階段範圍:

      這裏咱們優先測試一下登陸的接口和一些插入XXX功能的接口。

  2.3 接口自動化測試任務

  • 制定測試方案

腳本編碼前,須要對項目有一個總體把握,合理預估接口數量與複雜度。結合版本迭代時間,預估自動化腳本開發時間,並制定出相應的接口自動化測試方案。

  • 提取分析測試點

根據前面寫好的接口自動化測試範圍,分析每一個接口的測試點,包含請求方式,傳入參數,請求頭,返回狀態,返回數據等。這個過程當中,須要和相對應的開發對接清楚在測試範圍內的接口的相關信息,並提早在postman中逐一確認調通,必要時生成相應的測試文檔或編寫進入測試用例中。

  • 搭建測試框架

    這次接口自動化測試框架採用的是以Python語言爲腳本開發語言,選用unittest接口測試框架。目的但願達成可配置,能自動運行腳本,自動生成測試報告並將生成的測試報告發送到指定郵件。

  • 編寫腳本代碼

    腳本首次實現不須要覆蓋到每一個接口。先預計挑選幾個重要接口進行覆蓋測試,等總體測試框架搭建好後,總體流程確認調通無誤後,再後續維護完善腳本,覆蓋更多的功能接口。

  • 持續集成

    同上,初次腳本代碼完成後,須要對現有自動化腳本進行升級持續集成開發,不斷完成還沒有覆蓋到的接口,將這些接口加入到自動化測試的範圍內,使得總體自動化程度進一步加深,更大程度上節約人力和時間成本。

  • 腳本維護

    腳本維護是在總體自動化腳本階段性完成後,將現有生成的交付物歸檔整理好給相應的負責人管理,並進行階段性的更新整理維護。包含項目平常版本迭代維護過程當中對接口有改動的部分,和後續新加入接口得自動化覆蓋等。

三、接口自動化技術選型

  3.1 總體體系

    結合測試金字塔(從下到上依次是:單元測試,服務測試,用戶界面測試)以及XXX-YY項目自己的流程特性考量,本次自動化實現主要是以接口自動化的形式來開展。整個自動化腳本以 Python3.X  requests 庫爲核心機制,以 unittest 爲測試組織,以 HTMLTestRunner 生成最終測試報告,Jenkins 實現持續集成,並選取 Python3.X 做爲編程語言實現。

 

  3.2 核心技術

    3.2.1 接口自動化執行庫--Requests

    首先,Requests 是使用 Python 語言編寫,基於 urllib,採用 Apache2 licensed 許可證的 HTTP 庫。它比通常的 urllib 等庫更加方便、簡潔,能夠節約咱們大量的工做,徹底知足HTTP 測試需求,總結爲一句話:Requests 是 Python 實現的簡單易用的 HTTP 庫。其次,Requests 庫安裝和導入很是方便。

    pip3 install requests  ## 安裝 Requests 庫

    import requests ## 導入 Requests 庫到項目中

    咱們可使用該庫實現如下各類方法:

    requests.get("https://url.cn")              # GET請求

    requests.post("http://url.cn")              # POST請求

    requests.put("http://url.cn")               # PUT請求

    requests.delete("http://url.cn")            # DELETE請求

    requests.head("http://url.cn")              # HEAD請求

    requests.options("http://url.cn")           # OPTIONS請求

    3.2.2 測試組織和斷言機制--unittest

    unittest 模塊是 Python 中自帶的一個單元測試模塊,咱們能夠用來作接口自動化代碼級別的測試組織和斷言機制。其中比較重要的小組件模塊有:TestCase,TestSuit,TestLoader,TextTestRunner,TextTestResult等。

    TestCase:用來編寫逐條的測試用例,是全部測試用例的基類,他是 unittest 模塊中最基本的組成單元。一個 testcase 就是一個測試用例,是一個完整的測試流程,包括測試前的環境搭建準備 setUp,執行測試代碼和斷言機制,以及測試一條用例完成後的環境還原 tearDown 等。

    TestSuit:多個TestCase就組成了一個TestSuit(測試用例集),這是用來存放一條一條測試用例的集合。

    TestLoader:是用來將逐條的測試用例 TestCase 加載到用例集合 TestSuit 中,其中加載的方式有多種,就是從腳本項目中尋找到單獨的用例,建立他們的實例,而後加載到一塊兒,組成TestSuit,再返回一個TestSuit的實例。

    TextTestRunner:是用來執行用例集 TestSuit 中的測試用例。

    TextTestResult:用來保存測試結果,包含執行了多少條測試用例,成功與失敗用例的條數等信息。

    示意圖以下(網絡來源圖):

 

    3.2.3 測試報告生成--HTMLTestRunner

    當咱們批量執行完用例集 TestSuit 中的接口用例後,生成的測試報告是dos端文本格式展現的,不是很直觀,這裏咱們引入一個第三方庫--HTMLTestRunner,使用這個第三方庫咱們能夠生產成 HTML 網頁格式的測試報告。

 

    3.2.4 持續集成機制--Jenkins

    這裏咱們腳本持續集成選擇  Jenkins 來實現,經過使用 Jenkins,咱們可以實現腳本自動化執行,包含定時執行自動化測試腳本,和自動化腳本運行後的測試報告發送到指定的郵箱中。

  3.3 框架思想

    3.3.1 封裝思想

    整個接口自動化測試腳本採用面向對象的封裝思想,儘可能將一些可配置的模塊單獨提取出來,便於後續操做配置,使得總體項目更加靈活多變,便於後續地迭代維護和二次開發。封裝思想主要體如今測試環境可配置,測試用例可導入,測試數據和腳本分離,文件路徑採用相對路徑表示等,具體咱們會在實際編碼分層中獲得體現。

    3.3.2 數據驅動實現

    數據驅動這裏咱們採用的是 Python 中的裝飾器--DDT(Data Driven Tests)來體現。經過他咱們能夠複用咱們的腳本代碼,達到數據驅動測試的目的。官方對DDT的描述是:DDT(數據驅動測試)容許您經過使用不一樣的測試數據運行一個測試用例,並使其顯示爲多個測試用例。

    這裏官方網站中對DDT的介紹作一個簡單描述。首先,DDT主要是由一個類裝飾器 @ddt(用於咱們腳本中的TestCase子類)和兩個方法裝飾器(用於咱們想要批量處理的測試數據)分別是 @data(這裏須要保持提供參數和被測參數個數一致)和 @file_data(將從JSON 或者 YAML 文件中加載測試數據)。其次,關於data修飾的方法傳入的參數,會被當作一個總體傳入,若是這些參數像是元組一類的參數,那麼你必須將他們分解開傳入到你的測試中。另外,你可使用另外一個裝飾器 @unpack,來解壓縮分解你的參數爲多個參數。(附:DDT官方文檔:https://ddt.readthedocs.io/en/latest/index.html

四、測試環境需求

  4.1 硬件環境

  目前暫未涉及到性能相關或者須要分佈式執行的內容,所以對硬件要求不是很高,平常辦公硬件便可。若是後續有涉及性能相關內容,硬件環境須要再另外的性能測試方案中體現。

  4.2 軟件環境

軟件相關

版本號

備註

Python

v3.7

腳本編碼語言爲 Python3.x

PyCharm

v2016.3.3

 

 

 

 

五、人員進度安排

  5.1 職責分配

組別/人員

職責

備註

 

 

 

 

 

 

  5.2 進度安排

測試任務

負責人

開始時間

備註

自動化測試方案制定

 

 

 

接口用例編寫

 

 

 

自動化測試環境搭建

 

 

 

自動化測試框架搭建

 

 

 

自動化腳本代碼編寫

 

 

 

持續集成實現

 

 

 

測試報告輸出

 

 

 

腳本二次維護開發

 

 

 

  5.3 交付物管理

交付物

負責人

備註

《自動化測試方案》

 

 

自動化框架

 

 

自動化腳本代碼

 

 

測試執行報告

相關文章
相關標籤/搜索