蘇寧蛙測&SAT在自動化測試方面的應用
前言
2018 年蘇寧易購提出了智慧零售大開發戰略,業務快速發展對蘇寧的 IT 技術提出了更高的要求,其中一個重要的環節就是加快軟體版本的上線步伐,伴隨著軟體的頻繁快速上線迭代必然存在巨大的測試壓力。
通常情況下,軟體測試的工作量很大。而頻繁版本迭代中,針對老功能的迴歸測試是重複性的且這類測試比較耗時耗力,並要求做準確細緻的工作,這樣,計算機就比人更適合完成任務。另一方面,手工測試存在諸多的侷限性。於是,就誕生了軟體自動化測試這個領域。軟體自動化測試是相對手工測試而存在的,主要是通過所開發的軟體測試工具、指令碼等來實現。
2011年以前,針對自動化測試,蘇寧各業務部門會安排一有程式碼能力的測試人員,全職編寫自動化指令碼,有人用java、有人用python,有人用ruby等等,並沒有一個體系性、標準化、流程化的規範,因此也導致指令碼維護成本高,複用性低,同時對測試人員的技能門檻比較高。
在這樣的背景下,開始了我們蘇寧自動化測試實踐之路。下面我來為大家詳細介紹。
1 SAT是什麼
蘇寧自動化測試工具(Suning Automation Tester)——簡稱"SAT",是蘇寧測試平臺研發中心自主研發的集WEB頁面、HTTP及RSF協議、手機終端、資料庫操作、LINUX操作等方面的於一體的自動化測試工具。
SAT是基於RCP平臺上實現自動化用例設計和自動化執行的工具。它採用自動化測試架構中的關鍵字驅動(Keyword)思想,使測試設計和測試實現分離,將實現不同公共元件類、業務類Keyword整合到一個用例中執行,也最大限度地實現Keyword共享,降低測試組重複開發的工作量,使測試人員可以更關注業務本身的測試;另外工具提供了完善的日誌和測試報告功能,方便使用者檢視用例執行日誌和批量執行測試報告;最大限度地降低工具使用門檻,提高了其自動化開發、測試效率。
1.1 應用範圍
- Web應用軟體產品測試
- 移動應用產品自動化測試,支援移動端Android、iOS兩大主流作業系統
- 協議介面測試(HTTP、RSF、MQ)
- 資料庫操作
- 支援SAP型別測試
1.2 特點優勢
- 瀏覽器/移動終端錄製功能,自動生成指令碼
- 拖拽關鍵字快速生成測試指令碼,降低自動化門檻
- 業務關鍵字自由配置,滿足業務擴充套件
- 測試資料獨立儲存,維護成本較低
- 測試指令碼等相關資產可共享協作,提高測試工作效率
2 蛙測是什麼
蛙測是蘇寧自主研發的一套綜合測試服務平臺,是面向軟體從業者的一體化測試解決方案,包含移動端 (Android&iOS)自動化測試和專項測試、 PC端多瀏覽器相容性測試、介面協議自動化測試,以及效能測試和安全測試的雲測平臺,解決廣大開發者和測試者在應用研發過程中面臨的成本、技術和效率問題,提供7x24全天候服務。
平臺核心服務有功能測試、自動化測試、效能測試、穩定性測試以及安全測試等,對應用軟體提供360度全方位自動化檢測,有效節約成本,提高了版本回歸測試效率,為蘇寧軟體質量保駕護航。
3 蛙測自動化方面特點
- 移動裝置/PC終端資源共享,節約成本
App應用都需要在主流機型上測試驗證,需要購買較多移動裝置,採用蛙測平臺後,可以做到移動裝置資源共享。
PC端測試,解決本地編輯、線上編輯、雲端執行的衝突和效率問題,蛙測提供了測試叢集,根據有效規則指定測試執行器消化測試任務。
- 測試計劃隨時建立,雲端多機並行執行,多終端支援,執行計劃靈活設定
測試資源池化,7x24全天候服務,立即執行、定時/迴圈定時執行、條件觸發執行等不同執行計劃按需設定,多雲端裝置序列、並行測試,效率高,報告日誌實時檢視,持續追蹤。
- 多手段自動生成測試資料,高效高質量
構造資料手段豐富,支援SQL語句、UI和介面自動化,無逢對接企業現有邏輯,百餘臺伺服器7*24小時提供服務,保障資料的高效生成。資料構造集中管理,避免各自為戰,嚴謹的資料複檢功能。
- Mock測試,設定方便靈活,千人千面,滿足多種業務場景
支援使用者建立全域性和請求級樁服務,支援HTTP、ESB、RPC 等協議 Mock,對程式碼無侵入,支援同步、非同步以及回撥場景等功能,提供呼叫日誌查詢,滿足多種應用場景。同時與服務管理平臺、一建站系統打通,讓介面測試更便捷,更簡單。
4 蛙測&SAT技術架構
蛙測的技術架構
5 蛙測&SAT在自動化測試實際應用
SAT的技術框架
蛙測平臺的技術框架
5.1 自動化測試指令碼實際應用
5.1.1 資料定義的應用
全域性變數:基於對業務的理解抽取公共欄位定義變數
區域性變數:根據資料的複雜度決定使用組合關鍵字定義變數,或用表格定義資料實現用例資料分離
5.1.2 組合關鍵字的應用
多操作步驟封裝為一場景步驟關鍵字,大大減少了測試指令碼的步驟數,提升了指令碼可讀性,且該組合關鍵字後續可重複拖拽使用,有效提高了指令碼編寫效率,減少了維護成本。
操作:選擇合適的場景—>封裝組合關鍵字—>拖拽組合關鍵字至測試用例
選擇合適場景封裝組合關鍵字
引用組合關鍵字後腳本測試步驟展示:
5.1.3 原子用例的應用
原子用例的設計為實現高可維護性自動化提供一種解決方案,單場景複用,便於測試場景的有效列舉。
操作:選擇合適用例—>設定原子用例—>拖拽原子測試用例至測試用例。
用例樹區分展示原子用例、普通用例、已引用原子用例的用例;
業務用例中拖拽引用原子案例,根據業務場景多次引用相應場景原子用例,編寫對應場景用例
5.1.4 應用效果
基於對業務的理解抽取公共資料、公共邏輯實現組合關鍵字、原子用例,自動化指令碼優勢可充分利用並放大實際應用效果
- 指令碼可讀性高
降低測試用例的冗餘度,大大減少步驟數,也提高可讀性
減少編寫案例的工作量
- 公共邏輯可複用性強
組合關鍵字/原子用例存在共性,可供重複引用
便於測試場景的有效列舉
- 指令碼可擴充套件性高/維護成本低
需求發生變更,只要維護少量組合關鍵字/原子用例
大大降低維護成本
無論業務如何變化,合理使用好組合關鍵字、原子用例,抽取資料做好資料定義,這兩項能為大家的自動化測試工作保駕護航。
(Tips:工具提供的只是手段,最核心的還是需要大家深入理解、挖掘業務)
5.2 mock實際應用
樁發展歷程:最初SAT端只支援請求級別樁,但是非同步的rsf請求中,找樁標記無法自動下傳,需要服務修改程式碼把找樁標記下傳後才可使用。
後經過多方研討,決定把樁服務升級應用於蛙測平臺,通過對介面設定擋板的方式,構建測試資料實現千人千面,也就有了現在的全域性樁、UI 樁、回撥樁等全面樁。
5.2.1 請求呼叫
指令碼中rsf埋樁demo展示示例:
SAT端樁響應條件設定設定樁響應條件,填寫請求報文相應屬性路徑下,引數的屬性值,介面請求時,根據響應條件的匹配,返回相應設定的模擬樁,即做到某樁在某請求條件滿足響應條件下生效,真正做到千人(樁響應條件)千面(樁響應報文)。
SAT端樁響應條件設定
蛙測端樁響應條件設定。
5.2.2 MQ接收
MQ接收的場景一般分為以下兩類:
場景一:通過MQ佇列接收資料之後直接存庫;
場景二:通過MQ佇列接收資料後需要繼續呼叫處理其他資源,然後入庫/入快取等操作。
自動化實現:
截圖中測試步驟列舉的為MQ收到訊息需要呼叫其他資源需要用到的一些關鍵字。
MQ場景二涉及呼叫其它資源,為獨立測試該場景,mock相應依賴,因此引入全域性樁的概念。
5.2.3 應用效果
請求級別樁優勢:
- 樁資料在本地,對蛙測依賴小
- 通過SAT日誌就能定位問題,方便簡潔
全域性樁優勢:
- 支援場景豐富,同步/非同步請求都支援,且不需要被測系統嵌入程式碼
- 通過構造請求報文的多樣性,實現千人千面
- 蛙測支援多機並行
根據請求樁與全域性樁存在不同優勢,結合業務需求相應結合使用,實現Mock測試,擺脫被測系統間依賴,提高測試質量及效率,同時成功解決測試人員、開發人員在測試和研發過程中,資料構造、環境依賴等痛點,大大提高了生產效率,提高測試場景的覆蓋率,保障了業務版本上線的質量。
6 蛙測& SAT解決的問題和實現的價值
6.1 解決的問題
- 使用者手工測試耗時長效率低
- 自動化指令碼寫作門檻高
- 自動化指令碼維護成本高,複用率低
- 使用者自動化執行需佔用本機的資源
- 使用者缺少特定測試裝置
- 單機執行併發度低,測試耗時久,效率低下
- 本地執行後測試結果無法有效追蹤
- 介面測試時依賴方不可用,測試人員無法提前介入測試
- 構造異常資料流程複雜,無法很快生成,影響測試效率
- 依賴方涉及到現金交易,測試成本高
6.2 實現的價值
- 測試資源池化,多瀏覽器、多終端裝置、稀缺資源統一管理
- 降低測試成本,測試裝置在雲端,共享使用
- 多維度併發執行,提高測試效率
- 雲端任務執行,測試結果持續追蹤,
- 擺脫被測系統間依賴,自已的測試自己做主
- 資料構造集中管理,統一排程
7 總結