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