任子恒 李昕昕 龔勛
摘要:針對人工智能的應用于特點做出分析。認為人工智能有著非常強大的功能以及良好的發(fā)展趨勢,并在此基礎上展開對人工智能在軟件測試領域應用的討論。主要涉及了人工智能在軟件測試上應用的方法以及特點與優(yōu)點,并探討了目前人工智能在軟件測試領域所存在的問題與挑戰(zhàn)。預測人工智能在軟件測試應用上的發(fā)展趨勢。
關鍵詞: 人工智能;游戲測試;性能測試;兼容性測試;專家系統(tǒng)
中圖分類號:TP18 文獻標識碼:A 文章編號:1009-3044(2018)29-0218-02
1引言
人工智能作為當下最熱門的新型前沿性技術科學,被廣泛的應用于各個行業(yè)。從眾所周知的AlphaGo,到我們的各種移動智能終端,人工智能的應用無處不在。軟件測試作為軟件工程質量保證的一個重要環(huán)節(jié),從最初的手工測試到自動化測試再到云測試,其智能化的腳步也越來越快。本文將針對人工智能在軟件測試領域的應用現(xiàn)狀、前景以及面臨的挑戰(zhàn)進行分析,并給出合理的建議。
2人工智 能與軟件測試
2.1 人工智能簡述
人工智能是計算機學科的一個分支,是一門正在發(fā)展中的綜合性的前沿學科,它是研究人類智能活動的規(guī)律,并用于模擬、延伸和擴展人類智能的一門新的技術科學,是在計算機、控制論、信息論、數學、心理學等多種學科相互綜合、相互滲透的基礎上發(fā)展 起來的一門新興邊緣學科[1]。目前,人工智能被實際應用于計算、設計、醫(yī)療、安全等多個領域,可以出色的完成各種復雜的單一任務。上述應用我們稱之為弱人工智能。
2.2軟件測試簡述
軟件測試就是在軟件投入運行前,對軟件需求分析、設計規(guī)格說明和編碼的最終審查, 是軟件質量保證的關鍵步驟。 如果給軟件測試下定義,可以這樣講:軟件測試是為了發(fā) 現(xiàn)錯誤而執(zhí)行程序的過程。 或者說,軟件測試是根據軟件開 發(fā)各階段的規(guī)格說明和程序的內部結構而精心設計一批測 試用例(即輸入數據和預期的結果),并利用這些測試用例去 運行程序,以發(fā)現(xiàn)錯誤的過程[2,3]。通過需求分析與系統(tǒng)的功能實現(xiàn),由人或者機器來編寫出特定的測試用例,以此為輸入數據,執(zhí)行被測程序檢查的過程。傳統(tǒng)軟件測試通常是由人來執(zhí)行測試用例的編寫、執(zhí)行、分析等各項工作,稱之為手工測試。隨著技術的發(fā)展,越來越多的自動化測試工具可以更好的輔助人來完成上述工作。因此我們將利用自動化測試工具進行測試的過程稱之為自動化測試。但是現(xiàn)階段的自動化測試仍停留在輔助測試階段,無法獨立的完成某一完整的測試流程。因此我們希望引入人工智能幫助軟件測試更好的實現(xiàn)自動化、智能化。
2.3人工智能在軟件測試中的運用
在軟件測試整個過程中,測試用例起著決定性的作用。在以是為了發(fā)現(xiàn)錯誤進而執(zhí)行程序的軟件測試中,測試用例的編寫是能否發(fā)現(xiàn)程序漏洞或錯誤的關鍵。在以各種自動化測試工具蓬勃發(fā)展的今天,除了簡單的數據測試能夠靠電腦自動生成來完成,復雜測試用例的編寫仍舊由人作為主導。而自動化測試工具只能實現(xiàn)自動的將人所編寫的測試用例輸出來執(zhí)行程序并得出執(zhí)行結果。作為人工智能在軟件測試中的應用,其目的便是代替人來編寫出更多的有效的測試用例,從而發(fā)現(xiàn)程序中的錯誤?;诖?,我們希望通過運用機器學習的理論,由測試人員提供大量的輸入和輸出數據來訓練AI,最終由AI學會根據特定需求去自動生成測試用例、執(zhí)行測試,并對測試結果進行分析。這將大大減少人工測試工作量,大幅提高工作效率。
目前人工智能已經在軟件測試的某些特定領域有了實際應用,比如游戲測試、性能能測試、兼容性測試等。
2.3.1人工智能在游戲領域的應用
人工智能在游戲測試中,通常用于各種游戲分支情況的測試以及游戲數據的收集。例如,通過AI去創(chuàng)建不同的游戲角色,執(zhí)行不同的分支操作,來檢測游戲功能的正確性。這樣不僅可以大大減少測試人員對于游戲測試大量而重復的工作量,而且能夠做到在同一時間建立多個AI來進行多個角色的活動,從而能夠實現(xiàn)多人游戲的游戲測試,大大節(jié)約了成本。根據深度學習的理論,應用了AI的游戲測試還可以利用AI在測試過程中不斷收集數據反復學習、更新,達到自我修正的目的。最終可以使游戲具有更完善的功能和更穩(wěn)定的效果。
2.3.2人工智能在大型工程中的應用
除了常規(guī)的軟件測試以外,人工智能還可以應用于大型工程項目的測試中。通過計算機龐大的計算能力以及精確性的特質,能夠大大的提高工程質量,從而減少以人為主導所編寫的測試用例的失誤與不精確性。例如在航天工程中,運用專家系統(tǒng),來使AI具備大量的航天領域專家水平的知識與經驗,從而使AI模擬航空專家來進行測試用例的編寫。避免因為測試人員專業(yè)知識不熟練所導致的各種問題。
2.3.3人工智能在性能測試方面的應用
軟件的性能包括很多內容,如軟件對用戶操作的響應時間、軟件長時間連續(xù)運行的穩(wěn)定性、軟件最多支持的并發(fā)用戶數、系統(tǒng)最大的業(yè)務處理量等。軟件性能受運行環(huán)境、業(yè)務情況、用戶使用情況等多種因素的影響。軟件性能測試主要是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來確定系統(tǒng)的各項性能指標而進行的一種測試[4]。以移動應用性能為例,任何一款線上的移動應用,如果出現(xiàn)了性能問題,例如應用使用過程中的黑屏、閃退、無響應、耗電等,都會導致大量的負面反饋,從而影響用戶的使用體驗,給廠家造成嚴重的損傷。
從性能測試的原理來看,任意一種性能測試,其實現(xiàn)原理均包括如下幾點:
1) 用戶行為模擬;
2) 性能指標監(jiān)控;
3) 性能調優(yōu)。
從上述幾點我們不難看出,由于性能測試通常是大數據量的反復、長期測試,在人工審查方面,難免會出現(xiàn)錯誤。結合人工智能的圖像識別與AI訓練技術能夠更好的監(jiān)控和記錄的測試過程中的數據、表格及圖像,并且能夠快速的分析軟件中所存在的性能問題以及程序缺陷。因此目前人工智能已經在性能測試方面有了較多應用,如騰訊的UPA(Unity Performance Analysis),就是一運用人工智能中圖像識別技術以及深度學習技術的性能優(yōu)化工具。
2.3.4人工智能在兼容性方面的應用
軟件兼容性測試主要是不同操作系統(tǒng)、不同數據庫和不同瀏覽器環(huán)境測試軟件兼容性。由于需要大量的不同類型的軟硬件環(huán)境,有關兼容性測試的實現(xiàn)往往依賴于相關的專業(yè)測試工具和云計算技術。以云計算技術下的云測試為例。兼容性測試是指利用云計算平臺的多種操作系統(tǒng)、多種數據庫和多種瀏覽器環(huán)境測試軟件兼容性[5]。與性能測試中人工智能的應用大抵相同,相對于簡單且需要在不同環(huán)境下執(zhí)行的相同的測試用例的編寫,人工智能更適合應用于更加復雜的測試過程監(jiān)控以及結果分析上。例如通過計算機視覺和圖像處理,能夠實時的監(jiān)控軟件在各個測試環(huán)境下的運行情況,并且能夠及時的進行反饋。通過2D識別引擎,如人像識別,文字識別,圖像識別等能夠快速而準確的分離和篩選出不符合測試目的的測試環(huán)境,從而更好的完成兼容性的測試。
2.4 人工智能在軟件測試運用上的挑戰(zhàn)
伴隨人工智能在軟件測試應用上的研究的深入,研究人員們也面臨著諸多挑戰(zhàn)。
1) 智能技術的挑戰(zhàn):
要做到用人工智能完全替代人來進行軟件測試,就需要人工智能具備強人工智能的基礎。而這一點在人工智能領域尚未解決。
2) 應用范圍的局限:
由于現(xiàn)階段人工智能在軟件測試領域的應用較為單一,因此無法將人工智能大范圍應用于軟件測試的各個領域。
3) 測試成本的限制:
由于人工智能的應用成本較高,很難被眾多測試廠商接受。
綜上所述,我們發(fā)現(xiàn)純智能測試在測試效率、測試數據分析以及測試成本等方面,相較于人工測試和混合測試的優(yōu)勢還不明顯。
3結語
隨著測試技術的不斷發(fā)展,人工智能已經在軟件測試領域得以應用。例如能夠自動生成測試用例的系統(tǒng)bot。但是,要完全利用人工智來完成軟件測試卻還面臨諸多問題與挑戰(zhàn)。作者認為這將是以后很長一段時間軟件測試的研究熱點。
參考文獻:
[1] 馬少平,朱小燕.人工智能[M].北京:清華大學出版社,2004.
[2] [美]Jeffrey Richter.Windows 95 Windows NT3.5 高級編程技術[M]. 鄭全戰(zhàn),阿夏,譯.清華大學出版社,1998 年 2 月.
[3] 鄭人杰,殷人昆,陶永雷.實用軟件工程[M].2 版.清華大學出版社,1997.
[4] 韓明軍.軟件性能測試過程[J].信息技術與標準化,2007(11):41-43.
[5] 王偉軍,姜毅,劉蕤,等.云計算環(huán)境下軟件測試研究進展[J].現(xiàn)代圖書情報技術,2012(11):3-9.
【通聯(lián)編輯:唐一東】