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