河南許繼儀表有限公司 郭改霞 張斌斌
數(shù)據(jù)庫開發(fā)不同階段測(cè)試技術(shù)研究
河南許繼儀表有限公司 郭改霞 張斌斌
隨著現(xiàn)代計(jì)算機(jī)科技的飛速發(fā)展和社會(huì)信息化程度的不斷提高,數(shù)據(jù)庫已逐步成為計(jì)算機(jī)信息系統(tǒng)和計(jì)算機(jī)應(yīng)用系統(tǒng)的基礎(chǔ)和核心,而數(shù)據(jù)庫系統(tǒng)測(cè)試的重要性也越來越引起人們的關(guān)注,本文就數(shù)據(jù)庫的測(cè)試技術(shù)進(jìn)行初步的探討,希望對(duì)數(shù)據(jù)系統(tǒng)的測(cè)試起到拋磚引玉的作用。
數(shù)據(jù)庫系統(tǒng)的生命周期可以分成設(shè)計(jì)、開發(fā)和成品三個(gè)階段。越早進(jìn)行數(shù)據(jù)庫性能優(yōu)化成本就越低,收益也越大,反之越晚進(jìn)行數(shù)據(jù)庫性能優(yōu)化成本就越高,收益也越小。因此,數(shù)據(jù)庫系統(tǒng)問題發(fā)現(xiàn)的越早,為修改缺陷所付出的代價(jià)就越小。根據(jù)數(shù)據(jù)庫系統(tǒng)的生命周期,數(shù)據(jù)庫系統(tǒng)測(cè)試可分成三個(gè)層次來進(jìn)行:集成測(cè)試、數(shù)據(jù)驗(yàn)證和系統(tǒng)測(cè)試。集成測(cè)試也可以說是數(shù)據(jù)庫結(jié)構(gòu)測(cè)試,對(duì)數(shù)據(jù)庫邏輯結(jié)構(gòu)和物理結(jié)構(gòu)的規(guī)范性進(jìn)行測(cè)試,開始于軟件開發(fā)的概要設(shè)計(jì)階段。數(shù)據(jù)驗(yàn)證主要是回顧程序代碼及數(shù)據(jù)庫測(cè)試環(huán)境中的數(shù)據(jù)映射,驗(yàn)證通過程序載入數(shù)據(jù)庫的數(shù)據(jù)是否與源數(shù)據(jù)相符合,并驗(yàn)證數(shù)據(jù)的正確性,數(shù)據(jù)驗(yàn)證測(cè)試在軟件測(cè)試的確認(rèn)測(cè)試階段進(jìn)行。系統(tǒng)測(cè)試是對(duì)數(shù)據(jù)庫系統(tǒng)的整體性能進(jìn)行檢測(cè),在數(shù)據(jù)驗(yàn)證測(cè)試之后進(jìn)行。
數(shù)據(jù)庫結(jié)構(gòu)規(guī)范性測(cè)試一般開始于軟件開發(fā)的概要設(shè)計(jì)階段,在數(shù)據(jù)庫設(shè)計(jì)完成之后進(jìn)行。集成測(cè)試的第一階段是數(shù)據(jù)庫邏輯結(jié)構(gòu)測(cè)試,第二階段是物理模型的驗(yàn)證。
1.邏輯結(jié)構(gòu)檢測(cè)。一個(gè)規(guī)范的數(shù)據(jù)庫設(shè)計(jì)應(yīng)遵循以下原則。首先必須定義主鍵,并且在每個(gè)表的最上部。
除此之外,關(guān)系型數(shù)據(jù)庫一般遵循三個(gè)范式。參照這些原則和范式,對(duì)數(shù)據(jù)庫邏輯結(jié)構(gòu)主要進(jìn)行以下檢測(cè):數(shù)據(jù)庫表是否創(chuàng)建了主鍵,主鍵是否能保證記錄的唯一性;是否建立索引和約束、已創(chuàng)建的索引或約束是否必要、是否正確;是否創(chuàng)建表間的主外鍵關(guān)系、主外鍵關(guān)系是否能保證數(shù)據(jù)庫的完整性。
數(shù)據(jù)庫規(guī)范化測(cè)試除人工檢測(cè)外,還可以借助自動(dòng)化數(shù)據(jù)庫測(cè)試工具進(jìn)行測(cè)試。如ERWin和ERWinExaminer,這兩種工具是數(shù)據(jù)庫建模工具和數(shù)據(jù)庫規(guī)范性測(cè)試工具??梢岳肊RWin創(chuàng)建數(shù)據(jù)庫的邏輯模型,利用ERWinExaminer工具對(duì)邏輯模型進(jìn)行規(guī)范化檢測(cè),測(cè)試人員只需要對(duì)測(cè)試結(jié)果進(jìn)行分析,就能找出數(shù)據(jù)庫邏輯結(jié)構(gòu)中存在的缺陷。
2.物理結(jié)構(gòu)驗(yàn)證。集成測(cè)試的第二階段是物理模型的驗(yàn)證。在邏輯模型中的一些元素將包含在物理表中,有些元素可能只作為占位符存在,在物理模型創(chuàng)建時(shí)被替換掉,邏輯模型中的幾個(gè)表也可能被合并成一個(gè)物理表,因此在創(chuàng)建物理模型之前,必須建立不需要載入的數(shù)據(jù)元素清單。數(shù)據(jù)庫管理員應(yīng)根據(jù)物理表的訪問方式,合理地設(shè)置數(shù)據(jù)文件的存放位置,確定索引所包含的數(shù)據(jù)元素,以改善物理表的訪問速度和效率。然后,邏輯數(shù)據(jù)模型就可以轉(zhuǎn)換成具有實(shí)際數(shù)據(jù)庫測(cè)試環(huán)境的物理模型。
集成測(cè)試的第三種元素是通過程序或其他數(shù)據(jù)裝載工具向數(shù)據(jù)庫中裝載數(shù)據(jù),在裝載數(shù)據(jù)之前,應(yīng)首先設(shè)置好數(shù)據(jù)源。在數(shù)據(jù)裝載的過程中,將發(fā)現(xiàn)數(shù)據(jù)類型和尺寸方面的錯(cuò)誤,這些錯(cuò)誤將被記錄到日志中,在數(shù)據(jù)裝載完成或失敗之后,可以查看日志以確定問題的所在。
在數(shù)據(jù)驗(yàn)證期間最重要的工作是驗(yàn)證程序?qū)?shù)據(jù)的映射。因?yàn)閿?shù)據(jù)庫表中對(duì)各數(shù)據(jù)元素的尺寸都進(jìn)行了限制,源數(shù)據(jù)被裝載進(jìn)測(cè)試數(shù)據(jù)庫中可能要經(jīng)過適當(dāng)?shù)牟脺p,因此應(yīng)重點(diǎn)驗(yàn)證那些認(rèn)為應(yīng)該裝載到指定數(shù)據(jù)元素中的數(shù)據(jù)是否確實(shí)來源于源數(shù)據(jù)集合。
數(shù)據(jù)驗(yàn)證的第二步采用計(jì)數(shù)的方式進(jìn)行。進(jìn)行簡(jiǎn)單數(shù)據(jù)庫查詢時(shí),可以在源數(shù)據(jù)集合和測(cè)試數(shù)據(jù)庫中分別進(jìn)行查詢,如果兩次查詢的結(jié)果相同,則可以假定在數(shù)據(jù)載入過程中,沒有丟失數(shù)據(jù),數(shù)據(jù)裝載過程是安全的。
在多維數(shù)據(jù)庫系統(tǒng)中,多個(gè)數(shù)據(jù)庫表會(huì)有完全一樣的副本,因此需要對(duì)這些表進(jìn)行比較來驗(yàn)證這些表的一致性。如果副本與原表之間沒有差異,則可以默認(rèn)這些表100%經(jīng)過了驗(yàn)證。也可以隨機(jī)從測(cè)試環(huán)境中抽取一組數(shù)據(jù),與存儲(chǔ)在數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行比較,如果兩種數(shù)據(jù)一致,則更能增強(qiáng)對(duì)數(shù)據(jù)庫程序的信心。
系統(tǒng)測(cè)試是對(duì)數(shù)據(jù)庫的系統(tǒng)性能、數(shù)據(jù)一致性、完整性、安全性等方面的綜合性測(cè)試,在軟件開發(fā)的最后階段進(jìn)行。
1.數(shù)據(jù)庫系統(tǒng)性能檢測(cè)。在進(jìn)行數(shù)據(jù)庫性能檢測(cè)之前,須先要檢測(cè)數(shù)據(jù)的硬件環(huán)境,如網(wǎng)絡(luò)環(huán)境、內(nèi)存、磁盤I/O及CPU。在硬件環(huán)境滿足的情況下方可進(jìn)行性能檢測(cè)。性能檢測(cè)主要從以下幾個(gè)方面進(jìn)行。
磁盤I/O讀寫監(jiān)視,監(jiān)控磁盤的數(shù)據(jù)塊使用情況以及被頻繁讀寫的熱點(diǎn)區(qū)域。通過這些信息使用者就可以較容易地平衡在磁盤上數(shù)據(jù)量的存儲(chǔ)分配以及磁盤的I/O分配,有效地幫助使用者作好磁盤容量規(guī)劃并在當(dāng)前的磁盤設(shè)備上有效的提高數(shù)據(jù)的讀寫效率。
檢測(cè)CPU時(shí)間,找出占有CPU最多的進(jìn)程及相關(guān)數(shù)據(jù)庫表。
檢測(cè)數(shù)據(jù)庫服務(wù)器的吞吐量,找出讀取數(shù)據(jù)庫業(yè)務(wù)最繁忙的時(shí)段。
檢測(cè)數(shù)據(jù)庫用戶的響應(yīng)時(shí)間,找出響應(yīng)時(shí)間最長(zhǎng)的進(jìn)程或用戶。
監(jiān)控超出共享內(nèi)存緩沖區(qū)的操作數(shù),按照這個(gè)基準(zhǔn),使用者可以對(duì)緩沖區(qū)進(jìn)行額外的調(diào)整,以便更好地支持實(shí)際系統(tǒng)的運(yùn)行需要,提高用戶生產(chǎn)效率。
監(jiān)測(cè)上一輪期間作業(yè)等待緩沖區(qū)的時(shí)間,幫助使用者發(fā)現(xiàn)可能存在的并發(fā)性問題。通過一段時(shí)間的監(jiān)測(cè),使用者可以得出該實(shí)際生產(chǎn)系統(tǒng)并發(fā)訪問的需求和可用性等基準(zhǔn)參數(shù)。
根據(jù)用戶事務(wù)或者表空間監(jiān)控事務(wù)日志。通過這項(xiàng)監(jiān)控,使用者可以清晰的了解到重要作業(yè)對(duì)數(shù)據(jù)庫存儲(chǔ)、CPU操作和內(nèi)存使用的情況,精確測(cè)算和分析現(xiàn)有資源,使之能夠更好的適應(yīng)對(duì)數(shù)據(jù)庫的持續(xù)工作要求。
監(jiān)測(cè)關(guān)鍵業(yè)務(wù)數(shù)據(jù)表的表空間增長(zhǎng),當(dāng)空間低于預(yù)定的閥值時(shí)發(fā)出警告。通過這項(xiàng)功能,使用者可以有效地安排關(guān)鍵業(yè)務(wù)數(shù)據(jù)的存儲(chǔ),并且有效地防止因?yàn)閿?shù)據(jù)空間不足而導(dǎo)致的關(guān)鍵業(yè)務(wù)停頓。
2.數(shù)據(jù)庫系統(tǒng)一致性、完整性測(cè)試。在集成測(cè)試階段對(duì)數(shù)據(jù)庫的一致性和完整性已經(jīng)有了一定的保證,但只是在基于數(shù)據(jù)庫靜態(tài)結(jié)構(gòu)的基礎(chǔ)上進(jìn)行的,對(duì)數(shù)據(jù)庫系統(tǒng)的動(dòng)態(tài)行為不能保證。數(shù)據(jù)一致性的意外破壞可能由以下原因造成的。
在事務(wù)處理過程中發(fā)生崩潰;對(duì)數(shù)據(jù)庫的并發(fā)訪問所導(dǎo)致的異常;在幾個(gè)計(jì)算機(jī)上分布數(shù)據(jù)所導(dǎo)致的異常;違反事務(wù)保證數(shù)據(jù)一致性這一假設(shè)的邏輯錯(cuò)誤所導(dǎo)致的異常。
針對(duì)以上可能產(chǎn)生的情況,應(yīng)采用如下測(cè)試策略。
在數(shù)據(jù)處理過程中,人為中止程序,查看數(shù)據(jù)一致性是否遭到破壞;模擬多用戶同時(shí)訪問數(shù)據(jù)庫系統(tǒng)的情況,查看數(shù)據(jù)一致性是否遭到破壞;如數(shù)據(jù)庫系統(tǒng)存在多個(gè)服務(wù)器,在人為制造故障系統(tǒng)又重新正常運(yùn)行后,還要查看不同數(shù)據(jù)庫之間的一致性;頻繁添加/刪除/修改數(shù)據(jù),數(shù)據(jù)包括正常數(shù)據(jù)和不合理數(shù)據(jù)兩種,查看數(shù)據(jù)的一致性和完整性是否一致。
3.數(shù)據(jù)庫系統(tǒng)安全性測(cè)試。數(shù)據(jù)庫系統(tǒng)中存儲(chǔ)的數(shù)據(jù)需要保護(hù),以防止未授權(quán)訪問、惡意破壞或修改以及意外引入的不一致性。為保護(hù)數(shù)據(jù)庫,必須在以下幾個(gè)層次上采取安全性措施:物理層、人際層、操作系統(tǒng)層、網(wǎng)絡(luò)層、數(shù)據(jù)庫系統(tǒng)層。針對(duì)數(shù)據(jù)庫系統(tǒng)層的進(jìn)行測(cè)試的安全測(cè)試主要包括以下幾個(gè)方面:數(shù)據(jù)庫系統(tǒng)管理員用戶是否加密、密碼是否容易破解、是否限制了用戶的登錄次數(shù)等。
本文概述了數(shù)據(jù)庫系統(tǒng)不同階段的不同測(cè)試技術(shù)和方法,數(shù)據(jù)庫系統(tǒng)測(cè)試開始于軟件開發(fā)的概要設(shè)計(jì)階段,終止于軟件開發(fā)的系統(tǒng)測(cè)試階段。采用的測(cè)試技術(shù)包括手工測(cè)試和自動(dòng)化工具測(cè)試,但是目前用于數(shù)據(jù)庫系統(tǒng)測(cè)試的自動(dòng)化工具并不多,大多需要測(cè)試人員依靠自己的數(shù)據(jù)庫設(shè)計(jì)和管理經(jīng)驗(yàn)以及對(duì)軟件業(yè)務(wù)流程的理解進(jìn)行測(cè)試,測(cè)試結(jié)果也會(huì)因測(cè)試人員的水平不同而不同。