人工智能在軟件測試

學習如何測試係統

這個問題困擾我們中的大多數測試人員在人工智能的時代,“我們需要改變我們目前的測試方法來測試學習係統?“簡而言之,答案很簡單,是的,但僅略!“這是為什麼呢?過去多次表明,新技術(例如,移動設備,雲技術)明顯影響我們如何交付軟件。不出所料,軟件測試需要與這些變化,所以這些技術需求(至少)一些輕微的適應我們當前的軟件測試方法。

底線。隨著技術的進步,所以必須我們的測試方法。

經過仔細觀察,這是顯而易見的。學習係統已經在我們的私人生活常伴我們左右,所以毫不奇怪,這些學習係統也會影響我們的日常測試例程。學習係統(例如,深層神經網絡)是最有可能在軟件測試下一個大事件。但是,記住,這隻是另一個技術。這不是黑魔法。

是什麼意思“測試”

我們先找出是什麼意思“測試”認真談論學習係統測試的影響。測試的目的是關閉之間的差距,我們知道我們不知道透露我們的軟件中存在的問題。我們測試的原因不會改變,但是我們會怎麼做。我們怎麼縮小知識差距呢?它在兩個方麵:我們測試軟件通過檢查(正式測試)和探索(探索性測試)。

檢查

檢查手段評估算法決策規則應用到特定的觀察軟件的軟件產品(邁克爾·波頓)。檢查隻是提供了一個對這個問題的回答,“這斷言通過或失敗嗎?“這意味著檢查(例如,通過一個自動化的測試用例執行)提供了一個二進製的結果(或真或假,是或否,0或1)。這是我們目前的理解。檢查機器可決定的,因此,檢查通常被稱為正式的測試。

檢查可以通過機器或人類。是由機器完成的時候,我們稱之為機器檢查,當它是由人類,我們簡單地稱之為人類的檢查。檢查確認現有的信仰。這樣的測試往往關注的是我們所知道的(Maaret Pyhajarvi)。

探索

與檢查(正式的測試),探索性測試是一種思維方式,不僅僅是一個簡單的機械的身體檢查。在這裏,我們要算出是否在一個產品有問題,而不是問一些斷言通過或失敗。這種決策通常需要各種許多人類觀測的應用(例如,質疑,研究、建模、推理)。

因此,探索性測試方法評估軟件產品通過學習它通過勘探和試驗(邁克爾·波頓)。這意味著探索性測試不是關於創建測試用例。它肯定不是您創建的測試用例的數量。它是關於執行實驗(詹姆斯·巴赫)。因此,探索性測試正式測試的基礎。這是關於分析潛在的風險。所以,這樣的測試往往會專注於我們所不知道的。

學習測試係統這是什麼意思?

學習測試係統這是什麼意思?它隻表示兩件事。

首先,我們需要學習。我們必須獲得知識的內部工作學習係統(例如,神經網絡)在這些係統使我們能夠揭示問題在未來通過強大的測試實驗。在這裏,你已經運用探索性測試因為你關注你不知道係統的事情。

此外,你應該挑戰假設每個人(例如,開發人員)對係統沒有任何經驗證據。這可能使您能夠揭示基本問題起源於對係統錯誤的假設。這可能聽起來像一個困難和艱巨的任務。但是沒有看到困難;看到了機會,而不是威脅,接受新的挑戰,抓住這個機會。我們更相信,通過深思熟慮的探索和實驗,你將成為一個更強大的測試人員。

學習

進入人工智能領域的一個方法是先跟你的開發者朋友來了解你們的具體學習係統測試。此外,參加在線課程對AI大局。我們強烈推薦的在線課程deeplearning.ai由Andrew Ng(斯坦福大學)。不用擔心;我們沒有一個既得利益在促進這門課。值得一試。不要退縮,不要害怕。這不是火箭科學(無論如何)。這是你的電話。

第二,我們需要改變我們的檢查。我們當前的測試技術主要是基於固定的輸入和輸出。測試人員本能地認為,鑒於一些輸入,輸出將會持續,直到軟件經曆了一些變化。這不再是真正的學習係統。在這些係統中,沒有精確了。輸出不再是固定的;它會隨著時間改變。它將成為美聯儲體係是隨著時間的推移,越來越多的數據(迪Mamnani)。

適應

這意味著我們需要打破我們建立測試模式。這聽起來像是我們必須扔掉我們目前的測試方法和從頭再來。不用擔心;情況並非如此。我們當前的測試的方法仍然是需要的。他們仍然適用。我們隻需要稍微調整測試這些係統。而不是靜態的測試係統,我們現在還要求測試動態係統。這不是一個大問題。相信我們。

如何係統的學習

在我們深入學習係統測試的細節,我們需要了解兩個基本技術通過這些係統可以學習。

  • 監督學習。在下麵幾節中,我們將關注的焦點監督式學習係統因為監督學習是迄今為止最常用的技術在各種工業用例。監督學習,你輸入數據和相應的輸出數據。在這裏,學習係統的工作是學習函數的映射數據從輸入到輸出數據。目標是近似這種映射函數很好,當你有新的輸入數據,你可以預測輸出數據精度高。
  • 無監督學習。相比之下,對無監督學習係統,你隻有輸入數據。該技術主要用於理解數據結構和/或數據分布。我們的目標是學習更多關於數據。無監督學習係統常常被描述為係統自學。

驗證一個學習係統是如何運作的嗎

讓我們更具體。上述概念(學習、適應)的核心經驗報告安吉瓊斯(Twitter,自動化工程師)。文章展示了如何測試廣告的應用程序,使用深層神經網絡來確定最好的廣告業務可以提供到一個特定的客戶。你可以點擊上麵的鏈接閱讀整篇文章,但是我們認為我們會提到一些值得注意的東西,豐富他們自己的想法,並添加來自其他經驗報告的結果。驗證所需的步驟學習係統按預期的方式工作如下。

學習

如前所述,您需要做的第一件事是了解係統如何處理數據,如何學習,如何利用信息以數據的形式使未來的決策。這可以幫助您確定範圍的正確性。

火車

你可以測試你的學習係統之前,您必須給它一些食物來學習。這食物是數據。接下來你需要做的是創建一個訓練數據集,從傳統的角度來看,這意味著您將輸入與預期的輸出。在這個訓練數據集,輸入數據(如圖像)標簽與預期的輸出(例如,它是一隻貓)。通過這樣做,你設定一個期望係統必須知道。

注意,與訓練數據通過轟擊你的學習係統,你允許學習係統創建其內部模型的現實。它將數據中尋找規律。您提供的更多的數據,在你的訓練數據變化越多,越學習係統將改進模型。這意味著,你把係統訓練到一個特定的知識狀態。就像從一個純測試角度配置你的學習係統。但是記住,通過提供數據,您已經創建一個學習係統必須知道期望的模式。

我們的建議是簡單的開始,然後逐步增加每個測試後數據的豐富性。最後,需要對訓練數據集的代表真實係統的使用。注意,這些係統通常提供的數據非常敏感,所以你可以輕易被愚弄了。

測試

依照你的訓練數據集,然後您必須開發一個測試數據集來檢查是否學習預期的係統管理模式。注意,係統並不會返回一個二進製的結果(例如,“是的,圖像中有一隻貓!”)。在企業應用程序中,我們通常不檢查二進製諸如貓、狗或其他動物圖片。它更像是,“是最好的廣告顯示到一個特定的客戶根據客戶的購買行為?“但是我們如何驗證呢?下麵讓我們看一看一個例子,帶來一些光明進入這個黑暗。

列車服務示例

假設您希望實現列車服務的定價。你的目標是鼓勵乘客使用火車在非高峰時期。所以,你想要一個係統,實時動態地調整價格,使其在經濟上對乘客的吸引力。因此,你想要一個係統,讓乘客時考慮乘坐火車不太擁擠。

這樣一個係統通常有不同的定價策略,並試圖優化兩個方麵。它試圖平衡客流量一整天,它試圖增加客流量的總收入。現在,你可能會問,“為什麼不使用傳統的數學規則的優化呢?“事實證明,這些基於規則的係統不實用了,因為這些場景的複雜性。所以,學習係統的目標是要達到的狀態(1)廣泛的客流量和(2)收入,至少覆蓋成本。

現在,想象一下,係統已經被訓練。你如何檢查這個係統優化這兩個因素基於一些給定的輸入?例如,假設您將提供一組測試數據,一群人從某個位置坐火車到其他位置以同樣的價格和在高峰時間(例如,8點)。但這並不是鐵路機構想要什麼。

係統現在要求顯示不同的旅行時間和不同價格的騎手,客流量擴散,總收入至少涵蓋了鐵路部門的成本。這意味著係統將返回一個客流量和價格分布。例如,假設係統(基於提供的輸入)顯示,60%的人應該在高峰時間坐火車(例如,8點)最高價,25%應該坐火車在非高峰時間(例如,早上7點)以較低的價格(例如,在一個10%的折扣),和15%應該坐火車在非高峰時間(例如,9點)以一個更低的價格(例如,在一個15%的折扣)。這些是假電話號碼;不要混淆他們與現實。然而,問題是如何檢查是否最優的解決方案。嗯,你不能。你不能檢查是否這是最好的解決方案,可以實現。你隻能檢查係統是否執行所需的優化基於你的期望。

基於你訓練係統的方式,你獲得的期望係統應該如何反應新輸入數據。例如,您可以定義一個範圍的平均客流量分布和平均收入的範圍你期望對新輸入數據。然後你可以比較這些期望係統的結果。你不檢查二進製的結果(例如,貓在圖像)了。它更像是測量結果在統計術語。你測量結果的統計學意義,確定係統不隨機分發客流量和調整價格。係統必須做到根據學習模式。雖然模糊,這是唯一的聲明結束時你可以讓您的測試。

報告

永遠不要忘記,你主要作為一個測試人員是提供信息給他人(如開發人員,產品所有者),使他們做出明智的決定。編寫一個測試報告就像總結上麵所述的所有活動。應該包含你所知道的關於學習係統和你的期望係統在某些情況下允許其他人發現你可能不正確的假設。

你應該提供詳細信息如何訓練係統和你的期望是什麼,允許他人來決定是否訓練數據足夠有意義。你應該包括信息如何驗證您的期望讓別人解釋你的(統計)的結論。你所要做的就是溝通的自信程度,係統按預期的方式工作。

最終的想法

測試學習係統背後的魔力不是黑魔法。沒有魔法在幕後。讓我們達成一個明智的聲明安吉瓊斯:“我了解到,無論多麼智能機器,盲目相信他們是不明智的。雖然我們應該擁抱新技術,它是必要的(測試人員)不允許別人來說服我們,任何軟件已經不僅僅需要測試的點。我們必須繼續的問題,詢問,並提倡我們的客戶服務。”

Baidu
map