現(xiàn)在的軟件應(yīng)用程序,已經(jīng)離不開數(shù)據(jù)庫的支持。無論是在Web應(yīng)用、桌面應(yīng)用、客戶端服務(wù)器、企業(yè)和個人業(yè)務(wù),都需要自己的數(shù)據(jù)庫在后端操作。同樣的在金融、租賃、零售、郵寄、醫(yī)療各個領(lǐng)域中,數(shù)據(jù)庫也是不可缺少的。
隨著現(xiàn)在應(yīng)用的復(fù)雜程度增加,應(yīng)用需要更強大和安全系數(shù)高的數(shù)據(jù)庫才可以滿足需求。為了滿足高頻率的應(yīng)用程序事務(wù)(如銀行或財務(wù)應(yīng)用),數(shù)據(jù)庫的安全性成為首要之重,今天我們就來介紹下數(shù)據(jù)庫測試。
一:了解數(shù)據(jù)庫
1、什么是數(shù)據(jù)庫
數(shù)據(jù)庫是存放數(shù)據(jù)的倉庫。它的存儲空間一般很大,可以存放百萬條、千萬條、上億條數(shù)據(jù)。但是數(shù)據(jù)庫并不是隨意地將數(shù)據(jù)進行存放,是要有一定的規(guī)則的,否則查詢的效率會很低。當(dāng)今世界是一個充滿著大量數(shù)據(jù)的互聯(lián)網(wǎng)世界,充斥著大量的數(shù)據(jù)。即這個互聯(lián)網(wǎng)世界就是數(shù)據(jù)世界。數(shù)據(jù)的來源種類很多,比如出行記錄、消費記錄、瀏覽的網(wǎng)頁、發(fā)送的消息等等。除了文本類型的數(shù)據(jù),圖像、音樂、聲音都是數(shù)據(jù)。
數(shù)據(jù)庫是一個按數(shù)據(jù)結(jié)構(gòu)來存儲和管理數(shù)據(jù)的計算機軟件系統(tǒng)。數(shù)據(jù)庫的概念包括兩層意思:
(1)數(shù)據(jù)庫是一個實體,它是能夠合理保管數(shù)據(jù)的倉庫,用戶在該倉庫中存放要管理的應(yīng)用事務(wù)數(shù)據(jù),“數(shù)據(jù)”和“庫”兩個概念結(jié)合成為數(shù)據(jù)庫。
(2)數(shù)據(jù)庫是數(shù)據(jù)管理的新方法和技術(shù),它能更合理的組織數(shù)據(jù)、更方便的維護數(shù)據(jù)、更嚴(yán)密的控制數(shù)據(jù)和更有效的利用數(shù)據(jù)。
2、數(shù)據(jù)庫系統(tǒng)的組成:
1)硬件
數(shù)據(jù)庫系統(tǒng)的硬件包括計算機的主機、鍵盤、顯示器和外圍設(shè)備(例如打印機、光盤機、磁帶機等)。由于一般數(shù)據(jù)庫系統(tǒng)所存放和處理的數(shù)據(jù)量很大,加之DBMS豐富的功能軟件,使得自身所占用的存儲空間很大,因此整個數(shù)據(jù)庫系統(tǒng)對硬件資源提出了較高的要求
2)軟件
數(shù)據(jù)庫系統(tǒng)的軟件除了數(shù)據(jù)庫管理系統(tǒng)之外,還包括操作系統(tǒng)各種高級語言處理程序(編譯或解釋程序)、應(yīng)用開發(fā)工具軟件和特定應(yīng)用軟件等
3)數(shù)據(jù)
數(shù)據(jù)是數(shù)據(jù)庫的基本組成,是對客觀世界所存在事物的一種表征,也是數(shù)據(jù)庫用戶的操作對象。數(shù)據(jù)是數(shù)據(jù)庫系統(tǒng),也是企業(yè)或組織的真正財富。數(shù)據(jù)應(yīng)按照需求進行采集并有結(jié)構(gòu)地存入數(shù)據(jù)庫。由于數(shù)據(jù)的類型多樣性,數(shù)據(jù)的采集方式和存儲方式也會不同. 數(shù)據(jù)作為一種資源是數(shù)據(jù)庫系統(tǒng)中最穩(wěn)定的成分,即硬件可能更新,甚至軟件也可以更新,但只要企業(yè)或組織的性質(zhì)不改變,數(shù)據(jù)將是可以長期使用的財富
4)用戶
數(shù)據(jù)庫用戶是管理、開發(fā)、使用數(shù)據(jù)庫的主體。根據(jù)工作任務(wù)的差異,數(shù)據(jù)庫用戶通??梢苑殖山K端用戶、應(yīng)用程序員和數(shù)據(jù)庫管理員等3種不同類型
二、數(shù)據(jù)庫操作
下面為大家簡單的介紹數(shù)據(jù)庫中‘CRUD’所代表的操作。
C:創(chuàng)建——創(chuàng)建用戶。
R:檢索——執(zhí)行檢索視圖操作。
U:更新——更新數(shù)據(jù)庫信息。
D:刪除——執(zhí)行刪除數(shù)據(jù)庫操作。
普遍用戶在操作數(shù)據(jù)時,都會用到以上四種操作
1、數(shù)據(jù)庫事務(wù)
ACID屬性
ACID,指數(shù)據(jù)庫事務(wù)正確執(zhí)行的四個基本要素的縮寫。包含:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)。在數(shù)據(jù)庫測試期間必須測試這四個要素,確保正確。
數(shù)據(jù)完整性
考慮到不同模塊的應(yīng)用程序以不同的方式使用相同的數(shù)據(jù),并執(zhí)行對數(shù)據(jù)所有的CRUD操作。確保數(shù)據(jù)庫中包含的數(shù)據(jù)盡可能地準(zhǔn)確和一致的數(shù)據(jù)性質(zhì),這就是數(shù)據(jù)完整性。
2、業(yè)務(wù)準(zhǔn)確性
數(shù)據(jù)庫發(fā)展至今,已不再是單純的用來存儲記錄。事實上,數(shù)據(jù)庫系統(tǒng)已經(jīng)發(fā)展成為強大的工具,為開發(fā)者們提供了足夠的擴展支持。數(shù)據(jù)庫系統(tǒng)比以前具有了更多的強大功能,例如參考完整性,關(guān)系約束,觸發(fā)器和存儲過程
三:數(shù)據(jù)庫測試
1、數(shù)據(jù)準(zhǔn)備
為了測試測試數(shù)據(jù)庫正確和準(zhǔn)確性。首先,測試人員要熟練掌握SQL和DML(數(shù)據(jù)庫語言)語句。其次,測試人員應(yīng)該掌握數(shù)據(jù)庫的結(jié)構(gòu)。如果滿足這兩個條件,即可放心測試,測試人員可以根據(jù)自己對數(shù)據(jù)庫的理解,以及本身應(yīng)用提供的數(shù)據(jù)庫設(shè)計說明,還有相對于的業(yè)務(wù)說明,設(shè)計自己的測試用例及其測試的sql語句,然后進行對應(yīng)的功能性的數(shù)據(jù)測試。
測試人員可以通過查看數(shù)據(jù)表來驗證應(yīng)用程序GUI的操作結(jié)果。但是,這種方式對于擁有大量數(shù)據(jù)的數(shù)據(jù)庫,查詢是相當(dāng)?shù)姆ξ逗头爆崱r炞C多個數(shù)據(jù)表也是相當(dāng)困難。
2、系統(tǒng)測試
在系統(tǒng)測試階段,測試主要做的工作是對開發(fā)的數(shù)據(jù)庫設(shè)計部分進行評審來發(fā)現(xiàn)其設(shè)計錯誤或者缺陷
3、集成測試
集成測試主要是針對各種接口進行測試,對于數(shù)據(jù)庫來說,主要考慮的有以下一些:
數(shù)據(jù)項的修改操作;
數(shù)據(jù)項的增加操作;
數(shù)據(jù)項的刪除操作;
數(shù)據(jù)表增加滿;
數(shù)據(jù)表刪除空;
刪除空表中的記錄;
數(shù)據(jù)表的并發(fā)操作;
針對存儲過程的接口測試;
結(jié)合業(yè)務(wù)邏輯做關(guān)聯(lián)表的接口測試;
同樣我們需要對這些接口考慮采用等價類、邊界值、錯誤猜測等方法進行測試。
四:測試內(nèi)容
1、數(shù)據(jù)庫設(shè)計的測試
數(shù)據(jù)庫是應(yīng)用的基礎(chǔ),其性能直接影響應(yīng)用軟件的性能。為了使數(shù)據(jù)庫具有較好的性能,需要對數(shù)據(jù)庫中的表進行規(guī)范化設(shè)計。規(guī)范化的范式可分為第一范式、第二范式、第三范式、BCNF 范式、第四范式和第五范式。一般來說,邏輯數(shù)據(jù)庫設(shè)計應(yīng)滿足第三范式的要求,這是因為滿足第三范式的表結(jié)構(gòu)容易維護,且基本滿足實際應(yīng)用的要求。因此,實際應(yīng)用中一般都按照第三范式的標(biāo)準(zhǔn)進行規(guī)范化
2、數(shù)據(jù)一致性測試
在進行實體測試后,應(yīng)進一步檢查下面的內(nèi)容以保障數(shù)據(jù)的一致性:
表的主鍵測試根據(jù)應(yīng)用系統(tǒng)的實際需求,對每個表的主鍵進行測試,驗證是否存在記錄不唯一的情況,如果有,則要重新設(shè)置主鍵,使表中記錄唯一。
表之間主外鍵關(guān)系的測試數(shù)據(jù)庫中主外鍵字段在名稱,數(shù)據(jù)類型,字段長度上的一致性測試。
級聯(lián)表,刪除主表數(shù)據(jù)后,相應(yīng)從報表數(shù)據(jù)應(yīng)同時刪除的問題例如學(xué)生表和學(xué)生成績表,學(xué)生數(shù)據(jù)已經(jīng)刪除,成績表中相應(yīng)學(xué)生的成績記錄應(yīng)同時刪除。
3、數(shù)據(jù)庫的容量測試
隨著數(shù)據(jù)庫系統(tǒng)的使用,數(shù)據(jù)量在飛速增長,如何在使用前對數(shù)據(jù)容量的增長情況進行初步估算,為最終用戶提供參考,這在數(shù)據(jù)庫使用和維護過程中,是非常重要的??梢酝ㄟ^對數(shù)據(jù)庫設(shè)計中基本表的數(shù)據(jù)大小,和每天數(shù)據(jù)表的數(shù)據(jù)產(chǎn)生量進行初步估算
4、數(shù)據(jù)庫的性能測試
應(yīng)用軟件除了功能外,很重要的一部分就是軟件的性能,而對于數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫性能的好壞會直接影響應(yīng)用軟件的性能,這部分的測試,一般手工測試就顯得無能為力了,這時就要借助自動化的測試軟件,例如:DataFactory,DataFactory 是一種強大的數(shù)據(jù)產(chǎn)生器,它允許開發(fā)人員和測試人員很容易產(chǎn)生百萬行有意義的正確的測試數(shù)據(jù)庫,該工具支持DB2、Oracle、Sybase、SQL Server 數(shù)據(jù)庫。這樣,就可以模擬出應(yīng)用軟件長期使用后,海量數(shù)據(jù)存儲的數(shù)據(jù)庫的性能狀況。從而盡早發(fā)現(xiàn)問題,進行數(shù)據(jù)庫性能的優(yōu)化
5、數(shù)據(jù)庫的壓力測試
數(shù)據(jù)庫在大多數(shù)軟件項目中是不可缺少的,對于它進行壓力測試是為了找出數(shù)據(jù)庫對象是否可以有效地承受來自多個用戶的并發(fā)訪問。這些對象主要是:索引、觸發(fā)器、存儲過程和鎖。通過對SQL語句和存儲過程的測試,自動化的壓力測試工具可以間接的反應(yīng)數(shù)據(jù)庫對象是否需要優(yōu)化。