天天看點

《騰訊iOS測試實踐》一一1.2 工程效率

本節書摘來自華章計算機《騰訊ios測試實踐》一書中的第1章,第1.2節,作者:丁如敏 王琳 等著

  更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

總體來說,工程效率就是研發效率(包含測試效率)。這裡我們會把測試效率單獨提出來進行說明,因為這是與測試工程師相關度最大的工作。研發效率,其實就是讓産品上線的時間更快(在品質有保障的前提下),大多數時候是說與研發流程相關的(不局限于靈活流程,feature team研發模型),例如包含但不局限于以下活動。

需求評審:需求評審機制以及更新通知,避免需求有改動而沒有及時同步到相關角色。

代碼品質:靜态代碼掃描,千行代碼缺陷率等。

架構評審:代碼架構的讨論以及評審。

bug流程:bug生命周期,避免随便修改bug狀态以及備注缺失。

code review:代碼評審,如果有代碼評審委員會就更好了。

dogfood:自己做的産品自己(項目各成員)先體驗。

showcase:完成某個特性,可以通過會議針對某個特性進行展示,一般由産品經理主持。

上面提到的活動,隻有通過整個項目團隊(各個角色)的通力配合,才能更加高效。

再提一下測試效率,這大多數由測試工程師主導,也是測試工程師最主要的工作内容。測試效率包含但不局限于以下這些活動。

測試周期:測試與研發周期是密切關聯的,包括疊代測試、內建測試、回歸測試、上線測試等,每個階段都要把握好測試效率和測試資源配置設定。

測試設計:包括需求覆寫度、用例覆寫度、用例執行效率等。

自動化測試:使用自動化執行的方式進行測試,可以快速得出測試結果,節省人力成本。

靜态代碼分析:使用一定的工具來對代碼進行靜态掃描,提前發現代碼隐藏的問題。

測試技術創新:通過對測試技術的創新,例如精準測試、機器學習等方式,來變更測試方式,大幅度提升測試品質和效率。

接下來舉兩個例子具體看下。

1.2.1 自動化測試

自動化測試于20世紀90年代才開始逐漸成熟,特别是靈活研發的流行以及推崇的tdd模式,自動化測試也逐漸流行起來。對于自動化測試,我們還是得多關注其投入産出比(roi),特别是對于ui自動化測試。業界自動化測試金字塔模型建議做單元測試或者接口測試多于ui自動化測試。關于自動化測試投入産出比,請參閱第6章介紹的内容。

對于ios平台上的自動化測試實踐,我們也有在不同方向上的嘗試(參見第5章),并都有不錯的收獲。相關自動化測試的開展還需要有一些自動化測試架構的支援(詳細自動化測試架構的内容會在第7章介紹),qq浏覽器(iphone)測試團隊主要移植google開源的earlgrey架構來作為自動化測試的基礎架構。本節先簡單介紹幾種主流自動化測試類型。

bvt(build verification test)

業界現在流行持續傳遞的模式。那麼每次持續內建編譯出包後,自動化會運作一些基礎功能測試用例,保證版本基礎功能可用,而不會因為新代碼合入影響基礎功能。這部分主要介紹ui自動化測試,當然,随着版本需求的變更,維護成本也會增加。但對于qq浏覽器的ui變更還不是很頻繁,維護成本還相對可控,整體的投入産出也不錯,具體可參考第6章的内容。

2.監控類

根據産品的業務特點,我們會對産品進行一些監控,例如手機qq浏覽器(iphone)項目實作了三種類型的監控測試,即終端視訊嗅探監控、終端feeds流短視訊可播性監控、終端資訊類監控。這部分監控的基礎架構和bvt實作是一緻的,隻是基于業務形态做了調整,采用的也是earlgrey架構并進行了二次開發。可參考第6章關于測試架構的二次開發。

3.性能自動化測試

性能測試涉及各種資料的采集和分析,而資料采集往往很複雜并且非常耗時,性能自動化測試也都集中在資料采集這一塊。目前我們針對頁面速度、産品穩定性、電量、流量、記憶體等各個方面進行性能自動化測試的嘗試,詳細内容請參見第4章。

1.2.2 靜态代碼分析

靜态代碼分析就是在不執行代碼的情況下,通過一定的算法規則(詞法分析、文法分析、單函數分析、代碼段分析、資料流分析、資源分析、依賴鍊分析、更進階的智能邏輯分析)對整個工程的代碼進行分析,以此來找出代碼中的缺陷。這樣就可以提早發現問題,大大降低研發成本。美國軟體工程專家capers jones提出的軟體測試缺陷價值圖如圖1-1所示。

《騰訊iOS測試實踐》一一1.2 工程效率

圖1-1 軟體測試缺陷價值圖

圖1-1中的三條曲線分别代表引入的缺陷、發現缺陷、缺陷修複成本。越是在前期發現的缺陷,修複缺陷的成本越低,越是到後期,修複缺陷的成本越高。通常來說,發現缺陷主要在功能測試、內建測試階段。

如果能夠在coding階段發現大部分缺陷,就能大大降低修複缺陷的成本。靜态代碼分析技術恰恰能夠很好地在coding階段發現部分代碼問題,這樣就能夠大大節約軟體開發成本。

經過實踐論證,ios平台比較好用的兩款工具如下。

目前這兩款工具都是開源的,除了能夠使用其基本的功能外,如果還有其他的業務需求,可以對這兩款工具進行二次開發:添加自己的靜态分析規則和分析算法。

qq浏覽器(iphone)項目采用scan-build工具發現代碼缺陷,如圖1-2所示。

《騰訊iOS測試實踐》一一1.2 工程效率

圖1-2 scan-build工具發現代碼缺陷統計圖

采用infer工具發現代碼缺陷統計圖如圖1-3所示,共發現1275處缺陷。

《騰訊iOS測試實踐》一一1.2 工程效率

圖1-3 infer工具發現代碼缺陷統計圖

每日建構版本時,配置工程會自動采用這兩款工具對工程代碼進行靜态代碼分析,這樣在測試任務前就能發現代碼缺陷,大大降低軟體缺陷修複成本。

繼續閱讀