譯者| 朱先忠
審校| 孫淑娟
#簡介
我們正處於人工智慧的黃金時代。人工智慧方案的採用使得企業更具創意、競爭力和快速回應能力。軟體即服務(software-as-a-service,SaaS)模式,加上雲端技術的進步,使軟體生產和消費過程越來越成熟。
普遍存在的一個事實是,大多數組織更喜歡「購買」現成的人工智慧技術,而不是「建構」自己的技術。因此,SaaS供應商,如Salesforce、SAP、Oracle等,都先後引進了人工智慧平台功能,建構了人工智慧即服務(AI-as-a-Service,AIaaS)模型。誠然,這種發展趨勢使得企業更容易採用人工智慧方案。
測試技術,對於一般的品質保證(QA),尤其在人工智慧平台的採用中起著至關重要的作用。而且,在採用人工智慧平台時,測試變得非常複雜,原因如下:
- 測試人工智慧需要智慧測試流程、虛擬化雲端資源、專業技能和人工智慧工具。
- 雖然人工智慧平台供應商會頻繁發佈各種版本,但是測試的速度應該盡可能確保同樣快。
- 人工智慧產品通常缺乏透明度,無法解釋;因此,很難令人信服。
- 不僅是人工智慧產品,訓練模型的品質和資料的品質也同樣重要。然而,一些傳統的驗證雲端資源、演算法、介面和使用者配置的測試方法普遍效率低。這樣一來,對於學習、推理、感知、操作等的測驗就變得同樣重要。
例如,在一個即插即用人工智慧解決方案模型中,人工智慧邏輯由軟體供應商提供。作為消費者的程式設計師負責建立接口,提供用於訓練邏輯的數據,在解決方案上下文中訓練邏輯,並將體驗擴展到最終用戶。
首先,與傳統測試一樣,我們應該測試資料、演算法、整合和使用者體驗。其次,為了測試解決方案的功能適合性,應該驗證訓練模型,這將使測試擴展到推理、規劃、學習等方面。第三,應該開發驗證AI演算法本身的方法。最後,人工智慧邏輯可能使用的工具,如搜尋、最佳化、機率等,也應包含在功能驗證中。本文中將引入一種關於人工智慧測試框架的實用觀點。
人工智慧平台方案的核心必要性:持續測試
透過高度自動化實現的QA成熟度對於AI平台的採用至關重要。隨著企業對其基礎設施和工程方法進行現代化,發布週期可能會變得越來越短且高度自動化。持續整合(CI)技術已被證明是有效的。當程式碼一天登入幾次,然後重新編譯時,它會產生多個QA回饋循環。因此,要成功應用CI,建置和部署流程的自動化至關重要。自動化是CI的基礎,而測試自動化使連續交付(CD)成為可能。總之,CD由CI驅動。敏捷和DevOps模型的發展加速了開發和測試之間的回饋循環,使持續測試(CT)、持續開發和持續交付制度化。
在企業中,資料、應用程式、基礎架構等都在不斷變化。同時,SaaS供應商不斷升級AI產品,以提高使用者體驗和開發效率。在這種動態情況下,建立一個持續的測試生態系統至關重要;這樣一個完全自動化的測試環境不僅可以確認不斷變化的企業IT資產,還可以驗證AI產品不斷變化的版本。
歸納來看,建立一個良好的CT生態系需要考慮以下因素:
- 將自動化測試腳本移轉到企業版本控制工具。自動化程式碼庫就像應用程式程式碼庫一樣,應該駐留在版本控制儲存庫中。透過這種方式,將測試資產與應用程式和資料資產結合起來將是有效的。
- 計劃將自動化套件與程式碼/資料建置部署工具集成,以支援集中執行和報告。將程式碼/資料建置與其各自的自動化套件保持一致非常重要。當然,在每次建置過程中,基於工具的自動部署是絕對必要的,以避免人為幹預。
- 將自動化套件分為多個測試層進行,以便在每個檢查點實現更快的回饋。例如,人工智慧健康檢查可以驗證在介面和資料結構中部署更改後服務是否正常。人工智慧煙霧測試可以驗證關鍵系統功能是否正常運行,並且不會出現阻塞缺陷。
- 測試範圍也要涵蓋訓練模型。人工智慧測試還應該測試訓練模型,該模型可以證明解決方案是否學習了給定的指令,包括有監督和無監督的指令。多次重現相同的場景以檢查反應是否符合給定的訓練是至關重要的。同樣,作為測試的一部分,建立一個流程來訓練關於故障、異常、錯誤等的解決方案,也是至關重要的。如果仔細考慮異常處理,就可以建立容錯能力。
- 計劃在整個AI方案週期內管理人工智慧訓練/學習。 CT相關的設定應有助於繼續從測試到生產的學習,從而減少對遷移學習的擔憂。
- 透過智慧回歸進行最佳化。如果整體迴歸的執行週期時間明顯較長,CT應根據受嚴重影響的區域在運行時劃分出子集,以便在合理的時間視窗內提供回饋。有效地使用ML演算法建立機率模型,以便選擇與特定程式碼和資料建置一致的回歸測試,從而幫助高效優化雲端資源的使用並加快測試速度。
- 始終定期規劃進行全面的迴歸測試。這項工作可以安排到夜間或週末,這取決於其與週期性建造頻率的一致性。這是CT生態系統的最終回饋,其目標是透過運行並行執行的執行緒或機器來最小化回授時間。
當測試沒有人工幹預時,故障、錯誤和任何演算法異常都會成為人工智慧解決方案的發現來源。同樣,測試期間的實際使用情況和使用者偏好也成為訓練的來源,應該在生產中繼續下去。
確保AIaaS方案中的資料可擷取
資料品質是人工智慧方案中最重要的成功標準。無論是企業內部或外部都存在有用的資料。提取有用的數據並將其提供給AI引擎的能力是高品質開發的要求之一。提取、轉換和載入(ETL)是一個傳統術語,指從各種來源收集資料、根據業務規則轉換資料並將其載入到目標資料儲存的資料管道。 ETL領域已發展到企業資訊整合(EII)、企業應用整合(EAI)和企業雲端整合平台即服務(iPaaS)。不管技術進步如何,對數據保證的需求只會變得更重要。資料保證應解決功能測試活動,如Map Reduce流程驗證、轉換邏輯驗證、資料驗證、資料儲存驗證等。此外,資料保證還應解決效能、故障切換和資料安全性的非功能方面。
結構化資料更容易管理,而源自企業外部的非結構化資料則應謹慎處理。流處理原理有助於及早準備好運動中的數據;也就是說,透過事件驅動的處理,一旦從網站、外部應用程式、行動裝置、感測器和其他來源產生或接收到數據,就立即對其進行處理。此外,透過建立品質關卡的辦法檢查品質是絕對必要的。
推特、Instagram、WhatsApp等訊息平台都是受歡迎的資料來源。使用這樣的數據時,它們透過基於雲端的消息傳遞框架跨各種技術連接應用程式、服務和設備。深度學習技術可以使電腦從這些資料載入中學習。其中一些數據需要藉助神經網路解決方案來解決複雜的訊號處理和模式識別問題,包括從語音到文字轉錄、從手寫識別到臉部辨識等許多領域。因此,應建立必要的品質關卡,以測試這些平台的數據。
以下是人工智慧驅動的QA專案在設計時應注意的一些事項。
- 自動化品質關卡:可以實作ML演算法,根據歷史和感知標準來決定資料是否「通過」。
- 預測源頭起因:對資料缺陷的源頭起因進行分類或識別,不僅有助於避免將來出現錯誤,而且有助於不斷提高資料品質。透過模式和相關性,測試團隊可以實現ML演算法,將缺陷追溯到源頭起因。這有助於在資料進入下一階段進行自我測試和自我修復之前自動執行補救測試和修復。
- 利用預感知監控:ML演算法可以搜尋資料模式中的症狀和相關編碼錯誤,例如高記憶體使用率、可能導致中斷的潛在威脅等,有助於團隊可以自動實施修正步驟。例如,人工智慧引擎可以自動加速並行進程,以優化伺服器消耗。
-
故障轉移:ML演算法可以偵測故障並自動復原以繼續處理,並能夠註冊故障以進行學習。
確保AIaaS方案中的人工智慧演算法
當已知軟體系統的內部結構時,開發測試就很簡單了。然而,在AI平台解決方案中,AI和ML的「可解釋性」較低,即輸入/輸出映射是唯一已知的元素,開發人員通常無法查看或理解基礎AI功能(例如預測)的機制。儘管傳統的黑盒測試有助於解決輸入/輸出映射問題,但當缺乏透明度時,人類將難以信任測試模型。當然,人工智慧平台解決方案是一個黑盒子;有一些獨特的人工智慧技術可以幫助驗證人工智慧程式的功能;這樣一來,測試就不僅僅是輸入和輸出映射的問題了。出於設計考慮,人工智慧驅動的一些黑盒測試技術包括:
- #後驗預測檢查(Posterior predictive checks,PPC)模擬擬合模型下的複製數據,然後將其與觀測數據進行比較。因此,測試可以使用後驗預測來「尋找真實數據和模擬數據之間的系統差異」。
- 優化測試案例的遺傳演算法。產生測試案例的挑戰之一是找到一組數據,這些數據在作為被測試軟體的輸入時會導致最高的覆蓋率。如果這個問題得到解決,測試案例就可以得到最佳化。有一些自適應啟發式搜尋演算法可以模擬執行自然演化過程中的基本行為,例如選擇、交叉和變異。在使用啟發式搜尋產生測試案例時,有關測試應用程式的回饋資訊用於確定測試資料是否符合測試要求。回饋機制能夠逐漸調整測試數據,直到滿足測試要求。
- 用於自動產生測試案例的神經網路。這些是可以獲得、儲存和處理經驗知識的物理細胞系統。他們模仿人腦來執行學習任務。神經網路學習技術用於自動產生測試用例。在這個模型中,神經網路在一組應用於AI平台產品原始版本的測試案例上進行訓練。網路訓練僅針對系統的輸入和輸出。然後,經過訓練的網路可以用作人工預言器,用於評估AI平台產品的新版本和可能存在故障的版本產生的輸出的正確性。
- 基於模型的迴歸測試選擇的模糊邏輯。雖然這些方法在已經使用模型驅動的開發方法的專案中很有用,但一個關鍵障礙是模型通常是在高度抽象的層級創建的。它們缺乏在模型和程式碼層級測試案例中與覆蓋率相關的執行追蹤之間建立可追溯性連結所需的資訊。基於模糊邏輯的方法可用於自動細化抽像模型,以產生允許識別可追溯性連結的詳細模型。這個過程引入了一定程度的不確定性——這種不確定性可透過應用基於細化的模糊邏輯來解決。此方法的邏輯是,根據與所用細化演算法相關的機率正確性將測試案例分類為可重新測試的測試案例。
有關此部分知識更詳細的內容,請參考《機器學習模型的黑盒測試》。
確保AIaaS方案中的整合和介面
所有的SaaS解決方案,包括AIaaS方案在內,都會帶有一組預先定義的Web服務。企業應用程式和其他智慧資源都可以與這些服務交互,從而實現承諾的結果。如今,Web服務已發展到能夠提供平台獨立性,即互通性的程度。這種靈活性的提升使大多數Web服務能夠被不同的系統所使用。當然,這些介面的複雜性也相應地要求提高測試水準。例如,在一種CI/CD環境中,在每個建置應用程式包中檢查這些介面的兼容性更成為一項關鍵的任務。
目前,這方面的主要挑戰是實現虛擬化Web服務,並驗證AI平台解決方案與應用程式或物聯網介面之間的資料流。概括來看,介面/Web服務測試複雜的主要原因包括:
- 沒有可測試的使用者介面,除非它與另一個可能尚未準備好測試的來源已經整合到一起。
- 這些服務中定義的所有元素都需要驗證,無論哪個應用程式使用它們或使用頻率如何。
- 必須驗證服務的基礎安全參數。
- 透過不同的通訊協定連接到服務。
- 同時呼叫服務的多個通道會導致效能與可擴充性問題。
於是,測試介面層顯得尤其需要:
- 模擬元件或應用程式行為。人工智慧應用程式與人、機器和軟體介面的複雜性應在人工智慧測試中模擬,以確保正確性、完整性、一致性和速度。
- 檢查非標準程式碼的使用。使用開源程式庫和採用真實世界的應用程式可能會將非標準程式碼和資料帶入企業IT環境。因此,這些內容都應該得到驗證。
確保AIaaS方案中的使用者體驗
在主要透過遠端方式工作和生活的新型社會現實中,客戶體驗已成為企業成功的必要條件。這是人工智慧方案中一個更大的目標。非功能測試是一種經過驗證的現象,它透過驗證效能、安全性和可訪問性等屬性來提供有意義的客戶體驗。一般來說,下一代科技增加了體驗保障的複雜性。
以下是在整個人工智慧測試框架中確保使用者體驗的一些重要設計考量。
- 為體驗而設計,而不是為體驗而測試。企業人工智慧策略應該從最終用戶的角度出發。確保測試團隊代表實際客戶是很重要的。儘早讓客戶參與設計不僅有助於設計,還可以儘早獲得客戶的信任。
- 透過建立測試最佳化模型實現敏捷性和自動化。從「蜂擁」期的測試週期就應該考慮使用者體驗的問題,因為針對使用者體驗的早期測試將有助於實現一種建構測試優化的開發週期。
- 採用敏捷方法的持續安全性至關重要。讓企業安全團隊成為敏捷團隊的一部分:1)在測試的「蜂擁」期即擁有並驗證組織的威脅模型;2)評估SaaS AI解決方案架構可能具有的所有多通道介面的結構漏洞(從假想的黑客的角度)。
- 速度至關重要。人工智慧資料的屬性,如體積、速度、多樣性和可變性,迫切要求進行預處理、平行/分散式處理和/或流程處理。效能測試將有助於優化分散式處理的設計,這是使用者對系統期望的速度所必需的。
- 文字和語音測驗的細微差別也是很重要的。許多研究調查表明,對話類人工智慧仍然是公司議程的首要議題。隨著擴增實境、虛擬實境、邊緣人工智慧等新技術的不斷湧現,測試文字、語音和自然語言處理等要求都應該能夠解決。
- 模擬有助於測試極限。檢查使用者場景是體驗保證的基礎。說到人工智慧,測試異常、錯誤和違規將有助於預測系統行為,進而幫助我們驗證人工智慧應用程式的錯誤/容錯等級。
- 信任、透明度和多樣性。驗證企業用戶對人工智慧結果的信任度,驗證資料來源和演算法的透明度要求以降低風險為目標並增強對人工智慧的信心,確保資料來源和使用者/測試人員的多樣性來檢查人工智慧道德及其準確性,所有這些都至關重要。為了做到這一點,測試人員不僅應該提高領域知識的水平,還應該了解大型企業IT中資料、演算法和整合流程的技術訣竅。
結論
總之,持續測試是每個企業採用人工智慧平台方案的基本要求。所以,我們應該採用模組化方法,完善數據、演算法、整合和經驗保障活動的設計。這將有助於我們創建一個持續的測試生態系統,從而使得企業IT可以隨時準備好接受內部和外部AI組件的頻繁變化。
譯者介紹
朱先忠,51CTO社群編輯,51CTO專家部落格、講師,濰坊一所大學電腦教師,自由程式設計界老兵一枚。早期專注各種微軟技術(編著成ASP.NET AJX、Cocos 2d-X相關三本技術圖書),近十多年投身於開源世界(熟悉流行全端Web開發技術),了解基於OneNet/AliOS Arduino/ ESP32/樹莓派等物聯網開發技術與Scala Hadoop Spark Flink等大數據開發技術。
原文標題:Quality Engineering Design for AI Platform Adoption#,作者:Anbu Muppidathi
以上是人工智慧平台方案中的品質工程設計的詳細內容。更多資訊請關注PHP中文網其他相關文章!