本發(fā)明涉及自動(dòng)化測試技術(shù)領(lǐng)域,具體涉及一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試系統(tǒng)與方法。
背景技術(shù):
在實(shí)現(xiàn)自動(dòng)化測試的過程中,現(xiàn)有方法是使用一個(gè)可視化的自動(dòng)化測試的框架,由框架完成腳本組織,執(zhí)行流程控制,日志記錄等相關(guān)工作,而測試人員的注意力主要集中在自動(dòng)化腳本的編寫和結(jié)果準(zhǔn)確性復(fù)查方面。在這類框架下,雖然已經(jīng)簡化了測試人員的工作,但仍然存在如下問題:
1.針對(duì)某個(gè)接口編寫的較全面覆蓋的測試用例,將花費(fèi)較大的人力和時(shí)間;
2.現(xiàn)有測試用例不能方便的遷移到其他接口,需要重新對(duì)各個(gè)用例進(jìn)行內(nèi)容修改,花費(fèi)較大的人力和時(shí)間;
3.新進(jìn)測試人員由于知識(shí)的局限性,不能充分考慮各類異常測試場景,從而導(dǎo)致構(gòu)建的測試用例測試的不夠全面。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明克服了現(xiàn)有技術(shù)的不足,提供一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試系統(tǒng)與方法,用于自動(dòng)對(duì)測試用例進(jìn)行擴(kuò)展生成,自動(dòng)輸出響應(yīng)內(nèi)容和根據(jù)斷言判定測試結(jié)果,并可對(duì)結(jié)果進(jìn)行下載。
考慮到現(xiàn)有技術(shù)的上述問題,根據(jù)本發(fā)明公開的一個(gè)方面,本發(fā)明采用以下技術(shù)方案:
一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試系統(tǒng),包括:
用戶交互界面,用于輸入測試內(nèi)容,實(shí)現(xiàn)與用戶的交互;
上傳文件管理模塊,用于讀取上傳的測試用例,并調(diào)用用例自動(dòng)擴(kuò)展模塊進(jìn)行擴(kuò)展;
用例自動(dòng)擴(kuò)展模塊,用于對(duì)用例進(jìn)行自動(dòng)擴(kuò)展,針對(duì)參數(shù)化對(duì)象的類型,調(diào)用相應(yīng)模塊進(jìn)行參數(shù)擴(kuò)展;
用例運(yùn)行模塊,用于調(diào)用python庫的方法進(jìn)行封裝,根據(jù)在用例擴(kuò)展模塊生成的用例數(shù)據(jù)分別執(zhí)行測試用例;
結(jié)果處理模塊,用于對(duì)用例執(zhí)行結(jié)果進(jìn)行斷言判斷、測試結(jié)果展示,以及提供測試結(jié)果下載。
根據(jù)本發(fā)明的一個(gè)實(shí)施方案,采用b/s架構(gòu),服務(wù)器后臺(tái)基于python語言開發(fā),用戶交互前端使用html語言開發(fā)web。
根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,包括多臺(tái)測試服務(wù)器,多臺(tái)測試服務(wù)器架設(shè)為nginx+tomcat配置的實(shí)現(xiàn)多并發(fā)測試操作的集群服務(wù)器。
根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,所述用例自動(dòng)擴(kuò)展模塊包括用于將測試內(nèi)容分成若干大類,以及根據(jù)參數(shù)類型自動(dòng)對(duì)基本用例進(jìn)行擴(kuò)展,生成測試用例。
為了更好地實(shí)現(xiàn)本發(fā)明,進(jìn)一步的技術(shù)方案是:
一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試方法,包括:
步驟1:在用戶交互界面中創(chuàng)建測試接口,配置該接口的url地址、請(qǐng)求方式、header內(nèi)容和請(qǐng)求內(nèi)容;
步驟2:在用戶交互界面中對(duì)需要參數(shù)化的內(nèi)容進(jìn)行參數(shù)化,指定參數(shù)化對(duì)象類型,通過參數(shù)化對(duì)象,確定參數(shù)值所屬類型,便于在后臺(tái)處理時(shí)調(diào)用相應(yīng)模塊進(jìn)行參數(shù)值構(gòu)造,從而生成各種情況的測試用例;
步驟3:在用戶交互界面中添加斷言,用于對(duì)測試結(jié)果進(jìn)行成功/失敗判定;
步驟4:用戶執(zhí)行測試操作,提交執(zhí)行測試命令到后臺(tái),后臺(tái)立即調(diào)用相應(yīng)模塊進(jìn)行測試數(shù)據(jù)的后臺(tái)處理工作;
步驟5:服務(wù)器收到測試用戶端傳來的測試數(shù)據(jù),調(diào)用用例擴(kuò)展模塊自動(dòng)根據(jù)參數(shù)化內(nèi)容和類型進(jìn)行擴(kuò)展,通過參數(shù)值替換來逐條生成相應(yīng)的測試用例;
步驟6:服務(wù)器根據(jù)在步驟5擴(kuò)展出的測試用例調(diào)用用例運(yùn)行模塊自動(dòng)執(zhí)行測試,得出結(jié)果并逐條對(duì)測試結(jié)果進(jìn)行斷言判定,將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果存入列表;
步驟7:服務(wù)器將測試數(shù)據(jù)、測試結(jié)果和判定結(jié)果通過結(jié)果處理模塊推送到前端頁面進(jìn)行展示,用戶選擇是否導(dǎo)出測試結(jié)果。
根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,所述步驟1的用戶交互界面還提供對(duì)錯(cuò)誤內(nèi)容數(shù)據(jù)的檢查和提供相應(yīng)提示信息便于用戶進(jìn)行數(shù)據(jù)修正。
根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,所述步驟3中還包括用戶添加斷言作為期望結(jié)果,從而判斷測試結(jié)果的成功/失敗。
本發(fā)明還可以是:
一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試方法,包括:
步驟1:在用戶交互界面中下載測試用例模板e(cuò)xcel,模板提供用例編寫范例和編寫說明;
步驟2:在excel中創(chuàng)建新的測試接口用例,配置該接口的url地址、請(qǐng)求方式、header內(nèi)容和請(qǐng)求內(nèi)容(data);
步驟3:對(duì)要參數(shù)化的內(nèi)容進(jìn)行參數(shù)化,并指定參數(shù)化對(duì)象類型;
步驟4:對(duì)用例添加斷言,用于對(duì)測試結(jié)果進(jìn)行成功/失敗判定;
步驟5:用戶通過用戶交互界面上傳excel;
步驟6:用戶在用戶交互界面執(zhí)行測試操作,提交執(zhí)行測試命令到后臺(tái),后臺(tái)立即調(diào)用相應(yīng)模塊進(jìn)行測試數(shù)據(jù)的后臺(tái)處理工作;
步驟7:服務(wù)器收到測試用戶端傳來的測試數(shù)據(jù),調(diào)用用例擴(kuò)展模塊自動(dòng)根據(jù)參數(shù)化內(nèi)容和類型進(jìn)行擴(kuò)展,通過參數(shù)值替換來逐條生成相應(yīng)的測試用例;
步驟8:服務(wù)器根據(jù)在步驟5擴(kuò)展出的測試用例調(diào)用用例運(yùn)行模塊自動(dòng)執(zhí)行測試,得出結(jié)果并逐條對(duì)測試結(jié)果進(jìn)行斷言判定,將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果存入列表;
步驟9:服務(wù)器將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果等數(shù)據(jù)通過結(jié)果處理模塊推送到前端頁面進(jìn)行展示,用戶選擇是否導(dǎo)出測試結(jié)果。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果之一是:
本發(fā)明的一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試系統(tǒng)與方法,具有:1)有效減少了編寫用例耗費(fèi)的人力成本與時(shí)間成本;2)有效減少了對(duì)新進(jìn)員工進(jìn)行業(yè)務(wù)培訓(xùn)、用例編寫培訓(xùn)所花費(fèi)的人力成本與時(shí)間成本;3)減少了用例遷移帶來的逐個(gè)修改測試用例內(nèi)容耗費(fèi)的人力成本與時(shí)間成本;4)可通過自動(dòng)執(zhí)行用例來節(jié)省手工測試所花費(fèi)的人力成本與時(shí)間成本。
附圖說明
為了更清楚的說明本申請(qǐng)文件實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)的描述中所需要使用的附圖作簡單的介紹,顯而易見地,下面描述中的附圖僅是對(duì)本申請(qǐng)文件中一些實(shí)施例的參考,對(duì)于本領(lǐng)域技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的情況下,還可以根據(jù)這些附圖得到其它的附圖。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的測試系統(tǒng)架構(gòu)框圖。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的利用web配置測試數(shù)據(jù)進(jìn)行測試的流程框圖。
圖3示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的通過模板e(cuò)xcel編寫測試用例集進(jìn)行測試的流程框圖。
具體實(shí)施方式
下面結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步地詳細(xì)說明,但本發(fā)明的實(shí)施方式不限于此。
如圖1所示,一種自動(dòng)擴(kuò)展接口測試用例的自動(dòng)化測試系統(tǒng),其使用b/s架構(gòu),提供可視化界面,后臺(tái)基于python語言,前端使用html語言,包含了用戶交互界面(web)、上傳文件管理、用例自動(dòng)擴(kuò)展模塊、用例運(yùn)行模塊、結(jié)果處理模塊,具體地:
用戶交互界面:通過web界面實(shí)現(xiàn)與用戶進(jìn)行交互的功能,用戶可以在該界面輸入測試內(nèi)容(如url地址、header內(nèi)容、請(qǐng)求方式、請(qǐng)求內(nèi)容(data)、參數(shù)化對(duì)象、斷言等);
上傳文件管理模塊:實(shí)現(xiàn)對(duì)上傳的批量測試用例進(jìn)行讀取,并調(diào)用用例擴(kuò)展模塊進(jìn)行逐個(gè)擴(kuò)展;
用例自動(dòng)擴(kuò)展模塊:實(shí)現(xiàn)對(duì)用例進(jìn)行自動(dòng)擴(kuò)展,針對(duì)參數(shù)化對(duì)象的類型,調(diào)用相應(yīng)模塊進(jìn)行參數(shù)擴(kuò)展,從而構(gòu)造出各種情況(邊界值、特殊值、異常值等)的測試用例;
用例運(yùn)行模塊:調(diào)用python官方庫的方法進(jìn)行封裝,根據(jù)在用例擴(kuò)展模塊生成的用例數(shù)據(jù)分別執(zhí)行測試用例。
結(jié)果處理模塊:用于對(duì)用例執(zhí)行結(jié)果進(jìn)行斷言判斷、測試結(jié)果展示,并提供測試結(jié)果下載等功能。
作為對(duì)本測試系統(tǒng)的優(yōu)化改進(jìn),還提供了對(duì)錯(cuò)誤數(shù)據(jù)的容錯(cuò)處理,在用戶輸入錯(cuò)誤的測試數(shù)據(jù)時(shí),會(huì)根據(jù)錯(cuò)誤內(nèi)容提供反饋給用戶進(jìn)行修正;
本發(fā)明可包括多臺(tái)測試服務(wù)器,多臺(tái)測試服務(wù)器架設(shè)為nginx+tomcat配置的實(shí)現(xiàn)多并發(fā)測試操作的集群服務(wù)器。
以上方案中可以將測試內(nèi)容分成幾個(gè)大類(電話號(hào)碼,郵箱地址,各類字符串等),然后再根據(jù)參數(shù)類型自動(dòng)對(duì)基本用例進(jìn)行擴(kuò)展,測試人員僅需輸入一個(gè)基本用例,即可通過本發(fā)明系統(tǒng)構(gòu)造出各類邊界值,特殊值,異常值的測試用例,有效減少了測試人員編寫用例的時(shí)間,提高了工作效率??梢酝ㄟ^系統(tǒng)自動(dòng)執(zhí)行自動(dòng)擴(kuò)展生成的測試用例,得出測試結(jié)果。以及可以通過斷言對(duì)所產(chǎn)生的測試結(jié)果進(jìn)行判定成功/失敗,并將結(jié)果反饋給用戶,用戶可以下載包含有測試用例及其執(zhí)行響應(yīng)、斷言判定結(jié)果等內(nèi)容的測試結(jié)果。
如圖2所示,利用web配置測試數(shù)據(jù)進(jìn)行測試:
步驟1:在用戶交互界面(web)中創(chuàng)建新的測試接口,配置該接口的url地址、請(qǐng)求方式、header內(nèi)容、請(qǐng)求內(nèi)容(data)等必要內(nèi)容,頁面提供對(duì)錯(cuò)誤內(nèi)容數(shù)據(jù)的檢查和提供相應(yīng)提示信息便于用戶進(jìn)行數(shù)據(jù)修正;
步驟2:在用戶交互界面(web)中對(duì)需要參數(shù)化的內(nèi)容進(jìn)行參數(shù)化,指定參數(shù)化對(duì)象類型(如:電話號(hào)碼,郵箱地址,字符串等)。通過參數(shù)化對(duì)象,確定參數(shù)值所屬類型,便于在后臺(tái)處理時(shí)調(diào)用相應(yīng)模塊進(jìn)行參數(shù)值構(gòu)造,從而生成各種情況的測試用例;
步驟3:在用戶交互界面(web)中添加斷言,用于對(duì)測試結(jié)果進(jìn)行成功/失敗判定,用戶可以添加斷言作為期望結(jié)果,從而判斷測試結(jié)果的成功/失??;
步驟4:用戶執(zhí)行測試操作,提交執(zhí)行測試命令到后臺(tái),后臺(tái)立即調(diào)用相應(yīng)模塊進(jìn)行測試數(shù)據(jù)的后臺(tái)處理工作;
步驟5:服務(wù)器收到測試用戶端傳來的測試數(shù)據(jù),調(diào)用用例擴(kuò)展模塊自動(dòng)根據(jù)參數(shù)化內(nèi)容和類型進(jìn)行擴(kuò)展,通過參數(shù)值替換來逐條生成相應(yīng)的測試用例。比如:參數(shù)化對(duì)象是手機(jī)號(hào)碼類型,則可根據(jù)其內(nèi)容自動(dòng)擴(kuò)展出移動(dòng)、聯(lián)通、電信、數(shù)據(jù)卡電話號(hào)碼、虛擬運(yùn)營商號(hào)碼、不滿足11位數(shù)字的號(hào)碼、包含有特殊字符的號(hào)碼、包含有字母的號(hào)碼、前后含有空格符合的號(hào)碼等類型的參數(shù)值,然后通過將這些值替換參數(shù)化對(duì)象,從而擴(kuò)展生成新的測試用例,完成對(duì)參數(shù)化對(duì)象的健壯性測試;
步驟6:服務(wù)器根據(jù)在步驟5擴(kuò)展出的測試用例調(diào)用用例運(yùn)行模塊自動(dòng)執(zhí)行測試,得出結(jié)果并逐條對(duì)測試結(jié)果進(jìn)行斷言判定,將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果存入列表;
步驟7:服務(wù)器將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果等數(shù)據(jù)通過結(jié)果處理模塊推送到前端頁面進(jìn)行展示,用戶可以通過按鈕選擇是否導(dǎo)出測試結(jié)果(excel方式)。
如圖3所示,通過模板e(cuò)xcel編寫測試用例集進(jìn)行測試:
步驟1:在用戶交互界面(web)中下載測試用例模板e(cuò)xcel,模板提供用例編寫范例和編寫說明;
步驟2:在excel中創(chuàng)建新的測試接口用例,配置該接口的url地址、請(qǐng)求方式、header內(nèi)容、請(qǐng)求內(nèi)容(data)等必要內(nèi)容;
步驟3:對(duì)要參數(shù)化的內(nèi)容進(jìn)行參數(shù)化,并指定參數(shù)化對(duì)象類型(如:電話號(hào)碼,郵箱地址,字符串等)。通過參數(shù)化對(duì)象,確定參數(shù)值所屬類型,便于在后臺(tái)處理時(shí)調(diào)用相應(yīng)模塊進(jìn)行參數(shù)值構(gòu)造,從而生成各種情況的測試用例;
步驟4:對(duì)用例添加斷言,用于對(duì)測試結(jié)果進(jìn)行成功/失敗判定,用戶可以添加斷言作為期望結(jié)果,從而判斷測試結(jié)果的成功/失?。?/p>
步驟5:用戶通過用戶交互界面(web)上傳excel
步驟6:用戶在用戶交互界面(web)執(zhí)行測試操作,提交執(zhí)行測試命令到后臺(tái),后臺(tái)立即調(diào)用相應(yīng)模塊進(jìn)行測試數(shù)據(jù)的后臺(tái)處理工作;
步驟7:服務(wù)器收到測試用戶端傳來的測試數(shù)據(jù),調(diào)用用例擴(kuò)展模塊自動(dòng)根據(jù)參數(shù)化內(nèi)容和類型進(jìn)行擴(kuò)展,通過參數(shù)值替換來逐條生成相應(yīng)的測試用例。比如:參數(shù)化對(duì)象是手機(jī)號(hào)碼類型,則可根據(jù)其內(nèi)容自動(dòng)擴(kuò)展出移動(dòng)、聯(lián)通、電信、數(shù)據(jù)卡電話號(hào)碼、虛擬運(yùn)營商號(hào)碼、不滿足11位數(shù)字的號(hào)碼、包含有特殊字符的號(hào)碼、包含有字母的號(hào)碼、前后含有空格符合的號(hào)碼等類型的參數(shù)值,然后通過將這些值替換參數(shù)化對(duì)象,從而擴(kuò)展生成新的測試用例,完成對(duì)參數(shù)化對(duì)象的健壯性測試;
步驟8:服務(wù)器根據(jù)在步驟5擴(kuò)展出的測試用例調(diào)用用例運(yùn)行模塊自動(dòng)執(zhí)行測試,得出結(jié)果并逐條對(duì)測試結(jié)果進(jìn)行斷言判定,將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果存入列表;
步驟9:服務(wù)器將測試數(shù)據(jù),測試結(jié)果,判定結(jié)果等數(shù)據(jù)通過結(jié)果處理模塊推送到前端頁面進(jìn)行展示,用戶可以通過按鈕選擇是否導(dǎo)出測試結(jié)果(excel方式)。
綜上,本發(fā)明在后臺(tái)選用python腳本來驅(qū)動(dòng)測試,采用excel表格管理測試數(shù)據(jù),封裝了excel文件數(shù)據(jù)處理的類、上傳數(shù)據(jù)處理的類、以及三個(gè)用于擴(kuò)展用例的類,同時(shí)封裝接口庫調(diào)用http接口,采用python封裝好的api,并對(duì)測試需要的http組裝字符可進(jìn)行json轉(zhuǎn)化處理。本發(fā)明系統(tǒng)實(shí)現(xiàn)接口測試自動(dòng)化,融合用例自動(dòng)擴(kuò)展的功能,提高測試執(zhí)行效率并且降低人工回歸的成本。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同相似部分相互參見即可。
在本說明書中所談到的“一個(gè)實(shí)施例”、“另一個(gè)實(shí)施例”、“實(shí)施例”、等,指的是結(jié)合該實(shí)施例描述的具體特征、結(jié)構(gòu)或者特點(diǎn)包括在本申請(qǐng)概括性描述的至少一個(gè)實(shí)施例中。在說明書中多個(gè)地方出現(xiàn)同種表述不是一定指的是同一個(gè)實(shí)施例。進(jìn)一步來說,結(jié)合任一實(shí)施例描述一個(gè)具體特征、結(jié)構(gòu)或者特點(diǎn)時(shí),所要主張的是結(jié)合其他實(shí)施例來實(shí)現(xiàn)這種特征、結(jié)構(gòu)或者特點(diǎn)也落在本發(fā)明的范圍內(nèi)。
盡管這里參照本發(fā)明的多個(gè)解釋性實(shí)施例對(duì)本發(fā)明進(jìn)行了描述,但是,應(yīng)該理解,本領(lǐng)域技術(shù)人員可以設(shè)計(jì)出很多其他的修改和實(shí)施方式,這些修改和實(shí)施方式將落在本申請(qǐng)公開的原則范圍和精神之內(nèi)。更具體地說,在本申請(qǐng)公開和權(quán)利要求的范圍內(nèi),可以對(duì)主題組合布局的組成部件和/或布局進(jìn)行多種變型和改進(jìn)。除了對(duì)組成部件和/或布局進(jìn)行的變型和改進(jìn)外,對(duì)于本領(lǐng)域技術(shù)人員來說,其他的用途也將是明顯的。