本文轉自公眾號:晨小菜
人工智能介紹
人工智能是在計算機的幫助下,通過軟件提供智能能力來完成人類的任務。人們的主要目標是為計算機提供人類智能。
人工智能(AI)是在計算機化的幫助下作為一種想法在現實世界中實現的人類思想。有兩件事需要解決。第一是我們如何表示這些知識,第二是如何操作這些知識。這兩件事結合起來,為我們提供了人工智能的實現。
人工智能是計算機能力和邏輯的結合,以非常少的錯誤和完美的精度來解決我們的問題。對那些非常危險或超出人類能力范圍的責任移交給人工智能機器人是一個很好的選擇。人工智能的空間是巨大的,我們只需要思考如何實現這些,使我們的生活更美好。它可以被應用到各種各樣的領域無論是軍事、制造業、汽車、法律、金融、醫療、保健、電腦游戲,還是作為機器人執行人類的日常行動。
人工智能分類
人工智能可以有很多分類,現在我們來舉兩種分類例子。
第一種分類如下:
窄人工智能:我們可以稱之為弱人工智能,這種類型的人工智能被編程和設計來執行一項特定的任務。一個很好的例子就是Siri(蘋果的軟件應用),它是虛擬的個人助理。
通用人工智能:這也被稱為強人工智能。該系統解決或處理需要與人腦同等智力水平的情況,並嘗試多種可能的解決方案,從中選擇最佳方案。
第二種分類如下:
密歇根州立大學(Michigan StateUniversity)計算機科學和綜合生物學助理教授阿倫特•欣策(Arend Hintze)給出的。他將人工智能分為四種類型,包括目前存在的人工智能系統和未來不存在的人工智能系統:
類型1: 反應型機器
IBM國際象棋程序“深藍”就是一個很好的例子,它能夠識別棋盤上的物體,然后思考如何移動這些物體。然而,這種深藍不像人類有任何可以使用的舊記憶,它認為物體可能的最佳行動與現有的情況相關聯,認為對手可能的反擊行動,然后執行他的行動。這些都是情景思維設計的程序,也有其局限性。
類型2: 有限記憶
這些是類型1的升級版本,可以回憶過去的經驗並用它們來分析情況,從而找出最好的解決方案並采取行動。這幾年的車輛自動駕駛就是按這種方式設計的。它們可以觀察周圍的情況,比如說如果一輛車要變換車道,AI使用這些信息來執行其下一步的動作,使得和其它相同方向的汽車保持一致又不影響變化到其它車道的車。當然這些觀測到的信息不是永久的,我們只是利用他們對即將到來的決策分析。
類型 3: 心智理論
這是像人類的大腦一樣思考別人如何行動,思想會影響我們的行為。AI能夠理解人、對象以及其他生物並考慮他們的情緒然后執行自己的決定。當我們能夠與他人的期望和感受相互作用、相互關聯時,我們的工作和表現最好。這個人工智能仍在研究中並沒實現。
類型 4: 自我意識
要了解我們的能力,自我意識是非常必要的。這類人工智能賦予計算機思考和分析自身局限性和現狀的能力,賦予它們利用記憶、學習和決策的意識和自我意識。這種類型的人工智能還沒有實現。
人工智能測試
客戶滿意度是軟件測試的目標,它是在應用程序開發的不同階段執行的連續過程。測試確保測試人員能夠使用測試自動化檢查應用程序的現有實現中的風險和缺陷。它幫助我們及早識別應用程序的故障和缺陷,這些故障和缺陷可能會對將來的最終應用程序造成不利影響。應用程序的調試也應該在測試完成后進行。
測試正逐步從傳統的測試方式轉向自動化,以確保高質量的最終產品。人工智能測試是一個很好的方法,可以使我們在沒有失敗的情況下更高效地達到完美。這使我們向自動化測試的過渡以更快地將人工智能和自動化集成在一起。我們現在使用計算機來代替人工進行大量的測試工作。人工智能可以用來編寫自動化腳本代碼,也可以用來執行這些腳本。提供最少的人力輸入,機器現在能夠執行學習和改進他們的行動。
人工智能剛剛開始它在自動化測試領域的旅程。人工智能機器人現在被用於自動化測試,但這還有待探索的,我們仍然面臨一些人工智能相關的挑戰需要解決。
計算機可以用大量的數據作為輸入,然后可以找到正確模式識別輸入和他們的期望輸出。最后它可以檢查我們提供的輸入數據與它的期望輸出,並給我們通過和失敗的數據集的結果。所有這些都是在提供的算法的幫助下完成的,這些算法使機器能夠識別正確並從業務邏輯中獲得預期的輸出。AI BOT幫助我們與人工輸入進行通信,並執行軟件測試的困難任務。它有助於減少高失敗率,並通過提高測試過程的效率來節省執行成本。
軟件測試中為什么需要人工智能
軟件測試過程是軟件交付生命周期中的一個重要方面。應用程序的開發人員由於時間和資源的局限性執行嚴格的測試是不可能的,所以才需要對一個系統進行缺陷多發地區的測試。我們需要一個完善的集中在核心業務方面並且未來可重用的測試集。
傳統的軟件測試需要大量的時間和人力資源來完成測試任務。所以最好的選擇是利用人工智能自動化測試,它可以節省時間和努力,幫助我們用最少的人力投入實現目標。人工智能測試沒有人為的不一致,並提供更准確的結果,平均使用多台機器執行任務也減少了大量的成本。
基於AI BOT的測試低維護成本。AI算法正在為最終用戶幫助產生最佳質量的軟件,所以智能的AI算法使用是重要的。首先我們需要找到弱點領域和需要執行的任務,然后使用人工智能算法來編寫。一個深思熟慮的AI算法可以幫助測試人員找到大量的缺陷。當開發人員修復這些缺陷時,就可以提供高質量的應用程序。
AI測試的級別
通過智能的應用程序進行軟件測試有一個持續的過渡。關於人工智能測試有5個定義的級別:
第0級: 非自主
為了運行自動化測試用例,我們需要編寫代碼在應用程序上運行這些步驟。一旦測試套件被開發就能在每個交付中重用。
代碼的編寫是由我們手工完成的,以應用程序頁面中的表單為例,每當添加一些功能時,如果添加了一些與該功能相關的新字段,我們就需要添加一個測試。在頁面中添加表單意味着需要創建一個測試來檢查頁面中的所有字段。因此,當測試失敗時,你必須與開發人員確認是否部署了新的開發更改,或者它是一個bug。這種在測試過程中不涉及AI BOT的基本自動化是人工智能測試的0級。
第1級: 自主
我們可以舉一個自動駕駛汽車的例子來解釋這種級別的測試。如果我們為自動駕駛汽車提供良好的視野,那么我們的自動駕駛汽車將更加獨立和強大。同樣的,測試系統如果加入人工智能會加強我們的測試。
如果我們考慮DOM的例子,它能夠在屏幕上找到元素並將其用於自動化,但它將永遠不能識別其他缺陷,如頁面當前位置不正確或某些元素隱藏了頁面的某些部分的可見性。
測試人員查看應用程序頁面的時候, 當特定的操作被執行時,他能一眼識別顯示的所有字段值和檢查是否與預期值一致。他也能夠識別頁面的位置是否如預期正確。相似的我們人工智能應該能夠馬上捕捉到這個。我們的人工智能必須是自給自足的,並能夠考慮所有這些因素,而這些因素是人類在測試網頁元素時手動執行的。所以第1級在參考基線的幫助下執行。
這就是為什么AI算法和它們的重要性出現在畫面中。算法應該被設計成一個智能的視覺,這樣它就能夠識別實際的變化,而不是那些看起來是真正的變化。
人工智能是自我裝備的,我們不需要指定它的所有步驟。一些內置的功能可以自動執行簡單的操作。盡管它仍然讓我們能夠完全控制我們想讓AI在特定情況下如何工作。
人工智能運行測試用例的執行和持續追蹤我們套件的執行狀態,給我們匯總了成功執行的用例,同時通知我們測試集失敗的地方。這為我們提供了識別缺陷和錯誤的自由,這些缺陷和錯誤應該優先考慮,以更好地穩定我們的系統。
第2級: 部分自動化
在上面的第1級:自主里面我們已經討論了如何嚴格的工作通過代碼編寫所有步驟來執行自動化腳本可以很容易地移交給現代人工智能系統。無論是工作還是檢查數據庫值,或驗證屏幕元素或檢查網頁的大小和尺寸可以由人工智能使用算法來測試。
第1級給我們確切的通過和失敗的測試集狀態,但確定優先級和風險與缺陷仍是我們的工作。我們必須分析這些錯誤在我們的系統所帶來的影響是什么,哪些需要在當前版本被修復和交付。這一級未能考慮另一個因素是缺陷的冗余錯誤,例如:如果同樣的問題落在很多測試用例,它會統計每一個缺陷是獨一無二的。
第2級人工智能現在能夠識別錯誤的相似性,它可以聚焦並突出導致這些錯誤的准確問題區域,從而減少冗余缺陷的驗證。
它為我們提供了一組相似的缺陷,減少了人工對類似問題進行分組的工作量。通過這些缺陷,人工可以檢查缺陷的優先級和影響。根據這個分析決定是修復還是忽略當前的問題。
第3級: 條件自動化
在上面的例子中,2級有自己的約束,元素的對齊和定位是在基線的支持下完成的。3級幫助我們超越這些約束,在這里,3級AI使用機器學習的概念。
對於以上頁面場景,第3級AI測試現在可以自己檢查頁面對齊和定位,而不需要任何參考基線。它的機器學習技術有助於在視覺上識別頁面,然后它可以參考客戶的規格文件,並比較大小,顏色,字體的網頁與預期的標准。
3級適用在數據方面,也可以驗證頁面的數據驅動的元素,為一個數字字段檢查它的上、下限、數值數據而不是字母被接受、為日期字段檢查有效的日期格式、文本字段檢查可以輸入的最大長度等。
這種人工智能是獨立工作的,它所提供的協議能夠自己測試一個應用程序,它首先理解這些規則,然后根據這些規則設計測試來進行應用程序測試。
現在,對於新引入的變化,這個人工智能適應變化,所以不需要人類的批准。人工智能致力於機器學習,並持續監控這些變化,並將它們與舊版本進行比較,最后只生成那些需要人工批准的變化,這一點具有關鍵的區別。
第4級: 高自動化
我們到3級AI能夠執行我們的用例使用人工智能自動化測試運行,但那些或觸發AI算法仍然需要人工輸入4級:高自動化會克服這個障礙,AI本身也可以觸發自動化本身不需要人工輸入。
4級AI增加了檢查的能力。這是使用強化學習技術完成的,它是機器學習的一個版本,現在人工智能可以區分它的視覺。
例如登錄航空公司網站訂票。第一頁是在網站上注冊,然后第二頁是預訂頁面提供選擇飛往不同的位置按選定的日期和時間,第三頁是支付頁面,人可以提供卡的細節,第四頁顯示購買機票的結果與機票交易細節。
現在4級AI能夠區分這4頁,因此無論何時移動這些特定的頁面:注冊、預訂、支付、總結,它能夠識別頁面和簡單地執行為特定頁面設計的動作並完成整個本身的任務序列而不需要人工輸入。
第5級: 全自動化
第5級是一個高級的人工智能,在目前還只是一個虛構的存在。這里的概念是為機器提供比人腦更多的智能。
這一層次的人工智能將能夠用自己的思維能力驅動與人類的對話,思想和想法是由人工智能本身產生的,而不是人類在人工智能系統中預先設定好的。
AI測試工具
我們看看一些經常被使用的AI測試自動化工具。
Testim.io
機器學習的概念被這個工具用於測試集的自動化。它側重於在功能級別上測試最終用戶端場景,還測試應用程序中涉及的接口。UI測試使用testim.io是有效的,並減少時間花費高達90%。它使用JavaScript,也接受html語言。該工具的主要特點如下:
1. 與像Jenkins這樣的CI工具集成。
2. 與CD工具如Jira, Github和Visual studio合作。
3. 支持不同的瀏覽器Edge, IE, Safari,Internet Explorer等。
Appvance
這個工具是基於人工智能技術概念的基礎上創建基於實際最終用戶輸入的測試用例。由於它能識別最微小缺陷的強大功能主要是用於生產系統。測試人員在AI的幫助下能在較短的時間內執行大量的腳本的全面測試,。該工具的主要特點如下:
1. 生產系統的人工智能腳本。
2. 優秀的測試集設計。
3. 統一測試。
Functionize
它也使用了機器學習,是第一個基於雲的測試平台工具,它對敏捷測試的測試能力使它成為客戶最廣泛使用的工具,它可以在幾分鍾內執行上千個測試集,速度非常快。該工具的主要特點如下。
1. 使用記錄器創建測試用例,不需要腳本。
2. 它的維護成本可以忽略不計,因為它的學習和自適應方法幫助它使用根本原因分析引擎來解決問題。
3. 優秀的分析報告。
總結
人工智能現在正慢慢成為軟件生命周期的一個重要方面。人工智能在我們的實踐中應該涉及到什么范圍,目前還在討論和觀察中。很多組織都不太願意將它們用於生產工作,因為這很關鍵,需要大量的創造力和分析。
人工智能是一個聰明的舉動,它可以節省大量的原本需要更多人力投入的人工和自動化系統的成本。對於人工智能,我們需要做一次投資,然后才能在未來取得豐碩的成果。
手工測試涉及重復性的工作,因此需要大量的人力投入,這使得利用手工測試進行創新的空間更小。人工智能測試將解放人力,因此我們可以交叉培訓我們的低技能勞動者,讓他們接受人工智能機器學習。這將幫助我們實現更高效的人工智能系統,提高生產率,從而產生巨額利潤。所有的節省都可以智能地用於執行最好的質量保證活動,探索性測試和即興的應用程序測試的其他領域。
人工智能機器學習和人工智能機器人與現代測試框架兼容,並與許多CI/CD工具集成。因此,人工智能機器人與應用測試的協作是很容易的。人工智能有它的局限性,我們還需要進一步研究。更多的探索和使用人工智能系統,我們會意識到它的局限性。然后我們可以在這些基礎上繼續工作,並獲得克服現有版本困難的下一個高級版本。
在未來,人工智能可以幫助人類測試人員探索測試的新方面,因此這是一個人類和機器攜手合作以獲得更大優勢的新時代的開始。
參考文獻
本文參考了互聯網上的如下鏈接:
https://en.wikipedia.org/wiki/Artificial_intelligence
https://techbeacon.com/6-levels-ai-based-testing-have-no-fear-qa-pros
https://dzone.com/articles/artificial-intelligence-in-testing-tools-and-advan