接口自動化測試設計

1.接口測試基礎
javascript

1.1.什麼是接口測試?

1.2.接口測試原理?

 

1.3.接口測試分類?

1.4.爲何接口測試?

image2016-8-28%2019%3A35%3A36.png?versio

    1).UI:一般指 Web、App的測試;2).Service:通常針對接口、服務,如 HTTP、WebService 接口測試;3).Unit:包含比較多,如:Web應用的dao、service、model,controller的junit單元測 試,javascript、css的前端單元測試,大部分應由開發作測試保證。php

 

1.4.接口測試範圍?

    新增及改動接口的測試(接口的改動點,可經過代碼及配置 diff 測試,圈定最小測試範圍。服務端接口迭代過程,需測試接口依次增多。測試時間足夠條件下,固然須要進行全迴歸測試。但時間較短,應考慮接口的重要性與優先級,優先對核心且調用頻繁的接口測試。)新增及改動業務功能測試。接口的性能與安全測試(是否須要對接口實施性能和安全測試,取決於接口特色。一個對第三方電商平臺提供支付功能的接口,如:支付寶接口,性能和安全測試是 必需要例行化測試的。一個系統內部調用的獲取列表頁接口,性能和安全性考慮優先級相對不那麼高。總體而言,從接口的業務特色,即流量大小、調用方式、服務 架構、業務閉環的重要性等角度考慮。)css

 

2.接口測試策略

               接口依賴關係檢查,一般用戶的一個操做可能對應服務端調用多個接口完成,從業務操做角度來看,各類業務操做所涉及的多個接口之間調用進行測試。依賴關係檢 查,主要經過接口的輸出值爲另外一接口的輸入值來實現的,所以在進行接口測試以前,須要分析所測試接口的輸入值是經過客戶端仍是其餘接口輸出來獲取的,在設 計測試用例時,加入接口的依賴關係說明以便於測試。html

2.1.接口測試關注點?

image2016-8-28%2019%3A36%3A50.png?versio

2.2.接口測試Case設計?

Case參考點:輸入參數測試,功能測試,邏輯測試,異常狀況。前端

設計思路:a)優先級-針對全部接口,外部接口 > 系統內部核心接口 > 系統內部非核心接口。java

                 b)優先級-針對單接口, 正向用例 > 逆向用例(一般狀況,非絕對);前置條件 > 默認參數 > 參數必填 > 參數關聯 > 參數類型限制 > 參數數據範圍限制。node

Case覆蓋:主流程 -> 分支流程 -> 異常流程。python

 

3.接口自動化演進

image2016-8-28%2019%3A38%3A50.png?versio

    接口自動化演進,一般是從手動測試 -> 工具測試 -> 代碼測試 -> 平臺服務化演進。git

    手動:從客戶端的業務場景測試去覆蓋服務層接口,藉助Fillder、Charles、FireBug等工具抓包分析。優勢:簡單,模擬真實業務場景;缺點:接口邏輯覆蓋不夠,異常和輸入校驗不足,重複繁瑣,迴歸成本高。github

    工具:使用PostMan,HttpRequest,Jmeter, SoapUI 等工具作接口測試。優勢:容易保證接口邏輯覆蓋,便於異常和輸入校驗,提升迴歸效率;缺點:缺少自定義靈活性,接口依賴處理繁瑣,不便自動化工程化。

    代碼: 選擇如,Java + Httpclient,Python + Requests, PHP + Requests/cURL/HTTPFul,搭建接口自動化框架,開發接口自動化case。優勢:靈活性好,擴展性強,邏輯覆蓋容易,異常和輸入校驗充 分,迴歸效率高;缺點:存在必定學習成本,框架及case腳本需持續維護。

    平臺:通用的接口自動化測試平臺,簡而言之知足接口自動化測試的Web平臺,如:Numen。優勢:通用性強,上手快,一鍵式,配套服務全等;缺點:業務契合度,靈活性,維護成本,API擴展等。

3.1.接口測試工具?

    代理抓包工具
        Fillder, http://www.telerik.com/fiddler
        Charles, https://www.charlesproxy.com/
        Wireshark, https://www.wireshark.org/
    
    調試工具
        Firebug(Firefox), https://addons.mozilla.org/en-US/firefox/addon/firebug/
        DevTools(Chrome), https://github.com/CN-Chrome-DevTools/CN-Chrome-DevTools
    
    Json&Url encode工具
        json在線解析,格式驗證, http://json.cn/
        json壓縮轉義, http://www.sojson.com/yasuo.html
        jsonview插件(Chrome), https://chrome.google.com/webstore/detail/jsonview/chklaanhfefbnpoihckbnefhakgolnmc?hl=zh-cn
       url encode工具, http://tool.chinaz.com/Tools/URLEncode.aspx

    測試工具
        PostMan, https://chrome.google.com/webstore/detail/postman/
        SoapUI, https://www.soapui.org/
        Jmeter, http://jmeter.apache.org/

3.2.接口自動化框架設計?

image2016-8-28%2019%3A37%3A55.png?versio

接口自動化測試框架設計關鍵點,其實能夠用Driven、Organize、Support、CI歸納。

Driven:Data Driven(數據驅動),接口測試關注輸入、輸出及各類異常數據,歸根結底其實就是作數據測試。如何設計合理的參數化實現,下降測試數據維護成本,是自 動化框架設計的重要內容。KeyWord Driven(關鍵字驅動,即封裝),將測試過程當中公共過程、通用步驟儘可能封裝爲通用函數,其中分別爲業務、過程common 函數。合理的封裝函數設計,將使得自動化腳本簡潔化、一致性,可維護性高。

Organize:組織。考慮兩個維度,如何管理組織自動化工程?如何組織自動化case?以Java語言舉例,接口自動化case較少只有幾個,建立一個普通java工程項目,在 main方法中,羅列寫出case實現便可。無可厚非,這是一種簡單實現。但隨着接口數量增長,接口case愈來愈多,這種方式的維護成本愈來愈高,冗餘愈來愈重。咱們須要考慮將自動化工程化而不是腳本化,即作工程管理,如使用maven管理工程,配置各種jar包依賴,定義測試等。測試case使用單測 工具管理組織,如:junit/TestNG,有什麼好處?定義了case的執行順序,通用豐富的assert驗證,結果統計收集等。

Support:接口自動化測試不僅是模擬一個請求發送及響應解析的過程,作爲框架需考慮的遠不僅這些。如:json數據的比對,數據庫增刪改查操做,接口的數據mock構造,md5值校驗,url的unicode/encode,report,email等等。

CI:自動化框架搭建了,自動化case工程化了。選擇什麼方式調度,何時執行。IDE 手動調度執行,bat/sh?CI 是一種高效的機制,每次代碼編譯打包部署,都應該觸發CI的自動化執行,自動化框架須要考慮CI的集成。

 

4.外面團隊,如何作接口自動化?

測試工具:PostMan, SoapUI,Jmeter……

自動化框架

    Java:java + httpclient + junit/testng + ant/maven + Jenkins

               java + jmeter.jar + + junit/testng + ant/maven + Jenkins

    Python:python + (robotFrameWork) + (requests) + (xlrd) + pyUnit + Jenkins

    Ruby:ruby + (cucumber/rspec) + (http/net) + TestUnit + Jenkins

    PHP:php + requests + phpUnit + Jenkins

    NodeJS:node.js + mocha +supertest + Jenkins  

相關文章
相關標籤/搜索