前言:想要寫出一篇引人入勝的文章?我們特意為您整理了人工智能下軟件測試發(fā)展與應(yīng)用范文,希望能給你帶來靈感和參考,敬請閱讀。
人工智能是指由人制造出來的能夠?qū)⒅挥腥怂邆涞闹腔郾憩F(xiàn)出來的機(jī)器。幾十年來,軟件測試逐漸從小型化、本地化向智能化、復(fù)雜化的大規(guī)模開發(fā)和維護(hù)轉(zhuǎn)變。因此本文提出研究人工智能時代下軟件測試的發(fā)展與應(yīng)用,來對人工智能技術(shù)對軟件測試的影響進(jìn)行深入的研究,通過研究可以更加深刻的理解人工智能技術(shù)對軟件測試的發(fā)展的重大影響。
1研究背景和意義
1.1研究背景
軟件測試是一種用來描述、促進(jìn)和鑒定軟件的正確性、完整性、安全性和質(zhì)量的過程,它是一種將實際輸出與期望輸出進(jìn)行審核或者比較的過程,因此通過軟件測試可以更快速的發(fā)現(xiàn)軟件開發(fā)過程中的各種問題,幫助人們更加高效率的對軟件進(jìn)行完善,使得軟件的性能逐步提高?,F(xiàn)今社會,隨著大數(shù)據(jù)和云計算的飛速發(fā)展,傳統(tǒng)的軟件測試技術(shù)很難支撐現(xiàn)代軟件的發(fā)展,軟件測試技術(shù)如今面對著新的挑戰(zhàn)。
1.2研究意義機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、NLP等
AI領(lǐng)域被認(rèn)為是我們身邊大多數(shù)技術(shù)的前沿。如今,隨著人工智能技術(shù)的發(fā)展,人工智能技術(shù)也開始逐步成熟,人工智能技術(shù)逐步滲透到工業(yè)和生活中的各個領(lǐng)域,作為與程序密切相關(guān)的軟件測試,也深受人工智能技術(shù)的影響。
2軟件測試發(fā)展史
2.1程序員和測試人員的時代
在程序員和測試人員的時代,開發(fā)和測試被視為相互獨立的活動,軟件準(zhǔn)備就緒后,將其傳遞給測試團(tuán)隊進(jìn)行驗證。測試人員在需求分析階段的參與不是很積極,與業(yè)務(wù)涉眾的互動也很有限。他們在很大程度上依賴于通過設(shè)計和開發(fā)過程中完成的文檔或從編寫代碼的開發(fā)人員那里收集的知識來獲取信息。因此在這個時代,測試人員缺乏對客戶需求和期望的洞察力,進(jìn)而導(dǎo)致軟件測試策略的有限性。
2.2探索和手動測試的時代
90年代末期,各種軟件測試方法的問世,例如探索性測試、敏捷測試等。在這個階段,軟件測試人員使用詳細(xì)的測試用例和測試計劃手動進(jìn)行測試。探索性測試通過在測試章程范圍內(nèi)探索軟件,從而使測試人員可以自由地以本機(jī)方式測試軟件。并且在這個時期,軟件開發(fā)工程量逐步增加,軟件開發(fā)過程的廣泛而密集的增長需要更全面的測試方法,敏捷測試采用的增量和迭代方法有助于實現(xiàn)此目標(biāo)。
2.3自動化時代
隨著21世紀(jì)的到來,更多的新方法浮出水面,從而徹底改造了軟件測試。在軟件開發(fā)各個階段的質(zhì)量保證和控制都變得越來越重要,測試都被視為軟件開發(fā)過程中不可或缺的一部分。自動化使測試達(dá)到了完全不同的水平,通過大量的自動化測試框架,使得測試人員能夠以更高的效率執(zhí)行其任務(wù)。云測試的出現(xiàn)可以幫助企業(yè)以更快的速度和更少的資金管理產(chǎn)品的測試。
2.4持續(xù)測試的時代
持續(xù)測試時期業(yè)務(wù)動態(tài)開始發(fā)生變化,客戶期望看到最終產(chǎn)品的模型,因此測試需求逐步增加。現(xiàn)階段出現(xiàn)的改進(jìn)網(wǎng)絡(luò)基礎(chǔ)架構(gòu)為開發(fā)和測試提供了高連接性,并提高了跨多個平臺的部署和測試的速度。DevOps和CI/CD的興起導(dǎo)致軟件整個開發(fā)周期縮短,實時進(jìn)行仔細(xì)的風(fēng)險評估成為了當(dāng)務(wù)之急。同時,在軟件開發(fā)生命周期的所有階段都必須進(jìn)行風(fēng)險評估和處理,進(jìn)而降低軟件開發(fā)的風(fēng)險。為了跟上這些需求,需要不斷進(jìn)行測試以提高效率,人們開始嘗試應(yīng)用人工智能技術(shù)進(jìn)行測試。
2.5人工智能時代
簡而言之,人工智能是機(jī)器通過感知,理解和學(xué)習(xí)模仿人類行為的能力。人工智能的算法是基于數(shù)據(jù)的預(yù)測分析,這也意味著AI測試在很大程度上取決于數(shù)據(jù)。當(dāng)今有許多可用AI驅(qū)動的測試工具,可幫助進(jìn)行單元測試、API測試、UI測試等,其中最經(jīng)典的示例是可視化測試。
3人工智能技術(shù)在軟件測試中的應(yīng)用及挑戰(zhàn)
3.1AI系統(tǒng)的測試
隨著人工智能技術(shù)的發(fā)展,目前出現(xiàn)了各類有關(guān)人工智能技術(shù)的應(yīng)用,然而由于人工智能技術(shù)是一個新興技術(shù),傳統(tǒng)的軟件測試無法與人工智能技術(shù)相匹配,因此在人工智能時代軟件測試技術(shù)的更新成為一件重要的事情。由于人工智能技術(shù)所開發(fā)的系統(tǒng)其功能具有動態(tài)性,并且開發(fā)出來的系統(tǒng)擁有自我學(xué)習(xí)的能力,因此在對人工智能系統(tǒng)進(jìn)行測試時,應(yīng)當(dāng)充分考慮時間范圍。人工智能系統(tǒng)的學(xué)習(xí)能力應(yīng)該是不斷增強、動態(tài)性的,因此,針對此類測試過程,需要大規(guī)模、長時間的進(jìn)行測試。例如,Google的AlphaGo存在所使用的黑盒測試規(guī)模龐大、測試周期長,并且有自動化測試難的問題。然而AlphaGo是一種功能相對簡單的系統(tǒng),人工智能技術(shù)所開發(fā)的智能語音響應(yīng)系統(tǒng)在測試時會更加困難。智能語音響應(yīng)系統(tǒng)需要模擬不同的場景進(jìn)行測試,因此小規(guī)模的測試數(shù)據(jù)集,很難判斷系統(tǒng)的反應(yīng)能力,也無法對系統(tǒng)提出具有重大意義的改善。深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法通常被認(rèn)為是黑盒模型,但是隨著訓(xùn)練的數(shù)據(jù)集不同,其測試結(jié)果具有不穩(wěn)定的特性。因此針對深度神經(jīng)網(wǎng)絡(luò)測試需要大規(guī)模的數(shù)據(jù)集,這種測試方法與傳統(tǒng)的測試方法相差甚遠(yuǎn)。在傳統(tǒng)的測試過程中可以使用等價類劃分和其他方法來減小所需測試的樣本規(guī)模,但是對于人工智能系統(tǒng)來說,必須依賴于大量的數(shù)據(jù)才可以達(dá)到測試的效果。
3.2大數(shù)據(jù)的測試
大數(shù)據(jù)的測試并不比人工智能系統(tǒng)測試容易,其很難確定判斷其測試預(yù)測測試結(jié)果的標(biāo)準(zhǔn),因為無法對數(shù)據(jù)處理結(jié)果的大小進(jìn)行判定。在數(shù)據(jù)收集、存儲、檢索和分析之后,軟件測試人員需要開發(fā)適當(dāng)?shù)墓ぞ咭詮拇笕萘?、多樣性、快速變化和實時表征方面對數(shù)據(jù)的一致性和完整性進(jìn)行校驗。
3.3云服務(wù)測試
現(xiàn)階段云服務(wù)主要包括私有云、公共云、混合云和各種其他形式的云,云服務(wù)的測試面臨著復(fù)雜的系統(tǒng)架構(gòu)、復(fù)雜的配置、復(fù)雜的計算和存儲節(jié)點,盡管可以通過使用兩個或三個的組合來減少組合的數(shù)量,但是這種方法覆蓋率相對較低,并且在云服務(wù)的測試中存在著較高的風(fēng)險。同時,云服務(wù)的性能測試也非常困難,主要包括云質(zhì)量壓力模擬需要承擔(dān)較高的成本,甚至花費大量的資金也無法對測試進(jìn)行模擬。而且,云服務(wù)作為新興的技術(shù),傳統(tǒng)的測試工具很難與計算機(jī)平臺的云性能測試相匹配。
3.4區(qū)塊鏈測試
區(qū)塊鏈主要包括公共網(wǎng)絡(luò)、私有鏈和聯(lián)盟網(wǎng)絡(luò)等不同類型的網(wǎng)絡(luò),這些網(wǎng)絡(luò)在許多方面都大有不同,例如在區(qū)塊鏈的管理、使用者的用戶身份驗證、區(qū)塊鏈的節(jié)點數(shù)、網(wǎng)絡(luò)的共識機(jī)制和智能合約等方面。因此,不同的區(qū)塊鏈面臨的測試挑戰(zhàn)也是不同的。同時區(qū)塊鏈也存在一些共性的的挑戰(zhàn),如安全測試非常困難。安全始終是矛與盾的問題,現(xiàn)階段不存在絕對受保護(hù)的技術(shù)、系統(tǒng)或平臺,因此對于區(qū)塊鏈來說,很難對其安全質(zhì)量進(jìn)行測試。同時區(qū)塊鏈還包括基礎(chǔ)結(jié)構(gòu)安全性、加密算法保護(hù)、網(wǎng)絡(luò)協(xié)議保護(hù)、共識機(jī)制安全性和合同安全性等合同安全性又包括身份驗證和身份驗證。而且區(qū)塊鏈擁有眾多的網(wǎng)絡(luò)節(jié)點,對于區(qū)塊鏈的測試不僅僅只是某個區(qū)塊鏈節(jié)點。
3.5物聯(lián)網(wǎng)測試
在工業(yè)4.0和5G時代,網(wǎng)絡(luò)成為人們生活中不可缺少的東西。物聯(lián)網(wǎng)是指萬物互聯(lián),它不僅僅只是將計算機(jī)相連接,還包括工業(yè)設(shè)備、家用電器等,物聯(lián)網(wǎng)旨在讓每一個物品等能夠連接到網(wǎng)絡(luò)。然而網(wǎng)絡(luò)的融合需要創(chuàng)建一個更大的系統(tǒng),因此這也給軟件測試帶來新的挑戰(zhàn)。同時物聯(lián)網(wǎng)需要更多的物理設(shè)備才可以進(jìn)行測試,這會耗費大量的時間和精力。其次物聯(lián)網(wǎng)系統(tǒng)需要具有實時性,物聯(lián)網(wǎng)設(shè)備對時間十分的敏感,它需要實時數(shù)據(jù)收集,并且需要實同步數(shù)據(jù)的傳輸。此外,物聯(lián)網(wǎng)測試還面臨著檢查系統(tǒng)規(guī)模、可伸縮性、協(xié)作感知、大數(shù)據(jù)處理性能和智能特性等挑戰(zhàn)。
4應(yīng)用人工智能技術(shù)的軟件測試
4.1測試規(guī)范和測試套件細(xì)化
在開源開發(fā)或軟件進(jìn)化的背景下,開發(fā)人員經(jīng)常面對開發(fā)時沒有明顯理由的測試套件,這些測試套件可能需要增加或改進(jìn)以確保足夠的可靠性,甚至需要減少以滿足緊迫的截止日期,我們稱這個過程為測試規(guī)范和測試套件的重新設(shè)計。同時在實踐中,測試規(guī)范可能一開始就不存在,尤其是如果沒有使用黑盒策略來識別測試用例的情況。在這種情況下,測試規(guī)范必須被逆向工程或者從高級系統(tǒng)規(guī)范創(chuàng)建。因此,軟件測試重要的是提供方法和工具支持,幫助人們理解測試套件的局限性及其可能的冗余,以便能夠以經(jīng)濟(jì)高效的方式對其進(jìn)行改進(jìn)。因此,基于機(jī)器學(xué)習(xí)的方法可以解決黑盒測試中的這個問題。
4.2調(diào)試、故障定位
使用機(jī)器學(xué)習(xí)來識別可疑語句,如測試期間觀察到的相關(guān)故障,這可在調(diào)試期間幫助故障定位。RUBAR技術(shù)解決了軟件測試的主要缺陷,但該方法難以處理多個故障的存在,因為它隱含地假設(shè)失敗的測試用例執(zhí)行相同的故障。同時使用C4.5決策樹來學(xué)習(xí)各種基于測試用例輸入和輸出信息的故障條件,在相似條件下執(zhí)行的失敗測試用例被認(rèn)為是由于相同的錯誤而失敗,如果語句被在相似條件下執(zhí)行的大量失敗測試用例覆蓋,那么它們就被認(rèn)為是需要重點關(guān)注的。同時,由C4.5決策樹建模的故障條件可以準(zhǔn)確預(yù)測故障,因此可以用于幫助調(diào)試,由該樹建模的故障條件總體上準(zhǔn)確描述了實際故障條件。
4.3風(fēng)險驅(qū)動測試
無論采用何種測試策略,實際上很少有足夠的人力資源和時間來徹底測試系統(tǒng)的每個部分,達(dá)到令人滿意的程度。測試團(tuán)隊必須集中精力并優(yōu)先考慮他們的測試工作,通常這是通過分析與功能或系統(tǒng)組件相關(guān)的“風(fēng)險”來完成的,這取決于測試級別。風(fēng)險通常被定義為故障概率和它們可能造成損害的組合,目前軟件測試中有各種各樣的方法來解決這個問題,構(gòu)建預(yù)測文件或類中錯誤位置的模型是一個可行的方案。在許多利用機(jī)器學(xué)習(xí)算法訓(xùn)練的模型中,通常不需要與統(tǒng)計模型相關(guān)聯(lián)的嚴(yán)格假設(shè)類型,對于實踐者來說更容易解釋和理解。人們也越來越認(rèn)識到要獲得合理準(zhǔn)確的預(yù)測模型,還需要考慮其他因素。盡管在軟件測試中輸入使用的數(shù)據(jù)各不相同,但它通常包括組件的結(jié)構(gòu)復(fù)雜性度量、來自最近發(fā)布的組件變更信息、與組件相關(guān)聯(lián)的歷史數(shù)據(jù),以及開發(fā)人員關(guān)于例如他們對被變更的系統(tǒng)的體驗的信息。因此一旦開發(fā)了故障預(yù)測模型,就可以根據(jù)系統(tǒng)組件包含故障的可能性對它們進(jìn)行排序,結(jié)果也可以用樹形圖更容易地可視化。并且從經(jīng)濟(jì)的角度出發(fā),建立和利用故障預(yù)測模型也具有很高的經(jīng)濟(jì)效應(yīng)。
4.4測試預(yù)言
測試預(yù)言的自動化可能是軟件測試中最困難的問題之一,雖然沒有普遍適用的自動化測試預(yù)言的解決方案,但是在很多情況下機(jī)器學(xué)習(xí)可以提供幫助。例如,在圖像和語音處理領(lǐng)域有許多這樣的情況。圖像分割是從圖像中提取感興趣的特定結(jié)構(gòu)的行為,為了評估圖像分割算法花費了大量的時間和精力,卻并不能提供足夠準(zhǔn)確的結(jié)果,技術(shù)專家需要修改算法并重新運行整個測試套件來驗證它。該過程大多是手工完成的,因此非常耗時,也需要可靠的專家在場。在初始學(xué)習(xí)階段,使用機(jī)器學(xué)習(xí)算法來學(xué)習(xí)一個模型,一旦學(xué)習(xí)了有效的機(jī)器學(xué)習(xí)模型,由測試中圖像分割算法的任何新版本產(chǎn)生的分割將自動認(rèn)定其正確地性,此時也不需要任何人工專家的干預(yù),所以在分割的重新測試期間可以獲得大量時間和人工的節(jié)省。在人工智能時代,作為軟件工程師所面臨問題的工程特性,例如部分定義和不明確的應(yīng)用領(lǐng)域,具有多個相互競爭、相互沖突和不斷變化的目標(biāo),正把我們從完美的烏托邦拖向更現(xiàn)實的工程世界。當(dāng)代的軟件性質(zhì)變化迫使我們改變開發(fā)和部署測試技術(shù)。人工智能技術(shù)被證明非常適合這個不斷變化的是時代。本文通過研究人工智能時代下軟件測試的發(fā)展與應(yīng)用,對人工智能技術(shù)對軟件測試的影響進(jìn)行深入的研究,通過對人工智能時代下軟件測試得研究現(xiàn)狀、軟件測試發(fā)展史、人工智能技術(shù)在軟件測試中的應(yīng)用及挑戰(zhàn)、應(yīng)用人工智能技術(shù)的軟件測試以及軟件測試的未來發(fā)展等進(jìn)行論述,更加深刻的理解人工智能技術(shù)對軟件測試的發(fā)展的重大影響。
作者:胡中奇 植賜佳 單位:工業(yè)和信息化部 電子第五研究所