自動生成測試腳本方案淺析html
轉載自 www.sohu.com/a/224590187_748431java
原標題:自動生成測試腳本方案淺析python
文:玉婷編程
本文原創,轉載請註明做者及出處構想篇json
做爲一名接口自動化測試工程師,平常面臨最多的工做就是編寫接口自動化測試腳本,那麼,在 coding 的過程當中最讓你以爲枯燥和乏味事情有哪些?網絡
痛點app
天天都要花上30%的時間去寫那些不太須要思考的腳本,這真不夠自動化!框架
解決方案編程語言
預期目標工具
解放雙手,下降純手力勞動佔比,進而給本身提供更多的時間去思考、理解產品和設計更多「聰明」的用例
實踐篇 自動化獲取接口信息 分析接口自動化腳本結構和內容
自動化測試腳本結構圖
篩選工做量大又有規律可循的腳本
此處規律不宜太過於複雜,可先選邏輯簡單的部分,咱們主要選取如下兩部分
接口類結構圖
用例結構圖
解析接口文檔
接口信息來源於接口文檔,目前市場上比較主流的幾個接口文檔管理工具備Swagger、RAP、WIKI 或者其餘普通文檔工具。
下面以解析接口文件爲目的分析比較下幾款工具的區別:
.
分類 | Swagger | RAP | WIKI |
---|---|---|---|
描述 | 用於生成、描述、調用和可視化RESTful風格的Web服務的框架 | 可視化接口管理工具 | 可供多人協同創做的超文本系統 |
格式 | json | json | html |
規範 | 各個參數、返回值的具體結構、類型有統一規範 | 同swagger | 須要本身約定規範 |
成本 | 直接嵌入項目中,經過開發時編寫註釋,自動生成接口文檔,成本較低 | 須要開發按照平臺規則手動輸入,成本較高 | 須要按照約定規範,手動輸入,成本較高 |
若是有條件,你們能夠根據開發成本和解析接口文件的難易程度來綜合考慮,肯定使用哪一個平臺管理接口
咱們項目是 Swagger 和 WIKI 混合使用,因爲平常測試看 WIKI 居多,所以早期採用 Python 爬蟲利器 BeautifulSoup 來解析WIKIhtml頁面
使用下來發現經過wiki來獲取接口信息的一些弊端
因而,嘗試解析Swagger返回的json來得到接口信息爲後面生成腳本作準備
使用如下方式拿到json結果後,就能夠直接按照處理字典的方式來獲取須要的內容。
對於swagger.json的解析和代碼生成官方也提供了一些可供使用的庫swagger-codegen (java),因爲編程語言的限制,咱們使用了python本身解析
如今,咱們已拿到生成代碼所須要的信息
自動生成代碼 代碼生成工具
接口類部分腳本生成規則
因爲咱們接口屬因而存儲在類結構中,所以根據當前腳本的API Object接口進行遍歷替換便可
接口用例部分代碼生成規則
特殊值用例
給每一個參數生成爲0、None、空字符串這樣特殊值的用例
定位參數類型
經過接口參數給出的類型,生成符合該類型的值,和一些不符合參數類型的值(健壯性),賦值後生成用例,以下代碼示例
定位特定關鍵詞參數
該生成規則須要和開發約定一些基本原則,另外也須要咱們在平常測試中多概括總結,找出那些有固定規律的用例,想辦法定位生成這類用例
定位接口類型
自動生成測試腳本工具介紹 框架流程圖
工具擴展性
成果和後續行動 效率提高
以一個優惠券需求爲例,大約新增/更新了10個接口(約150個參數請求參數,100個返回參數),包含增刪改查幾種類型,編寫加調試腳本在使用工具先後所花費時間對比,以下:
類型 | 工做量描述 | 不使用工具 | 使用工具 | 效率提高 |
---|---|---|---|---|
接口類 | 約250個參數 | 2日/人 | 1小時內 | 94% |
健壯性用例 | 約1000條用例 | 2日/人 | 1日/人 | 50% |
平均 | --- | --- | --- | 74% |
從上例能夠看出使用腳本後的效率提升了近一半,而從設計到編寫完初版工具僅花費了2~3個工做日,仍是很是值得一作的。
聚焦測試
統一規範
重構利器
後續迭代優化點
最後想說的是,這個小工具的設計思路遠比實現更重要,不管使哪一種語言或庫均可以實現解析文件和代碼的生成,重要得是按照怎樣的思路去生成腳本,在這部分上後續咱們也有不少須要摸索的地方。
手把手教你開發一個 Webpack Loader
Android.Arch.Paging: 分頁加載的新選項
React Native 網絡層分析
如何實現VM框架中的數據綁定
探索自動化測試的高效執行返回搜狐,查看更多