本發(fā)明涉及自動(dòng)化測(cè)試技術(shù)領(lǐng)域,具體涉及一種任務(wù)定時(shí)處理類應(yīng)用自動(dòng)化測(cè)試,尤其涉及一種針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)及方法。
背景技術(shù):
自動(dòng)化測(cè)試一般是指軟件測(cè)試的自動(dòng)化,在預(yù)設(shè)條件下運(yùn)行系統(tǒng)或應(yīng)用程序,評(píng)估運(yùn)行結(jié)果,將以往人為驅(qū)動(dòng)的測(cè)試行為轉(zhuǎn)化為機(jī)器執(zhí)行,從而節(jié)省了人力、時(shí)間或硬件資源,提高了測(cè)試效率?,F(xiàn)有技術(shù)中已經(jīng)存在一些針對(duì)ui(用戶界面)和api接口的自動(dòng)化測(cè)試解決方案,但是針對(duì)任務(wù)定時(shí)處理類應(yīng)用仍缺少對(duì)應(yīng)的自動(dòng)化測(cè)試手段。
任務(wù)定時(shí)處理類應(yīng)用中包含多種應(yīng)用操作流程,為了保障任務(wù)調(diào)度和執(zhí)行的正常運(yùn)行,在不同時(shí)刻,針對(duì)各個(gè)不同的任務(wù)或不同的服務(wù)內(nèi)容需要進(jìn)行多種多次測(cè)試?,F(xiàn)有技術(shù)中任務(wù)應(yīng)用的自動(dòng)化測(cè)試多采用編碼形成測(cè)試腳本的形式來進(jìn)行測(cè)試。
然而,針對(duì)這種多應(yīng)用操作流程類的情況,單純通過編碼來實(shí)現(xiàn)自動(dòng)化測(cè)試,成本很高,并且不容易維護(hù);并且由于測(cè)試腳本唯一性的特點(diǎn),往往需要針對(duì)不同的測(cè)試項(xiàng)目編寫不同的測(cè)試腳本,極大地增加了測(cè)試人員的工作量,從而限制了針對(duì)任務(wù)應(yīng)用的場(chǎng)景化自動(dòng)測(cè)試的發(fā)展。
因此,急需一種可以進(jìn)行簡(jiǎn)單配置即可以自動(dòng)化執(zhí)行的測(cè)試方案。
技術(shù)實(shí)現(xiàn)要素:
針對(duì)現(xiàn)有技術(shù)中的問題,本發(fā)明的目的在于提供一種針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)及方法,將各種測(cè)試項(xiàng)模塊化,方便測(cè)試人員創(chuàng)建測(cè)試用例,實(shí)現(xiàn)無(wú)編碼自動(dòng)化測(cè)試。
本發(fā)明實(shí)施例提供一種針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái),包括:
測(cè)試項(xiàng)存儲(chǔ)模塊,用于存儲(chǔ)各種預(yù)設(shè)的測(cè)試項(xiàng);
測(cè)試用例創(chuàng)建模塊,用于創(chuàng)建測(cè)試用例,并在所述測(cè)試用例中添加測(cè)試步驟,各個(gè)所述測(cè)試步驟對(duì)應(yīng)一所述測(cè)試項(xiàng);
測(cè)試數(shù)據(jù)傳輸模塊,用于存儲(chǔ)各個(gè)測(cè)試步驟所對(duì)應(yīng)的測(cè)試需求數(shù)據(jù)和測(cè)試結(jié)果數(shù)據(jù);以及
測(cè)試執(zhí)行模塊,用于讀取待執(zhí)行的測(cè)試用例,根據(jù)預(yù)設(shè)次序依次執(zhí)行該測(cè)試用例中的各個(gè)所述測(cè)試步驟;
在執(zhí)行各個(gè)所述測(cè)試步驟中,所述測(cè)試執(zhí)行模塊調(diào)用該測(cè)試步驟所對(duì)應(yīng)的測(cè)試項(xiàng),從所述測(cè)試數(shù)據(jù)傳輸模塊中調(diào)用所對(duì)應(yīng)的測(cè)試需求數(shù)據(jù),并將測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至所述測(cè)試數(shù)據(jù)傳輸模塊中。
可選地,所述測(cè)試數(shù)據(jù)傳輸模塊基于管道模型技術(shù)輸入和輸出所述測(cè)試需求數(shù)據(jù)和測(cè)試結(jié)果數(shù)據(jù)。
可選地,所述測(cè)試項(xiàng)包括sql測(cè)試項(xiàng)、soa測(cè)試項(xiàng)、http測(cè)試項(xiàng)、任務(wù)測(cè)試項(xiàng)、python測(cè)試項(xiàng)和斷言測(cè)試項(xiàng)中的至少一種。
可選地,所述測(cè)試項(xiàng)包括python測(cè)試項(xiàng),各個(gè)所述測(cè)試步驟和所述測(cè)試用例分別封裝有可被python測(cè)試調(diào)用的方法接口;
執(zhí)行所述python測(cè)試項(xiàng)對(duì)應(yīng)的python測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊根據(jù)python測(cè)試腳本中的邏輯關(guān)系調(diào)用各個(gè)所述測(cè)試步驟和/或各個(gè)所述測(cè)試用例。
可選地,所述測(cè)試項(xiàng)包括soa測(cè)試項(xiàng);
執(zhí)行所述soa測(cè)試項(xiàng)對(duì)應(yīng)的soa測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊根據(jù)預(yù)設(shè)報(bào)文生成規(guī)則生成對(duì)應(yīng)字段值填充到soa測(cè)試請(qǐng)求報(bào)文中,解析soa測(cè)試返回的結(jié)果報(bào)文,并將解析結(jié)果報(bào)文得到的結(jié)果報(bào)文字段作為測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至所述測(cè)試數(shù)據(jù)傳輸模塊中。
可選地,所述測(cè)試項(xiàng)包括sql測(cè)試項(xiàng);
執(zhí)行所述sql測(cè)試項(xiàng)對(duì)應(yīng)的sql測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊根據(jù)預(yù)設(shè)數(shù)據(jù)庫(kù)選取規(guī)則適配待測(cè)試數(shù)據(jù)庫(kù),連接至所述待測(cè)試數(shù)據(jù)庫(kù),依據(jù)sql測(cè)試腳本對(duì)所述待測(cè)試數(shù)據(jù)庫(kù)進(jìn)行測(cè)試,并將所述待測(cè)試數(shù)據(jù)庫(kù)返回的測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至所述測(cè)試數(shù)據(jù)傳輸模塊中。
可選地,所述測(cè)試項(xiàng)包括任務(wù)測(cè)試項(xiàng);
執(zhí)行所述任務(wù)測(cè)試項(xiàng)所對(duì)應(yīng)的任務(wù)測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊根據(jù)任務(wù)測(cè)試腳本確定待測(cè)試任務(wù),基于http協(xié)議調(diào)用所述待測(cè)試任務(wù)所對(duì)應(yīng)的網(wǎng)絡(luò)服務(wù)接口,執(zhí)行所述待測(cè)試任務(wù),并將所述待測(cè)試任務(wù)執(zhí)行時(shí)返回的測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至所述測(cè)試數(shù)據(jù)傳輸模塊中。
可選地,所述測(cè)試項(xiàng)包括斷言測(cè)試項(xiàng);
執(zhí)行所述斷言測(cè)試項(xiàng)所對(duì)應(yīng)的斷言測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊根據(jù)斷言測(cè)試腳本確定待驗(yàn)證測(cè)試步驟,從所述測(cè)試數(shù)據(jù)傳輸模塊獲取所對(duì)應(yīng)的待驗(yàn)證測(cè)試結(jié)果數(shù)據(jù),將待驗(yàn)證測(cè)試結(jié)果數(shù)據(jù)與預(yù)設(shè)的期望結(jié)果數(shù)據(jù)進(jìn)行比較得到比較結(jié)果。
可選地,所述測(cè)試項(xiàng)還包括python測(cè)試項(xiàng),各個(gè)所述測(cè)試步驟和所述測(cè)試用例分別封裝有可被python測(cè)試調(diào)用的方法接口;
待執(zhí)行的測(cè)試用例中同時(shí)包含python測(cè)試步驟和斷言測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊根據(jù)所述比較結(jié)果和python測(cè)試腳本中的邏輯關(guān)系調(diào)用各個(gè)所述測(cè)試步驟和/或各個(gè)所述測(cè)試用例。
可選地,所述測(cè)試項(xiàng)還包括http測(cè)試項(xiàng);
執(zhí)行所述http測(cè)試項(xiàng)所對(duì)應(yīng)的http測(cè)試步驟時(shí),所述測(cè)試執(zhí)行模塊捕獲http測(cè)試請(qǐng)求數(shù)據(jù),將http測(cè)試請(qǐng)求數(shù)據(jù)配置到http測(cè)試中,執(zhí)行http測(cè)試腳本,并將測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至所述測(cè)試數(shù)據(jù)傳輸模塊中。
可選地,還包括:
測(cè)試集合創(chuàng)建模塊,用于創(chuàng)建測(cè)試集合,并在所述測(cè)試集合中添加所述測(cè)試用例;
所述測(cè)試執(zhí)行模塊讀取待執(zhí)行的測(cè)試集合,根據(jù)預(yù)設(shè)次序依次執(zhí)行該測(cè)試集合中的各個(gè)所述測(cè)試用例。
可選地,還包括:
測(cè)試計(jì)劃創(chuàng)建模塊,用于創(chuàng)建測(cè)試計(jì)劃,在所述測(cè)試計(jì)劃中添加所述測(cè)試用例和/或測(cè)試集合,并設(shè)定所述測(cè)試計(jì)劃中各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間和/或執(zhí)行次序;
所述測(cè)試執(zhí)行模塊讀取待執(zhí)行的測(cè)試計(jì)劃,根據(jù)該測(cè)試計(jì)劃中各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間和/或執(zhí)行次序執(zhí)行該測(cè)試計(jì)劃。
可選地,各個(gè)所述測(cè)試項(xiàng)、所述測(cè)試用例和所述測(cè)試集合均封裝有應(yīng)用程序編程接口。
本發(fā)明實(shí)施例還提供一種針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試方法,采用所述的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái),所述方法包括如下步驟:
創(chuàng)建至少一種測(cè)試項(xiàng);
創(chuàng)建測(cè)試用例,并在所述測(cè)試用例中添加測(cè)試步驟,各個(gè)所述測(cè)試步驟對(duì)應(yīng)一所述測(cè)試項(xiàng);
讀取待執(zhí)行的測(cè)試用例,根據(jù)預(yù)設(shè)次序依次執(zhí)行該測(cè)試用例中的各個(gè)所述測(cè)試步驟;
在執(zhí)行各個(gè)所述測(cè)試步驟中,調(diào)用所對(duì)應(yīng)的測(cè)試項(xiàng),調(diào)用所對(duì)應(yīng)的測(cè)試需求數(shù)據(jù),并存儲(chǔ)測(cè)試結(jié)果數(shù)據(jù)。
可選地,還包括如下步驟:
創(chuàng)建測(cè)試集合,并在所述測(cè)試集合中添加所述測(cè)試用例;
讀取待執(zhí)行的測(cè)試集合,根據(jù)預(yù)設(shè)次序依次執(zhí)行該測(cè)試集合中的各個(gè)所述測(cè)試用例。
可選地,還包括如下步驟:
創(chuàng)建測(cè)試計(jì)劃,在所述測(cè)試計(jì)劃中添加所述測(cè)試用例和/或測(cè)試集合,并設(shè)定所述測(cè)試計(jì)劃中各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間和/或執(zhí)行次序;
讀取待執(zhí)行的測(cè)試計(jì)劃,根據(jù)該測(cè)試計(jì)劃中各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間和/或執(zhí)行次序執(zhí)行所述測(cè)試計(jì)劃。
本發(fā)明所提供的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)及方法具有下列優(yōu)點(diǎn):
本發(fā)明提供了一種針對(duì)任務(wù)應(yīng)用的測(cè)試方案,將各測(cè)試項(xiàng)模塊化,支持多種測(cè)試項(xiàng)錄入,降低對(duì)測(cè)試人員的編碼能力要求,方便測(cè)試人員創(chuàng)建測(cè)試用例并添加測(cè)試步驟,可以實(shí)現(xiàn)無(wú)編碼自動(dòng)化測(cè)試;可適配在不同階段如功能測(cè)試環(huán)境、回歸測(cè)試環(huán)境中運(yùn)行,實(shí)現(xiàn)復(fù)雜場(chǎng)景的自動(dòng)化測(cè)試,節(jié)省任務(wù)應(yīng)用和場(chǎng)景類測(cè)試的回歸時(shí)間,適用于大規(guī)模推廣應(yīng)用。
附圖說明
通過閱讀參照以下附圖對(duì)非限制性實(shí)施例所作的詳細(xì)描述,本發(fā)明的其它特征、目的和優(yōu)點(diǎn)將會(huì)變得更明顯。
圖1是本發(fā)明一實(shí)施例的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)的結(jié)構(gòu)示意圖;
圖2是本發(fā)明一實(shí)施例的數(shù)據(jù)傳輸模塊存儲(chǔ)數(shù)據(jù)形式的示意圖;
圖3是本發(fā)明一實(shí)施例的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)的架構(gòu)圖;
圖4是本發(fā)明一實(shí)施例的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)與其他設(shè)備的連接示意圖;
圖5是本發(fā)明一實(shí)施例的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試方法的流程圖;
圖6是本發(fā)明一實(shí)施例的創(chuàng)建和執(zhí)行測(cè)試用例的流程圖;
圖7是本發(fā)明一實(shí)施例的創(chuàng)建和執(zhí)行測(cè)試集合的流程圖;
圖8是本發(fā)明一實(shí)施例的創(chuàng)建和執(zhí)行測(cè)試計(jì)劃的流程圖;
圖9是本發(fā)明一實(shí)施例的測(cè)試集合列表的界面示意圖;
圖10是本發(fā)明一實(shí)施例的測(cè)試用例編輯的界面示意圖;
圖11是本發(fā)明一實(shí)施例的測(cè)試步驟創(chuàng)建的界面示意圖;
圖12是本發(fā)明一實(shí)施例的新增測(cè)試項(xiàng)的界面示意圖。
具體實(shí)施方式
現(xiàn)在將參考附圖更全面地描述示例實(shí)施方式。然而,示例實(shí)施方式能夠以多種形式實(shí)施,且不應(yīng)被理解為限于在此闡述的實(shí)施方式;相反,提供這些實(shí)施方式使得本發(fā)明將全面和完整,并將示例實(shí)施方式的構(gòu)思全面地傳達(dá)給本領(lǐng)域的技術(shù)人員。在圖中相同的附圖標(biāo)記表示相同或類似的結(jié)構(gòu),因而將省略對(duì)它們的重復(fù)描述。
如圖1所示,本發(fā)明實(shí)施例提供一種針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái),所述平臺(tái)包括測(cè)試項(xiàng)存儲(chǔ)模塊100、測(cè)試用例創(chuàng)建模塊200、測(cè)試數(shù)據(jù)傳輸模塊600和測(cè)試執(zhí)行模塊500,其中:
所述測(cè)試項(xiàng)存儲(chǔ)模塊100存儲(chǔ)各種測(cè)試項(xiàng);
所述測(cè)試用例創(chuàng)建模塊200創(chuàng)建至少一個(gè)測(cè)試用例,并在所述測(cè)試用例中添加測(cè)試步驟,各個(gè)所述測(cè)試步驟對(duì)應(yīng)一所述測(cè)試項(xiàng),即測(cè)試步驟與測(cè)試項(xiàng)是多對(duì)一的關(guān)系,也就是多個(gè)測(cè)試步驟可以添加同一個(gè)測(cè)試項(xiàng),一個(gè)測(cè)試用例可以包括多個(gè)測(cè)試步驟;
所述測(cè)試數(shù)據(jù)傳輸模塊600存儲(chǔ)各個(gè)測(cè)試步驟所對(duì)應(yīng)的測(cè)試需求數(shù)據(jù)和測(cè)試結(jié)果數(shù)據(jù);
所述測(cè)試執(zhí)行模塊500讀取待執(zhí)行的測(cè)試用例,根據(jù)預(yù)設(shè)次序依次執(zhí)行該測(cè)試用例中的各個(gè)所述測(cè)試步驟;在執(zhí)行各個(gè)所述測(cè)試步驟中,所述測(cè)試執(zhí)行模塊500調(diào)用該測(cè)試步驟所對(duì)應(yīng)的測(cè)試項(xiàng),從所述測(cè)試數(shù)據(jù)傳輸模塊600中調(diào)用所對(duì)應(yīng)的測(cè)試需求數(shù)據(jù),并將測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至所述測(cè)試數(shù)據(jù)傳輸模塊600中。
如圖2所示,可選地,所述測(cè)試數(shù)據(jù)傳輸模塊600是基于管道模型(pipeline)技術(shù)建立的,以實(shí)現(xiàn)輸入和輸出所述測(cè)試需求數(shù)據(jù)和測(cè)試結(jié)果數(shù)據(jù)。在測(cè)試用例的各個(gè)步驟之前通過管道模型來傳遞數(shù)據(jù),每個(gè)測(cè)試步驟都可以讀取和插入數(shù)據(jù)到管道模型數(shù)據(jù)中。管道模型數(shù)據(jù)是一個(gè)二維泛型列表,其中外層的list(列表)對(duì)應(yīng)測(cè)試步驟,內(nèi)層的list用于存儲(chǔ)各個(gè)測(cè)試步驟執(zhí)行產(chǎn)生的數(shù)據(jù),各個(gè)測(cè)試步驟產(chǎn)生的數(shù)據(jù)都會(huì)被轉(zhuǎn)換為key-value的格式存儲(chǔ)到list中。而在測(cè)試步驟中使用{測(cè)試步驟index_key}這樣的格式就可以獲取到對(duì)應(yīng)測(cè)試步驟的數(shù)據(jù)。
如圖3所示,所述測(cè)試項(xiàng)可以包括但不限于sql測(cè)試項(xiàng)、soa測(cè)試項(xiàng)、http測(cè)試項(xiàng)、job測(cè)試項(xiàng)、python測(cè)試項(xiàng)、斷言測(cè)試項(xiàng)中的至少一種,進(jìn)一步地還可以包括es測(cè)試項(xiàng)、redis測(cè)試項(xiàng)或其他預(yù)設(shè)測(cè)試項(xiàng)。通過本發(fā)明將各個(gè)測(cè)試項(xiàng)模塊化,并且在執(zhí)行測(cè)試用例時(shí)可以根據(jù)測(cè)試步驟調(diào)用對(duì)應(yīng)的測(cè)試項(xiàng),即通過測(cè)試項(xiàng)的排布和調(diào)用實(shí)現(xiàn)自動(dòng)化測(cè)試,而不必對(duì)每個(gè)測(cè)試用例都編寫測(cè)試腳本。
各種測(cè)試項(xiàng)以及所對(duì)應(yīng)的測(cè)試步驟的實(shí)現(xiàn)方式如下:
a.soa(面向服務(wù)的架構(gòu))測(cè)試項(xiàng),支持soa2.0xml和json接口。支持請(qǐng)求報(bào)文參數(shù)化設(shè)置,并對(duì)返回結(jié)果解析存儲(chǔ)。在系統(tǒng)內(nèi)部定義了一系列的數(shù)據(jù)生成規(guī)則(例如生成隨機(jī)數(shù)字,指定格式的時(shí)間等),即預(yù)設(shè)報(bào)文生成規(guī)則,可以對(duì)soa測(cè)試項(xiàng)中的請(qǐng)求報(bào)文的對(duì)應(yīng)字段進(jìn)行規(guī)則的配置。
在soa測(cè)試項(xiàng)所對(duì)應(yīng)的soa測(cè)試步驟執(zhí)行之初,測(cè)試執(zhí)行模塊將根據(jù)預(yù)設(shè)報(bào)文規(guī)則生成的對(duì)應(yīng)字段值填充到soa測(cè)試的請(qǐng)求報(bào)文中。然后根據(jù)soa測(cè)試腳本執(zhí)行soa測(cè)試步驟,soa測(cè)試執(zhí)行完畢后,測(cè)試執(zhí)行模塊也會(huì)對(duì)返回的結(jié)果報(bào)文進(jìn)行解析,把返回報(bào)文解析得到的結(jié)果報(bào)文字段都存儲(chǔ)到管道模型數(shù)據(jù)中供以后測(cè)試步驟使用。
b.sql(structuredquerylanguage,結(jié)構(gòu)化查詢語(yǔ)言)測(cè)試項(xiàng),支持select、update、delete、insert、sp的錄入。寫入要訪問的db(database,數(shù)據(jù)庫(kù))后,可以根據(jù)用例執(zhí)行適配到不同的測(cè)試環(huán)境數(shù)據(jù)庫(kù)連接。
通過在本發(fā)明的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)中配置數(shù)據(jù)庫(kù)的信息,在執(zhí)行sql測(cè)試項(xiàng)所對(duì)應(yīng)的sql測(cè)試步驟時(shí),預(yù)設(shè)數(shù)據(jù)庫(kù)選取規(guī)則,可以根據(jù)在測(cè)試執(zhí)行或者測(cè)試用例默認(rèn)選擇的環(huán)境(比如測(cè)試環(huán)境,上線環(huán)境等)匹配到對(duì)應(yīng)的待測(cè)試數(shù)據(jù)庫(kù)信息,通過此待測(cè)試數(shù)據(jù)庫(kù)信息連接到待測(cè)試數(shù)據(jù)庫(kù)并執(zhí)行sql測(cè)試腳本中的操作,并將待測(cè)試數(shù)據(jù)庫(kù)返回的測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至管道模型數(shù)據(jù)中。
c.任務(wù)(job)測(cè)試項(xiàng),支持調(diào)度任務(wù)的web服務(wù)。
在執(zhí)行任務(wù)測(cè)試項(xiàng)所對(duì)應(yīng)的任務(wù)測(cè)試步驟時(shí),測(cè)試執(zhí)行模塊通過http協(xié)議調(diào)用待測(cè)試任務(wù)的網(wǎng)絡(luò)服務(wù)(webservice)接口,通過start,check等參數(shù)可以啟動(dòng)和查看待測(cè)試任務(wù)的運(yùn)行,并且可以將待測(cè)試任務(wù)執(zhí)行時(shí)返回的測(cè)試結(jié)果數(shù)據(jù)存儲(chǔ)至管道模型數(shù)據(jù)中。
任務(wù)測(cè)試項(xiàng)的設(shè)置,可以實(shí)現(xiàn)根據(jù)測(cè)試需求對(duì)特定的任務(wù)的調(diào)用和運(yùn)行,檢查任務(wù)是否存在異常。由于對(duì)于任務(wù)定時(shí)處理類應(yīng)用來說,每個(gè)設(shè)定的任務(wù)往往會(huì)具有一個(gè)預(yù)設(shè)運(yùn)行時(shí)間,例如設(shè)定為每天下午3點(diǎn)鐘運(yùn)行,但是對(duì)于測(cè)試來說,則需要盡快進(jìn)行,則可以通過增加該任務(wù)所對(duì)應(yīng)的任務(wù)測(cè)試步驟,提前調(diào)用待測(cè)試任務(wù)運(yùn)行,如果出現(xiàn)異常情況,則可以盡快處理。
d.http測(cè)試項(xiàng),支持http常用的get,post方法,實(shí)現(xiàn)接口、ui等的調(diào)用。
在執(zhí)行http測(cè)試項(xiàng)對(duì)應(yīng)的測(cè)試步驟時(shí),測(cè)試執(zhí)行模塊可以通過瀏覽器或者第三方工具捕獲到http的請(qǐng)求,然后把請(qǐng)求中包含的信息(比如postbody,cookies等)配置到http測(cè)試中,執(zhí)行http測(cè)試腳本,從而實(shí)現(xiàn)在測(cè)試過程中執(zhí)行http測(cè)試項(xiàng)時(shí)模擬調(diào)用ui的操作。
e.python測(cè)試項(xiàng),通過集成ironpython可以實(shí)現(xiàn)python的執(zhí)行,ironpython是一種在.net和mono上實(shí)現(xiàn)的python語(yǔ)言,使用動(dòng)態(tài)類型系統(tǒng)以讓更多腳本語(yǔ)言能很容易地移植到.netframework上。通過對(duì)本平臺(tái)中測(cè)試步驟、測(cè)試用例進(jìn)行可被python調(diào)用的接口的封裝,可以實(shí)現(xiàn)通過python測(cè)試項(xiàng)進(jìn)行其他測(cè)試用例、測(cè)試步驟的執(zhí)行和調(diào)度。
在平臺(tái)中把測(cè)試用例,各個(gè)測(cè)試項(xiàng)的執(zhí)行操作都封裝成方法,在python測(cè)試項(xiàng)所對(duì)應(yīng)的python測(cè)試步驟中利用ironpython技術(shù)可以編寫python測(cè)試腳本調(diào)用這些方法,從而實(shí)現(xiàn)了對(duì)其它測(cè)試用例以及測(cè)試步驟的調(diào)度和執(zhí)行。
例如,一個(gè)測(cè)試用例m中包含三個(gè)測(cè)試步驟,可以設(shè)置當(dāng)?shù)谝粶y(cè)試步驟測(cè)試結(jié)果為a值時(shí),執(zhí)行第二測(cè)試步驟,第一測(cè)試步驟測(cè)試結(jié)果為b值時(shí),執(zhí)行第三測(cè)試步驟,或者,第二測(cè)試步驟測(cè)試結(jié)果為c時(shí),執(zhí)行測(cè)試用例n,第二測(cè)試步驟測(cè)試結(jié)果為d時(shí),執(zhí)行測(cè)試用例s,等等,即可以實(shí)現(xiàn)多個(gè)測(cè)試步驟、多個(gè)測(cè)試用例依照一定的邏輯關(guān)系執(zhí)行。
如果在測(cè)試用例中不包含python測(cè)試步驟,則各個(gè)測(cè)試步驟可以按照預(yù)設(shè)的測(cè)試順序執(zhí)行,例如從第一個(gè)到最后一個(gè)依次順序執(zhí)行,或從最后一個(gè)到第一個(gè)依次逆序執(zhí)行等等,均屬于本發(fā)明的保護(hù)范圍之內(nèi)。
f.斷言(assert)測(cè)試項(xiàng),通過斷言測(cè)試項(xiàng),可以對(duì)其它測(cè)試步驟執(zhí)行后的結(jié)果進(jìn)行驗(yàn)證操作,包括對(duì)數(shù)據(jù)庫(kù),redis數(shù)據(jù)的驗(yàn)證,也可以通過python腳本進(jìn)行自定義驗(yàn)證。斷言表示為一些布爾表達(dá)式,程序員相信在程序中的某個(gè)特定點(diǎn)該表達(dá)式值為真,可以在任何時(shí)候啟用和禁用斷言驗(yàn)證,因此可以在測(cè)試時(shí)啟用斷言而在部署時(shí)禁用斷言。同樣,程序投入運(yùn)行后,最終用戶在遇到問題時(shí)可以重新啟用斷言。使用斷言可以創(chuàng)建更穩(wěn)定、品質(zhì)更好且不易于出錯(cuò)的代碼。當(dāng)需要在一個(gè)值為false時(shí)中斷當(dāng)前操作的話,可以使用斷言。
通過在斷言測(cè)試步驟中設(shè)置一個(gè)預(yù)期值,設(shè)置需要比較的管道模型中的數(shù)據(jù),需要比較的管道模型中的數(shù)據(jù)即為需要驗(yàn)證的測(cè)試步驟的測(cè)試結(jié)果數(shù)據(jù),預(yù)期值即為預(yù)設(shè)的期望結(jié)果數(shù)據(jù)。測(cè)試執(zhí)行模塊比較預(yù)期值和管道模型中獲取的數(shù)據(jù)是否相同來驗(yàn)證測(cè)試步驟是否執(zhí)行通過。
比如測(cè)試用例中有一個(gè)soa測(cè)試步驟,一個(gè)斷言測(cè)試步驟,執(zhí)行測(cè)試用例過程中,soa測(cè)試步驟的測(cè)試結(jié)果數(shù)據(jù)都會(huì)解析并存儲(chǔ)到管道模型數(shù)據(jù)中,那么斷言測(cè)試步驟就會(huì)根據(jù)之前的設(shè)置去比較設(shè)置的預(yù)期值和soa測(cè)試返回的測(cè)試結(jié)果數(shù)據(jù)是否一致。測(cè)試用例如果有其它測(cè)試項(xiàng)所對(duì)應(yīng)的步驟,原理也是一樣的。
斷言測(cè)試步驟可以進(jìn)一步與python測(cè)試步驟結(jié)合使用。python測(cè)試腳本中可以編寫根據(jù)斷言測(cè)試比較結(jié)果的邏輯控制關(guān)系,測(cè)試執(zhí)行模塊根據(jù)所述比較結(jié)果和python測(cè)試腳本中的邏輯關(guān)系調(diào)用各個(gè)所述測(cè)試步驟和/或測(cè)試用例。例如,在python測(cè)試中設(shè)置如果比較結(jié)果為斷言測(cè)試通過,則執(zhí)行第二測(cè)試步驟,如果比較結(jié)果為斷言測(cè)試未通過,則執(zhí)行第三測(cè)試步驟或停止執(zhí)行后續(xù)步驟,返回測(cè)試失敗結(jié)果,等等。此處僅為舉例,在實(shí)際應(yīng)用中,還可以有多種不同的邏輯控制關(guān)系組合,而不限于此。
g.其他測(cè)試項(xiàng),支持對(duì)redis,es的操作。通過redis,es提供的接口調(diào)用并操作。即在執(zhí)行所對(duì)應(yīng)的測(cè)試步驟時(shí),測(cè)試執(zhí)行模塊調(diào)用管道模型中的對(duì)應(yīng)數(shù)據(jù),調(diào)用測(cè)試項(xiàng)對(duì)應(yīng)的接口,并接收測(cè)試項(xiàng)返回的測(cè)試結(jié)果數(shù)據(jù),再存儲(chǔ)到管道模型數(shù)據(jù)中去。redis是一個(gè)開源的使用ansic語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、key-value數(shù)據(jù)庫(kù)。此處僅給出了多種測(cè)試項(xiàng)的示例,在實(shí)際應(yīng)用中,還可以添加多種不同的測(cè)試項(xiàng),均屬于本發(fā)明的保護(hù)范圍之內(nèi)。
如圖3所示,該針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)還可以根據(jù)需要建立測(cè)試集合。在測(cè)試平臺(tái)執(zhí)行測(cè)試時(shí),不僅可以單獨(dú)執(zhí)行測(cè)試用例,還可以執(zhí)行測(cè)試集合,也可以單獨(dú)執(zhí)行各個(gè)測(cè)試項(xiàng)。所述場(chǎng)景自動(dòng)化測(cè)試平臺(tái)還包括:
測(cè)試集合創(chuàng)建模塊300,用于創(chuàng)建測(cè)試集合,并在所述測(cè)試集合中添加所述測(cè)試用例,測(cè)試集合可以包括多個(gè)測(cè)試用例;
所述測(cè)試執(zhí)行模塊500讀取待執(zhí)行的測(cè)試集合,根據(jù)預(yù)設(shè)次序依次執(zhí)行所述測(cè)試集合中的各個(gè)所述測(cè)試用例。
圖3中示出了本發(fā)明一實(shí)施例的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)的架構(gòu)圖。其中,用戶界面可以有測(cè)試集合、測(cè)試用例、測(cè)試步驟、測(cè)試項(xiàng)和測(cè)試報(bào)告。即用戶可以通過用戶界面中的測(cè)試工具查看和編輯測(cè)試集合、測(cè)試用例、測(cè)試步驟和測(cè)試項(xiàng),并且可以查看生成的測(cè)試報(bào)告。測(cè)試執(zhí)行器包括多種測(cè)試項(xiàng),sql測(cè)試項(xiàng)與各個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù)建立連接,soa測(cè)試項(xiàng)與soa服務(wù)器建立連接,http測(cè)試項(xiàng)與各個(gè)網(wǎng)絡(luò)站點(diǎn)建立連接,任務(wù)測(cè)試項(xiàng)與job服務(wù)器建立連接。并且通過python測(cè)試項(xiàng)可以實(shí)現(xiàn)其他測(cè)試項(xiàng)的調(diào)度。
在測(cè)試用例執(zhí)行過程中,測(cè)試項(xiàng)可以按順序執(zhí)行,并通過管道模型數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)的共享。如果需要不按照順序執(zhí)行,而需要實(shí)現(xiàn)復(fù)雜的邏輯判斷執(zhí)行,則可以使用python測(cè)試項(xiàng)編寫python測(cè)試腳本來實(shí)現(xiàn)。
基礎(chǔ)架構(gòu)技術(shù)包括asp.netmvc、ironpython、entityframework、.netframework、mysql等,作為該實(shí)施例的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)的技術(shù)基礎(chǔ)。其中,asp.netmvc是微軟官方提供的以mvc模式為基礎(chǔ)的asp.netweb應(yīng)用程序。ado.netentityframework是微軟以ado.net為基礎(chǔ)所發(fā)展出來的對(duì)象關(guān)系對(duì)應(yīng)(o/rmapping)解決方案,早期被稱為objectspace,現(xiàn)已經(jīng)包含在visualstudio2008servicepack1以及.netframework3.5servicepack1中發(fā)表。mysql是一個(gè)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典mysqlab公司開發(fā),目前屬于oracle旗下產(chǎn)品。此處僅列舉出了一部分基礎(chǔ)架構(gòu)技術(shù),在實(shí)際應(yīng)用中,具體基礎(chǔ)架構(gòu)技術(shù)隨測(cè)試項(xiàng)不同而有所差別,并且在增加其他的測(cè)試項(xiàng)時(shí),基礎(chǔ)架構(gòu)技術(shù)也可以隨之增多。
進(jìn)一步地,該場(chǎng)景自動(dòng)化測(cè)試平臺(tái)還可以實(shí)現(xiàn)測(cè)試計(jì)劃的創(chuàng)建和執(zhí)行,測(cè)試計(jì)劃的作用是可以定時(shí)地調(diào)度執(zhí)行測(cè)試集合中的測(cè)試用例。具體地,該場(chǎng)景自動(dòng)化測(cè)試平臺(tái)還包括:
測(cè)試計(jì)劃創(chuàng)建模塊400,用于創(chuàng)建測(cè)試計(jì)劃,在所述測(cè)試計(jì)劃中添加所述測(cè)試用例和/或測(cè)試集合,并設(shè)定所述測(cè)試計(jì)劃中各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間或執(zhí)行次序;
所述測(cè)試執(zhí)行模塊500讀取待執(zhí)行的測(cè)試計(jì)劃,根據(jù)各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間或執(zhí)行次序執(zhí)行所述測(cè)試計(jì)劃中的各個(gè)所述測(cè)試用例和/或測(cè)試集合。
即,用戶創(chuàng)建并設(shè)置測(cè)試計(jì)劃后,在測(cè)試計(jì)劃中添加需要執(zhí)行的測(cè)試集合和/或測(cè)試用例,當(dāng)測(cè)試計(jì)劃中設(shè)置的時(shí)間到了之后,就會(huì)觸發(fā)對(duì)應(yīng)測(cè)試集合和/或測(cè)試用例的執(zhí)行,用戶在測(cè)試計(jì)劃執(zhí)行完畢后,也可以查看測(cè)試報(bào)告。
可選地,各個(gè)所述測(cè)試項(xiàng)、所述測(cè)試用例和所述測(cè)試集合均封裝有應(yīng)用程序編程接口(applicationprogramminginterface,api)。具體地,該實(shí)施例中對(duì)所述測(cè)試項(xiàng)、所述測(cè)試用例和所述測(cè)試集合的創(chuàng)建和執(zhí)行都封裝有對(duì)外的api接口,外部可以通過這些接口來調(diào)度測(cè)試項(xiàng)、測(cè)試用例、測(cè)試集合的執(zhí)行并返回測(cè)試結(jié)果。比如在系統(tǒng)中創(chuàng)建了一個(gè)sql測(cè)試項(xiàng),如果其他系統(tǒng)或者工具需要實(shí)現(xiàn)這個(gè)測(cè)試項(xiàng),則可以通過http協(xié)議調(diào)用提供的api接口來執(zhí)行該測(cè)試項(xiàng)。另外,其他系統(tǒng)或工具也可以通過http協(xié)議調(diào)用提供的api接口來創(chuàng)建新的測(cè)試項(xiàng)、測(cè)試用例或測(cè)試集合。
可選地,所述場(chǎng)景自動(dòng)化測(cè)試平臺(tái)還包括:
全局變量存儲(chǔ)模塊,用于存儲(chǔ)測(cè)試執(zhí)行過程中的全局變量,接收用戶配置參數(shù),并根據(jù)用戶的配置參數(shù)修改存儲(chǔ)的全局變量。全局變量可以應(yīng)用于整個(gè)測(cè)試過程中,并且可以由用戶自己修改其中的變量參數(shù)。而各個(gè)測(cè)試步驟之間的參數(shù)傳遞則通過管道模型來實(shí)現(xiàn)。
如圖4所示,為該實(shí)施例的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)與外部系統(tǒng)連接的示意圖。其中針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)2可以與用戶使用的用戶終端1建立通信,也可以與數(shù)據(jù)庫(kù)服務(wù)器3建立通信。用戶終端1可以是個(gè)人電腦、移動(dòng)終端等。場(chǎng)景自動(dòng)化測(cè)試平臺(tái)2是一個(gè)獨(dú)立的web系統(tǒng),可以部署在一臺(tái)windows服務(wù)器上。用戶通過瀏覽器可以訪問該場(chǎng)景自動(dòng)化測(cè)試平臺(tái)2進(jìn)行相關(guān)的操作。
用戶可以實(shí)現(xiàn)的操作包括:增刪改測(cè)試計(jì)劃、增刪改測(cè)試集合、增刪改測(cè)試用例、增刪改測(cè)試步驟、增刪改測(cè)試項(xiàng)、執(zhí)行測(cè)試用例和查看測(cè)試報(bào)告。
因此,該實(shí)施例實(shí)現(xiàn)了各種測(cè)試項(xiàng)按照測(cè)試步驟拼接來組合得到不同場(chǎng)景對(duì)應(yīng)的測(cè)試用例;實(shí)現(xiàn)了全局變量、各個(gè)測(cè)試步驟之間的參數(shù)傳遞;實(shí)現(xiàn)了多種斷言測(cè)試來驗(yàn)證測(cè)試項(xiàng)、測(cè)試用例的執(zhí)行情況;實(shí)現(xiàn)了同種類型測(cè)試用例根據(jù)應(yīng)用或者產(chǎn)品進(jìn)行分類;實(shí)現(xiàn)了測(cè)試集合定時(shí)調(diào)度,提供調(diào)度api接口給外部,可以接入外部系統(tǒng)或工具持續(xù)集成。
因此,本發(fā)明支持多種測(cè)試項(xiàng)錄入,降低了測(cè)試人員的編碼能力要求。測(cè)試人員可以通過用戶界面方便地編輯測(cè)試項(xiàng)、測(cè)試用例、測(cè)試集合和測(cè)試計(jì)劃,測(cè)試項(xiàng)也可以根據(jù)需要新增,實(shí)現(xiàn)一次測(cè)試項(xiàng)編寫應(yīng)用于多次測(cè)試當(dāng)中,大大提高了測(cè)試效率。
如圖5所示,本發(fā)明一實(shí)施例還提供一種針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試方法,采用所述的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái),所述方法包括如下步驟:
s100:創(chuàng)建至少一種測(cè)試項(xiàng);
s200:創(chuàng)建測(cè)試用例,并在所述測(cè)試用例中添加測(cè)試步驟,各個(gè)所述測(cè)試步驟對(duì)應(yīng)一所述測(cè)試項(xiàng);
s300:讀取待執(zhí)行的測(cè)試用例,根據(jù)預(yù)設(shè)次序依次執(zhí)行所述測(cè)試步驟;在執(zhí)行各個(gè)所述測(cè)試步驟中,執(zhí)行所對(duì)應(yīng)的測(cè)試項(xiàng),調(diào)用所對(duì)應(yīng)的測(cè)試需求數(shù)據(jù),并存儲(chǔ)測(cè)試結(jié)果數(shù)據(jù)。
該實(shí)施例中創(chuàng)建和執(zhí)行測(cè)試用例的步驟如圖6所示,首先創(chuàng)建測(cè)試用例,創(chuàng)建測(cè)試步驟,關(guān)聯(lián)測(cè)試步驟與測(cè)試項(xiàng),執(zhí)行測(cè)試用例,最后查看測(cè)試結(jié)果。在創(chuàng)建測(cè)試步驟時(shí),可以選擇創(chuàng)建不同的測(cè)試項(xiàng)類型,也可以從已有的測(cè)試項(xiàng)中關(guān)聯(lián)。測(cè)試報(bào)告會(huì)詳細(xì)列出每個(gè)測(cè)試用例、每個(gè)測(cè)試步驟的執(zhí)行結(jié)果和日志。
當(dāng)測(cè)試用例增多或者需要?dú)w攏在一起的時(shí)候,用戶可以創(chuàng)建測(cè)試集合,并把測(cè)試用例添加到測(cè)試集合中來統(tǒng)一管理和執(zhí)行測(cè)試用例。該實(shí)施例中創(chuàng)建和執(zhí)行測(cè)試集合的步驟如圖7所示??蛇x地,所述場(chǎng)景自動(dòng)化測(cè)試方法還包括如下步驟:
創(chuàng)建測(cè)試集合,并在所述測(cè)試集合中添加所述測(cè)試用例;
讀取待執(zhí)行的測(cè)試集合,根據(jù)預(yù)設(shè)次序依次執(zhí)行所述測(cè)試集合中的各個(gè)所述測(cè)試用例,最后查看測(cè)試結(jié)果。
該實(shí)施例中創(chuàng)建和執(zhí)行測(cè)試計(jì)劃的步驟如圖8所示??蛇x地,所述場(chǎng)景自動(dòng)化測(cè)試方法還包括如下步驟:
創(chuàng)建測(cè)試計(jì)劃,在所述測(cè)試計(jì)劃中添加所述測(cè)試用例和/或測(cè)試集合,并設(shè)定所述測(cè)試計(jì)劃中各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間或執(zhí)行次序;
讀取待執(zhí)行的測(cè)試計(jì)劃,根據(jù)各個(gè)所述測(cè)試用例和/或測(cè)試集合的執(zhí)行時(shí)間或執(zhí)行次序執(zhí)行所述測(cè)試計(jì)劃,最后查看測(cè)試結(jié)果。
采用本發(fā)明一實(shí)施例的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)的用戶界面如圖9~12所示。其中,圖9是該實(shí)施例的測(cè)試集合編輯的界面示意圖,其中可以實(shí)現(xiàn)測(cè)試集合添加、刪除、修改、執(zhí)行等操作。圖10是該實(shí)施例的測(cè)試用例編輯的界面示意圖,其中可以實(shí)現(xiàn)測(cè)試用例的添加、刪除、修改、執(zhí)行等操作。圖11是創(chuàng)建測(cè)試用例中各個(gè)測(cè)試步驟的界面示意圖,其示出了一個(gè)sql測(cè)試步驟的編輯界面。圖12是新增測(cè)試項(xiàng)的界面示意圖,可以根據(jù)需要新增其他的測(cè)試項(xiàng),供以后測(cè)試選用。
本發(fā)明所提供的針對(duì)任務(wù)應(yīng)用的場(chǎng)景自動(dòng)化測(cè)試平臺(tái)及方法具有下列優(yōu)點(diǎn):
本發(fā)明提供了一種針對(duì)任務(wù)應(yīng)用的測(cè)試方案,將各測(cè)試項(xiàng)模塊化,支持多種測(cè)試項(xiàng)錄入,降低對(duì)測(cè)試人員的編碼能力要求,方便測(cè)試人員創(chuàng)建測(cè)試用例并添加測(cè)試步驟,可以實(shí)現(xiàn)無(wú)編碼自動(dòng)化測(cè)試;可適配在不同階段如功能測(cè)試環(huán)境、回歸測(cè)試環(huán)境中運(yùn)行,實(shí)現(xiàn)復(fù)雜場(chǎng)景的自動(dòng)化測(cè)試,節(jié)省任務(wù)應(yīng)用和場(chǎng)景類測(cè)試的回歸時(shí)間,適用于大規(guī)模推廣應(yīng)用。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。