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