?譯者 | 朱先忠
審校 | 孫淑娟
簡介
我們正處在人工智能的黃金時代。人工智能方案的采用使得企業更具創造性、競爭力和快速響應能力。軟件即服務(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?