李曉玉 唐智
摘要:基于用戶查詢的搜索和顯示數(shù)據(jù)是大多數(shù)軟件應(yīng)用程序的關(guān)鍵功能系統(tǒng),這些系統(tǒng)管理大量的數(shù)據(jù),由于很難確定預(yù)期的輸出結(jié)果,因此使其極難測試,即這個問題被稱為“oracle問題”蛻變測試(Metamorphic testing,MT)是一種旨在通過設(shè)置一系列稱為蛻變關(guān)系(metamorphic relation,MR)來緩解此問題的方法。該文通過面向用戶檢索習(xí)慣和搜索引擎的功能屬性,定義MR來應(yīng)用MT,選取知網(wǎng)、百度學(xué)術(shù)等學(xué)術(shù)搜索引擎(Academic Search Engines,ASE)作為驗證對象,實驗結(jié)果表明最可靠的服務(wù)是中國知網(wǎng),最不可靠的服務(wù)是谷歌學(xué)術(shù)。從用戶的角度來看,ACM在用于查找商品時表現(xiàn)更好,可以滿足他們的需求。
關(guān)鍵詞:蛻變測試;蛻變關(guān)系;學(xué)術(shù)搜索引擎;Oracle問題
中圖分類號:TP3? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)13-0227-02
1概述
軟件測試是軟件質(zhì)量保證和驗證的主流方法,但是它面臨兩個基本問題:Oracle問題和可靠測試集問題。在本文中,我們關(guān)注第一個問題。 “Oracle問題”是指很難驗證給定測試用例的測試結(jié)果的情況。
與大多數(shù)其他軟件測試技術(shù)不同,蛻變測試可用于測試用例的生成和測試結(jié)果的驗證,從而解決了測試的兩個基本問題。盡管最初它是一種基于成功案例生成新測試用例的方法,但很快就發(fā)現(xiàn)MT也是緩解Oracle問題的有效方法,MT的核心元素是一組蛻變關(guān)系(MR),這是目標(biāo)函數(shù)或算法相對于多個輸入及其預(yù)期輸出的必要屬性。在實施MT時首先會生成一些程序輸入作為源測試用例,然后可以在此基礎(chǔ)上使用MR生成新的輸入作為后續(xù)測試用例用以驗證測試結(jié)果。與傳統(tǒng)方式不同,MT會根據(jù)相應(yīng)的MR驗證源和后續(xù)測試用例以及它們的輸出來進(jìn)行對比驗證。
搜索引擎是指根據(jù)一定的策略,在Internet上收集、發(fā)現(xiàn)信息,并對其進(jìn)行理解、提取、組織和處理,為用戶提供檢索服務(wù),從而起到信息導(dǎo)航作用的系統(tǒng)[1],它是用戶從Internet獲得信息的主要方式。但是用戶在面對海量的互聯(lián)網(wǎng)信息無從驗證搜索引擎返回結(jié)果是否正確。因此搜索引擎通常是存在Oracle問題的軟件,目前許多學(xué)者已經(jīng)將蛻變測試應(yīng)用于搜索引擎的測試中。
在MT中成功地應(yīng)用了檢測搜索引擎,周[2]等提出了一種緩解Oracle問題的方法,用于搜索引擎的測試和質(zhì)量評估。本文從用戶的角度提出了MR以評估搜索引擎。結(jié)果表明不同的搜索引擎可能會顯示有關(guān)功能特征的各種結(jié)果。它們直接有助于用戶的感知和滿意度。
2蛻變測試
當(dāng)測試用例的預(yù)期輸出未知或難以與實際輸出進(jìn)行比較時,蛻變測試提供了一種測試程序的替代方法。蛻變測試不是檢查單個測試的輸出,而是檢查多個測試執(zhí)行是否滿足某些蛻變關(guān)系。該關(guān)系將兩個或多個輸入數(shù)據(jù)與其預(yù)期輸出相關(guān)聯(lián)。例如考慮數(shù)學(xué)函數(shù)[min (a,b)],該函數(shù)計算兩個整數(shù)a和b的最小值。輸入的順序不會影響輸出,可以將其表示為以下蛻變關(guān)系:[mina,b=min (b,a)] 在這種蛻變關(guān)系中[(a,b)]稱為源輸入,而[(b,a)]稱為后續(xù)輸入。如果源測試用例及其后續(xù)測試用例的輸出違反了蛻變關(guān)系,則蛻變測試已失敗,表明被測程序包含錯誤。
3蛻變關(guān)系在搜索引擎上的應(yīng)用
本文在周[2]的基礎(chǔ)研究上提出了一組蛻變關(guān)系,即MPublished使用該MR來測試學(xué)術(shù)搜索引擎并對其進(jìn)行質(zhì)量評估,旨在評估學(xué)術(shù)搜索引擎中科學(xué)文獻(xiàn)的檢索功能。在檢索僅包含一個單詞或短語的科學(xué)文檔時,它著重關(guān)注其可靠性。其中原測試用例由關(guān)鍵字組成,然后執(zhí)行后續(xù)測試用例。通過提取稱為“MPublished”的參數(shù)來構(gòu)建的,該參數(shù)引用了原測試用例的結(jié)果列表中第一項的發(fā)布源。
此MR的主要目標(biāo)是通過專門處理原始查詢來評估搜索引擎的行為。通過給出執(zhí)行的示例,提取了源查詢的第一個結(jié)果的發(fā)布地點,希望在后續(xù)查詢中包含此信息,在原始關(guān)鍵字內(nèi),搜索引擎至少返回從原測試用例中提取信息的文件。如果搜索引擎無法返回本文,則可能表明負(fù)責(zé)查詢專門化機制的算法存在故障或失敗。
MPTitle 是對學(xué)術(shù)搜索引擎通過研究結(jié)果的標(biāo)題理解和抽象科學(xué)著作的測試。它是評估搜索引擎返回科學(xué)文獻(xiàn)能力的一部分。通過用于搜索的原測試用例來完成,然后創(chuàng)建后續(xù)測試用例,該查詢將包含原測試用例和原測試用例中返回的第一篇論文的標(biāo)題。因此在執(zhí)行原測試用例時發(fā)現(xiàn)至少一個結(jié)果。否則觀察到MR錯誤,該引擎中存在故障。
此MR描述如下:如果后續(xù)測試用例的搜索詞由原測試用例的搜索詞組成,并且還包含原測試用例返回的第一篇論文的標(biāo)題;那么后續(xù)測試用例的至少一個結(jié)果應(yīng)等于從原測試用例提取的第一個結(jié)果。通過基于原測試用例構(gòu)建后續(xù)測試用例,添加返回的第一篇論文的名稱,指定的論文查詢不會返回。這表明搜索引擎可能存在缺陷。
4實驗與結(jié)果分析
在本小節(jié)中,我們將描述實驗步驟。首先使用提供的數(shù)據(jù)集,該數(shù)據(jù)集收集了DBLP5中可用的計算領(lǐng)域的科學(xué)論文的出版物,它提供了有關(guān)主要計算機科學(xué)期刊和論文集的公開書目信息。本文從其中隨機提取一些關(guān)鍵字,將在實驗中使用學(xué)術(shù)搜索引擎:中國知網(wǎng)、谷歌學(xué)術(shù)、IEEE、百度學(xué)術(shù)和BASE。收集每次執(zhí)行的結(jié)果,然后繼續(xù)執(zhí)行該過程,直到達(dá)到所需的數(shù)量為止。
本文研究提出的MR是否能夠識別所評估的搜索引擎中存在的可能故障或意外行為,為此我們評估了MR關(guān)于它們檢測意外故障行為的能力。確定了MR是否對其測試有用,還評估了哪種學(xué)術(shù)搜索引擎的行為更適合最終用戶。本文從實驗中所有觀察得到的數(shù)據(jù)的合并值進(jìn)行了假設(shè),合并數(shù)據(jù)由每個引擎的30個觀測值的平均值形成。對于每個MR收集了33個觀察值,相當(dāng)于總共執(zhí)行了990次。
對于所有實驗,控制兩個自變量中第一個是學(xué)術(shù)搜索引擎中執(zhí)行搜索的字符串,第二個是學(xué)術(shù)搜索引擎本身。通過處理收集的因變量使用度量ROCOF來衡量,該指標(biāo)反映了系統(tǒng)中故障或異常的發(fā)生率。ROCOF為0.06意味著在每33個觀測值中都可能出現(xiàn)兩個故障或異常。換句話說,ROCOF接近1表示系統(tǒng)中發(fā)現(xiàn)故障或異常的比率很高。
MPublished專注于引擎檢索僅包含一個單詞或短語的科學(xué)文檔的可靠性?;诖?,較低的ROCOF值表示該引擎的可靠性較高。在圖1中,我們可以看到中國知網(wǎng)、谷歌學(xué)術(shù)、IEEE和BASE呈現(xiàn)出更高的ROCOF值。這些值表明這三個搜索引擎有更多的機會發(fā)生故障。最可靠的搜索引擎是百度學(xué)術(shù),而最不可靠的服務(wù)是IEEE搜索,在最壞的情況下,ROCOF高達(dá)0.4左右。
在MPTitle中可以很清楚地看出檢測是否可能存在缺陷或不良行為。根據(jù)ROCOF的值在衡量檢測結(jié)果,ROCOF得分高意味著失敗率很高,MPTitle的結(jié)果在每個故障檢測中表現(xiàn)不同。在給定的執(zhí)行間隔內(nèi)都會產(chǎn)生故障。在此MR中最可靠的服務(wù)是中國知網(wǎng),最不可靠的服務(wù)是谷歌學(xué)術(shù)??梢杂^察到通過升級后IEEE表現(xiàn)得更好,與百度學(xué)術(shù)的性能相當(dāng)。從用戶的角度來看,中國知網(wǎng)在用于查找商品時表現(xiàn)更好,可以滿足他們的需求
根據(jù)給出的結(jié)果和統(tǒng)計測試,可以證明提出的MR能夠檢測出學(xué)術(shù)搜索引擎中可能發(fā)生的意外行為,并且對該類引擎排序算法中的潛在問題保持警惕。使用始終返回有效查詢的隨機選擇關(guān)鍵字進(jìn)一步提高了該研究問題的數(shù)據(jù)的可靠性。
5結(jié)束語
在實驗中分析搜索引擎的能力時,實驗顯示百度學(xué)術(shù)是提供最佳結(jié)果的搜索引擎。當(dāng)搜索的關(guān)鍵字是觀察能夠最好地返回結(jié)果的搜索引擎時,根據(jù)所需的關(guān)鍵字和論文標(biāo)題,表現(xiàn)最佳的搜索引擎是中國知網(wǎng)。關(guān)于搜索引擎在返回類似查詢的相似結(jié)果的能力方面的穩(wěn)定性,與其他查詢相比,百度學(xué)術(shù)是表現(xiàn)最佳的查詢。
以后的工作,我們計劃在每個搜索引擎中增加實驗中的查詢數(shù)量,計劃添加新的MR,以分析ASE的其他功能,例如通過應(yīng)用搜索過濾器來優(yōu)化搜索結(jié)果來檢查其行為。我們還計劃評估其他搜索引擎,并將其與第一次分析中獲得的結(jié)果進(jìn)行比較,以更好地了解這些搜索引擎的操作,并在將來創(chuàng)建一個指南,以支持用戶在使用時獲得更好的結(jié)果。
參考文獻(xiàn):
[1] 印鑒,陳憶群,張鋼.搜索引擎技術(shù)研究與發(fā)展[J].計算機工程,2005,31(14):54-56,104.
[2] Zhou Z Q,Xiang S W,Chen T Y.Metamorphic testing for software quality assessment:astudy of search engines[J].IEEE Transactions on Software Engineering,2016,42(3):264-284.
【通聯(lián)編輯:代影】