本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種測試加載方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)(web)技術(shù)的廣泛應(yīng)用,針對web服務(wù)器的各種自動化測試技術(shù)也是飛速發(fā)展,越來越多的項目團隊為了減少人力成本和縮短項目開發(fā)周期都開始在項目的開發(fā)過程中引入自動化測試工作,但由于不同領(lǐng)域web服務(wù)器的差異性、產(chǎn)品質(zhì)量的不規(guī)范性和自動化測試框架的成本等問題,導(dǎo)致在實際項目開發(fā)過程中進行的自動化測試經(jīng)常無疾而終。
目前流行的自動化測試框架的設(shè)計重點都在固定測試技術(shù)的二次封裝開發(fā),在這種設(shè)計方式中,每個測試用例中的測試技術(shù)都是固定的,現(xiàn)有的自動化測試中是不能針對每個測試用例靈活切換測試技術(shù)的。為了實現(xiàn)針對不同測試技術(shù)的測試,需要編寫不同的測試用例。
顯然,現(xiàn)有的自動化測試技術(shù)中,測試的靈活性較低,實現(xiàn)測試的成本較高。
技術(shù)實現(xiàn)要素:
本申請實施例提供一種測試加載方法及裝置,用以解決現(xiàn)有的自動化測試技術(shù)中,測試的靈活性較低,實現(xiàn)測試的成本較高的問題。
本申請實施例提供的一種測試加載方法,包括:
確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本信息、用例文件信息和測試技術(shù);
根據(jù)所述測試版本信息和用例文件信息,加載用例文件;
根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能、所述測試技術(shù)、以及所述測試版本信息,加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
可選地,所述方法還包括:
在每個測試版本下,自動生成用例文件、測試腳本、和測試數(shù)據(jù)的管理目錄,不同的測試版本對應(yīng)不同的用例文件、測試腳本、和測試數(shù)據(jù)。
可選地,所述方法還包括:
在生成一個新的測試版本后,在該測試版本的業(yè)務(wù)功能模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的業(yè)務(wù)功能管理目錄以及初始化文件,并在不同的測試技術(shù)的業(yè)務(wù)功能管理目錄下分別添加實現(xiàn)各個業(yè)務(wù)功能的測試腳本。
可選地,所述方法還包括:
在生成一個新的測試版本后,在該測試版本的測試數(shù)據(jù)模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的測試數(shù)據(jù)管理目錄以及測試數(shù)據(jù)的初始化文件,并在不同的測試技術(shù)的測試數(shù)據(jù)管理目錄下分別添加與每個業(yè)務(wù)功能的測試腳本相關(guān)聯(lián)的測試數(shù)據(jù)。
可選地,根據(jù)所述測試版本信息和用例文件信息,加載用例文件,包括:
在所述測試版本信息所指示的測試版本下,查找所述用例文件信息所指示的用例文件;
若查找失敗,則獲取所述測試版本信息的依賴版本信息;在所述依賴版本信息所指示的測試版本下,查找所述用例文件信息所指示的用例文件;重復(fù)該步驟,直到查找到所述用例文件,則加載該用例文件。
可選地,根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能、所述測試技術(shù)、以及所述測試版本信息,加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù),包括:
根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能和所述測試技術(shù),在所述測試版本信息指示的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本,以及所述測試數(shù)據(jù);
若查找失敗,則獲取所述測試版本信息的依賴版本信息;在所述依賴版本信息所指示的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù);重復(fù)該步驟,直到查找到實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù),則加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
可選地,加載所述測試數(shù)據(jù),包括:
根據(jù)預(yù)先定義的與所述測試腳本對應(yīng)的各種參數(shù)類型,隨機生成執(zhí)行所述測試腳本時需要使用的測試數(shù)據(jù);和/或,
加載用戶預(yù)先輸入的測試數(shù)據(jù)。
可選地,所述確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本信息、用例文件信息和測試技術(shù),包括:
確定用戶選擇的測試版本信息、用例文件信息和測試技術(shù)。
可選地,所述確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本信息、用例文件信息和測試技術(shù),包括:
在之前針對所述測試版本信息指示的測試版本執(zhí)行測試任務(wù)時所使用的用例文件中,選擇出線性無關(guān)的用例文件;
根據(jù)選擇的每個用例文件的權(quán)重和支持的測試技術(shù),將各個用例文件按照用戶指定的或者預(yù)設(shè)的全正交組合方式進行組合;所述全正交組合方式是指對于多個用例文件進行不同的排序組合;
基于所述測試版本信息、進行組合后的用例文件、以及組合后的用例文件支持的測試技術(shù),生成所述待執(zhí)行的測試任務(wù)。
本申請實施例提供的一種測試加載裝置,包括:
確定模塊,用于確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本信息、用例文件信息和測試技術(shù);
加載模塊,用于根據(jù)所述測試版本信息和用例文件信息,加載用例文件;根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能、所述測試技術(shù)、以及所述測試版本信息,加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
可選地,所述裝置還包括:
生成模塊,用于在每個測試版本下,自動生成用例文件、測試腳本、和測試數(shù)據(jù)的管理目錄,不同的測試版本對應(yīng)不同的用例文件、測試腳本、和測試數(shù)據(jù)。
可選地,所述生成模塊還用于:
在生成一個新的測試版本后,在該測試版本的業(yè)務(wù)功能模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的業(yè)務(wù)功能管理目錄以及初始化文件,并在不同的測試技術(shù)的業(yè)務(wù)功能管理目錄下分別添加實現(xiàn)各個業(yè)務(wù)功能的測試腳本。
可選地,所述生成模塊還用于:
在生成一個新的測試版本后,在該測試版本的測試數(shù)據(jù)模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的測試數(shù)據(jù)管理目錄以及測試數(shù)據(jù)的初始化文件,并在不同的測試技術(shù)的測試數(shù)據(jù)管理目錄下分別添加與每個業(yè)務(wù)功能的測試腳本相關(guān)聯(lián)的測試數(shù)據(jù)。
可選地,所述加載模塊具體用于:
在所述測試版本信息所指示的測試版本下,查找所述用例文件信息所指示的用例文件;
若查找失敗,則獲取所述測試版本信息的依賴版本信息;在所述依賴版本信息所指示的測試版本下,查找所述用例文件信息所指示的用例文件;重復(fù)該步驟,直到查找到所述用例文件,則加載該用例文件。
可選地,所述加載模塊具體用于:
根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能和所述測試技術(shù),在所述測試版本信息指示的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本,以及所述測試數(shù)據(jù);
若查找失敗,則獲取所述測試版本信息的依賴版本信息;在所述依賴版本信息所指示的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù);重復(fù)該步驟,直到查找到實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù),則加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
可選地,所述加載模塊還用于:
根據(jù)預(yù)先定義的與所述測試腳本對應(yīng)的各種參數(shù)類型,隨機生成執(zhí)行所述測試腳本時需要使用的測試數(shù)據(jù);和/或,
加載用戶預(yù)先輸入的測試數(shù)據(jù)。
可選地,所述確定模塊具體用于:
確定用戶選擇的測試版本信息、用例文件信息和測試技術(shù)。
可選地,所述確定模塊具體用于:
在之前針對所述測試版本信息指示的測試版本執(zhí)行測試任務(wù)時所使用的用例文件中,選擇出線性無關(guān)的用例文件;
根據(jù)選擇的每個用例文件的權(quán)重和支持的測試技術(shù),將各個用例文件按照用戶指定的或者預(yù)設(shè)的全正交組合方式進行組合;所述全正交組合方式是指對多個用例文件進行不同的排序組合;
基于所述測試版本信息、進行組合后的用例文件、以及組合后的用例文件支持的測試技術(shù),生成所述待執(zhí)行的測試任務(wù)。
本申請實施例中,并沒有預(yù)先設(shè)計好每個用例文件所采用的測試技術(shù),而是可以單獨配置用例文件信息和測試技術(shù),在加載用例文件后,根據(jù)配置的測試技術(shù),再臨時加載在該測試技術(shù)中實現(xiàn)用例文件中指定的業(yè)務(wù)功能的測試腳本及測試數(shù)據(jù)。從而可以靈活切換測試技術(shù),增加測試的靈活性,降低測試成本。
附圖說明
圖1為本申請實施例提供的測試加載方法流程圖;
圖2為本申請實施例二提供的一測試加載方法流程圖;
圖3為本申請實施例提供的自動化測試框架;
圖4為本申請實施例提供的測試加載裝置結(jié)構(gòu)圖。
具體實施方式
本申請實施例中,并沒有預(yù)先設(shè)計好每個用例文件所采用的測試技術(shù),而是可以單獨配置用例文件信息和測試技術(shù),在加載用例文件后,根據(jù)配置的測試技術(shù),再臨時加載在該測試技術(shù)下實現(xiàn)用例文件中指定的業(yè)務(wù)功能的測試腳本及測試數(shù)據(jù)。從而可以靈活切換測試技術(shù),增加測試的靈活性,降低測試成本。
另外,在本申請優(yōu)選的實施方式中,系統(tǒng)可以為用戶自動生成測試數(shù)據(jù),無需用戶提供全部的測試數(shù)據(jù),不但降低了測試數(shù)據(jù)維護的成本,也降低了用戶輸入數(shù)據(jù)的復(fù)雜度。
另外,本申請實施例可以存儲不同測試版本下的用例文件、測試腳本及測試數(shù)據(jù),在執(zhí)行測試任務(wù)時根據(jù)測試版本自動加載用例文件、測試腳本及測試數(shù)據(jù),解決了用例文件和測試腳本、測試數(shù)據(jù)之間的管理兼容性問題,使得用例文件和測試腳本、測試數(shù)據(jù)的管理更加規(guī)范,降低了開發(fā)和維護的難度。另外,若測試時在指定的測試版本下查找不到相應(yīng)的用例文件/測試腳本/測試數(shù)據(jù),在可以在該測試版本的依賴版本中查找,提高了用例文件/測試腳本/測試數(shù)據(jù)的復(fù)用性。
進一步地,本申請實施例還提供了一種探索測試的思想,除了在用戶的指示下,根據(jù)用戶選擇的測試版本號、用例文件信息和測試技術(shù)進行測試外,還可以在系統(tǒng)空閑時,基于用戶之前測試時所使用的用例文件,將線性無關(guān)的用例文件基于其權(quán)重和支持的測試技術(shù)進行隨機組合,執(zhí)行自動化探索測試,從而可以自動發(fā)現(xiàn)問題,提供業(yè)務(wù)場景測試的覆蓋度。
下面結(jié)合說明書附圖對本申請實施例作進一步詳細描述。
實施例一
本申請實施例引入了版本控制和管理流程,在每個測試版本下,自動生成用例文件、測試腳本、和測試數(shù)據(jù)的管理目錄,不同的測試版本對應(yīng)不同的用例文件、測試腳本、和測試數(shù)據(jù)。
在生成一個新的測試版本后,在該測試版本的業(yè)務(wù)功能模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的業(yè)務(wù)功能管理目錄以及初始化文件。這樣,生成的多種測試技術(shù)在版本中相互獨立并處于并列關(guān)系,可達到靈活添加測試技術(shù)的目的。另外,在不同的測試技術(shù)的業(yè)務(wù)功能管理目錄下分別添加實現(xiàn)各個業(yè)務(wù)功能的測試腳本。這樣,可以針對同一種業(yè)務(wù)功能靈活切換測試技術(shù)。
另外,在生成一個新的測試版本后,在該測試版本的測試數(shù)據(jù)模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的測試數(shù)據(jù)管理目錄以及測試數(shù)據(jù)的初始化文件,并在不同的測試技術(shù)的測試數(shù)據(jù)管理目錄下分別添加與每個業(yè)務(wù)功能的測試腳本相關(guān)聯(lián)的測試數(shù)據(jù)。這樣,可以實現(xiàn)針對與測試腳本對應(yīng)的測試數(shù)據(jù)的靈活查找及維護。
如圖1所示,為本申請實施例一提供的測試加載方法流程圖,包括以下步驟:
S101:確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本號(也即測試版本信息,本申請實施例以測試版本信息為測試版本號為例進行介紹)、用例文件信息(比如用例名稱)和測試技術(shù)。
在具體實施中,用戶可以指定測試版本號、如果指定的測試任務(wù)中包含多個用例文件的測試,則可以指定用例文件的執(zhí)行順序,還可以指定測試技術(shù)。
作為一種可選的實施方式,測試服務(wù)器可以在沒有用戶指示的情況下,執(zhí)行自動化探索測試:在之前針對所述測試版本信息指示的測試版本執(zhí)行測試任務(wù)時所使用的用例文件中,選擇出線性無關(guān)的用例文件;根據(jù)選擇的每個用例文件的權(quán)重和支持的測試技術(shù),將各個用例文件按照用戶指定的或者預(yù)設(shè)的全正交組合方式進行組合;所述全正交組合方式是指對于多個用例文件進行不同的排序組合(這里,不同的組合之間可能包含不同的用例文件,也可能包含的用例文件相同,但執(zhí)行順序不同,比如用例文件A-用例文件B,和用例文件B-用例文件A為兩種不同的組合方式,其對應(yīng)的用例文件相同,但執(zhí)行順序不同,另外,用例文件A-用例文件B-用例文件C,和用例文件A-用例文件B由于包含的用例文件不同,也自然是兩種不同的組合方式);基于所述測試版本信息、進行組合后的用例文件、以及組合后的用例文件支持的測試技術(shù),生成所述待執(zhí)行的測試任務(wù)。
這里,系統(tǒng)自動統(tǒng)計用例文件執(zhí)行次數(shù),權(quán)重大的用例文件在隨機組合時候會增加被執(zhí)行的次數(shù)。測試技術(shù)可以有四種,分別為在用戶界面(User Interface,UI)層進行驗證測試、在網(wǎng)頁(web)接口進行驗證測試,在服務(wù)器后臺接口進行驗證測試、以及在后臺接口進行覆蓋性測試。
通過上述自動化探索測試,可以將輸入的組合后的用例文件和當前最新的測試版本按照用例執(zhí)行流程進行7(每周)×24小時(每天)的不間斷測試,最終輸出執(zhí)行失敗的用例報告。
S102:根據(jù)所述測試版本號和用例文件信息,加載用例文件。
基于本申請實施例引入版本控制和管理流程,在具體實施中,可以在所述測試版本號所對應(yīng)的測試版本下,查找所述用例文件信息所指示的用例文件;若查找失敗,則獲取所述測試版本號所指示的測試版本的依賴版本號;在所述依賴版本號所指示的測試版本下,查找所述用例文件信息所指示的用例文件;重復(fù)該步驟,直到查找到所述用例文件,則加載該用例文件。
這里,若查找用例文件失敗或者執(zhí)行完當前的用例文件,則可以執(zhí)行下一個用例文件,直到完成整個測試任務(wù)。
S103:根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能、所述測試技術(shù)、以及所述測試版本號,加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本(也稱功能關(guān)鍵字)以及測試數(shù)據(jù)。
基于本申請實施例引入版本控制和管理流程,在具體實施中,可以根據(jù)加載的用例文件中指定的業(yè)務(wù)功能和所述測試技術(shù),在所述測試版本號對應(yīng)的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本,以及所述測試數(shù)據(jù);若查找失敗,則獲取所述測試版本號的依賴版本號;在所述依賴版本號所對應(yīng)的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù);重復(fù)該步驟,直到查找到實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù),則加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
這里,系統(tǒng)中存儲有每種測試版本下的測試腳本和測試數(shù)據(jù),同樣的測試腳本和測試數(shù)據(jù)可以在不同的測試版本之間復(fù)用??梢灶A(yù)先設(shè)置好每種測試版本的依賴版本(比如升級后的版本依賴于升級前的版本),當在當前測試版本下查找不到相應(yīng)的測試腳本和測試數(shù)據(jù)時,可以在其依賴版本中進行查找。
在上述步驟中,測試數(shù)據(jù)可以是用戶預(yù)先輸入的,也可以是系統(tǒng)根據(jù)開發(fā)人員預(yù)先定義的參數(shù)類型(與測試腳本對應(yīng))自動生成的,還可以是兩者的結(jié)合。具體地,可以根據(jù)預(yù)先定義的與所述測試腳本對應(yīng)的各種參數(shù)類型,隨機生成執(zhí)行所述測試腳本時需要使用的測試數(shù)據(jù);和/或,加載用戶預(yù)先輸入的測試數(shù)據(jù)。也即,本申請實施例可以根據(jù)業(yè)務(wù)功能參數(shù)和參數(shù)的類型、數(shù)量自動生成測試數(shù)據(jù);并可以加載用戶配置的測試數(shù)據(jù),通過用戶配置的測試數(shù)據(jù)改變測試腳本的運行流向。
最后,可以基于加載的所述測試腳本和測試數(shù)據(jù),執(zhí)行測試運行流程,得到測試結(jié)果。
下面通過一個細化的實施例對本申請思想作進一步說明。
實施例二
如圖2所示,為本申請實施例二提供的測試加載方法流程圖,包括:
S201:確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本號、用例文件信息和測試技術(shù),將該測試版本號作為當前版本號,執(zhí)行下述步驟。
S202:根據(jù)所述用例文件信息中指示的多個用例文件之間的執(zhí)行順序,判斷是否存在未執(zhí)行的用例文件。
S203:若存在,則選擇一個未執(zhí)行的用例文件,執(zhí)行下述步驟S205。
S204:若不存在,則測試任務(wù)執(zhí)行完成。此時可以生成測試報告,還可以通過郵件發(fā)送測試報告給用戶。
S205:在當前版本號對應(yīng)的測試版本下,查找選擇的用例文件;
S206:若查找成功,則加載查找到的用例文件,并進入S208。
S207:若查找失敗,則獲取當前版本號的依賴版本號,若獲取成功,則將該依賴版本號作為當前版本號,返回S205,若獲取失敗,則當前用例文件執(zhí)行失敗,返回S202。
S208:將待執(zhí)行的測試任務(wù)對應(yīng)的測試版本號作為當前版本號,執(zhí)行下述S209。
S209:根據(jù)加載的用例文件中指定的業(yè)務(wù)功能和確定的測試技術(shù),在當前版本號對應(yīng)的測試版本下,查找在所述測試技術(shù)下實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù)。
S210:若查找失敗,則獲取當前版本號的依賴版本號,若獲取成功,則將該依賴版本號作為當前版本號,返回S209,若獲取失敗,則當前用例文件執(zhí)行失敗,返回S202。
S211:若查找成功,則加載所述測試腳本以及所述測試數(shù)據(jù),執(zhí)行測試運行流程。
下面從底層技術(shù)實現(xiàn)上對本申請思想作進一步介紹。如圖3所示,為本申請實施例提供的自動化測試框架,可以分為以下幾個部分:
公共基礎(chǔ)庫模塊、業(yè)務(wù)測試分層模塊、用例管理模塊、測試數(shù)據(jù)管理模塊、加載器模塊、版本管理模塊和自動化探索測試模塊。這里,對業(yè)務(wù)功能、測試用例、測試數(shù)據(jù)通過編碼實現(xiàn)后可以稱為功能關(guān)鍵字(測試腳本)、用例關(guān)鍵字和測試數(shù)據(jù)關(guān)鍵字。
上述公共基礎(chǔ)庫模塊主要是對通用的測試技術(shù)、測試工具再次開發(fā)后的功能的管理;業(yè)務(wù)測試分層模塊主要是對業(yè)務(wù)功能經(jīng)過編碼實現(xiàn)的功能關(guān)鍵字的管理;用例管理模塊主要是對產(chǎn)品用例進行管理;測試數(shù)據(jù)管理模塊主要是對業(yè)務(wù)功能所需要的測試數(shù)據(jù)的管理;加載器模塊主要是管理功能關(guān)鍵字、用例關(guān)鍵字、測試數(shù)據(jù)關(guān)鍵字的運行流程;版本管理模塊主要是對產(chǎn)品版本規(guī)范的定義和管理;自動化探索測試模塊主要是在業(yè)務(wù)流程層面對產(chǎn)品進行探索測試達到自動發(fā)現(xiàn)產(chǎn)品問題的目的。
具體地,(1)公共基礎(chǔ)庫主要分為兩種,第一種是對通用技術(shù)或工具進行二次開發(fā)后的功能,可適用于任何產(chǎn)品。第二種是針對產(chǎn)品的特點進行抽象封裝的公共函數(shù)庫,這樣可以增加腳本的復(fù)用性和可維護性。第一種是單獨存儲,被制作為安裝包的形式,可安裝在任何測試機器;第二種被放在和產(chǎn)品相關(guān)的節(jié)點中,供相關(guān)產(chǎn)品使用。
(2)業(yè)務(wù)測試分層模塊負責(zé)對多個測試分層的功能關(guān)鍵字基礎(chǔ)庫和功能關(guān)鍵字加載器進行管理。這里,不同的測試分層對應(yīng)不同的測試技術(shù),這里默認有四種測試技術(shù),分別為分別為在用戶界面(User Interface,UI)層進行驗證測試、在網(wǎng)頁(web)接口進行驗證測試,在服務(wù)器后臺接口進行驗證測試、以及在后臺接口進行覆蓋性測試,分別存儲在Module/web、Module/webinterface、Module/devinterface和Module/integrate節(jié)點中。具體地,Module/web:該節(jié)點用于保存在UI層進行驗證測試的功能關(guān)鍵字,Module/webinterface:該節(jié)點用于保存在web接口進行驗證測試的功能關(guān)鍵字,Module/devinterface節(jié)點用于保存在服務(wù)器后臺接口進行驗證測試的功能關(guān)鍵字,Module/integrate該節(jié)點用于保存在后臺接口進行覆蓋性測試的功能關(guān)鍵字。
在具體實現(xiàn)時,上述四種測試技術(shù)可以有各自的功能關(guān)鍵字加載器和功能關(guān)鍵字基礎(chǔ)庫;每種測試技術(shù)的功能關(guān)鍵字基礎(chǔ)庫都保存了和產(chǎn)品功能息息相關(guān)的功能關(guān)鍵字,也即測試腳本。每一個功能關(guān)鍵字為一個文件,方便使用者快速查找和關(guān)鍵字維護。
每種測試技術(shù)的功能關(guān)鍵字加載器,主要用于查詢和執(zhí)行用戶指定的功能關(guān)鍵字,獨立于版本而存在,上述框架默認提供的四種測試技術(shù)的加載器分別為:UI層功能加載器(PageLoader)、web接口層功能加載器(PostLoader)、后臺接口層功能加載器(InterfaceIoader)和集成測試層加載器(IntergrateLoader)。這四種加載器的加載方式一致,每個加載器都提供open函數(shù),open定義為:open(name,*kwags);其中name表示功能關(guān)鍵字的相對路徑;每種加載器會根據(jù)name的值、測試版本號和測試技術(shù)查詢并執(zhí)行對應(yīng)的功能關(guān)鍵字;其中測試版本號是在用例開始執(zhí)行的時候設(shè)置,加載器在執(zhí)行功能關(guān)鍵字的時候讀取測試版本號。
本申請的多種測試技術(shù)處于并列位置,可以根據(jù)實際項目的需要自定義添加測試技術(shù),可以靈活的采用不同的測試技術(shù)對同一業(yè)務(wù)功能進行測試,只需要在相應(yīng)的測試技術(shù)中去實現(xiàn)功能關(guān)鍵字即可,多種測試技術(shù)配合使用可以使自動化測試更加的真實可靠。
(3)加載器模塊由多種類型的加載器組成,其中功能關(guān)鍵字加載器(kwloader)由上述業(yè)務(wù)測試分層模塊負責(zé)管理,測試數(shù)據(jù)關(guān)鍵字加載器(DataLoader)由測試數(shù)據(jù)管理模塊負責(zé)管理,用例關(guān)鍵字加載器(caseloader)由用例管理模塊負責(zé)管理,分別用于查詢和執(zhí)行指定的功能關(guān)鍵字、測試數(shù)據(jù)關(guān)鍵字和用例關(guān)鍵字。其中功能關(guān)鍵字加載器包含框架默認提供的四種不同測試技術(shù)的加載器,分別為UI層功能加載器(PageLoader)、web接口層功能加載器(PostLoader)、后臺接口層功能加載器(InterfaceIoader)和集成測試層加載器(IntergrateLoader)。測試數(shù)據(jù)關(guān)鍵字加載器包含框架默認提供的四種不同的測試數(shù)據(jù)的加載器,分別為:UI層參數(shù)加載器(WebDataLoader)、web接口層參數(shù)加載器(PostDataLoader)、后臺接口層參數(shù)加載器(InterfaceDataLoader)和集成測試層參數(shù)加載器(IntergrateDataloader)。
(4)用例管理模塊負責(zé)對所有版本的用例文件和用例關(guān)鍵字加載器(CaseLoader)進行管理;主要分為用例加載器、用例關(guān)鍵字基礎(chǔ)庫、用例結(jié)果和用例報告三個模塊。用例關(guān)鍵字加載器主要用于查詢和執(zhí)行用例關(guān)鍵字,獨立于版本而存在;用例關(guān)鍵字基礎(chǔ)庫主要保存和業(yè)務(wù)相關(guān)的用例文件;用例結(jié)果和報告主要是保存并展示用例執(zhí)行結(jié)果,執(zhí)行報告有html和txt格式,報告記錄了每個用例執(zhí)行結(jié)果;測試結(jié)果有執(zhí)行成功、執(zhí)行失敗、執(zhí)行異常以及用例執(zhí)行中需要的一些附件信息等。用例關(guān)鍵字加載器提供Run函數(shù),Run(name,*kwags);其中name表示用例關(guān)鍵字的相對路徑;每種加載器會根據(jù)name的值、用戶指定的測試版本號、測試技術(shù)查詢并執(zhí)行對應(yīng)的用例關(guān)鍵字。
(5)測試數(shù)據(jù)管理模塊負責(zé)對所有版本的測試數(shù)據(jù)關(guān)鍵字和測試數(shù)據(jù)關(guān)鍵字加載器(DataLoader)進行管理。主要分為測試數(shù)據(jù)關(guān)鍵字加載器管理模塊、數(shù)據(jù)生成器、測試數(shù)據(jù)關(guān)鍵字基礎(chǔ)庫三個模塊。
其中,數(shù)據(jù)生成器負責(zé)按照開發(fā)人員指定的與功能關(guān)鍵字相適應(yīng)的數(shù)據(jù)類型隨機產(chǎn)生相對應(yīng)的數(shù)據(jù)。測試數(shù)據(jù)關(guān)鍵字基礎(chǔ)庫保存了功能關(guān)鍵字所需要的測試數(shù)據(jù);測試數(shù)據(jù)的結(jié)構(gòu)的也是由功能關(guān)鍵字的結(jié)構(gòu)所決定。相同業(yè)務(wù)如果使用不同的測試技術(shù),所需要的測試數(shù)據(jù)就不同,比如同一個業(yè)務(wù)功能在UI層測試需要的測試數(shù)據(jù)和在后臺接口進行測試所需要的測試數(shù)據(jù)完全不同;測試數(shù)據(jù)也按照測試分層分為四種,分別保存子啊TestData/web、TestData/webinterface、TestData/devinterface和TestData/integrate節(jié)點下,其中TestData/web節(jié)點用于保存在UI層進行驗證測試的功能關(guān)鍵字所需要的測試數(shù)據(jù);TestData/webinterface節(jié)點用于保存在web接口進行驗證測試的功能關(guān)鍵字所需要的測試數(shù)據(jù);TestData/devinterface節(jié)點用于保存在服務(wù)器后臺進行接口測試的功能關(guān)鍵字所需要的測試數(shù)據(jù);TestData/integrate節(jié)點用于保存在后臺接口進行覆蓋性測試的功能關(guān)鍵字所需要的測試數(shù)據(jù)。
在具體實施中,每一個測試數(shù)據(jù)關(guān)鍵字是對用戶輸入數(shù)據(jù)按照功能關(guān)鍵字所需要的輸入標準規(guī)范生成的一份有效完整的測試數(shù)據(jù),需要保證功能關(guān)鍵字可以正常運行。具體地,根據(jù)功能關(guān)鍵字確定測試數(shù)據(jù)關(guān)鍵字所在的測試分層,基于該測試分層,確定滿足功能關(guān)鍵字需要的參數(shù)名稱、參數(shù)數(shù)量,以及參數(shù)類型;基于這些參數(shù)信息可以自動生成測試數(shù)據(jù)。
測試數(shù)據(jù)關(guān)鍵字加載器包含框架默認提供的四種不同的測試數(shù)據(jù)的加載器,分別為:UI層測試數(shù)據(jù)加載器(WebDataLoader)、web接口層測試數(shù)據(jù)加載器(PostDataLoader)、后臺接口層測試數(shù)據(jù)加載器(InterfaceDataLoader)和集成測試層測試數(shù)據(jù)加載器(intergrateDataloader)。這三種加載器的加載方式一致,都提供genetate函數(shù),genetate定義為:Genetate(name,*kwags);其中name表示測試數(shù)據(jù)關(guān)鍵字的相對路徑,每種加載器會根據(jù)name的值、用戶指定的版本和測試技術(shù)查詢并執(zhí)行對應(yīng)的測試數(shù)據(jù)關(guān)鍵字。
在具體實施中,對于同一個業(yè)務(wù)功能的測試技術(shù)需要切換的場景,只需要切換測試數(shù)據(jù)加載器即可。以func這種業(yè)務(wù)功能在UI層和WEB接口層進行測試的測試數(shù)據(jù)funcdata為例,在具體實現(xiàn)時,可以首先在TestData/web結(jié)構(gòu)下添加測試數(shù)據(jù)關(guān)鍵字funcdata(*parameter);在TestData/webinterface結(jié)構(gòu)下添加測試數(shù)據(jù)關(guān)鍵字funcdata(*parameter);在編寫測試用例的時候直接調(diào)用測試數(shù)據(jù)關(guān)鍵字,不需要指明使用什么樣的測試技術(shù),在執(zhí)行測試用例的時候指定測試技術(shù),由加載器動態(tài)的去執(zhí)行指定的測試技術(shù)中的測試數(shù)據(jù)關(guān)鍵字。在這種機制下,測試數(shù)據(jù)關(guān)鍵字和功能關(guān)鍵字一一對應(yīng),方便測試數(shù)據(jù)的查找和維護;測試數(shù)據(jù)關(guān)鍵字中不僅可以包括用戶輸入的測試數(shù)據(jù),也可以包括自動隨機生成的有效數(shù)據(jù),解決了常用自動化測試框架中測試數(shù)據(jù)全部來自用戶,數(shù)據(jù)源單一且固定的問題,同時大大減少了前期的配置工作量,另外,隨機生成有效數(shù)據(jù)不僅保證了業(yè)務(wù)功能的驗證測試,也實現(xiàn)了人力所不能做到的覆蓋探索測試的效果。
(6)版本管理模塊主要是對產(chǎn)品版本的定義、配置和多版本之間的關(guān)系進行管理;每個版本在架構(gòu)中處于并列關(guān)系,每個版本都包含四個庫,分別是:公共基礎(chǔ)庫(lib)、功能關(guān)鍵字基礎(chǔ)庫(module)、用例關(guān)鍵字基礎(chǔ)庫(case)、測試數(shù)據(jù)關(guān)鍵字基礎(chǔ)庫(testdata);框架為這四個庫各自都提供了一個基類庫,這四個基類庫中保存了每個版本中的關(guān)鍵字加載器功能和經(jīng)過二次開發(fā)的通用測試功能,和產(chǎn)品版本相關(guān)的業(yè)務(wù)功能都保存在對應(yīng)的版本中;每發(fā)布一個版本,就可以在框架中添加一個版本節(jié)點,節(jié)點的名稱和產(chǎn)品版本號保持一致,添加版本節(jié)點后會自動生成lib、module、case、testdata節(jié)點,module和testdata節(jié)點下面會自動生成對應(yīng)四種測試技術(shù)的節(jié)點。
另外,在每個版本中還有一個該版本向后依賴的版本配置pre_verdion參數(shù);該參數(shù)默認為空;pre_verdion的值代表該版本的上一個版本,測試用例執(zhí)行過程中,如果沒有在該版本找到相應(yīng)的用例文件/功能關(guān)鍵字/測試數(shù)據(jù)時,會繼續(xù)在pre_verdion指定的版本查詢需要加載的用例文件/功能關(guān)鍵字/測試數(shù)據(jù)。當在該版本加載用例文件或關(guān)鍵字失敗且這個pre_verdion參數(shù)為空時,系統(tǒng)即停止對用例文件或關(guān)鍵字的查詢。添加新版本時,會自動設(shè)置該參數(shù)的值。當功能關(guān)鍵字在不同版本發(fā)生變化后,只需要在新的版本進行重寫即可,不需要在依賴版本進行修改,這樣很好的解決了關(guān)鍵字的版本兼容性問題,可以同時在不同版本之間進行測試驗證;當功能關(guān)鍵字在不同版本沒有發(fā)生變化,在新的版本中就不用重寫關(guān)鍵字功能,只需要設(shè)置向后依賴版本即可;關(guān)鍵字執(zhí)行的時候回根據(jù)pre_version的值去查找關(guān)鍵字。
在實際項目測試過程中,用例文件和測試腳本的生命周期和項目的版本息息相關(guān),用例文件和關(guān)鍵字的實現(xiàn)技術(shù)可以按照版本的需求進行靈活修改,不僅增加了測試技術(shù)選擇的靈活性,也大大降低了為兼容多個版本的需要,對功能關(guān)鍵字進行技術(shù)開發(fā)和維護的成本。
(7)自動化測試探索模塊主要是基于業(yè)務(wù)流程進行探索測試發(fā)現(xiàn)問題bug;該模塊獲取測試過程中開發(fā)的獨立線性無關(guān)的用例關(guān)鍵字,對這些用例關(guān)鍵字進行隨機挑選組合,并在產(chǎn)品最新版本上進行不間斷的連跑,將執(zhí)行失敗的組合通知相關(guān)開發(fā)人員,由開發(fā)人員排查是否為產(chǎn)品問題。
在探索測試時,不同用例中的功能關(guān)鍵字所需要的測試數(shù)據(jù)不能是固定的,這就需要在沒有人工輸入的情況下,測試數(shù)據(jù)模塊可以自動生成能夠使功能關(guān)鍵字正常運轉(zhuǎn)的有效數(shù)據(jù),這樣才能保證探索測試模塊中不僅是業(yè)務(wù)流程組合不同,同時每一次執(zhí)行相同的業(yè)務(wù)功能輸入的測試數(shù)據(jù)也不同。
基于同一發(fā)明構(gòu)思,本申請實施例中還提供了一種與測試加載方法對應(yīng)的測試加載裝置,由于該裝置解決問題的原理與本申請實施例的測試加載方法相似,因此該裝置的實施可以參見方法的實施,重復(fù)之處不再贅述。
如圖4所示,為本申請實施例提供的測試加載裝置結(jié)構(gòu)圖,包括:
確定模塊401,用于確定待執(zhí)行的測試任務(wù)對應(yīng)的測試版本信息、用例文件信息和測試技術(shù);
加載模塊402,用于根據(jù)測試版本信息和用例文件信息,加載用例文件;
根據(jù)加載的用例文件中指定的業(yè)務(wù)功能、測試技術(shù)、以及測試版本信息,加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
可選地,所述裝置還包括:
生成模塊403,用于在每個測試版本下,自動生成用例文件、測試腳本、和測試數(shù)據(jù)的管理目錄,不同的測試版本對應(yīng)不同的用例文件、測試腳本、和測試數(shù)據(jù)。
可選地,生成模塊403還用于:
在生成一個新的測試版本后,在該測試版本的業(yè)務(wù)功能模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的業(yè)務(wù)功能管理目錄以及初始化文件,并在不同的測試技術(shù)的業(yè)務(wù)功能管理目錄下分別添加實現(xiàn)各個業(yè)務(wù)功能的測試腳本。
可選地,生成模塊403還用于:
在生成一個新的測試版本后,在該測試版本的測試數(shù)據(jù)模塊中自動添加預(yù)設(shè)的多種測試技術(shù)各自對應(yīng)的測試數(shù)據(jù)管理目錄以及測試數(shù)據(jù)的初始化文件,并在不同的測試技術(shù)的測試數(shù)據(jù)管理目錄下分別添加與每個業(yè)務(wù)功能的測試腳本相關(guān)聯(lián)的測試數(shù)據(jù)。
可選地,加載模塊402具體用于:
在所述測試版本信息所指示的測試版本下,查找所述用例文件信息所指示的用例文件;若查找失敗,則獲取所述測試版本信息的依賴版本信息;在所述依賴版本信息所指示的測試版本下,查找所述用例文件信息所指示的用例文件;重復(fù)該步驟,直到查找到所述用例文件,則加載該用例文件。
可選地,加載模塊402具體用于:
根據(jù)加載的所述用例文件中指定的業(yè)務(wù)功能和所述測試技術(shù),在所述測試版本信息指示的測試版本下,查找在所述測試技術(shù)中實現(xiàn)所述業(yè)務(wù)功能的測試腳本,以及所述測試數(shù)據(jù);若查找失敗,則獲取所述測試版本信息的依賴版本信息;在所述依賴版本信息所指示的測試版本下,查找在所述測試技術(shù)中實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù);重復(fù)該步驟,直到查找到實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及所述測試數(shù)據(jù),則加載實現(xiàn)所述業(yè)務(wù)功能的測試腳本以及測試數(shù)據(jù)。
可選地,加載模塊402還用于:
根據(jù)預(yù)先定義的與所述測試腳本對應(yīng)的各種參數(shù)類型,隨機生成執(zhí)行所述測試腳本時需要使用的測試數(shù)據(jù);和/或,
加載用戶預(yù)先輸入的測試數(shù)據(jù)。
可選地,確定模塊401具體用于:
確定用戶選擇的測試版本信息、用例文件信息和測試技術(shù)。
可選地,確定模塊401具體用于:
在之前針對所述測試版本信息指示的測試版本執(zhí)行測試任務(wù)時所使用的用例文件中,選擇出線性無關(guān)的用例文件;
根據(jù)選擇的每個用例文件的權(quán)重和支持的測試技術(shù),將各個用例文件按照用戶指定的或者預(yù)設(shè)的全正交組合方式進行組合;所述全正交組合方式是指對于多個用例文件進行不同的排序組合;
基于所述測試版本信息、進行組合后的用例文件、以及組合后的用例文件支持的測試技術(shù),生成所述待執(zhí)行的測試任務(wù)。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本申請是參照根據(jù)本申請實施例的方法、裝置(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本申請的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本申請范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本申請進行各種改動和變型而不脫離本申請的精神和范圍。這樣,倘若本申請的這些修改和變型屬于本申請權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請也意圖包含這些改動和變型在內(nèi)。