本發(fā)明涉及自動(dòng)化測(cè)試技術(shù)領(lǐng)域,尤其涉及一種可以檢測(cè)并處理干擾自動(dòng)化測(cè)試的異常問題的自動(dòng)化測(cè)試異常處理方法及自動(dòng)化測(cè)試系統(tǒng)。
背景技術(shù):
軟件測(cè)試對(duì)于保證軟件產(chǎn)品的可靠性和安全性十分重要,隨著軟件功能的日益增多及對(duì)于軟件穩(wěn)定、可靠性日益嚴(yán)苛的要求,軟件測(cè)試的工作量也成倍增長(zhǎng),如何快速、有效的進(jìn)行軟件測(cè)試、保證軟件質(zhì)量成為一個(gè)亟待解決的問題。隨著自動(dòng)化測(cè)試技術(shù)在數(shù)據(jù)通信領(lǐng)域的快速發(fā)展,很大程度上減少了手工測(cè)試人員大量的重復(fù)勞動(dòng),同時(shí)也為縮減產(chǎn)品開發(fā)成本,縮短開發(fā)周期作出了很大貢獻(xiàn)。越來越多的設(shè)備廠商利用自動(dòng)化測(cè)試技術(shù)在保證產(chǎn)品質(zhì)量的情況下縮短設(shè)備開發(fā)周期和開發(fā)成本,提高產(chǎn)品的市場(chǎng)競(jìng)爭(zhēng)力。
自動(dòng)化測(cè)試系統(tǒng)開始測(cè)試時(shí)會(huì)從jenkins上獲取一個(gè)最新的成功的buildnumber(即為最新版本號(hào)),自動(dòng)化測(cè)試系統(tǒng)會(huì)將測(cè)試用例文件名中版本號(hào)改成最新版本號(hào),如果此時(shí)有調(diào)用則會(huì)產(chǎn)生一個(gè)新的測(cè)試用例文件,那么在下次自動(dòng)化測(cè)試時(shí)因搜索到兩個(gè)測(cè)試用例文件而報(bào)錯(cuò),終止自動(dòng)化測(cè)試。
在自動(dòng)化測(cè)試過程中會(huì)生成一些自動(dòng)化腳本(自動(dòng)化測(cè)試用例文件、自動(dòng)化關(guān)鍵字文件、自動(dòng)化庫等)的備份文件,這些備份文件名只是多了.bak,其他與原文件名一樣,在調(diào)用時(shí)會(huì)出現(xiàn)異常,導(dǎo)致自動(dòng)化測(cè)試失敗。
當(dāng)在晚上執(zhí)行測(cè)試進(jìn)程時(shí),例如自動(dòng)化測(cè)試系統(tǒng)在每晚23:30進(jìn)行自動(dòng)化測(cè)試,不可能靠人工來實(shí)時(shí)監(jiān)控每個(gè)進(jìn)程的運(yùn)行情況,這樣會(huì)浪費(fèi)大量的人力。由于測(cè)試人員無法做到實(shí)時(shí)檢查,目前可以做的是測(cè)試人員提前對(duì)這些文件進(jìn)行檢查,但無法保證在測(cè)試前是否會(huì)生成異常;由于未能及時(shí)的發(fā)現(xiàn)異常情況,將會(huì)導(dǎo)致異常進(jìn)程所執(zhí)行的測(cè)試任務(wù)不能按時(shí)完成,影響測(cè)試進(jìn)度。因此,需要對(duì)現(xiàn)有的自動(dòng)化測(cè)試進(jìn)行改進(jìn)。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有自動(dòng)化測(cè)試存在會(huì)導(dǎo)致自動(dòng)化測(cè)試終止、自動(dòng)化測(cè)試失敗以及提前人工檢查無法保證在測(cè)試前是否會(huì)生成異常的技術(shù)問題,本發(fā)明目的在于提供一種自動(dòng)化測(cè)試異常處理方法及自動(dòng)化測(cè)試系統(tǒng),以確保測(cè)試準(zhǔn)確性、減輕測(cè)試人員工作量、縮短測(cè)試周期、降低測(cè)試成本。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種自動(dòng)化測(cè)試異常處理方法,所述方法包括如下步驟:(1)在自動(dòng)化測(cè)試前,遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件并導(dǎo)出文件信息;(2)讀取所述文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為備份文件,若是備份文件則刪除,若不是備份文件則繼續(xù)讀取下一文件信息并判斷,直到刪除所有備份文件;(3)重新遍歷刪除所有備份文件后的所述目錄中的文件并導(dǎo)出文件信息。
在一實(shí)施例中,步驟(3)之后進(jìn)一步包括:(4)讀取步驟(3)中導(dǎo)出的文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為測(cè)試用例文件,若是測(cè)試用例文件則將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中,若不是測(cè)試用例文件則繼續(xù)讀取下一文件信息并判斷,直到遍歷所有文件信息;(5)將所述字典中的所有鍵輸出,并根據(jù)鍵選取版本號(hào)中的最大鍵版本;(6)逐一讀取輸出的鍵并判斷是否為所述最大鍵版本,若不是所述最大鍵版本則刪除所述字典中所述鍵對(duì)應(yīng)的文件,直至所述字典中僅保留所述最大鍵版本的文件。
為實(shí)現(xiàn)上述目的,本發(fā)明還提供了一種自動(dòng)化測(cè)試系統(tǒng),包括:初始文件遍歷模塊、備份文件判斷模塊以及第二文件遍歷模塊;所述初始文件遍歷模塊,用于在自動(dòng)化測(cè)試前,遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件并導(dǎo)出文件信息;所述備份文件判斷模塊,用于讀取所述文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為備份文件,若是備份文件則刪除,若不是備份文件則繼續(xù)讀取下一文件信息并判斷,直到刪除所有備份文件;所述第二文件遍歷模塊,用于重新遍歷刪除所有備份文件后的所述目錄中的文件并導(dǎo)出文件信息。
在一實(shí)施例中,所述系統(tǒng)進(jìn)一步包括:測(cè)試用例文件判斷模塊、最大鍵版本選取模塊以及文件處理模塊:所述測(cè)試用例文件判斷模塊,用于讀取所述第二文件遍歷模塊中導(dǎo)出的文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為測(cè)試用例文件,若是測(cè)試用例文件則將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中,若不是測(cè)試用例文件則繼續(xù)讀取下一文件信息并判斷,直到遍歷所有文件信息;所述最大鍵版本選取模塊,用于將所述字典中的所有鍵輸出,并根據(jù)鍵選取版本號(hào)中的最大鍵版本;所述文件處理模塊,用于逐一讀取輸出的鍵并判斷是否為所述最大鍵版本,若不是所述最大鍵版本則刪除所述字典中所述鍵對(duì)應(yīng)的文件,直至所述字典中僅保留所述最大鍵版本的文件。
本發(fā)明的優(yōu)點(diǎn)在于:在自動(dòng)化測(cè)試前先對(duì)文件進(jìn)行檢測(cè),并對(duì)檢測(cè)出的干擾文件提前做處理,通過遍歷文件目錄的方式對(duì)目錄中文件進(jìn)行檢測(cè),通過將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)存入字典的方式方便調(diào)用,通過max對(duì)字典的值進(jìn)行對(duì)比,找出最大的版本號(hào);與現(xiàn)有技術(shù)相比,本發(fā)明可以確保測(cè)試準(zhǔn)確性、減輕測(cè)試人員工作量、縮短測(cè)試周期以及降低測(cè)試成本。
附圖說明
圖1,本發(fā)明所述的自動(dòng)化測(cè)試異常處理方法的流程示意圖;
圖2,本發(fā)明所述的自動(dòng)化測(cè)試異常處理方法一實(shí)施例的流程示意圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明提供的自動(dòng)化測(cè)試異常處理方法及自動(dòng)化測(cè)試系統(tǒng)做詳細(xì)說明。
參考圖1,本發(fā)明所述的自動(dòng)化測(cè)試異常處理方法的流程示意圖。所述的方法包括如下步驟:S11:在自動(dòng)化測(cè)試前,遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件并導(dǎo)出文件信息;S12:讀取所述文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為備份文件,若是備份文件則刪除,若不是備份文件則繼續(xù)讀取下一文件信息并判斷,直到刪除所有備份文件;S13:重新遍歷刪除所有備份文件后的所述目錄中的文件并導(dǎo)出文件信息。以下給出詳細(xì)解釋。
S11:在自動(dòng)化測(cè)試前,遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件并導(dǎo)出文件信息。
具體的,可以通過調(diào)用os.listdir函數(shù)遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件,并將導(dǎo)出的文件信息存到列表中。
S12:讀取所述文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為備份文件,若是備份文件則刪除,若不是備份文件則繼續(xù)讀取下一文件信息并判斷,直到刪除所有備份文件。
由于在自動(dòng)化測(cè)試過程中會(huì)生成一些自動(dòng)化腳本(自動(dòng)化測(cè)試用例文件、自動(dòng)化關(guān)鍵字文件、自動(dòng)化庫等)的備份文件,這些備份文件名只是多了.bak,其他與原文件名一樣,因此,可以通過檢測(cè)文件信息是否包括.bak來判斷是否為備份文件。
具體的,可以通過調(diào)用for...in命令循環(huán)讀取所述文件信息,并調(diào)用re.search函數(shù)以‘.+.bak’為匹配項(xiàng)匹配讀取的文件信息以判斷相應(yīng)文件是否為備份文件。如果是備份文件則刪除該文件,如果不是備份文件則讀取并檢測(cè)下個(gè)文件直到遍歷完所有文件,從而避免在調(diào)用時(shí)會(huì)出現(xiàn)異常,導(dǎo)致自動(dòng)化測(cè)試失敗的問題。
S13:重新遍歷刪除所有備份文件后的所述目錄中的文件并導(dǎo)出文件信息。
具體的,可以通過再調(diào)用os.listdir函數(shù)重新遍歷刪除所有備份文件后的的所述目錄中的文件并將文件信息存到列表中。此時(shí)的列表中不存在備份文件,從而避免在調(diào)用時(shí)會(huì)出現(xiàn)異常,導(dǎo)致自動(dòng)化測(cè)試失敗的問題。
本發(fā)明進(jìn)一步對(duì)測(cè)試用例文件進(jìn)行了優(yōu)化。優(yōu)選的,本發(fā)明所述的自動(dòng)化測(cè)試異常處理方法在步驟S13之后進(jìn)一步包括:S14:讀取步驟S13中導(dǎo)出的文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為測(cè)試用例文件,若是測(cè)試用例文件則將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中,若不是測(cè)試用例文件則繼續(xù)讀取下一文件信息并判斷,直到遍歷所有文件信息;S15:將所述字典中的所有鍵輸出,并根據(jù)鍵選取版本號(hào)中的最大鍵版本;S16:逐一讀取輸出的鍵并判斷是否為所述最大鍵版本,若不是所述最大鍵版本則刪除所述字典中所述鍵對(duì)應(yīng)的文件,直至所述字典中僅保留所述最大鍵版本的文件。通過上述操作,使得僅保留最大鍵版本的測(cè)試用例文件,避免了現(xiàn)有技術(shù)中自動(dòng)化測(cè)試時(shí)因搜索到兩個(gè)測(cè)試用例文件而報(bào)錯(cuò),終止自動(dòng)化測(cè)試的問題。
具體的,步驟S14可以通過調(diào)用for...in命令循環(huán)讀取所述文件信息并調(diào)用re.search函數(shù)以‘(項(xiàng)目名_v版本_case.txt)’為匹配項(xiàng)匹配讀取的文件信息以判斷相應(yīng)文件是否為測(cè)試用例文件。如果是測(cè)試用例文件,可以利用匹配對(duì)象的元組特性將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中(如果只有一個(gè)測(cè)試用例文件,則字典中只有一個(gè)版本號(hào)對(duì)應(yīng)一個(gè)文件名);如果不是測(cè)試用例文件,則讀取并檢測(cè)下個(gè)文件直到遍歷完所有文件。
具體的,步驟S15可以通過調(diào)用_dict.key()函數(shù)將所述字典中的所有鍵輸出,并調(diào)用max命令根據(jù)鍵選取版本號(hào)中的最大鍵版本。因在判定測(cè)試用例文件時(shí),將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中,故可以通過鍵來選出最大鍵版本(即最接近現(xiàn)在測(cè)試的版本,如果只有一個(gè)測(cè)試用例文件則選出該用例文件名對(duì)應(yīng)的版本號(hào))。
具體的,步驟S16可以通過調(diào)用for...in命令逐一讀取輸出的鍵并判斷是否為所述最大鍵版本。調(diào)用for...in命令逐一讀取函數(shù)_dict.key()輸出的版本號(hào)(鍵),如果版本號(hào)不是選出的最大鍵版本則刪除字典中該版本號(hào)對(duì)應(yīng)的文件,直至字典中僅保留最大鍵版本的文件為止。
在自動(dòng)化測(cè)試前先進(jìn)行本發(fā)明提供的自動(dòng)化測(cè)試異常處理方法所述的操作,通過遍歷文件目錄的方式對(duì)目錄中文件進(jìn)行檢測(cè),通過將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)存入字典的方式方便調(diào)用,通過max對(duì)字典的值進(jìn)行對(duì)比,找出最大的版本號(hào);與現(xiàn)有技術(shù)相比,本發(fā)明可以確保測(cè)試準(zhǔn)確性、減輕測(cè)試人員工作量、縮短測(cè)試周期以及降低測(cè)試成本。
以下結(jié)合附圖2對(duì)本發(fā)明所述的自動(dòng)化測(cè)試異常處理方法做進(jìn)一步說明。參考圖2,本發(fā)明所述的自動(dòng)化測(cè)試異常處理方法一實(shí)施例的流程示意圖。
本發(fā)明公開的檢測(cè)并刪除干擾自動(dòng)化測(cè)試的備份和同類文件的方法,適用于WiFi產(chǎn)品自動(dòng)化測(cè)試環(huán)境。通過將本發(fā)明所述的方法寫入自動(dòng)化腳本的setup中,在自動(dòng)化測(cè)試前先運(yùn)行setup中該方法的腳本。
腳本內(nèi)容如下:
1)調(diào)用os.listdir函數(shù)遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件,并將文件信息存到列表中;
2)調(diào)用for...in命令循環(huán)讀取列表中的文件信息,并調(diào)用re.search函數(shù)以‘.+.bak’為匹配項(xiàng)匹配讀取的文件信息以檢測(cè)該文件是否為備份文件;如果是備份文件則刪除該文件,如果不是備份文件則讀取并檢測(cè)下個(gè)文件直到遍歷完成整個(gè)列表;
3)對(duì)刪除所有備份文件后的的所述目錄中的文件,再調(diào)用os.listdir函數(shù)重新讀取目錄中的文件并將文件信息存到列表中;
4)調(diào)用for...in命令循環(huán)讀取列表中的文件信息,并調(diào)用re.search函數(shù)以‘(%s_v)(\d+)(_case.txt)’為匹配項(xiàng)(項(xiàng)目名_v版本_case.txt)檢測(cè)該文件是否為測(cè)試用例文件;如果是測(cè)試用例文件則利用匹配對(duì)象的元組特性將版本號(hào)作為鍵和文件名作為值一一對(duì)應(yīng)保存到字典中(如果只有一個(gè)測(cè)試用例文件,則字典中只有一個(gè)版本號(hào)對(duì)應(yīng)一個(gè)文件名),如果不是則讀取并檢測(cè)下個(gè)文件直到遍歷完成整個(gè)列表;
5)調(diào)用函數(shù)_dict.key()函數(shù)將字典中的鍵(版本號(hào))輸出出來,并調(diào)用max命令選出版本號(hào)中的最大鍵版本(即最接近現(xiàn)在測(cè)試的版本,如果只有一個(gè)測(cè)試用例文件則選出該用例文件名對(duì)應(yīng)的版本號(hào));
6)調(diào)用for...in命令逐一讀取_dict.key()函數(shù)輸出的鍵,如果鍵不是選出的最大鍵版本則刪除字典中該鍵對(duì)應(yīng)的測(cè)試用例文件,直至字典中僅保留最大鍵版本的測(cè)試用例文件為止。
本發(fā)明還提供了一種自動(dòng)化測(cè)試系統(tǒng),包括:初始文件遍歷模塊、備份文件判斷模塊以及第二文件遍歷模塊。
所述初始文件遍歷模塊,用于在自動(dòng)化測(cè)試前,遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件并導(dǎo)出文件信息。具體的,初始文件遍歷模塊可以通過調(diào)用os.listdir函數(shù)遍歷自動(dòng)化測(cè)試腳本所在的目錄中的文件,并將導(dǎo)出的文件信息存到列表中。
所述備份文件判斷模塊,用于讀取所述文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為備份文件,若是備份文件則刪除,若不是備份文件則繼續(xù)讀取下一文件信息并判斷,直到刪除所有備份文件。具體的,備份文件判斷模塊可以通過調(diào)用for...in命令循環(huán)讀取所述文件信息,并調(diào)用re.search函數(shù)以‘.+.bak’為匹配項(xiàng)匹配讀取的文件信息以判斷相應(yīng)文件是否為備份文件。如果是備份文件則刪除該文件,如果不是備份文件則讀取并檢測(cè)下個(gè)文件直到遍歷完所有文件,從而避免在調(diào)用時(shí)會(huì)出現(xiàn)異常,導(dǎo)致自動(dòng)化測(cè)試失敗的問題。
所述第二文件遍歷模塊,用于重新遍歷刪除所有備份文件后的所述目錄中的文件并導(dǎo)出文件信息。具體的,第二文件遍歷模塊可以通過調(diào)用os.listdir函數(shù)重新遍歷刪除所有備份文件后的的所述目錄中的文件并將文件信息存到列表中。此時(shí)的列表中不存在備份文件,從而避免在調(diào)用時(shí)會(huì)出現(xiàn)異常,導(dǎo)致自動(dòng)化測(cè)試失敗的問題。
本發(fā)明進(jìn)一步對(duì)測(cè)試用例文件進(jìn)行了優(yōu)化。優(yōu)選的,本發(fā)明所述的自動(dòng)化測(cè)試系統(tǒng)進(jìn)一步包括:測(cè)試用例文件判斷模塊、最大鍵版本選取模塊以及文件處理模塊。
所述測(cè)試用例文件判斷模塊,用于讀取所述第二文件遍歷模塊中導(dǎo)出的文件信息并根據(jù)所述文件信息判斷相應(yīng)文件是否為測(cè)試用例文件,若是測(cè)試用例文件則將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中,若不是測(cè)試用例文件則繼續(xù)讀取下一文件信息并判斷,直到遍歷所有文件信息。具體的,測(cè)試用例文件判斷模塊可以通過調(diào)用for...in命令循環(huán)讀取所述文件信息并調(diào)用re.search函數(shù)以‘(項(xiàng)目名_v版本_case.txt)’為匹配項(xiàng)匹配讀取的文件信息以判斷相應(yīng)文件是否為測(cè)試用例文件。如果是測(cè)試用例文件,可以利用匹配對(duì)象的元組特性將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中(如果只有一個(gè)測(cè)試用例文件,則字典中只有一個(gè)版本號(hào)對(duì)應(yīng)一個(gè)文件名);如果不是測(cè)試用例文件,則讀取并檢測(cè)下個(gè)文件直到遍歷完所有文件。
所述最大鍵版本選取模塊,用于將所述字典中的所有鍵輸出,并根據(jù)鍵選取版本號(hào)中的最大鍵版本。具體的,最大鍵版本選取模塊可以通過調(diào)用_dict.key()函數(shù)將所述字典中的所有鍵輸出,并調(diào)用max命令根據(jù)鍵選取版本號(hào)中的最大鍵版本。因在判定測(cè)試用例文件時(shí),將版本號(hào)作為鍵、文件名作為值一一對(duì)應(yīng)保存到字典中,故可以通過鍵來選出最大鍵版本(即最接近現(xiàn)在測(cè)試的版本,如果只有一個(gè)測(cè)試用例文件則選出該用例文件名對(duì)應(yīng)的版本號(hào))。
所述文件處理模塊,用于逐一讀取輸出的鍵并判斷是否為所述最大鍵版本,若不是所述最大鍵版本則刪除所述字典中所述鍵對(duì)應(yīng)的文件,直至所述字典中僅保留所述最大鍵版本的文件。具體的,文件處理模塊可以通過調(diào)用for...in命令逐一讀取輸出的鍵并判斷是否為所述最大鍵版本。調(diào)用for...in命令逐一讀取函數(shù)_dict.key()輸出的版本號(hào)(鍵),如果版本號(hào)不是選出的最大鍵版本則刪除字典中該版本號(hào)對(duì)應(yīng)的文件,直至字典中僅保留最大鍵版本的文件為止。
本發(fā)明所述的自動(dòng)化測(cè)試系統(tǒng)在自動(dòng)化測(cè)試前僅保留最大鍵版本的測(cè)試用例文件,避免了現(xiàn)有技術(shù)中自動(dòng)化測(cè)試時(shí)因搜索到兩個(gè)測(cè)試用例文件而報(bào)錯(cuò),終止自動(dòng)化測(cè)試的問題。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。