平臺化測試難度大?京東教你如何用無人測試實現產品質量效率雙提升
本文內容節選自第六屆全球軟件案例研究峰會,時任京東B2B產品質量團隊負責人楊瑾老師分享的《無人測試如何助力京東提升產品測試效率與質量》實錄,重點分享:無人測試,創新測試方法論,接口測試案例。(PPT+文稿)。
楊瑾老師擁有10年以上互聯網及傳統行業測試經驗,擅長自動化測試、業務質量測試、性能測試以及持續集成等多領域;行業內資深測試專家,京東測試技術開放日發起人。
編者按:2017年11月9-12日,第六屆全球軟件案例研究峰會在北京國家會議中心盛大開幕,現場解讀2017年「壹佰案例榜單」。時任京東B2B產品質量團隊負責人楊瑾老師分享的《無人測試如何助力京東提升產品測試效率與質量》實錄的案例分享。
【內容簡介】隨著業務的發展,系統平臺化勢在必行,但每一個改動都代表著大量的回歸工作,在這樣巨大的工作量下,人工測試不能夠保證測試百分百的成功。京東團隊通過創新測試方法論,實現了質量與效率的雙雙提升,直接省略測試環境的接口測試成本;通過自動化預發環境完成測試,預計提升測試效率60%以上。
1
實踐背景
隨著京東B2B業務發展進入高峰期,開發與維護成本也相應的提高了許多。需求的增長迫使研發團隊必須改變以前的系統架構,提高效率。
所以,平臺化勢在必行。
平臺化測試痛點
1.巨大回歸量
平臺化之前的系統架構簡單,每個系統有自己完整的交易流程。而現在要把十幾個B2B業務線的共性抽離出來重構。在這樣的變動後,回歸量無疑是十分巨大的。
而且出於成本控制和業務壓力兩個方面,團隊必須要做到在有限的資源下既支持平時業務需求測試,還要更好的保障平臺化的工作量。
2.牽一發動全身
以交易平臺為例,從下圖可以看出,交易平臺基礎服務眾多。測試前,我們首先要做策略設計。交易平臺的基礎服務,像MID、OC,分別做了查詢、下單、封裝、校驗、數據同步、搜索、分頁,如果測試重點放錯,就會變得十分復雜。
對上的業務系統和對下相同,都是以接口的方式反饋數據。我們在與研發溝通讀寫接口的關系時,發現在整個交易平臺接口的比例中,寫接口比例很少,且測試簡單。但讀接口測試步驟十分繁瑣,不僅數量大且必須要和以前的接口反饋的結果做對比。
3.牽涉細節太多
如下圖,上面為老系統測試接口,下面為新系統邏輯。
在新老系統重構時,老系統存錢單位是分,取時單位是元,重構時雖然將單位統一成了元,但是由於數據遷移過程中,接口層邏輯處理出了問題,導致新系統中取出的錢比實際高了10倍。
這樣的例子在平臺化過程中還有許多。大多是因為參與的人多,半途中臨時加進來的資源也很多,很難從頭到尾,方方面面的了解研發在每個過程中做了什麽事情。
這是團隊測試中遇到的一個難點。
2
解決方案
之前存在的問題總結下來為:
-
功能回歸耗時過長,有漏測的可能。
-
依賴人設計,編寫,維護以及過程間驅動。
解決方案前後
解決方案前:
1.團隊會先梳理平臺化過程中有多少個接口需要被測,明確測試對象。
2.測試人員開始做不同場景下的用例測試,設計不同參數保證場景反饋數據是正常的。
3.在工程裏用頁面測試工具,以設計好的用例來做接口測試,激活反饋結果。
4.將結果與老系統數據作對比,結果一樣可認為重構是成功的。
評價:
-
對人的依賴太強,有漏測可能性:例如在重構過程中大量的業務線融合在一起,對於團隊來說比較陌生容易漏測,在用例設計時也會產生一定的風險。
-
測試效率低,測試成本高:人工對比容易產生誤差且耗時長。
解決方案後:
1.團隊梳理平臺待測接口。
2.記錄用戶行為,日誌打標改造——可以減少由於測試人員業務不熟帶來的漏測可能性。
3.上線運行,產生大量數據。
4.從日誌中提取需要數據,如接口方法,入參等,作為測試用例——在這一步裏脫離了對測試人員的依賴,提升了用例質量和生成效率。
5.在工具裏進行對比。
6.人工復檢——因為機器檢查時可能會反饋出時間戳和無用的參數。
評價:質量與效率雙雙提升。
讀接口自動對比方案
1.研發日誌打標。
2.將數據放入京東大數據平臺。
3.工具在大數據平臺內按一定規則篩選數據。
4.將數據變成用例,入庫。
5.測試人員進行配置。
解決方案中關鍵點
1.對比的基準——還原系統線上的真實場景
研發在日誌裏面按一定規則生成來提供測試需要的數據,這樣做不僅可以提高測試效率,還可以激勵研發工作動力。
2.減少人工幹預
無人測試關鍵在於沒有人的幹預,但這並不會以犧牲質量或犧牲其他做為代價。
團隊會在多業務線應用內,做一些配置,配置後根據要求將數據同步到大數據平臺,隨後日誌會按照一定規則去提取相應的數據,打造測試用例。
3.自動對比
測試人員在這其中做了幾件簡單的事:開發比較簡單的平臺,實現了配置;應用的配置;環境的配置,規則跳過的配置。
典型問題
-
Value不一致
-
缺少Key
-
小數位差別影響對外 API
-
KEY-VALUE不一致
實踐效果
質量上的提升:
在接口處即可攔截問題,有效阻止了上線以後的修復成本。也提高了團隊信心。
效率上的提升:
-
零用例設計與編寫成本——用例來自於用戶真實操作場景,涉及全面且自動生成。
-
零測試環境執行成本——節省掉測試環境的測試時間。
-
零預發對比全自動化——對160萬以上用例訪問並對比返回的思路。
3
經驗總結
本方法重點聚焦於測試方法創新與過程改進。
經驗教訓:
錯誤數據太多,無法人工查看每一條錯誤數據,只能采樣抽查。
成功要素:
-
測試要善於發現工作中的樂趣。
-
在工作中善於思考與突破,針對團隊遇到的問題,有可落地的定制化解決方案。
-
優良的團隊文化,多和研發溝通。
-
有一定的測試開發能力。
-
對現有的業務系統熟悉。
成功經驗總結:
-
測試人員做好規則制定。
-
工具開發以及與研發同步的規則。
-
研發配合做相應的改造。
-
盡早上線。
-
團隊達成一致,認可。
4
未來展望
-
錯誤分類智能化,減少此環節人力投入。
-
加入代碼覆蓋率分析,可以更直觀看到執行後新老版本質量提升。
Q&A
Q: 什麽是日誌打標改造?自動化用例生成時自動化數據是怎麽生成的?
A: 日誌是知曉系統一切的,包括用戶在系統裏面的任何操作,但是它沒有記錄,原因是研發沒有打日誌。我們可以讓研發在調接口的時候讓日誌按一定的格式把接口、方法入參,按標準的輸出。
Q: 用例生成是相對滯後的,那如何保證新內容、新版本上線的質量?
A:用例第一次上線是不能用的,因為存在滯後,在第二次上線就可以用了,因為需要有上線運行的版本幫它收集日誌。在第一次上線時,只能人工比對。
以上內容來自楊瑾老師的分享。
平臺化測試難度大?京東教你如何用無人測試實現產品質量效率雙提升