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