基於人工智慧系統的測試——第一、二部分

凌晨兩點半發表於2020-04-24

基於人工智慧系統的測試

2019年11月,CSTQB(中國軟體測試認證委員會)將和KSTQB(韓國軟體測試認證委員會)以及滔瑞中國一起合作,聯合舉辦一場公開課。此次公開課是以AI(人工智慧)為主題,進而深入探討並瞭解“基於人工智慧系統的測試”一話題。同時,此次的公開課還邀請了來自英國的Dr.Stuart Reid先生作為此次的講師,為大家帶來一場精彩的聽學盛宴。
目前本次課程的學習大綱已正式釋出。大綱的全稱為--“AI Testing-Testing AI-Based Systems Syllabus v1.3”。這份大綱共68頁。全英文內容。

由於大綱是全英文的,閱讀起來有難度,藉助翻譯軟體翻譯為中文,方便閱讀學習。

主要內容是
第一部分:人工智慧和測試的介紹
第二部分:人工智慧系統的特性和驗收標準
第三部分:機器學習
第四部分:機器學習的效能指標和基準
第五部分:人工智慧系統測試簡介
第六部分:人工智慧系統的黑盒測試
第七部分:人工智慧系統的白盒測試
第八部分:測試人工智慧的測試環境
第九部分:使用人工智慧進行測試

引言
傳統系統的測試已被很好地理解,但是基於AI的系統對我們的日常生活變得越來越普遍和至關重要,它帶來了新的挑戰。
這篇內容涵蓋了人工智慧(AI)的關鍵概念,我們如何確定驗收標準以及如何測試基於AI的系統。
這些系統通常是複雜的(例如深層神經網路),這給測試人員帶來了許多新的挑戰和機遇。
在整個文件中,首字母縮寫詞AI代表“人工智慧”一詞。

一、人工智慧和測試的介紹

1.1 “人工智慧”和“人工智慧效應”的定義

1.2 AI使用案例

1.3 AI使用和以後的市場

91%的技術主管認為AI將成為下一次技術革命的核心。

1.4 基於AI系統的故障和測試的重要性

1.5 圖靈測試和AI的歷史

1.6 AI技術

搜尋演算法•推理技術–邏輯程式–規則引擎–演繹分類器–基於案例的推理–程式推理•機器學習技術–人工神經網路•前饋神經網路•遞迴神經網路–貝葉斯網路
–決策樹–深度學習•卷積神經網路–強化學習–轉移學習–遺傳演算法–支援向量機
結合使用這些技術,可以將一些最有效的基於AI的系統視為AI混合體。

1.7 AI開發框架

TensorFlow –基於資料流圖,可用於Google的可擴充套件機器學習
PyTorch-用於使用Python語言進行深度學習的神經網路
MxNet –亞馬遜用於AWS的深度學習開源框架
Caffe / Caffe2-使用C ++和Python介面編寫的深度學習開放框架CNTK –微軟認知工具包(CNTK),一種開源深度學習工具包
Keras-用Python語言編寫的高階API,能夠在TensorFlow或CNTK上執行

1.8 NARROW VS一般AI和技術奇異性

到目前為止,所有成功的AI都是“狹窄”的AI,這意味著它可以處理一項專門的任務,例如下圍棋,充當垃圾郵件過濾器或駕駛自動駕駛汽車。
通用AI比狹窄的AI先進得多,它是指一種基於AI的系統,它可以處理許多完全不同的任務,與人類一樣。
通用AI也被稱為高階機器智慧(HLMI)。
2017年釋出的一項針對AI研究人員的調查報告稱,HLMI何時實現的總體平均估計值是到2061年。在這些AI研究人員中,有15%的人認為HLMI對人類會產生不良或非常不良的後果。
一個普遍的假設是,一旦實現了一般的AI(並且允許基於AI的系統訪問網際網路),基於AI的系統將使用對可用資訊,處理能力和儲存的訪問進入自我迴圈-改進。
片刻之後,這將意味著該系統將變得比人類更智慧(繼續變得超級智慧)。
這種智慧爆炸發生的時間點稱為技術奇點。

1.9 AI標準化

標準化旨在促進創新,幫助提高系統質量並確保使用者安全,同時建立一個公平開放的行業生態系統。
AI標準化發生在各個級別,包括:國際標準組織、區域標準組織、國家標準。

1.10 AI的監管標準

監管標準可以分為兩大類:適用於安全相關係統的標準和適用於非安全相關係統的標準,例如財務,公用事業和報告系統。
與安全相關的系統是那些可能對人,財產或環境造成傷害的系統。

二、人工智慧系統的特性和驗收標準

2.1 AI特有的特徵

與任何系統一樣,基於AI的系統具有功能性和非功能性需求。
基於AI的系統具有 模型質量 未包含的一些獨特特徵,例如適應性,自主性,演化,靈活性,偏差,效能,透明度,複雜性和不確定性。
這些非功能特性將在下面進行更詳細的描述,並提供有關對其進行測試的建議。
基於AI的系統全套質量特徵可用作測試計劃期間使用的checklist的基礎,以用於確定需要通過測試緩解的風險。
請注意,與任何一組非功能性需求一樣,這些特性之間可能存在一些相互作用,重疊和可能的衝突。

2.1.1 適應性(Adaptability)

適應性是系統對環境變化做出反應以繼續滿足功能性和非功能性需求的能力。
自適應系統的屬性包括自我配置,自我修復,自我保護和自我學習。
適應性要求系統主動或被動地收集有關其操作環境的資訊。
探索(主動收集資訊)為自我完善提供了有用的資訊,但也危險,並且系統在探索時應格外小心安全相關情況。
適應性要求應指定系統應適應的環境變化,並且還應包括對適應過程本身的要求,例如適當時的最大適應時間。
適應性測試通常基於環境修改或突變。功能性和非功能性需求均應進行測試,並且最好以自動化方式進行迴歸測試是一種合適的方法。
還應該測試系統執行的適應過程,以確定例如系統是否在所需時間範圍內適應,以及系統是否處於為實現適應而消耗的資源的約束範圍內。

2.1.2 自主性(Autonomy)

自主是系統在沒有人工干預的情況下持續工作的能力。
應該為系統指定預期的人工干預水平,並且應該是系統功能要求的一部分(例如,“系統將保持巡航狀態,直到發生以下情況之一……”)。
自主也可以與適應性或靈活性結合起來考慮(例如,系統應該能夠在沒有人工干預的情況下保持給定水平的適應性或靈活性)。
在某些情況下,基於AI的系統可能會表現出過多的自主性,在這種情況下,人類可能有必要從中奪取控制權。
測試自主性的一種方法是嘗試迫使系統脫離其自主行為,並在未指定的情況下請求干預(一種否定性測試)。
負樣本測試也可以用來嘗試欺騙系統,使其認為應該在何時進行干預(例如,通過在其業務範圍邊界處建立測試方案,以建議將邊界值概念應用於方案測試)來控制系統。

2.1.3 演化(Evolution)

演化與系統應對兩種型別的變化的能力有關。
第一種型別的更改是使用者需求更改時-這可能有多種原因,甚至可能是由於使用者與系統本身的互動所引起的。
第二種型別的更改是系統更改其行為時,這可能是由於系統在使用時學習了新的行為。系統行為的變化並不總是積極的,而這種系統特性的消極形式可以稱為退化,漂移或陳舊。
系統演化測試通常採取維護測試的形式,需要經常執行。
此測試通常需要監視指定的系統目標,例如效能目標(例如,準確率,精確率和召回率),並確保沒有資料偏差引入系統。
該測試的結果可能是對系統進行了重新培訓,也許使用了更新的培訓資料集。

2.1.4 靈活性(Flexibility)

靈活性是系統在超出其初始規格的環境中工作的能力(即根據實際情況更改其行為以實現其目標)。靈活性應在要求中明確規定。
這可以通過使用嚴格程度不同的動詞來非正式地實現,例如“必須”,“可能”和“接近”,或者可以通過規範中的概率和可能性(例如RELAX)更正式地實現。
需求語言)。
可以使用不同的技術機制來實現靈活性,例如反應性,主動性,互動性,適應性或自學。
測試靈活性需要進行測試以擴充套件系統的原始效能。
變形測試(請參閱第6.4節),其中包括使用變形關係擴充套件初始規範(在指定限制內)可用於測試靈活性

2.1.5 偏差(Bias)

偏差是對機器學習模型提供的預測值與實際值之間的距離的度量。
在機器學習(ML)中,其思想是識別並歸納訓練資料中的模式,並在模型中實施這些模式以對其進行分類和預測。
如果訓練資料不能代表預期可用於操作的資料,則該模型很可能會顯示出偏差。
偏差測試可以分兩個階段執行。
首先,可以通過評審將其從訓練資料中刪除,但這需要專家評審員,他們可以識別可能造成偏見的特徵。
其次,可以通過使用無偏差測試集的獨立測試來對系統進行偏差測試。當我們知道訓練資料存在偏見時,就有可能消除偏見的根源。
或者,我們可以接受該系統包括偏差,但是通過釋出訓練資料來提供透明度。

2.1.6 效能指標(Performance Metrics)

效能指標是為機器學習(ML)模型定義的,其中最流行的是準確率,精確率和召回率。accuracy, precision and recall
通常在ML框架(例如TensorFlow)中提供對效能模型的測試,該框架將為給定的測試資料集計算這些度量。

2.1.7 透明性/可解釋性(Transparency)

透明性(也稱為可解釋性)是衡量基於AI的系統得出結果的難易程度的一種度量。
與許多非功能性需求一樣,可能會與其他非功能性特徵發生衝突-在這種情況下,可能需要權衡透明度以達到所需的準確性。
解決潛在透明度問題的一種方法是釋出用於建立(不透明)部署模型的框架,訓練演算法和訓練資料的選擇細節。
可解釋的AI(XAI)領域涵蓋了使基於AI的系統更易解釋的方法。
透明度測試是一項定性活動,理想情況下,要求目標受眾(或一組有代表性的測試人員)執行測試,以確定基於AI的系統的工作是否可以理解或所提供的解釋是否令人滿意。

2.1.8 複雜性(Complexity)

基於AI的系統(尤其是通過深度學習實現的系統)可能非常複雜。
由於問題的複雜性,基於AI的系統通常用於無法解決的問題(例如,基於大資料進行決策)。如前所述,深度神經網路擁有超過1億個引數並不罕見。
這種系統的複雜性產生了一個預測性的問題。
它可能需要一些專家花費一些時間和討論才能就複雜的基於AI的系統的單個測試用例結果達成共識,並且理想情況下,我們希望執行許多測試,這是不可行的如果我們不得不依靠專家(緩慢地),產生預期的結果。
可以使用多種測試技術來解決測試預測性的問題,包括 A/B testing, back-to-back testing and metamorphic testing

2.1.9 不確定性(Non-Determinism)

不能保證非確定性系統每次執行都會從相同的輸入產生相同的輸出(與確定性系統相反)。對於非確定性系統,使用相同的前提條件和測試輸入集的測試可能會有多個(有效)結果。確定性通常由測試人員假設-它允許重新執行測試並獲得相同的結果-當將測試重新用於迴歸或確認測試時,這非常有用。然而,許多基於AI的系統是基於概率實現的,這意味著它們並不總是從相同的測試輸入中產生相同的結果。基於ai的系統還可以包含其他非決定論的原因,比如併發處理(儘管這些通常出現在複雜的傳統的、非ai的系統中)。非確定性系統的測試要求測試人員解決以下問題:對於同一測試案例,多個實際結果可能被認為是正確的。
對於確定性系統,對正確性的檢查是對“實際結果是否等於預期結果”的簡單檢查,而對於非確定性系統,測試人員必須對所需的行為資料有更深入的瞭解,以便可以得出合理的結論,驗證測試是否通過。

2.2 用人類的價值觀對基於AI的系統進行預警

基於AI的系統的兩個主要問題。
首先,指定的功能可能無法與人類的價值觀完美地吻合,而人類的價值觀(最多)很難確定。
第二個問題是,任何功能強大的智慧系統都將希望確保其自身的持續存在並獲取物理和計算資源-不是為了他們自己,而是為了成功完成其分配的任務。

2.3 副作用

2.4 獎勵黑客(reward hacking)

2.5 規範基於AI的系統的道德要求

相關文章