本發(fā)明屬于軟件測試領(lǐng)域,尤其涉及一種智能數(shù)據(jù)庫執(zhí)行方法和系統(tǒng)。
背景技術(shù):
自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機器執(zhí)行的一種過程,根據(jù)測試用例的描述一步步執(zhí)行,得到實際結(jié)果與期望結(jié)果的比較,在測試過程中,需要人為操作進行干預測試,效率十分的低。
為了解決上述問題,提高測試運行效率,人們進行了長期的探索,例如,中國專利公開了一種存儲卡測試裝置[申請?zhí)枺篊N200810215712.X],其包括:一主機,用以存取一存儲卡;一數(shù)據(jù)庫,用以維護多個測試腳本文件,其中,每一測試腳本文件包括至少一測試項目及一通訊協(xié)議,該測試項目取決于一待測裝置所對應(yīng)的一裝置識別值,而該通訊協(xié)議與該存儲卡相關(guān)聯(lián);一處理單元,耦接于該數(shù)據(jù)庫,用以從一測試腳本文件之中,選擇一測試項目;以及一接口,連接于該處理單元及該主機,用以根據(jù)該測試項目,使該主機對該存儲卡執(zhí)行至少一存儲卡命令,其中,該處理單元通過比較該存儲卡的一測試結(jié)果及該測試腳本文件,用以確認是否已完成該測試項目。
再如,一種回歸測試自動化系統(tǒng)及方法[申請?zhí)枺篊N200810135124.5],包括測試環(huán)境單元,所述測試環(huán)境單元包括被測設(shè)備和測試儀表,其特征在于,還包括測試管理執(zhí)行單元和測試數(shù)據(jù)庫,所述測試管理執(zhí)行單元包括:測試用例管理模塊、測試套管理模塊、測試環(huán)境管理模塊、回歸測試管理模塊、測試運行調(diào)度器和測試運行引擎;所述測試數(shù)據(jù)庫包括:測試計劃庫、測試用例庫、回歸測試庫和運行統(tǒng)計庫;
其中,所述測試用例管理模塊用于管理維護測試用例,以及根據(jù)測試套管理模塊的請求,將測試用例庫中的測試用例發(fā)送給測試套管理模塊;所述測試套管理模塊用于從回歸測試管理模塊獲取測試套構(gòu)建框架,構(gòu)建測試套構(gòu)建策略,根據(jù)測試套構(gòu)建策略通過測試用例管理模塊從測試用例庫提取測試用例,構(gòu)建回歸測試套提交給回歸測試庫;所述測試環(huán)境管理模塊用于管理測試環(huán)境單元,生成測試環(huán)境配置及環(huán)境拓撲并存儲到回歸測試庫中;以及用于測試設(shè)備資源的分配與調(diào)度;所述回歸測試管理模塊用于管理配置測試計劃庫,從測試計劃庫提取測試計劃框架,生成測試套構(gòu)建框架存入測試計劃庫中,以及將所述測試套構(gòu)建框架發(fā)送給測試套管理模塊;還用于檢測測試計劃,啟動測試運行調(diào)度器;所述測試運行調(diào)度器用于通知測試環(huán)境管理模塊檢測測試環(huán)境,申請測試資源;還用于通過測試套管理模塊調(diào)度回歸測試套,以及根據(jù)回歸測試管理模塊的指示啟動測試運行引擎;所述測試運行引擎用于執(zhí)行所述回歸測試套,并輸出測試執(zhí)行結(jié)果到運行結(jié)果統(tǒng)計庫。
在上述方案的此測試過程中,減少人為的動作,主要由機器自行安裝測試腳本執(zhí)行,這樣的自動化測試可以節(jié)省大量的人力資源。
測試腳本對自動化測試具有非常重要的低位,決定了測試運行的效率,但是上述兩個方案在測試的過程中,有時候需按照項目(手機型號分類)或手機性能來測試手機狀態(tài),但是,在這兩種情況下,它們之間的測試腳本是有重復的,測試人員正常分別編寫測試腳本時,分別歸屬到各個項目中或手機性能列表下;這樣編寫的腳本比較復雜,重復性高不好維護,如圖1所示,測試腳本分別存放在項目和執(zhí)行計劃的路徑下面,但是,其實測試腳本集1的內(nèi)容包含測試腳本1的內(nèi)容,測試腳本集2的內(nèi)容包含測試腳本2的內(nèi)容,測試腳本集3的內(nèi)容包含測試腳本3的內(nèi)容,這樣會造成測試腳本繁多,不好整理與維護,測試效率不夠高。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的是針對上述問題,提供一種能提高腳本測試效率的智能數(shù)據(jù)庫執(zhí)行方法。
本發(fā)明的另一目的是針對上述問題,提供一種能提高腳本測試效率的采用智能數(shù)據(jù)庫執(zhí)行方法的系統(tǒng)。
為達到上述目的,本發(fā)明采用了下列技術(shù)方案:
本發(fā)明的智能數(shù)據(jù)庫執(zhí)行方法,包括以下步驟:
S1:啟動測試,判斷執(zhí)行步驟中是否存在執(zhí)行計劃;
S2:若存在執(zhí)行計劃,
執(zhí)行步驟通過基于映射關(guān)系的腳本獲取方法從項目的測試腳本集內(nèi)自動獲取所需測試腳本;
若不存在執(zhí)行計劃,
從項目的測試腳本集內(nèi)選擇需要的測試腳本;
S3:根據(jù)步驟S2中獲得的測試腳本,執(zhí)行測試腳本。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,在步驟S2中,所述基于映射關(guān)系的腳本獲取方法包括以下步驟:
S2.1:對測試腳本集中屬于執(zhí)行計劃的測試腳本進行標志;
S2.2:當存在執(zhí)行計劃時,執(zhí)行步驟直接運行已經(jīng)標志的測試腳本。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,在步驟S2.1中,測試腳本標志的方法包括:通過在測試腳本集中屬于執(zhí)行計劃的測試腳本前面加至少一個標志位。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,在步驟S2.2中,當存在執(zhí)行計劃時,執(zhí)行步驟直接運行在其前面含標志位的測試腳本,其他未含標志位的測試腳本不運行。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,在步驟S2中,當不存在執(zhí)行計劃,測試人員通過手動方式從項目的測試腳本集中選擇需要的測試腳本。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,所述項目包括功能測試項目、兼容性測試項目、交叉測試項目、安裝卸載測試項目與壓力測試項目中的任意一種或多種。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,在步驟S1之前,先將測試腳本放置在項目的路徑下的測試腳本集內(nèi)。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,在步驟S2中,所述測試腳本包括線性腳本、結(jié)構(gòu)化腳本、共享腳本、數(shù)據(jù)驅(qū)動腳本以及關(guān)鍵字驅(qū)動腳本中的任意一種或多種組合。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,所述的線性腳本包括擊鍵、功能鍵、箭頭、控制測試軟件的控制鍵及輸入數(shù)據(jù)的數(shù)字鍵中的任意一種或多種組合。
本發(fā)明還公開了一種采用上述智能數(shù)據(jù)庫執(zhí)行方法的智能數(shù)據(jù)庫執(zhí)行系統(tǒng)。
本發(fā)明相較于現(xiàn)有技術(shù)具有操作方便,利于腳本維護,復用性高,效率高等優(yōu)點。
附圖說明
圖1是現(xiàn)有技術(shù)數(shù)據(jù)庫執(zhí)行方法示意圖;
圖2是本發(fā)明實施例一的流程圖。
具體實施方式
以下是本發(fā)明的優(yōu)選實施例并結(jié)合附圖,對本發(fā)明的技術(shù)方案作進一步的描述,但本發(fā)明并不限于這些實施例。
實施例一
本發(fā)明的智能數(shù)據(jù)庫執(zhí)行方法包括以下步驟:
S1:啟動測試,判斷執(zhí)行步驟中是否存在執(zhí)行計劃;
S2:若存在執(zhí)行計劃,
執(zhí)行步驟通過基于映射關(guān)系的腳本獲取方法從項目的測試腳本集內(nèi)自動獲取所需測試腳本;
若不存在執(zhí)行計劃,
從項目的測試腳本集內(nèi)選擇需要的測試腳本;
其中,查詢存儲在項目中的語句的執(zhí)行計劃方法包括如下語句:
S3:根據(jù)步驟S2中獲得的測試腳本,執(zhí)行測試腳本。
且在步驟S2中,所述基于映射關(guān)系的腳本獲取方法包括以下步驟:
S2.1:對測試腳本集中屬于執(zhí)行計劃的測試腳本進行標志;
S2.2:當存在執(zhí)行計劃時,執(zhí)行步驟直接運行已經(jīng)標志的測試腳本。
具體地,在步驟S2.1中,測試腳本標志的方法包括:通過在測試腳本集中屬于執(zhí)行計劃的測試腳本前面加至少一個標志位,也就是說可以加兩個標志位或者三個標志位等以提高標志準確性,但是本實施例為了簡化腳本測試例,直接采用一個標志位即可。
進一步地,當存在執(zhí)行計劃時,執(zhí)行步驟直接運行在其前面含標志位的測試腳本,其他未含標志位的測試腳本不運行。此時便是自動化測試過程。
而當不存在執(zhí)行計劃,測試人員通過手動方式從項目的測試腳本集中選擇需要的測試腳本。此時便從自動測試過程轉(zhuǎn)為手動測試過程,由工作人員手動查找腳本,根據(jù)自己的判斷直接利用腳本或者進行編輯更改以后進行測試。
本實施例將手動與自動結(jié)合,將一些基本的,邏輯性弱的操作使用自動化測試,比如回歸測試,其次,將一些人工測試實現(xiàn)困難的或者成本較高的操作使用自動化測試,這一類操作即是帶標志位的測試腳本,采用自動測試具有操作簡單,避免腳本重復編寫,更好的利用資源,提高測試效率,減少人工測試的投入,避免錯誤發(fā)生等優(yōu)點;下面具體地說明哪些情況更適用自動化操作:
1、針對項目中的某些模塊相對穩(wěn)定,而某些模塊需求變動性很大的情況,可對相對穩(wěn)定的模塊進行自動化測試,而變動較大的仍是用手工測試;
2、項目周期較長,由于自動化測試需求的確定、自動化測試框架的設(shè)計、測試腳本的編寫與調(diào)試均需要相當長的時間來完成。這樣的過程本身就是一個測試軟件的開發(fā)過程,需要較長的時間來完成。如果項目的周期比較短,沒有足夠的時間去支持這樣一個過程,那么自動化測試便失去了其原本的意義。
3、自動化測試腳本可重復使用,具體地說,自動化測試腳本的重復使用要從三個方面來考量,一方面所測試的項目之間是否很大的差異性(如C/S系統(tǒng)和B/S系統(tǒng)的差異);所選擇的測試工具是否適應(yīng)這種差異;最后,測試人員是否有能力開發(fā)出適應(yīng)這種差異的自動化測試框架。
測試腳本的穩(wěn)定性決定了自動化測試的維護成本,如果軟件需求變動過于頻繁,測試人員需要根據(jù)變動的需求來更新測試用例以及相關(guān)的測試腳本,而腳本的維護本身就是一個代碼開發(fā)的過程,需要修改、調(diào)試,必要的時候還要修改自動化測試的框架,如果所花費的成本不低于利用其節(jié)省的測試成本,那么自動化測試便是失敗的,此時便需要保持為人工測試。
除此之外,一些邏輯性較強的操作則留給人工進行測試,人工在項目中查找合適的測試腳本直接或經(jīng)過編輯后進行測試操作,在測試過程中可以從不同的角度思考問題。
本實施例,采用兩者結(jié)合的方式,既能做到100%覆蓋軟件功能,減少人工成本,將一些周期時間長,可重復使用性高,且相對穩(wěn)定的測試腳本充分發(fā)揮其方便,快速,高效,準確等作用,同時又能夠發(fā)揮人工測試的優(yōu)勢。
在上述的智能數(shù)據(jù)庫執(zhí)行方法中,所述項目包括功能測試項目、兼容性測試項目、交叉測試項目、安裝卸載測試項目與壓力測試項目中的任意一種或多種,為了保證測試的完整性,本實施例的項目包括前述所有項目,其中,
功能測試項目:是指分析功能模塊的功能項,測試每個功能項是否能夠?qū)崿F(xiàn),具體地說就是對應(yīng)的功能根據(jù)測試案例(Test Case)或軟件本身的流程對具體功能點一一測試,確保每個點都能正確實現(xiàn)相應(yīng)的功能;
兼容性測試項目:指對市場上主流的設(shè)備安裝應(yīng)用執(zhí)行測試,確保都能正常運行,同時不同品牌手機,不同網(wǎng)絡(luò),不同品牌和不同容量大小的SIM/PIM卡之間的互相兼容的測試,以短消息為例:中國電信的小靈通接收到從中國移動或中國聯(lián)通GSM發(fā)來的短消息,接收,顯示和回復功能是否正常等;
交叉測試項目:又叫事件或沖突測試,該測試項目非常重要,能發(fā)現(xiàn)很多應(yīng)用中潛在的性能問題,具體是指一個功能正在執(zhí)行過程中,同時另外一個事件或操作對該過程進行干擾的測試。例如通話過程中接收到短信或來響鬧,應(yīng)該以執(zhí)行干擾的沖突事件不會導致手機死機或花屏等嚴重的問題,對于正在運行的應(yīng)用,若進入短信、電話等其他軟件響應(yīng)的情況,不會影響所測試應(yīng)用,且會保證應(yīng)用都能正確運行。
安裝卸載測試項目:是指確保應(yīng)用都能正確安裝、卸載,且能正確運行(包括應(yīng)用的升級測試:升級前后應(yīng)用的狀態(tài));
壓力測試項目:又叫邊界值容錯測試或極限負載測試,即測試過程中,已經(jīng)達到某一軟件功能的最大容量,邊界值或最大的承載極限,仍然對其進行相關(guān)操作,尤其對用戶量大,交互性高的應(yīng)用對接口執(zhí)行壓力測試,確保應(yīng)用在大用戶量的情況下能正常運行,例如連續(xù)進行短信的接收和發(fā)送,超過收件箱和PIM卡所能存儲的最大的條數(shù),仍然進行短消息的接收或發(fā)送,以檢測軟件在超常態(tài)條件下的表現(xiàn),來評估用戶能否接受。
當然對于在手機上出現(xiàn)幾率很大的應(yīng)用閃退問題,也可為本實施例的測試項目,返回訪問某個模塊(數(shù)據(jù)時時獲取的模塊),切換應(yīng)用,重復提交、來電交互等都是閃退幾率大的原因,提高測試廣度和深度。
進一步地,在步驟S1之前,先將測試腳本放置在項目的路徑下的測試腳本集內(nèi)。
而在步驟S2中,所述測試腳本包括線性腳本、結(jié)構(gòu)化腳本、共享腳本、數(shù)據(jù)驅(qū)動腳本以及關(guān)鍵字驅(qū)動腳本中的任意一種或多種組合,且本實施例的測試腳本采用所有前述腳本的集合,其中,
線性腳本:是指錄制手工執(zhí)行的測試事例得到的腳本;
結(jié)構(gòu)化腳本:類似于結(jié)構(gòu)化程序設(shè)計,結(jié)構(gòu)化腳本中含有控制腳本設(shè)計的指令,這些指令或為控制結(jié)構(gòu)或為調(diào)用結(jié)構(gòu);
共享腳本:腳本可能被多個測試事例使用;
數(shù)據(jù)驅(qū)動腳本:將測試輸入存儲在獨立的文件中,而不是存儲在腳本中;
關(guān)鍵字驅(qū)動腳本:較復雜的數(shù)據(jù)驅(qū)動技術(shù)的邏輯擴展。
所述的線性腳本包括擊鍵、功能鍵、箭頭、控制測試軟件的控制鍵及輸入數(shù)據(jù)的數(shù)字鍵中的任意一種或多種組合,本實施例為了保證測試的廣度,線性腳本將前述的擊鍵、功能鍵、箭頭、控制測試軟件的控制鍵及輸入數(shù)據(jù)的數(shù)字鍵均包含在內(nèi)。
實施例二
本實施例為一種采用實施例一中的智能數(shù)據(jù)庫執(zhí)行方法的智能數(shù)據(jù)庫執(zhí)行系統(tǒng),該數(shù)據(jù)庫執(zhí)行系統(tǒng)包括項目路徑模塊、執(zhí)行計劃模塊、自動測試模塊和手動測試模塊,其中項目路徑模塊中含有多個測試腳本集模塊,同時每個腳本集模塊中含有多個測試腳本單元,且屬于執(zhí)行計劃模塊的測試腳本單元包含有標志位,本實施例的數(shù)據(jù)庫執(zhí)行系統(tǒng)只有項目路徑模塊含有測試腳本單元,當存在執(zhí)行計劃的時候,只需要在項目路徑模塊中查找?guī)в袠酥疚坏膶儆趫?zhí)行計劃模塊中的測試腳本單元即可,若查找到則進行自動操作,將可重復使用的腳本進行充分使用,提高測試效率;若沒有查找到則人工操作。具有操作方便,測試復用性和效率高,利于腳本維護和能夠更好地利用資源等優(yōu)點。
本文中所描述的具體實施例僅僅是對本發(fā)明精神作舉例說明。本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可以對所描述的具體實施例做各種各樣的修改或補充或采用類似的方式替代,但并不會偏離本發(fā)明的精神或者超越所附權(quán)利要求書所定義的范圍。
盡管本文較多地使用了腳本集、標志位、執(zhí)行計劃項目等術(shù)語,但并不排除使用其它術(shù)語的可能性。使用這些術(shù)語僅僅是為了更方便地描述和解釋本發(fā)明的本質(zhì);把它們解釋成任何一種附加的限制都是與本發(fā)明精神相違背的。