李俠,華為技術有限公司、數據通信系統測試高級專家(首席)。畢業后就職華為北京研究所,現為華為數據通信系統測試首席專家,目前主要負責數據通信產品系統測試技術研究和能力建設,構建數通數字化測試系統,保障路由器、交換機、安全網關等數據通信產品的測試設計、執行和評估的質量和效率。 擅長領域:測試對象建模、測試分析設計方法、韌性測試。 ? ? ?
大到國家的數字經濟,小到企業的數字化變革,數字化成為最近幾年各行各業的熱門話題,那么到底什么是數字化? ? ? 提到數字化,很多人容易和信息化混淆,兩者既有區別也有聯系,也有不少專家對此進行了論述,本文嘗試用另一個視角去看數字化,以及數字化為測試帶來的變化。 ?
本書是麥克盧漢在1964年出版的《理解媒介》,是他關于媒介定律的開山之作,其中一段話對理解數字化有很好的啟示:電子媒介是中樞神經系統的延伸,其余一些媒介,尤其是機械媒介,是人體個別器官的延伸。舉個例子,我們的汽車是腿的延伸,電話是聽覺的延伸,沿著這個思路,數字化本身也是一種電子媒介,它本質上是對人類神經系統的一種延伸。 ?
相對于信息化的管理思維,數字化是一種業務思維,如果把測試工作也看做一種業務,我們希望數字化為測試業務帶來一種“延伸”,我們稱這種延伸為“數字化測試”,按照實現的程度,數字化測試應該具備如下三個特征: ? ? ? ?
特征一:連接 ? 連接拓展測試感知。數字化能夠記錄從測試分析到設計、執行的測試業務全生命周期數據,并在這個數據基礎上,建立更多的連接,構建更豐富的數據模型,實現全生命周期的數據閉環。這大大超過了我們通過閱讀文檔、面對面交流獲取的信息和連接。 ? ? ? ? ??
特征二:智能 智能提升測試認知?;跀底只瘶嫿ǖ臏y試連接,輔助以智能化技術,測試人員會加快、加深對被測系統的理解。 ? ? ? ??
特征三:數字世界 最后,隨著數字化測試的不斷發展,實現物理世界和數字世界的業務對象的一致,我們會在數字空間中構建一個與真實世界平行的測試孿生世界,從而,這個孿生世界將改變測試的工作模式。 ?
數字化要為業務帶來增益,如果測試是一種業務,那么測試的業務目標是什么? ? ? 不論哪種類型的測試,測試的目標都圍繞著覆蓋全、周期短和成本低這三個核心目標。那么,數字化對這個目標有什么推動作用?我們通過三個維度進行對比分析: ? ? ? ? ?
用例有效 ? 傳統測試工作主要依賴于個人經驗和知識,數字化以后,將會引入知識工程和程序分析技術,能夠幫助測試更快更好地獲取輸入信息。 ? ? ? ? ?
過程高效 ? 傳統測試過程依賴人工操作和自動化運行,隨著數字化的發展,將會變成知識驅動和AI使能,使測試更趨近于超自動化。 ? ? ? ? ?
閉環增效 ? 在測試的持續改進閉環上,傳統做法是人工開展缺陷分析,做一些缺陷的總結。數字化以后,可以通過數字世界的測試數據閉環來實時完成測試業務閉環改進。 ?
數字化測試也是產業發展對測試的訴求。以華為數據通信產品測試為例,演進歷程分為三代:1.0->2.0->3.0。在1.0->3.0的過程中,被測系統從一個簡單的計算機網絡、1G帶寬,單核單進程的系統,演進到全速率、全連接和全系統。測試系統隨著被測系統的演進也是在不斷變化的。最初在1.0階段,測試工作主要是用例手工執行,以覆蓋功能為目標。2.0階段,引入了DFX測試、場景測試、自動化工廠和自研工具。3.0階段,傳統的測試很難再滿足被測系統的演進,需要測試具備海量場景覆蓋的能力、更高可靠性和安全韌性測試的能力、組件測試的能力,這對測試提出了更高的要求。 ?
被測系統的變化直接驅動了測試的變化,測試想要看清被測對象,講清測試覆蓋,就必須思考要做怎樣的改變。結合數字化,我們提出了構建被測系統的數字孿生,構建測試能力的數字大腦。被測系統的數字孿生,指將我們對被測系統的理解轉換為數字世界的模型,測試能力的數字大腦,指將測試人員多年積累的測試能力進行數字化沉淀。
? 基于這樣一個目標,把整個測試設計分解為三個要素:
要素一:測試對象數字化建模
要素二:測試能力數字化沉淀和演進
要素三:測試設計數字化,高效構建測試系統。 ?
要想數字化測試對象,先要“解構”被測系統。這里引用錢學森錢老對系統的定義“系統是由相互作用、相互依賴的若干組成部分結合而成,具有特定功能的有機整體,而且這個整體又是從屬于它的更大系統的組成部分”。這個定義里有兩個關鍵要素,一個是“組成部分”,即系統元素,一個是“相互作用相互依賴”,即系統關系。被測系統,既然是一個系統,就一定具備這兩個要素。 ? 解構被測系統,就是以測試(用戶)的視角建模系統元素和系統關系。上圖以路由器為例,單機系統由組件(含軟件和硬件)組成,多個單機系統又可以組成解決方案。如果以單機系統為被測系統,用戶可見的特性和硬件可以提取為系統元素,解決方案場景(簡稱場景)和系統實現機制(簡稱機制)因為決定了特性和硬件相互作用相互依賴的方式,可以提取為系統關系,其中場景確定了特性的應用組合關系,機制決定了特性的實現依賴關系。總結來說,解構被測系統,就是以用戶的視角找到系統元素,然后再根據應用和實現上的約束找到系統關系。 ?
找到被測系統的系統元素和系統關系后,就可以對被測系統進行測試建模。這里有兩個概念容易混淆,一個是被測系統,一個是測試對象,本文中被測系統是客觀存在的系統,也就是開發人員開發出來的,能夠賣給用戶的產品,而測試對象是測試如何看待一個被測系統,是測試語言描述的被測系統,是通過解構被測系統得到的系統元素和系統關系,重構成測試對象。
上圖以路由器為例,基于“特性”這個系統元素建模測試對象,可以采用共性特征聚合的建模方法,具備共性特征的一組特性抽象為一類測試對象,如IP路由、IP業務等。對于同一類測試對象,可以按照對象業務演進過程繼續逐級細化,如對于一個路由協議,首先要能夠建立鄰居,建好鄰居以后能夠發布路由,發布路由以后因為路由過大,需要區域和進程進行隔離控制,因為需要過濾不同的路由,又產生了策略和過濾器等,這些可以作為路由這個測試對象的細化分析維度。 ? 針對每一個細化后的測試對象,都有屬于這個對象的“屬性”,相比開發的設計規格,“屬性”更接近產品規格,是從用戶使用的角度結構化一個測試對象。如IP單播鄰居,從外部來看,有鄰居狀態、鄰居容量等性能指標,從內部來看,有多種影響因素,如系統資源使用情況等。 ?
測試能力數字化是數字化測試的第二個要素,相對測試對象數字化難度更大。因為“能力”這個詞語不僅與知識相關,還與經驗相關。要想數字化測試能力,首先要對測試能力進行結構化定義。上圖以數據通信產品的測試能力為例,匹配系統工程能力架構做了分層聚合,自頂向下分別是流程層、邏輯層和技術層: ? ? ? ? ?
?流程層 流程層描述的是測試業務流對應的作業活動能力,如測試分析能力、測試策略制定能力、測試設計能力等,主要是根據測試活動構建。 ? ? ? ? ? ?
?邏輯層 ? 邏輯層是支撐測試作業活動的作業基礎能力。以上圖為例,要做測試分析,需要完成組網分析、部署分析和行為分析,要做測試設計,需要完成因子設計、判定設計和用例生成等。 如果一個能力包含很多內容,很難做到很好的聚合,可以再進行分層。以上圖為例,邏輯層又分為組合構件和基礎構件,組合構件是對流程層能力的分解,如測試分析能力分解為靜態組網分析能力、業務部署分析能力和動態行為分析能力,基礎構件是測試作業的原子能力,如報文的行為,操作的行為,流量的行為等。組合構件由基礎構件支撐實現,如動態行為分析由報文行為、流量行為等組成。 ? ? ? ? ??
技術層 ? 技術層是專業的測試能力,這些專業測試能力包括質量屬性測試技術,也包括通用技術。質量屬性測試技術包括不同質量屬性的測試模式分析能力、測試設計能力和判定設計能力以及評估能力。通用技術如AI、程序分析、知識圖譜等,這些目前在各個領域應用比較好的技術都可以拿來為測試服務。 ?
下面詳細介紹測試能力數字化中的兩個能力,作業基礎能力和專業能力。上圖展示了對動態行為分析這個作業基礎能力的分析過程。首先對動態行為這個概念做一個解讀,所謂的動態行為是相對于靜態組網來說的,以路由器為例,設備上網運行后,組網基本上是確定的,靜態就是體現這種相對很少變化的特點。而動態行為指設備上網運行后,由于外部和內部影響因素的不斷變化,會對被測系統產生不同的激勵,動態就是體現這種實時變化的特點。 ? 對于動態行為,分為外部和內部兩種影響因素,從外部來看,有配置操作、網絡事件等變化,還可能有攻擊等安全事件。從內部來看,來自系統的架構以及設計的影響,如定時器變化。基于這個分析,對動態行為的數據模型進行分類,分為配置類、操作類、資源類、網絡事件類、報文類和流量類。對其中的流量類再進行展開分析,如果要描述一個流量的數據模型,先要定義一條流量。一條流量的變化來自于流量內容變化和流量發送特征變化,其中流量內容變化就是流量涉及報文的字段變化,流量發送特征變化包括發送/接收的端口變化、發送速率變化、發送時長變化等,這些就組合成描述一條流量的維度。確定了流量數據模型的維度,就可以定義每個維度的默認值和取值范圍,只要對這些數據模型的不同字段進行賦值,就可以變化一條流量。 ?
下面介紹專業能力,專業能力大部分來自質量屬性的測試能力,以上圖為例,質量屬性與設計同源,對運行類質量屬性進行分解,分解出來的每種測試能力都會數字化一個測試模式庫。測試模式庫是測試模式的集合,測試模式是對產品實際應用中普遍存在(反復出現)的各種缺陷,所提取的可復用的測試方法和手段,是測試知識積累固化的核心資產。測試模式庫有四個來源,正向來源包括業界標準,現網應用和設計規范,而逆向來源主要是缺陷分析或者問題改進。 ? 數字化測試模式庫與傳統測試模式庫的區別在于,測試模式中的信息如何轉換為數字化表示。測試模式主要包含兩類信息,測試步驟和預期結果,測試步驟可以分解為不同的動態行為,預期結果可以體現為結果判定。動態行為之前我們已經講過,不同質量屬性的相同動態行為復用相同的行為模型,通過不同的數據進行區分,結果判定在本文后續的討論中講解。每一條測試模式,用這樣的數字化方式描述,形成一個數字化測試模式庫。 ?
在測試對象數字化和測試能力數字化之后,就可以開展測試設計了。這里所說的測試設計數字化,更多的是說怎么用測試對象數字化和測試能力數字化,快速實現測試設計。
以上圖為例,左上角展示了特性、架構和硬件三個測試對象大類,以及每個大類細化的測試對象小類,特性對象大類細化到了單播鄰居、單播路由,架構對象大類細化到了消息,硬件對象大類細化到了主控板。右上角展示了可靠性測試能力,其中網絡級可靠性細化到震蕩、超限,網元級可靠性細化到故障。 ?
在討論測試對象和測試能力如何相互作用之前,先回顧一下什么是測試?測試就是對被測對象進行一系列操作,評估預期結果是否達到用戶要求的過程。如果把一系列操作提取為測試模式,測試就是在測試對象上應用某些測試模式,測試設計就是找到測試對象和測試模式的應用關系。
傳統的測試設計依賴測試人員的知識和經驗,通過把測試對象和測試模式之間的關系抽象為規則,可以將這種依賴降低到最低。如“單播鄰居”是一個與狀態相關的對象,“震蕩”是一個對狀態進行變化的模式,那么“單播鄰居 +?震蕩”就形成了交互關系,同時“單播鄰居”也是一個與容量相關的對象,“超限”是一個對容量變化的模式,那么“單播鄰居 +?超限”就形成了另一個交互關系。這種交互結果稱為“測試因子”,可以類比看做測試對象類的預制件,比如單播鄰居這個測試對象下有一個或多個方法(測試因子)。
當單播鄰居這個對象下的具體特性(如ISIS)實例化的時候,可以直接繼承單播鄰居的測試因子,并對測試因子中的具體操作進行實例化。 ? 自動化架構也按照上述過程進行組織,具體的架構可能不同,建議分別構建測試對象、測試模式類,測試因子是測試對象和測試模式交互后的方法,可以實現測試設計的快速拼裝。 ?
上圖展示了一個完整的測試過程,圖中包含設計空間和測試空間,設計空間里包括設計的過程交付和資產,測試空間包含從測試分析到測試執行的活動,右上角是數字化的模式庫,包括測試對象庫、測試模式庫和測試因子庫,這些資產庫支撐測試設計。下面完整描述一個數字化測試設計活動如何開展: ?
首先,由設計空間場景庫導入需求,包括組網硬件以及對應的業務部署,同時從設計文檔和測試模式庫中提取行為分析,這部分導入和提取的工作都是由作業基礎能力來完成,即組網分析能力、業務部署分析能力和動態行為分析能力。 ?
之后,進入測試設計階段,這里采用了邏輯、數據和判定分離的思想,將測試設計分為三個引擎,測試設計引擎、測試數據引擎和測試判定引擎。測試設計引擎是測試設計技術的集成,提供處理周期技術(PCT)、狀態轉換技術(STT)、數據組合技術(DcoT)等算法。測試數據引擎是根據業務數據模型,生成實例化測試數據,同時實現數據FUZZ,也就是根據數據的取值范圍,通過數據引擎進行FUZZ操作。測試判定引擎是對已經明確的協議標準、設計規范,提取判定規則。傳統的測試用例每個用例都要自己編寫預期結果,依賴個人能力,即使提取一些公共檢查,也僅限于資源等通用檢查,而判定引擎除了通用檢查,更多的是業務層面的判定生成。這三個引擎可以在測試設計中被直接調用,相比之前每一個用例都是煙囪式構建,數字化后的測試設計是自動且復用的,既提升了測試設計效率,也減少了測試設計的質量差異。同時,這三個引擎的能力是開放的,可以根據測試能力的不斷提升去完善。 ?
基于前面的數字化測試設計,我們實現了一些應用。上圖展示的數字化測試應用是測試連接設計,這里的連接包含兩個信息,一個信息是測試同源設計,一個信息是自動分析。測試同源設計指數字化后,同源了場景樹、功能和組件,按照測試對象數字化模型自動導入設計信息。自動分析指針對導入信息,可以通過作業基礎能力里的靜態組網分析能力自動生成組網,通過作業基礎能力里的靜態組網分析能力自動提取動態行為模型,這里需要構建數字化模型的時候,定義一些文檔描述范式,這樣就可以基于范式的規則來提取。 ? 測試連接設計有什么好處呢?最直接的好處就是做到了全生命周期數據的閉環,不會因為某個測試人員或者開發人員的離開,而導致這部分信息的斷鏈。 ?
上圖展示的數字化測試應用是測試連接標準。對于數據通信領域,協議一致性是一個重要的測試活動,用來驗證產品是否滿足協議標準的要求。數字化以后,我們可以把協議的標準順從表直接轉換成一個報文的因子庫,具體做法就是根據標準分析提取出關鍵字段,確定字段取值范圍。然后通過協議標準分析,提取協議測試模型,這個測試模型通常是一個處理周期模型,最后將報文注入測試模型,就可以完成測試設計。這里面還有一個隱含技術,就是報文的自動化封裝。報文的編解碼都是通過自動化編寫一個框架和邏輯來實現的,當協議標準發生變化時,直接映射到報文因子有變化,或者測試模型有變化,通過修改報文因子和測試模型,就可以完成對標準變化的閉環。 ?
上圖展示的數字化測試應用是測試連接客戶場景。這里的連接主要指將客戶場景和測試設計關聯起來,這里引入場景因子的概念,場景因子是基于網絡分層架構,按照客戶場景的典型應用方案,把整個網絡分成應用層、網絡層、鏈路層和物理層,然后針對每層抽象對接的業務,如網絡層抽象出公網信令場景,再抽象出域內公網單播信令場景因子。通過逐級抽象,最終形成場景因子庫,場景因子是場景拼裝的組件,可以完成一個新的場景。
當一個新的用戶場景出現時,根據用戶場景的特點,選取合適的場景因子,并基于場景庫的維度進行交互分析,如信令層面有什么樣的交互,隧道層面有什么樣的交互等,用這種方式完成新場景的拼裝。當外部客戶場景發生變化,會同步觸發分層架構建模的場景因子變化,繼而直接影響測試設計變化,所以測試設計到用戶場景的閉環也是打通的。 ?
除了以上的應用,我們還期望數字化能夠給測試帶來什么?讓我們再基于數字化的幾個特征做一些展望。第一個是連接拓展測試感知,上圖展示了兩種連接:測試對象的連接、測試模式的連接。測試對象的連接,就像人腦一樣,人腦神經的連接越多,對事物的認識就越深刻、越迅速,效率也越高。那么怎樣才能把連接提升起來呢?上圖右邊的兩張圖給出兩個方式,一個是inside/內部視角,一個是outside/外部視角。內部視角就是我們怎么認知被測系統,在對測試對象的不斷細化過程中,最后細化到屬性的時候,實際是外部視角和內部視角的對接界面。比如我們細化一個IP路由對象,從IP路由->單播鄰居->影響因素,數字化前測試人員可能只知道單播鄰居與接口相關,在inside視角下,程序分析會幫助測試人員打開實現單播鄰居的這段代碼,識別出一些規則特征,比如單播鄰居與xx索引、xx表項有關系,這是測試人員以前所感知不到的,這就是從inside視角對測試對象連接進行了更深入的挖掘。除了建立更深的連接外,數字化還可以幫助測試人員建立更廣的連接。在inside視角挖掘過程中,還可以建立從鄰居->接口->硬件端口的連接,這些在數字化前測試人員是很難感知到的。
測試模式的連接,多數是從外部視角來看的,比如網絡上有一些震蕩,這些震蕩影響了鄰居,就建立了鄰居和震蕩之間的連接。這是一個簡單的例子,如果引入機器學習技術,會發現之前想象不到的一些連接會建立起來,比如說芯片的休眠和接口震蕩是不是有聯系,以測試人員的知識和經驗并不知道,當數字化以后,它就變成了一種可能性,會發現很多以前所不知道的連接,這是最有趣的地方。古代的時候,有句諺語:早霞不出門,晚霞行千里,現在我們知道這是有科學依據的,但是對古人來說,是通過幾代人經驗總結下來的,并不知道具體的科學依據。這和連接拓展感知有點像,就是通過一些數字化的方式,引入更多技術,讓測試人員在不用關注內部細節的情況下,拓展理解被測系統的能力和提取測試方法的能力。 ?
第二個特征是智能提升測試認知。這里智能就是AI,上圖列舉了測試活動所涉及到的一些AI技術,以及期望能給測試帶來哪些提升。如果說連接是幫測試人員找到感知不到的信息,那么AI則能幫助他們分析和決策,比如利用AI技術可以識別相關性很高的用例,能做到智能推薦、智能篩選,AI也可以幫助測試人員識別一些風險,去提升測試人員的學習和分析決策能力。AI有很多技術都可以使用在測試領域,包括知識圖譜、機器學習、深度學習和語言處理。這些技術可以同時應用在開發領域和測試領域,在測試領域的作用會更大,因為對于開發來講,是從無到有去構建一個系統,每一行代碼都是確定的,即使在集成為一個系統以后可能會出現問題,那些問題主要是測試人員挖掘的范圍。測試就像在一個浩瀚的茫茫大海里找東西,這個難度是非常高的,在不可能窮舉所有問題的情況下,怎樣高效地挖掘出最有價值的問題,就是測試的目標。AI技術能夠幫助測試縮小范圍,或者找到推薦的方向。 ?
第三個特征是數字世界改變工作模式。上圖是對數字化后測試模式的展望,構建數字化測試系統,以目標系統的視角,測試評估從“執行評估—>設計執行雙評估”。傳統測試都是圍繞著開發做的交付系統進行評估,數字化后,測試和開發同源同一個目標系統,測試和開發都根據對目標系統的理解去開展工作,開發和設計基于系統架構構建被測系統,測試從用戶視角構建測試系統,在這個過程中,測試并不是一直等到最后編碼結束才去做測試執行驗證,而是在設計過程中,針對設計系統進行反饋和評估,在編碼完成之后,針對交付系統進行一個執行評估。比如通過測試設計發現場景庫遺漏,發現功能有遺漏,這是對設計系統的評估,系統交付后可以用用例和自動化腳本對交付系統進行評估。這個過程正好是設計與測試、開發與測試相互校驗的過程,需求分析和系統設計以及編碼過程中都會產生缺陷,而每一個階段的缺陷在本階段被發現就是最高效的。 ? 數字化不是一個具體技術,它改變的是測試人員的思維方式,改變的是整個測試業務模式。數字化是從數據到業務,通過數字化技術使能業務創新。理解數字化并把它帶入測試領域,會帶來意想不到的視角和能力提升。 ? ?
編輯:黃飛
?
評論