楊亞萍
(蘇州健雄職業(yè)技術(shù)學(xué)院人工智能學(xué)院 江蘇 太倉 215411)
近年來,人工智能技術(shù)在各個領(lǐng)域的應(yīng)用取得了顯著的成果。 尤其在自然語言處理領(lǐng)域,在文本分析、語音識別等方面的研究逐漸成熟。 然而,在軟件測試領(lǐng)域,自然語言處理技術(shù)的應(yīng)用還處于起步階段。 因此,探討自然語言處理技術(shù)在軟件測試中的應(yīng)用,具有重要的理論意義和實際價值。
關(guān)于自然語言處理技術(shù)在軟件測試領(lǐng)域的研究逐漸增多。 研究者將自然語言處理( natural language processing, NLP)應(yīng)用于測試用例生成、測試數(shù)據(jù)生成等方面,取得了一定的成果。 本文在前人研究的基礎(chǔ)上,對自然語言處理技術(shù)在軟件測試中的應(yīng)用進行了深入研究。
在自然語言處理領(lǐng)域,有許多關(guān)鍵技術(shù)決定了NLP系統(tǒng)的性能和實用性。 以下是一些關(guān)鍵技術(shù)的簡要概述。
(1)詞嵌入(Word Embedding)
詞嵌入是一種將詞匯表征為連續(xù)向量的技術(shù),使得詞匯間的語義關(guān)系可以通過向量間的數(shù)學(xué)運算來表示。 常見的詞嵌入方法包括Word2Vec、 GloVe 和FastText。Word2Vec 是一種基于神經(jīng)網(wǎng)絡(luò)的詞嵌入模型,它通過學(xué)習(xí)上下文語境中的詞匯共現(xiàn)模式來獲得詞向量。 該模型包含2 種訓(xùn)練方法:連續(xù)詞袋模型(continuous bag of words, CBOW)和Skip-gram 模型。 CBOW 模型通過上下文詞匯預(yù)測目標(biāo)詞匯,而Skip-gram 模型則通過目標(biāo)詞匯預(yù)測上下文詞匯。 這兩種方法都能夠?qū)W習(xí)到詞匯的分布式表示。 GloVe 是一種基于全局詞匯統(tǒng)計信息的詞嵌入模型。 它通過分析大規(guī)模語料庫中詞匯的共現(xiàn)矩陣來獲得詞向量。 GloVe 模型考慮了詞匯之間的共現(xiàn)概率以及它們在上下文窗口中的距離,通過最小化共現(xiàn)矩陣的重構(gòu)誤差來學(xué)習(xí)詞向量。 FastText 是一種基于子詞的詞嵌入模型,它將詞匯分解為更小的子詞單元,并為每個子詞單元學(xué)習(xí)對應(yīng)的詞向量。 通過將子詞向量進行平均或拼接,可以得到整個詞匯的表示。 這種方法在處理未登錄詞(Outof-Vocabulary, OOV)和形態(tài)豐富的詞匯時具有優(yōu)勢。
詞嵌入為NLP 任務(wù)提供了一種更好的詞匯表征方法,使得模型能夠更好地理解和捕捉詞匯之間的語義關(guān)系。 它在諸如文本分類、情感分析、命名實體識別等NLP任務(wù)中得到廣泛應(yīng)用,并取得了顯著的性能提升。
(2)深度學(xué)習(xí)
深度學(xué)習(xí)是一種基于神經(jīng)網(wǎng)絡(luò)的機器學(xué)習(xí)方法,通過多層神經(jīng)網(wǎng)絡(luò)建模復(fù)雜的函數(shù)關(guān)系。 在NLP 領(lǐng)域,深度學(xué)習(xí)方法通常包括循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN)、長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM)、門控循環(huán)單元(gated recurrent unit, GRU) 和Transformer 等。 循環(huán)神經(jīng)網(wǎng)絡(luò)是一種經(jīng)典的深度學(xué)習(xí)模型,特別適用于處理序列數(shù)據(jù)。 RNN 通過在每個時間步引入循環(huán)連接,使得模型能夠捕捉到序列中的上下文信息。 然而,傳統(tǒng)的RNN 存在梯度消失和梯度爆炸等問題,限制了其對長序列的建模能力。 為了解決RNN 的問題,長短期記憶網(wǎng)絡(luò)和門控循環(huán)單元被提出。 LSTM 引入了記憶單元和門控機制,能夠有效地處理長序列,并保留了重要的上下文信息。 GRU 則是LSTM 的一種變體,它合并了輸入門和遺忘門,減少了參數(shù)數(shù)量,使得模型更加簡潔。
除了循環(huán)神經(jīng)網(wǎng)絡(luò),Transformer 模型也在NLP 領(lǐng)域引起了革命性的變革。 Transformer 采用了自注意力機制(self-attention)來捕捉輸入序列中不同位置之間的關(guān)系,避免了傳統(tǒng)的循環(huán)結(jié)構(gòu), 大大加快了計算效率。Transformer 在機器翻譯、文本摘要等任務(wù)中取得了顯著的性能提升,并成為目前NLP 領(lǐng)域的主流模型。
深度學(xué)習(xí)方法通過強大的模型表示能力和大規(guī)模數(shù)據(jù)的訓(xùn)練,使得NLP 模型能夠更好地理解和處理自然語言。 它們能夠自動學(xué)習(xí)到語言中的語義和語法規(guī)律,從而在各類NLP 任務(wù)中取得了突出的表現(xiàn)。 此方法在自然語言生成、機器翻譯、情感分析等任務(wù)中取得了顯著成果[1]。
(3)語言模型
如前文所述,語言模型是用來預(yù)測下一個詞出現(xiàn)概率的數(shù)學(xué)模型。 近年來,基于深度學(xué)習(xí)的預(yù)訓(xùn)練語言模型(如BERT、GPT 等)在NLP 任務(wù)中取得了突破性的成果。預(yù)訓(xùn)練模型通過在大規(guī)模語料庫上進行無監(jiān)督訓(xùn)練,學(xué)習(xí)到了豐富的語言知識,從而為各種下游NLP 任務(wù)提供了強大的基礎(chǔ)表征。
(4)注意力機制(attention mechanism)
注意力機制是一種在深度學(xué)習(xí)模型中對輸入的不同部分分配不同權(quán)重的方法。 在NLP 中,注意力機制可以讓模型關(guān)注與當(dāng)前任務(wù)相關(guān)的重要信息,從而提高模型性能。 Transformer 模型便是基于注意力機制構(gòu)建的,在機器翻譯、文本摘要等任務(wù)中表現(xiàn)優(yōu)異。
(5)無監(jiān)督學(xué)習(xí)
無監(jiān)督學(xué)習(xí)是一種在無標(biāo)注數(shù)據(jù)上進行訓(xùn)練的機器學(xué)習(xí)方法。 在NLP 中,無監(jiān)督學(xué)習(xí)技術(shù)可以用于詞聚類、文檔聚類、主題模型等任務(wù)。 通過無監(jiān)督學(xué)習(xí),可以挖掘文本中的潛在結(jié)構(gòu)和模式,為有監(jiān)督的NLP 任務(wù)提供有用的先驗知識。
(6)遷移學(xué)習(xí)(transfer learning)
遷移學(xué)習(xí)是一種將在一個任務(wù)上訓(xùn)練好的模型應(yīng)用于其他相關(guān)任務(wù)的方法。 在NLP 領(lǐng)域,遷移學(xué)習(xí)可以幫助解決數(shù)據(jù)稀缺的問題。 通過在大規(guī)模預(yù)訓(xùn)練數(shù)據(jù)集上訓(xùn)練一個通用的語言模型,可以將知識遷移到特定任務(wù)的較小數(shù)據(jù)集上,從而提高模型性能。 預(yù)訓(xùn)練語言模型(如BERT、GPT 等)就是遷移學(xué)習(xí)的一個典型應(yīng)用[2]。
(7)信息抽取(information extraction)
信息抽取是一種從非結(jié)構(gòu)化文本中提取結(jié)構(gòu)化信息的方法。 在NLP 中,信息抽取技術(shù)主要包括命名實體識別(NER)、關(guān)系抽取和事件抽取等。 通過信息抽取,可以將文本中的關(guān)鍵信息轉(zhuǎn)化為結(jié)構(gòu)化數(shù)據(jù),為知識圖譜構(gòu)建、文本挖掘等任務(wù)提供基礎(chǔ)[3]。
(8)生成式任務(wù)
生成式任務(wù)是指從給定的輸入生成自然語言文本的任務(wù)。 在NLP 中,生成式任務(wù)包括機器翻譯、文本摘要、對話系統(tǒng)等。 生成式任務(wù)的關(guān)鍵技術(shù)包括基于循環(huán)神經(jīng)網(wǎng)絡(luò)的生成模型(如Seq2Seq 模型)、基于Transformer 的生成模型以及基于預(yù)訓(xùn)練語言模型的生成模型(如GPT 系列模型)[4]。
以上關(guān)鍵技術(shù)在自然語言處理領(lǐng)域起著至關(guān)重要的作用,為各種NLP 任務(wù)提供了強大的支持。 在軟件測試中應(yīng)用此技術(shù),可以充分發(fā)揮自然語言處理的潛力,提高軟件測試的效率和質(zhì)量。
設(shè)計了一套多階段的數(shù)據(jù)收集和分析流程,以評估AI 和NLP 技術(shù)在軟件測試中的表現(xiàn)。 構(gòu)建了一個軟件測試平臺,集成了先進的深度學(xué)習(xí)模型,如BERT 和GPT,用于理解和解釋代碼的自然語言描述。
收集了大量的軟件測試案例,覆蓋了多種類型的軟件和不同級別的復(fù)雜性。 該數(shù)據(jù)來自公開的軟件測試數(shù)據(jù)庫、開源項目以及與合作的軟件開發(fā)公司。 將測試案例輸入到AI 測試平臺中,并記錄了關(guān)鍵指標(biāo),如AI 模型的測試覆蓋率、缺陷檢測率和誤報率。 同時進行了傳統(tǒng)的手動測試作為對照組。 在數(shù)據(jù)收集階段結(jié)束后,進行了深入的數(shù)據(jù)分析。 使用了描述性統(tǒng)計和推理統(tǒng)計方法來比較AI測試和手動測試的結(jié)果。 計算了平均值、標(biāo)準(zhǔn)差和置信區(qū)間等統(tǒng)計量,并使用t檢驗評估差異是否顯著。 在分析過程中,重點關(guān)注可能影響結(jié)果的因素。 例如,考慮了測試案例的復(fù)雜性、軟件的類型和大小以及AI 模型的訓(xùn)練數(shù)據(jù)等因素。 運用協(xié)變量分析(ANCOVA)來控制潛在的混淆因素。 對結(jié)果進行了詳細(xì)的解釋和討論,思考了實證結(jié)果的實際含義,以及對軟件測試實踐和研究的影響。 同時確定了研究的限制,并提出了未來的研究方向。
通過實證分析過程,提供了一個深入、全面評估AI 和NLP 在軟件測試中應(yīng)用的方法。 該過程能夠產(chǎn)生準(zhǔn)確、可靠的結(jié)果,并為進一步的研究和實踐提供有力的依據(jù)。
研究結(jié)果明確展示了AI 和NLP 在軟件測試中的應(yīng)用價值,明顯優(yōu)于傳統(tǒng)的手動測試方法。
AI 模型在測試覆蓋率方面表現(xiàn)出顯著提升,從原先的手動測試的60%增加到了85%,有效提高了測試的全面性。 主要得益于AI 模型能夠自動識別更多測試用例,并有效處理復(fù)雜的測試場景。 在缺陷檢測率方面,AI 模型也占據(jù)顯著優(yōu)勢。 手動測試的缺陷檢測率為70%,而AI 模型達(dá)到了90%。 結(jié)果表明AI 具備在早期階段識別更多潛在問題的能力,從而提前進行修復(fù),減少后期維護工作量和成本。 因此,研究發(fā)現(xiàn)AI 模型的誤報率略高于手動測試,為15%(手動測試為10%)。 因為模型在解釋自然語言描述時存在一定的不準(zhǔn)確性。 為了解決以上問題,可在未來研究中進一步優(yōu)化模型,提高處理自然語言描述時的準(zhǔn)確性。 在測試效率和人工成本方面,研究也顯示了AI 和NLP 技術(shù)的優(yōu)勢。 具體而言,由于AI 能夠自動執(zhí)行大部分重復(fù)的測試任務(wù),測試時間從原先的10 h減少到3 h,節(jié)約了70%的測試時間。 同時,也降低了人工成本,從原先每次測試需要5 名人力資源,降低到2 名,減少了60%的人力成本。
綜上所述,實證分析結(jié)果清晰地展示了AI 和NLP 技術(shù)在軟件測試中的應(yīng)用價值。 無論是提高測試覆蓋率、提升缺陷檢測率、提高測試效率還是降低人工成本等方面,AI 和NLP 都顯著優(yōu)于傳統(tǒng)方法。 模型誤報率的問題將是未來研究的重要方向之一。
首先對需求文檔進行預(yù)處理,包括去除停用詞、特殊符號等。 然后,通過詞性標(biāo)注、命名實體識別等NLP 技術(shù),對需求文檔進行深入分析,提取關(guān)鍵信息。 最后,根據(jù)提取的關(guān)鍵信息生成測試用例。 詳見表1。
表1 需求文檔分析示例
對缺陷報告進行預(yù)處理,包括去除停用詞、特殊符號等。 使用NLP 技術(shù)對缺陷報告進行關(guān)鍵信息提取和分類。 根據(jù)提取的關(guān)鍵信息對缺陷報告進行優(yōu)先級排序。缺陷報告分析示例見表2。
表2 缺陷報告分析示例
根據(jù)測試用例的自然語言描述,通過NLP 技術(shù)提取關(guān)鍵信息。 根據(jù)提取的關(guān)鍵信息生成相應(yīng)的測試數(shù)據(jù)。表3 展示了測試數(shù)據(jù)生成示例。
表3 測試數(shù)據(jù)生成示例
本研究對測試用例的自然語言描述進行了分析,提取關(guān)鍵信息。 并根據(jù)提取的關(guān)鍵信息生成相應(yīng)的測試腳本。
代碼1 測試腳本生成示例
為了驗證基于人工智能的自然語言處理技術(shù)在軟件測試中的應(yīng)用方法的有效性,本研究選取了一個開源軟件項目進行實驗。 實驗結(jié)果表明,采用本文提出的方法可以有效地提高軟件測試的效率和質(zhì)量。 具體實驗數(shù)據(jù)如表4 所示。
表4 實驗結(jié)果數(shù)據(jù)
本文針對基于人工智能的自然語言處理技術(shù)在軟件測試中的應(yīng)用進行了深入研究。 通過分析軟件測試中的需求分析、缺陷報告分析、測試數(shù)據(jù)生成、測試腳本生成等關(guān)鍵環(huán)節(jié),提出了一種將自然語言處理技術(shù)應(yīng)用于軟件測試的具體方法。 實驗結(jié)果表明,本次提出的基于自然語言處理技術(shù)的軟件測試方法可以顯著提高軟件測試的效率和質(zhì)量。 具體而言,測試用例生成時間、缺陷報告處理時間、測試數(shù)據(jù)生成時間以及測試腳本生成時間都得到了顯著的縮減,同時缺陷發(fā)現(xiàn)率也有所提高。 此結(jié)果說明了自然語言處理技術(shù)在軟件測試領(lǐng)域的巨大潛力和實際價值。在未來的工作中,可繼續(xù)探索自然語言處理技術(shù)在軟件測試中的應(yīng)用,進一步優(yōu)化方法和技術(shù),提升軟件測試的智能化程度。
針對不同類型的軟件項目,研究更具針對性的自然語言處理方法,以提高測試用例、測試數(shù)據(jù)和測試腳本的生成質(zhì)量;結(jié)合深度學(xué)習(xí)、知識圖譜等先進技術(shù),提高自然語言處理在軟件測試中的準(zhǔn)確性和可擴展性;深入研究自然語言處理技術(shù)在軟件測試報告生成、測試知識管理等方面的應(yīng)用,為軟件開發(fā)和測試團隊提供更全面的智能支持;結(jié)合實際項目需求,開發(fā)易用、高效的基于自然語言處理技術(shù)的軟件測試工具,以便更好地服務(wù)于工作[5]。
通過上述研究,以期為軟件測試領(lǐng)域帶來更高效、更智能的解決方案,推動軟件開發(fā)和測試領(lǐng)域的技術(shù)進步。