數(shù)據(jù)庫訪問控制軟件的自動化測試研究
作者:鐘芳凌時間:2015-11-23 13:54:01 來源:www.455685.com 閱讀次數(shù):1151次 ]
配置項測試在提高軍用軟件質(zhì)量上起著重要作用。在測試任務(wù)中,數(shù)據(jù)庫訪問控制軟件的自動化測試工作能為測試人員提供極大的方便。本文在分析了該軟件的功能需求特點后,介紹了自動化測試用例設(shè)計的思路,并闡述了針對該軟件的自動化測試策略,接下來描述了數(shù)據(jù)庫訪問控制軟件的自動化測試程序的框架構(gòu)成。通過實踐證明該程序能夠完成數(shù)據(jù)庫訪問控制軟件的自動化測試,有效地提高測試效率。
【關(guān)鍵詞】
自動化測試; 測試用例; 測試策略; 測試框架
0 引言
綜合數(shù)據(jù)庫訪問控制軟件是戰(zhàn)術(shù)數(shù)據(jù)處理系統(tǒng)的一個軟件配置項,為其他軟件配置項提供統(tǒng)一訪問數(shù)據(jù)庫的接口,它與各個軟件配置項關(guān)系緊密,負責實現(xiàn)各個配置項中數(shù)據(jù)的存儲,檢索,數(shù)據(jù)的關(guān)聯(lián)關(guān)系,合法性保護等功能。作為一個重要支撐軟件,對它功能的正確性和完備性提出了很高的要求。為了測試該軟件是否滿足任務(wù)要求,必須對它進行詳細的功能測試。在文獻[1] 中也提到,軍事電子信息系統(tǒng)具有體系復雜、處理數(shù)據(jù)量大、人機交互頻繁、評估結(jié)果直觀等特點。
自動化測試的主要任務(wù)就是把以人為驅(qū)動的測試行為轉(zhuǎn)化為能夠自動執(zhí)行的機器的行為。引入自動化測試就是為了節(jié)約這個過程中耗費的人力時間和硬件資源,提高測試的效率。軟件的自動化測試是一種高效的軟件質(zhì)量保證技術(shù)。軟件測試工程師通過執(zhí)行特定的測試用例,并將得到的結(jié)果與預期相比較,再進行分析后就可以發(fā)現(xiàn)軟件是否存在漏洞。自動化測試將測試用例重復使用,嚴格執(zhí)行用例步驟并提供良好的新功能擴展,保障整個測試過程的嚴密性、科學性、可繼續(xù)性。
軟件的自動軟件的自動化測試除了可以代替執(zhí)行大量重復的測試命令以外, 還有以下幾個特點:(1)對程序的回歸測試更方便;(2)大量的繁瑣的測試執(zhí)行; (3)可以執(zhí)行一些手工測試困難或不可能進行的測試;(4)更好地利用資源;(5) 測試的復用性;(6)增加軟件信用度;(7) 提高測試的覆蓋率。如果采用自動化測試無論是用單元測試工具或者使用自己編寫的腳本,都可以在比較短的時間內(nèi)完成。對于一些要反復執(zhí)行的有著上千個測試用例的操作,利用自動化測試都可以很快的在規(guī)定時間內(nèi)完成。所以自動化測試不僅在時間上面大大縮短軟件的測試周期,還可以在成本方面節(jié)約人力資源。文獻[5] 描述了軟件測試的基本原理和方法, 以及軟件自動化測試的一般過程。
由于綜合數(shù)據(jù)庫訪問控制軟件主要功能是為系統(tǒng)其它配置項提供統(tǒng)一訪問數(shù)據(jù)庫的接口,測試量比較大, 測試用例需要涵蓋的內(nèi)容也多, 人工測試的效率難以滿足要求, 因此采用軟件自動化測試技術(shù)完成。本文結(jié)合綜合數(shù)據(jù)庫訪問控制軟件測試任務(wù), 重點分析了該軟件的功能需求特點, 介紹了自動化測試用例設(shè)計的思路,并闡述了針對該軟件的自動化測試策略,接著描述了數(shù)據(jù)庫訪問控制軟件的自動化測試程序的框架構(gòu)成。
1 軟件需求分析
為解決戰(zhàn)術(shù)數(shù)據(jù)處理系統(tǒng)內(nèi)配置項各自為戰(zhàn)的數(shù)據(jù)管理局面,戰(zhàn)術(shù)數(shù)據(jù)處理系統(tǒng)采用基于數(shù)據(jù)庫的統(tǒng)一數(shù)據(jù)管理方式,負責提供統(tǒng)一數(shù)據(jù)庫(非持久數(shù)據(jù)庫、持久化數(shù)據(jù)庫),并提供數(shù)據(jù)庫訪問控制接口軟件,支撐各配置項對數(shù)據(jù)庫的訪問控制。同時,又保證了戰(zhàn)術(shù)數(shù)據(jù)處理系統(tǒng)內(nèi)數(shù)據(jù)的共享和統(tǒng)一處理。簡化了系統(tǒng)的設(shè)計,增加了系統(tǒng)的魯棒性。
戰(zhàn)術(shù)數(shù)據(jù)處理系統(tǒng)內(nèi)部各個軟件單元訪問數(shù)據(jù)庫的方式統(tǒng)一采用調(diào)用綜合數(shù)據(jù)庫訪問控制軟件提供的API 方式來獲取數(shù)據(jù)庫內(nèi)數(shù)據(jù)。綜合數(shù)據(jù)庫訪問控制軟件提供的API 接口提供對上述所說的每一類入數(shù)據(jù)庫數(shù)據(jù)信息進行增、刪、改、查操作。因此,綜合數(shù)據(jù)庫訪問控制軟件為應(yīng)用層提供統(tǒng)一訪問數(shù)據(jù)庫接口,屏蔽底層數(shù)據(jù)庫訪問實現(xiàn)細節(jié),為應(yīng)用層提供統(tǒng)一、規(guī)范的數(shù)據(jù)增、刪、改、查接口。
值得注意的是,對于戰(zhàn)術(shù)數(shù)據(jù)處理系統(tǒng)而言,入數(shù)據(jù)庫內(nèi)的數(shù)據(jù)信息有多種,例如任務(wù)信息、武器掛載信息、浮標掛載信息、方案信息、目標信息等等。前文提到,綜合數(shù)據(jù)庫訪問控制軟件則是為這些數(shù)據(jù)信息提供在數(shù)據(jù)庫中進行增刪改查的API 接口。這些數(shù)據(jù)并不是完全相互獨立的,有些數(shù)據(jù)信息之間存在著一定的聯(lián)系。
例如,圖1 所示為綜合數(shù)據(jù)庫訪問控制軟件中任務(wù)信息接口和武器掛載信息接口的描述,從圖中可以看出任務(wù)信息接口和武器掛載信息接口均包含增、刪、改、查四個函數(shù)。其中任務(wù)信息(MISSION_INFO) 包含任務(wù)ID、任務(wù)號、任務(wù)名等數(shù)據(jù)信息, 武器掛載信息包含任務(wù)名稱、武器有效數(shù)目、武器結(jié)構(gòu)體等數(shù)據(jù)信息,武器掛載信息中的任務(wù)名稱對應(yīng)了任務(wù)信息中的任務(wù)名,因此一條武器掛載信息是屬于一個任務(wù)下的,不同的武器掛載信息可能屬于不同的任務(wù),也可能屬于同一個任務(wù)。
2 自動化測試策略
前文提到,綜合數(shù)據(jù)庫訪問控制軟件提供的API 接口提供對每一類入數(shù)據(jù)庫數(shù)據(jù)信息進行增、刪、改、查操作。對該軟件進行自動化測試,即測試其提供的API 接口。例如圖2 中的任務(wù)信息接口, 包含四個API 接口函數(shù):add(),update(), remove() 以及findALL()。在介紹自動化測試策略前,先介紹針對綜合數(shù)據(jù)庫訪問控制軟件的測試用例設(shè)計思路。
1) 測試用例設(shè)計思路
接口測試除了對每一個接口進行正常情況的測試外,還應(yīng)對它們進行異常情況的測試。所以在驗證綜合數(shù)據(jù)庫訪問控制軟件提供的API 接口是否能正確進行數(shù)據(jù)信息增、刪、改、查外,還應(yīng)驗證給這些API 接口傳入異常參數(shù)時,軟件能否正確處理。具體思路可總結(jié)為如下幾條:
a) 首先傳入正常參數(shù)進行驗證。例如對任務(wù)信息接口而言,分別給四個API 接口函數(shù)傳入正確參數(shù),通過返回值以及數(shù)
圖10
據(jù)庫數(shù)據(jù)顯示等均可驗證。
b) 針對數(shù)據(jù)庫表中主鍵,傳入異常參數(shù)進行驗證。數(shù)據(jù)庫的主鍵能唯一地標識表中的每一行,因此它的值唯一且非空。例如對于任務(wù)信息接口而言,任務(wù)名為任務(wù)信息表的主鍵,在驗證add() 和update() 函數(shù)時,可設(shè)計傳入?yún)?shù)中任務(wù)名為空、任務(wù)名重復。
c) 針對數(shù)據(jù)庫中主鍵和外鍵,傳入異常參數(shù)進行驗證。數(shù)據(jù)庫的主外鍵是依托兩個表之間的關(guān)系而存在的。前文提到任務(wù)信息與武器掛載信息,一個任務(wù)下面可以有多個武器掛載。對于武器掛載信息接口而言假設(shè)任務(wù)名為外鍵,則在驗證add() 和update() 函數(shù)時,可設(shè)計傳入?yún)?shù)中任務(wù)名為空、任務(wù)名不存在(即在任務(wù)信息中不存在)。此外,假設(shè)一個任務(wù)下面有多個方案,而每個武器掛載信息對應(yīng)著一個任務(wù)和一個方案,則還可設(shè)計傳入?yún)?shù)中任務(wù)名與方案名不匹配。
d) 針對函數(shù)中傳入的參數(shù),傳入異常數(shù)值進行驗證。例如任務(wù)信息接口中的remove() 函數(shù),參數(shù)僅為任務(wù)ID(類型為字符串),則可設(shè)計傳入?yún)?shù)中任務(wù)ID 不存在、任務(wù)ID 為空情況。
2) 自動化測試策略
為實現(xiàn)對綜合數(shù)據(jù)庫訪問控制軟件的自動化測試,采用以下測試策略:
a) 首先測試查詢函數(shù)。例如對任務(wù)信息接口而言,查詢函數(shù)返回值為查找到的信息個數(shù)。在未向數(shù)據(jù)庫添加任何任務(wù)信息時調(diào)用findALL() 函數(shù),函數(shù)返回值應(yīng)為0 ;在數(shù)據(jù)庫中已有一條任務(wù)信息時調(diào)用findALL() 函數(shù),函數(shù)返回值應(yīng)為1。
b) 通過查詢函數(shù)驗證增加函數(shù)。例如對任務(wù)信息接口而言,增加函數(shù)返回值用于標識信息是否成功增加。調(diào)用add() 函數(shù)向數(shù)據(jù)庫添加一條任務(wù)信息后,返回值應(yīng)顯示增加成功;接著調(diào)用findALL() 函數(shù),遍歷查詢到的任務(wù)信息,與添加的任務(wù)信息數(shù)據(jù)進行對比,一致則說明add() 函數(shù)正確。
c) 通過查詢函數(shù)驗證修改函數(shù)。與增加函數(shù)驗證方法類似,對任務(wù)信息接口而言,調(diào)用update() 函數(shù)針對數(shù)據(jù)庫中的一條任務(wù)信息進行修改,返回值應(yīng)顯示修改成功;接著調(diào)用findALL() 函數(shù),遍歷查詢到的任務(wù)信息,與修改的任務(wù)信息數(shù)據(jù)進行對比,一致則說明update() 函數(shù)正確。
d) 通過查詢函數(shù)驗證刪除函數(shù)。例如對任務(wù)信息接口而言,刪除函數(shù)返回值用于標識信息是否刪除成功。調(diào)用remove() 函數(shù)刪除數(shù)據(jù)庫中的一條任務(wù)信息,返回值應(yīng)顯示刪除成功;接著調(diào)用findALL() 函數(shù),遍歷查詢到的任務(wù)信息,與刪除的任務(wù)信息數(shù)據(jù)進行對比,沒有一致情況則說明remove() 函數(shù)正確。
需要說明的是,在測試查詢函數(shù)時, 需要人為在數(shù)據(jù)庫中添加數(shù)據(jù)信息。另外,綜合數(shù)據(jù)庫訪問控制軟件中對于某些數(shù)據(jù)庫數(shù)據(jù)信息提供增加、修改多條信息的函數(shù),對于此類函數(shù)的測試策略與增加、修改一條信息的函數(shù)一致。
3 自動化測試框架
一個軟件的所有測試腳本從層次結(jié)構(gòu)上可以劃分為測試支持層、測試用例層和測試控制層3 個層面。其中測試支持層腳本負責執(zhí)行操作被測軟件的動作, 其邏輯與被測軟件的實現(xiàn)密切相關(guān)。測試用例層腳本負責實現(xiàn)一個具體的測試目標, 其邏輯與測試方法和被測軟件的功能指標密切相關(guān), 但是和被測軟件功能的實現(xiàn)方式?jīng)]有緊密的聯(lián)系。測試用例層腳本通過調(diào)用測試支持層腳本完成對被測軟件的一項測試。測試控制層腳本負責協(xié)調(diào)一系列相關(guān)的測試用例腳本, 完成為測試用例腳本準備數(shù)據(jù)和控制測試用例腳本執(zhí)行過程的工作實現(xiàn)對被測軟件一類功能的測試。
根據(jù)對測試腳本組織結(jié)構(gòu)的分析, 我們設(shè)計了一種測試腳本框架,接下來仍以任務(wù)信息接口為例進行說明。在該腳本框架中,針對每一類數(shù)據(jù)信息接口建立一個類,圖2 所示中MissTestClass 即為任務(wù)信息接口建立的類。其成員函數(shù)分為兩類, 一類為測試函數(shù),一類為用例函數(shù)。
1) 首先介紹測試函數(shù)(見圖2 中的AddTest ()函數(shù)),它屬于測試支持層腳本: 依據(jù)前文提到的測試策略,首先調(diào)用任務(wù)信息接口的add 函數(shù),接著調(diào)用findALL() 函數(shù),接下來一方面通過比較查詢到的任務(wù)信息與添加的任務(wù)信息是否一致,以及比較實際返回值與預期返回值是否一致來驗證接口實現(xiàn)的正確性,生成測試結(jié)果。
2) 關(guān)于用例函數(shù)(見圖2 中的AddExec()函數(shù)), 它屬于測試用例層腳本:該類函數(shù)主要是負責列舉所設(shè)計的相關(guān)用例,以及將用例遍歷傳入 AddTest () 函數(shù),將獲得的測試結(jié)果寫入結(jié)果文件。
3) 最后是主函數(shù)(即main() 函數(shù)),它屬于測試控制層腳本,負責協(xié)調(diào)各用例的自動化執(zhí)行過程:包括連接數(shù)據(jù)庫,建立結(jié)果文件,通過任務(wù)信息接口類的對象調(diào)用AddExec()函數(shù)。
以此類推,對于每類每一類數(shù)據(jù)信息接口中的增、刪、改、查函數(shù)編寫測試函數(shù)和用例函數(shù),最后統(tǒng)一通過主函數(shù)完成自動化測試。
4 總結(jié)
在“數(shù)據(jù)庫訪問控制軟件”自動化測試工作中, 我們根據(jù)軟件的自身特點采用了特定的測試策略以及測試框架, 共設(shè)計執(zhí)行用例251 個,發(fā)現(xiàn)問題個數(shù)為25 個。利用編寫的測試腳本完成一次全面的自動化測試只需要大約10min, 而使用傳統(tǒng)的手工測試需要2d 的工作量。在后續(xù)的回歸測試當中,只需根據(jù)實際情況增減用例,大大節(jié)省了時間和精力。針對不同項目而言,我們編寫的測試腳本還需要進行相應(yīng)的修改,所以后續(xù)可以研究設(shè)計針對不同項目中數(shù)據(jù)庫訪問控制軟件的通用自動化測試框架。
【參考文獻】
[1] 王鵬. 軍事電子信息系統(tǒng)測試評估工具的研究與實踐. 中國電子科學研究院學報,2007,2(1):73-79
[2] 宋波, 張忠能. 基于系統(tǒng)功能測試的軟件自動化測試可行性分析. 計算機與軟件,2005,12(22):31-32
[3] 陳能技. 軟件自動化測試成功之道. 北京: 人民郵電出版社,2010:58-67
[4] 陸璐. 軟件自動化測試技術(shù). 北京交通大學出版社,2006:32-43
[5] 張克東. 軟件工程與軟件測試自動化教程[M]. 北京: 電子工業(yè)出版社, 2002
本站論文資源均為來自網(wǎng)絡(luò)轉(zhuǎn)載,免費提供給廣大作者參考,不進行任何贏利,如有版權(quán)問題,請聯(lián)系管理員刪除! 快速論文發(fā)表網(wǎng)(www.455685.com)本中心和國內(nèi)數(shù)百家期刊雜志社有良好的合作關(guān)系,可以幫客戶代發(fā)論文投稿.
投稿郵箱:ksfbw@126.com
客服Q Q:
82702382
聯(lián)系電話:15295038833
本站論文資源均為來自網(wǎng)絡(luò)轉(zhuǎn)載,免費提供給廣大作者參考,不進行任何贏利,如有版權(quán)問題,請聯(lián)系管理員刪除!