導讀:人工智能對于我們生活的影響越來越顯著,改變著多個行業(yè)多個領(lǐng)域,影響到日常生活的方方面面。尤其在人工流程自動化領(lǐng)域中,人工智能發(fā)揮了突出的作用。
人工智能對于我們生活的影響越來越顯著,改變著多個行業(yè)多個領(lǐng)域,影響到日常生活的方方面面。尤其在人工流程自動化領(lǐng)域中,人工智能發(fā)揮了突出的作用。因此,本文將研究人工智能如何影響軟件測試領(lǐng)域,尤其是自動化測試領(lǐng)域。
現(xiàn)存挑戰(zhàn)
什么是軟件測試?軟件測試是對開發(fā)的程序的性能進行評估的過程,以檢查其是否符合客戶的要求,并在投入使用前檢測它是否存在錯誤從而加以完善。
每當開發(fā)人員添加新代碼,都必須進行新的測試。質(zhì)量監(jiān)管人員(QAs)需要耗費大量時間來確認新代碼不會破壞現(xiàn)有代碼庫。而人工執(zhí)行回歸測試非常耗時,并且會在很大程度上增加QAs的負擔。
傳統(tǒng)的QA檢測方法包括檢查一個任務(wù)列表,以確保軟件按預(yù)期的方式工作。一開始只需要測試幾個功能時,這還是一個可行的任務(wù);但隨著功能的增加,QAs面臨著在截止日期前完成全面測試的困難。一個應(yīng)用程序越復(fù)雜,就越難確保它得到完整的測試覆蓋。
隨著人工智能的出現(xiàn),簡化測試過程成為可能。此外,新軟件和產(chǎn)品在競爭壓力下必須加快發(fā)布,延長測試周期并不是智舉。因此,只能測試得更聰明而不是更難,別無選擇。
人工智能如何克服這些挑戰(zhàn)
人工智能在軟件測試工具中的應(yīng)用集中在簡化軟件開發(fā)生命周期(SDLC)上。通過應(yīng)用推理、問題解決和機器學習,人工智能可以在開發(fā)和測試階段中促進自動化并減輕冗雜的工作任務(wù)。
例如,假設(shè)你正在運行一個自動化框架來測試自己的項目。大多數(shù)情況下,你不知道要運行哪些測試,因此會運行所有測試或預(yù)定的一組測試。
那么,如果一個支持AI的機器人可以檢查當前的測試狀態(tài)、最近的代碼更改、代碼覆蓋率和其他指標,決定要運行哪些測試,然后再運行它們呢?這樣的軟件可以有效地代替開發(fā)人員/測試人員參與決策過程。
人工智能和機器學習應(yīng)用推理和問題解決方案來自動化和改進測試。軟件測試中使用人工智能有助于減少耗時的手動測試,使團隊得以專注于更復(fù)雜的任務(wù),例如創(chuàng)建創(chuàng)新性的功能。以下是利用人工智能優(yōu)化軟件測試過程的幾個方面:
增強的準確性——我們必須承認,即使是最有經(jīng)驗的質(zhì)量檢查工程師也可能犯錯。數(shù)據(jù)量太大了,測試人員難免會在軟件質(zhì)量檢測時分心,忽略了一些重要的缺陷。這就是AI和機器學習技術(shù)發(fā)揮作用的地方。
他們教系統(tǒng)學習源分析并在將來應(yīng)用知識。通過這種方式,AI測試在不斷重復(fù)中得出更準確的結(jié)果。因此,使用人工智能技術(shù)進行數(shù)據(jù)分析降低了人為錯誤概率。
加快進程——AI無需像測試人員那樣手動處理成千上萬的代碼,而是快速地對日志文件進行排序,在幾秒鐘內(nèi)掃描代碼并在更短的時間內(nèi)檢測到錯誤。通過將人工智能納入重復(fù)測試中,質(zhì)量檢查工程師可以專注于測試新功能或關(guān)注軟件的重要部分。更加自動化——人工智能程序可以隨著代碼的更改而發(fā)展。他們可以適應(yīng)并學會識別新功能。當AI機器人識別了代碼的修正后,他們就可以被編程來判斷這是一個新功能還是代碼更改中出現(xiàn)的某些缺陷。正確理解客戶需求——軟件開發(fā)過程中,最重要的是能夠了解客戶的實際需求。AI可以檢測類似的網(wǎng)站和應(yīng)用程序,以確定哪些因素能幫助贏得目標受眾,也可以幫助研究大量競爭產(chǎn)品以確定其優(yōu)勢。通過正確理解客戶的需求,他們可以創(chuàng)建測試用例,以確保產(chǎn)品在實現(xiàn)這些特定目標時不會損壞。
基于人工智能的軟件測試現(xiàn)狀
目前,實踐中已經(jīng)開始使用自主和智能代理(稱為“測試機器人”)來自動化諸如應(yīng)用程序發(fā)現(xiàn)、建模、測試生成和故障檢測等活動,并結(jié)合機器學習技術(shù)來實現(xiàn)測試機器人,包括但不限于決策樹學習、神經(jīng)網(wǎng)絡(luò)和強化學習。
與傳統(tǒng)的測試自動化工具和框架不同,機器學習允許測試機器人在不確定的條件下運行。過去十年形成的人工智能驅(qū)動的測試方法包括以下示例:
差異測試——比較應(yīng)用程序版本,對差異進行分類并從分類的反饋中學習。視覺測試——利用基于圖像的學習和屏幕比較來測試應(yīng)用程序的外觀。聲明式測試——以自然語言或特定領(lǐng)域的語言明確測試的意圖,并讓系統(tǒng)確定如何執(zhí)行該測試。自我修復(fù)自動化——當UI更改時,在測試中自動更正元素選擇。
2014年以來,提供AI驅(qū)動的測試服務(wù)的供應(yīng)商數(shù)量激增。這些工具供應(yīng)商中的大多數(shù)是初創(chuàng)公司,他們主要針對移動應(yīng)用程序系統(tǒng)級測試,這一主題在業(yè)界引起了廣泛關(guān)注。
觀察AI功能最簡單的方法是使用各種工具和框架,以下是一些很受歡迎的AI驅(qū)動的測試工具:
人工智能會“偷走”你的工作嗎?
關(guān)于此問題的當前比較流行的觀點是,人工智能不會取代人,但會幫助人進行QA測試。支持這種觀點主要理由是,人工智能在軟件開發(fā)中的使用仍處于起步階段,其在更先進的領(lǐng)域中自主水平遠低于所見,如人類仍在主導的自動駕駛系統(tǒng)領(lǐng)域。但是可以肯定的是,AI協(xié)助人類的下一步就是讓AI掌握整個運作過程。這只是時間問題。
眾所周知,技術(shù)的增長,尤其是AI和機器學習的增長是指數(shù)級的,要預(yù)測未來的AI能力并不容易。AI接管測試工作的那一天可能比預(yù)期到來的要早,在此之前,你得做好準備。