淺談SAP Cloud for Sales 自動化
在Jerry還在本科進行計算機理論知識學習時,我曾經把軟體開發裡的質量工程師(Quality Engineer)理解成是每天只是簡單地做著執行開發人員編寫好的軟體,如果發現問題,通知開發人員去修改這種機械的體力活。後來進入SAP後,觀察團隊裡的質量工程師每天做的事情,才知道我當初簡直是很傻很天真。
我的兩位同事,姚瑤和鄭曉霞,之前已經就她們在SAP質量工程師這個崗位上工作的一些體會做了分享:
今天,由Jerry的另一位同事,Tang Minna繼續給大家帶來SAP標準產品質量控制方面的分享。
大家好, 我是唐敏(Minna Tang),目前是SAP成都研究院C4S(Cloud for Service)團隊的質量工程師。除了本職工作以外,我喜歡烹飪蘇菜——少了川菜的熱烈與厚重,卻多了一份自然與純真;喜歡在圖書館裡拜讀名人傳記——看盡紅塵故事之後,靜靜地感受時光的流逝;閒暇時也喜歡尤克里裡——跟隨跳動的音符,感受人生的起起落落。
今天我想基於目前C4S產品的現狀和自身的技術背景,簡單聊聊自動化這個動人心魄、讓人又愛又恨的話題。
相信任何一個軟體開發團隊的每位成員,聽到“自動化”一詞,都會抱有熱烈的期待。對於老闆來說,這個詞意味著成本的下降及更高的ROI(Return On Investment,投資回報率);從開發工程師的角度,自動化有助於更早地檢測到程式碼變更對原有功能的影響;測試工程師當然是全力支援自動化的,因為省心和省力;產品經理自然也不會拒絕自動化,因為它能夠帶來更高效的交付和更快速的迭代。
然而,我們身邊也不乏自動化實施失敗的團隊。2013年在我前一家工作的公司裡,我曾參與某核心系統專案的開發工作,這個業務系統從需求到完整上線共耗時一年半,核心功能的開發更是耗時大半年之久。面對如此龐大的業務測試成本和強需求,PMO(Project Manage Office)在專案開發之初就啟動了自動化測試需求,然而在業務功能不穩定,產品需求、開發與測試基本屬於趕工狀態的情況下,與人工迴歸相比,自動化所帶來的收益基本微乎其微。所以選擇適當的自動化時機和策略,是自動化成功與否的重要因素之一。
眾所周知,SAP眾多產品都在使用自研的ABAP進行開發。當我加入SAP後,我瞭解到這些執行在ABAP Netweaver之上的產品,均有完備的自動化測試。對於ABAP後臺功能程式碼,主要是開發人員為核心功能編寫完備的,覆蓋率高的單元測試,然後用事務碼SUT排程成後臺作業定期執行,如果自動化測試執行時發現故障,會自動發郵件通知相關人員。
前臺UI程式碼,無論是原生的Fiori應用還是CRM Web Client UI這種加了一層皮膚的類Fiori應用,都能通過Selenium來進行UI的自動化測試。
當然,SAP成都研究院也在進行眾多基於微服務架構的雲產品開發,主要使用Java程式設計,那麼自動化測試的實現也更加容易,Spring系列框架裡有大量成熟和流行的自動化測試套件可供使用。
從迭代釋出的角度講,C4S產品的釋出週期為一個季度一次,每個季度中有三個週期:前兩個週期主要完成新功能開發,第三個週期需要團隊成員既完成新功能測試,也需要回歸系統原有功能。與此同時,每個季度中還有5次補丁的釋出,每一次都需要完成原有業務的迴歸測試。夾在產品新特性測試和迴歸測試之間的,是一望無際的工作量和對高效率、高質量測試的需求。
我為所在團隊負責的功能制定的自動化的策略是: 介面 + UI自動化覆蓋 。也許您會問,作為一個請求的最前端,既然UI的測試都能覆蓋了,那自動化測試為什麼還需要介面的覆蓋?工作量是否存在重複?從功能的角度來講,確實有些重複。但從收益的角度來講, 對介面的自動化測試進行投入,收益遠超成本 。
1. 對於任意一個系統,介面的穩定性在整個系統中的重要地位不言而喻。相對於後置的E2E(端到端)測試,介面測試能夠從基礎層減小變更對整個應用及下游業務呼叫方的影響範圍。
2. 同時,介面的測試也能為UI自動化實施提供基礎資料。
UI自動化為了完成某個場景的測試,通常會有很多前置業務資料的依賴。這些UI自動化需要的測試資料如何生成?有同事建議可以提前手工造資料。如果自動化測試的資料都要依靠手工來維護,在我看來,這個自動化不要也罷。通常,在介面測試完成之後會將已測試通過的介面封裝成工具類,供後續UI自動化的工程化呼叫,這樣既減少了UI自動化的資料依賴,對介面測試通過率也提出了更高的要求。所以一般的介面工程必須100%通過,才能完成觸發後續UI自動化的作用去執行功能測試。
3. 為效能測試準備打下堅實的基礎。
通常準備效能測試之前,介面測試的響應時間會成為反饋介面效能的重要依據。我們在制定介面效能的SLA(Service-Level Agreement)時,其基本資料來源就是介面測試。而很多網際網路公司,相對於端到端的響應時間,他們更注重介面的響應時間,因為介面更底層。尤其針對多層介面依賴的系統,每年 618,雙11之前的線上大促壓測,介面全鏈路測試必定是重中之重。
我在C4S推薦使用的介面測試框架為 Spring + Maven + Testng ,語言為Java, 被測物件為C4S oData服務提供的HTTP API。其中Spring框架主要負責通過註解方式完成物件注入,Maven負責工程結構和Jar包管理,Testng負責具體的測試工作。對於不熟悉Java的朋友來說,藉助現有工具諸如Postman也能很好地勝任這項工作。
1. 工程結構及說明
介面主體工程以Maven規範工程為模板,所有的程式碼和相關資原始檔均放置在src/test目錄下。工程模組主要分為4部分:測試程式碼、列舉物件、工具類及相關資原始檔。
測試程式碼 :這是測試程式碼的主要存放目錄。 通常根據業務的不同,我們將每一個介面的測試案例按照 業務測試 和 引數測試 分別編寫。
所謂業務測試,是指測試案例中涉及業務規則的部分。比如,某介面中存在一個channel(渠道)欄位。業務規則定義:當channel為all時,建立全渠道使用的資料;當channel為特定值時,建立的資料只能適用於特定的場景。則業務測試的案例有2個:
o Channel = all
o Channel = 特定資料
引數測試:主要測試介面引數欄位是否為必填項。比如,某介面中存在一個channel為必填欄位且必須為指定列舉型別字串,當傳入介面為null或blank或非列舉值時,框架返回HTTP 400引數錯誤,同時提示錯誤資訊。此時引數測試案例有3個:
o Channel = null
o Channel = “”(blank)
o Channel = “XXXX”(XXXX為非列舉值)
列舉物件: 此部分是將業務中經常用到的固定引數使用列舉的方式列出,方便整個工程使用。見下圖中httpEnum資料夾中的類。
工具類: 包括基本工具類和業務工具類部分。業務工具類是將特定介面進行封裝,方便下游介面呼叫使用。
資原始檔: 包括Spring相關配置,properties檔案以及引數測試中的資料來原始檔等。
2. 案例編寫
此處以實現oData的SocialMediaActivity 介面的自動化測試為例來進行說明。
我們借用顏值大師——李曉剛老師畫的圖來大致瞭解SociaMediaActivity在C4S微信整合架構中的作用:
由上圖所知,C4S通過暴露SocialMediaActivity介面來方便Agent呼叫。
在C4S和Social Media整合的相關場景中,使用者可以通過關注微信公眾號來繫結一個特定的BusinessPartner(以下簡稱BP), 從而達到通過使用者在系統中自定義的微信Channel來直接與C4C服務模組中的工作人員直接互動的目的。而Activity是針對指定的BP所進行的活動,例如建立ticket,點贊,回覆等。故而完整的業務流程如下:
-
獲取系統token
-
獲取已關聯的BP資訊
-
建立ticket資訊
-
評論/點贊/回覆操作
-
資料清理
-
BeforeClass: 執行獲取token的準備工作。
-
BeforeMethod: 建立/獲取已關聯的BP資訊。
-
Test: 特定業務的測試案例。本處對Activity的層級和操作內容進行檢查,因此有2個測試方法。
-
AfterMethod:清理已建立的Activity。此處需要重點說明是,為避免後臺錯誤資料對應用正常使用的影響,每一次執行都需要對增量資料進行清除處理,保持環境乾淨整潔。
-
AfterClass: 清理建立的BP資訊。
3. CI(Continuous Integration, 持續整合)
基於Maven工程的整合,本例中使用Jenkins進行示例,與此同時專案工程中需要使用 surefire-plugin( 一個用來執行測試用例的Maven外掛 ) 來配置相關的測試案例範圍。
在pom.xml中配置testng.xml檔案:
testng.xml檔案內容示例:
使用Maven的好處再次體現,只需要簡單配置即可使用:
在Jenkins中加入testng report plugin展示,然後build即可。
雖然我更擅長使用基於Java的Selenium這個UI自動化框架,也明白介面測試完成之後,對UI自動化的巨大幫助,但由於C4S在印度和美國團隊內都使用現有的成型產品SAHI,所以這裡我只介紹SAHI在C4S的應用。
SAHI是Tyto Software旗下的一個基於業務的Web應用自動化測試工具, 通過注入 JavaScript來訪問 Web 頁面中的元素。相對於Selenium等自動化測試工具,SAHI在動態 ID元素查詢和隱式頁面等待處理等方面具有一定的優勢。感興趣的同事可前往官網進行嘗試。
1. 工程結構及說明
此處以Social 案例為例:
-
**DD_CSV: **案例執行的的資料來源
-
**Function_Library: **該目錄中存放已封裝的基本共用函式,如登入、登出、工作中心訪問、表格訪問等。更加細緻的封裝則是將頁面元素抽象到Library中的IDS下,便於統一管理, 如下圖:
-
SCRIPTS: 特定的UI測試案例。
-
SUITE: 測試案例執行的範圍。
2. 案例編寫
此處以RUI專案中SingleTab功能為例進行說明。
MultiTab和SingleTab功能是指在C4S產品中,當使用者在全屏模式下開啟某一個或多個工作檢視時,系統會將多個工作檢視以Tab的形式顯示在工作區中;但是當使用者修改瀏覽器大小到一定尺寸後,工作區中將只顯示活動的那個Tab。
MultiTab顯示時,有活動與非活動Tab之分,同時要適配多個Tab的滑鼠操作切換和通過功能選單的切換。如下圖所示:
SingleTab顯示:只顯示當前活動的Tab,在顯示資料和形式上與MultiTab有差別,同時也要適配通過功能選單的Tab切換。
與此同時,該特性需要測試系統在不同的主題、字型大小下此特性也能正常工作。因此測試案例的流程如下(可參考程式碼註釋部分):
(1) 重置相關特性:瀏覽器大小,主題,字型大小,檢視型別,頁面預設過濾器
(2) 訪問特定的工作檢視並顯示特定資料,驗證全屏模式下活動狀態的/非活動狀態的MultiTab的顯示和Tab上資料的正確性
(3) 縮小瀏覽器大小:
-
驗證Tab上資料正確性
-
修改系統主題,驗證SingleTab的顯示
-
修改字型大小,驗證SingleTab顯示
3. CI整合
基於Jenkins的強大的外掛功能,C4S通過將Jenkins與GTP(內部缺陷管理平臺)的整合完成CI排程和執行。
UI自動化的CI整合,使得C4S產品的迴歸測試的效率大大提升。以今年8月份釋出的版本為例,手工迴歸的測試案例目前已接近 7000 個。如前文所述,諸多的測試案例在每個迭代中持續的迴歸測試,則是一項耗時又耗力的工程。而且這僅僅只針對迴歸測試所執行的案例。
從手工迴歸測試案例的數量不難看出,快速反饋系統功能狀態機制在持續交付鏈中的重要性。而在對介面進行全覆蓋測試之後,對UI自動化覆蓋迴歸測試主流程的需求也愈加強烈。
在C4S,我們藉助Jenkins 並行測試完成UI自動化,並使用郵件通知測試結果。在節省人工迴歸成本的同時,使得產品管理團隊能夠在短時間內快速、全面瞭解系統功能的執行情況,並給與團隊成員質量的信心。與此同時,在出現模組功能失效甚至是系統當機時,這種快速反饋鏈的建立為開發人員儘早儘快修復問題爭取了時間,減少了後續修復的時間成本。
就目前的測試覆蓋需求而言,由內到外的介面覆蓋及端到端的UI覆蓋,在滿足底層穩定可靠的同時,也保證前端功能的可用性。對於SAP質量工程師而言,工作內容遠非測試工作這一項內容,從團隊成員質量意識的提升到單元測試覆蓋及檢查;從測試工作到團隊質量反饋,都是SAP質量工程師在每日工作中需要去花心思琢磨的。而從團隊利益著手,考慮每一項質量活動的價值和意義,對質量工程師來說是一項全域性觀的考驗,也是一場質量與效率的平衡。
以上就是我今天關於C4S自動化的分享,如有疑問或進一步探討,歡迎聯絡我們,感謝閱讀。
相關閱讀
要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2286458/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SAP Cloud for Customer裡Sales Order和Sales Quote的建模方式Cloud
- 淺談自動化測試
- 淺談倉儲UI自動化之路UI
- 淺談自動化構建之grunt
- 淺談自動化構建之gulp
- 淺談自動化測試框架開發框架
- JB測試之旅-淺談自動化知識
- [淺談 ui 自動化專案的個人套路]UI
- 談自動化精神
- Android 談談自動化測試Android
- 淺談SAP專案管理專案管理
- SAP C4C裡如何實現Sales Unit和Seller的自動determination
- 【自動化】淺度分析自動化行業,深度好文!行業
- 淺談App的啟動最佳化APP
- 淺談redis持久化Redis持久化
- 淺談webpack優化Web優化
- 淺談模組化
- 淺談APS生產排程在自動化排產考慮的約束
- 淺談SAP諮詢行業的衰落行業
- Service Cloud 零基礎(二)Knowledge淺談Cloud
- 淺入深出Vue:自動化路由Vue路由
- [自動化]淺聊ansible的冪等
- 談談最近做的一個自動化平臺
- 淺談Java序列化Java
- 淺談前端模組化前端
- 淺談優化if...else優化
- 淺談SAP期末清帳和重分類
- SAP CRM Fiori應用如何啟用Sales Office和Sales Group兩個欄位
- SAP C4C Opportunity和SAP ERP Sales流程的整合Unity
- 淺談動態規劃動態規劃
- VBA驅動SAP GUI實現辦公自動化(一)GUI
- 使用Selenium自動化測試SAP CRM WebClient UIWebclientUI
- Salesforce Consumer Goods Cloud 淺談篇三之 行動計劃(Action Plan)相關配置SalesforceGoCloud
- 淺談資料的表格化
- 淺談模組化開發
- 淺談斜率最佳化DP
- 淺談小程式效能優化優化
- 效能優化,實踐淺談優化