qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          軟件開發(fā)中的數(shù)據(jù)庫測(cè)試技術(shù)

          摘要:根據(jù)以往軟件測(cè)試經(jīng)驗(yàn),對(duì)數(shù)據(jù)庫測(cè)試的內(nèi)容和方法,進(jìn)行了詳細(xì)的分析,闡明了數(shù)據(jù)庫測(cè)試在軟件開發(fā)中的重要性。

            關(guān)鍵詞:數(shù)據(jù)庫測(cè)試;性能測(cè)試;DataFactory

            1、引言

            數(shù)據(jù)庫系統(tǒng)的開發(fā)在應(yīng)用軟件開發(fā)中所占的比重越來越大,隨之而來的問題也越來越突出。比如:數(shù)據(jù)冗余,功能和性能方面存在的問題已經(jīng)嚴(yán)重影響應(yīng)用軟件的使用。軟件測(cè)試人員往往重視對(duì)軟件功能和編碼的測(cè)試,而忽略對(duì)軟件性能,特別是數(shù)據(jù)庫訪問并發(fā)測(cè)試。因?yàn)椋麄児逃械乃枷胫姓J(rèn)為數(shù)據(jù)庫設(shè)計(jì)存在問題對(duì)系統(tǒng)性能影響不大,或從根本上忽略了數(shù)據(jù)庫在軟件開發(fā)中的地位,直到出現(xiàn)了問題,才想到對(duì)數(shù)據(jù)庫的測(cè)試,但往往也是僅僅通過對(duì)編碼的測(cè)試工作中捎帶對(duì)數(shù)據(jù)庫進(jìn)行一定的測(cè)試,這遠(yuǎn)遠(yuǎn)是不夠的。目前,中鐵網(wǎng)上訂票系統(tǒng)在大用戶同時(shí)在線訂票中系統(tǒng)頻頻癱瘓,就是最好的佐證。

            所以,在應(yīng)用軟件的測(cè)試工作中,應(yīng)該將數(shù)據(jù)庫作為一個(gè)獨(dú)立的部分進(jìn)行充分的測(cè)試,這樣才可以得到應(yīng)用軟件所需要的性能優(yōu)化的數(shù)據(jù)庫。那么,應(yīng)該對(duì)哪些內(nèi)容進(jìn)行測(cè)試,如何進(jìn)行測(cè)試呢?

            2、數(shù)據(jù)庫設(shè)計(jì)的測(cè)試

            數(shù)據(jù)庫是應(yīng)用的基礎(chǔ),其性能直接影響應(yīng)用軟件的性能。為了使數(shù)據(jù)庫具有較好的性能,需要對(duì)數(shù)據(jù)庫中的表進(jìn)行規(guī)范化設(shè)計(jì)。規(guī)范化的范式可分為第一范式、第二范式、第三范式、BCNF范式、第四范式和第五范式。一般來說,邏輯數(shù)據(jù)庫設(shè)計(jì)應(yīng)滿足第三范式的要求,這是因?yàn)闈M足第三范式的表結(jié)構(gòu)容易維護(hù),且基本滿足實(shí)際應(yīng)用的要求。因此,實(shí)際應(yīng)用中一般都按照第三范式的標(biāo)準(zhǔn)進(jìn)行規(guī)范化。但是,規(guī)范化也有缺點(diǎn):由于將一個(gè)表拆分成為多個(gè)表,在查詢時(shí)需要多表連接,降低了查詢速度。故數(shù)據(jù)庫設(shè)計(jì)的測(cè)試包括前期需求分析產(chǎn)生數(shù)據(jù)庫邏輯模型和后期業(yè)務(wù)系統(tǒng)開發(fā)中的測(cè)試兩部分(這里指的是后者),我在這里稱為實(shí)體測(cè)試。

            數(shù)據(jù)庫是由若干的實(shí)體組成的,包括(表,視圖,存儲(chǔ)過程等),數(shù)據(jù)庫最基本的測(cè)試就是實(shí)體測(cè)試,通過對(duì)這些實(shí)體的測(cè)試,可以發(fā)現(xiàn)數(shù)據(jù)庫實(shí)體設(shè)計(jì)得是否充分,是否有遺漏,每個(gè)實(shí)體的內(nèi)容是否全面,擴(kuò)展性如何。

            實(shí)體測(cè)試,可以用來發(fā)現(xiàn)應(yīng)用軟件在功能上存在的不足,也可以發(fā)現(xiàn)數(shù)據(jù)冗余的問題。經(jīng)過測(cè)試,測(cè)試人員對(duì)有異議的問題要及時(shí)和數(shù)據(jù)庫的設(shè)計(jì)人員進(jìn)行溝通解決。

            3、數(shù)據(jù)一致性測(cè)試

            在進(jìn)行實(shí)體測(cè)試后,應(yīng)進(jìn)一步檢查下面的內(nèi)容以保障數(shù)據(jù)的一致性:

            3.1 表的主鍵測(cè)試根據(jù)應(yīng)用系統(tǒng)的實(shí)際需求,對(duì)每個(gè)表的主鍵進(jìn)行測(cè)試,驗(yàn)證是否存在記錄不唯一的情況,如果有,則要重新設(shè)置主鍵,使表中記錄唯一。

            3.2 表之間主外鍵關(guān)系的測(cè)試數(shù)據(jù)庫中主外鍵字段在名稱,數(shù)據(jù)類型,字段長(zhǎng)度上的一致性測(cè)試。

            3.3 級(jí)聯(lián)表,刪除主表數(shù)據(jù)后,相應(yīng)從報(bào)表數(shù)據(jù)應(yīng)同時(shí)刪除的問題例如學(xué)生表和學(xué)生成績(jī)表,學(xué)生數(shù)據(jù)已經(jīng)刪除,成績(jī)表中相應(yīng)學(xué)生的成績(jī)記錄應(yīng)同時(shí)刪除。

            3.4 存儲(chǔ)過程和觸發(fā)器的測(cè)試存儲(chǔ)過程可以人工執(zhí)行,但觸發(fā)器不能人工處理,所以在對(duì)存儲(chǔ)過程和觸發(fā)器執(zhí)行的過程中針對(duì)SQL SERVER2005及以上版本可以使用Microsoft SQL Server Profiler性能測(cè)試工具進(jìn)行測(cè)試。

            Microsoft SQL Server Profiler 是 SQL 跟蹤的圖形用戶界面,用于監(jiān)視數(shù)據(jù)庫引擎或 Analysis Services 的實(shí)例。測(cè)試人員可以捕獲有關(guān)每個(gè)事件的數(shù)據(jù)并將其保存到文件或表中供以后分析。例如:可以對(duì)生產(chǎn)環(huán)境進(jìn)行監(jiān)視,了解哪些存儲(chǔ)過程由于執(zhí)行速度太慢影響了性能。

          4、數(shù)據(jù)庫的容量測(cè)試

            隨著數(shù)據(jù)庫系統(tǒng)的使用,數(shù)據(jù)量在飛速增長(zhǎng),如何在使用前對(duì)數(shù)據(jù)容量的增長(zhǎng)情況進(jìn)行初步估算,為最終用戶提供參考,這在數(shù)據(jù)庫使用和維護(hù)過程中,是非常重要的。可以通過對(duì)數(shù)據(jù)庫設(shè)計(jì)中基本表的數(shù)據(jù)大小,和每天數(shù)據(jù)表的數(shù)據(jù)產(chǎn)生量進(jìn)行初步估算。

            記錄數(shù)據(jù)量=各個(gè)字段所占字節(jié)數(shù)的總和

            表的數(shù)據(jù)量=記錄數(shù)據(jù)量*記錄數(shù)

            數(shù)據(jù)庫大小=各表數(shù)據(jù)量的總和

            當(dāng)然,數(shù)據(jù)庫的大小不僅僅只是基本表的大小,還有系統(tǒng)表,視圖,存儲(chǔ)過程等其它實(shí)體所占的容量,但最基本的數(shù)據(jù)是表的數(shù)據(jù)。另外,數(shù)據(jù)庫的容量還包括數(shù)據(jù)庫日志文件的容量,一般應(yīng)預(yù)留數(shù)據(jù)庫文件的2倍左右。

            5、數(shù)據(jù)庫的性能測(cè)試

            應(yīng)用軟件除了功能外,很重要的一部分就是軟件的性能,而對(duì)于數(shù)據(jù)庫系統(tǒng),數(shù)據(jù)庫性能的好壞會(huì)直接影響應(yīng)用軟件的性能,這部分的測(cè)試,一般手工測(cè)試就顯得無能為力了,這時(shí)就要借助自動(dòng)化的測(cè)試軟件,例如:DataFactory,DataFactory是一種強(qiáng)大的數(shù)據(jù)產(chǎn)生器,它允許開發(fā)人員和測(cè)試人員很容易產(chǎn)生百萬行有意義的正確的測(cè)試數(shù)據(jù)庫,該工具支持DB2、Oracle、Sybase、SQL Server數(shù)據(jù)庫。這樣,就可以模擬出應(yīng)用軟件長(zhǎng)期使用后,海量數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫的性能狀況。從而盡早發(fā)現(xiàn)問題,進(jìn)行數(shù)據(jù)庫性能的優(yōu)化。

            這里要注意,進(jìn)行性能測(cè)試的時(shí)候,一定要注意測(cè)試環(huán)境的一致性,包括:操作系統(tǒng)、應(yīng)用軟件的版本以及硬件的配置等,而且在進(jìn)行數(shù)據(jù)庫方面的測(cè)試的時(shí)候一定要注意數(shù)據(jù)庫的記錄數(shù)、配置等要一致,只有在相同條件下進(jìn)行測(cè)試,才可以對(duì)結(jié)果進(jìn)行比較。否則無法和用戶對(duì)軟件的性能的觀點(diǎn)達(dá)成一致。

            6、數(shù)據(jù)庫的壓力測(cè)試

            說起測(cè)試,我們首先想到的就是軟件正確性的測(cè)試,即常說的功能測(cè)試。軟件功能正確僅是軟件質(zhì)量合格指標(biāo)之一。在實(shí)際開發(fā)中,還有其它的非功能因素也起著決定性的因素,例如軟件的響應(yīng)速度。影響軟件響應(yīng)速度的因素有很多,有些是因?yàn)樗惴ú粔蚋咝В贿€有些可能受用戶并發(fā)數(shù)的影響。

            在眾多類型的軟件測(cè)試中,壓力測(cè)試正是以軟件響應(yīng)速度為測(cè)試目標(biāo),尤其是針對(duì)在較短時(shí)間內(nèi)大量并發(fā)用戶的訪問時(shí),軟件的抗壓能力。但壓力測(cè)試往往是手工難以測(cè)試的,必須借助自動(dòng)化測(cè)試工具。常用的壓力測(cè)試有:Web測(cè)試、數(shù)據(jù)庫測(cè)試等。

            數(shù)據(jù)庫在大多數(shù)軟件項(xiàng)目中是不可缺少的,對(duì)于它進(jìn)行壓力測(cè)試是為了找出數(shù)據(jù)庫對(duì)象是否可以有效地承受來自多個(gè)用戶的并發(fā)訪問。這些對(duì)象主要是:索引、觸發(fā)器、存儲(chǔ)過程和鎖。通過對(duì)SQL語句和存儲(chǔ)過程的測(cè)試,自動(dòng)化的壓力測(cè)試工具可以間接的反應(yīng)數(shù)據(jù)庫對(duì)象是否需要優(yōu)化。

            這些自動(dòng)化的測(cè)試工具很多,各有特點(diǎn),基于Java的項(xiàng)目可以使用JMeter,.Net項(xiàng)目可以采用.Net集成開發(fā)環(huán)境中提供的測(cè)試方案。

            7、結(jié)束語

            總之,在應(yīng)用系統(tǒng)的測(cè)試中,把數(shù)據(jù)庫應(yīng)當(dāng)作為獨(dú)立的系統(tǒng)來測(cè)試,這無疑會(huì)為應(yīng)用軟件的質(zhì)量增加可靠的保障,同時(shí)還必須結(jié)合應(yīng)用軟件進(jìn)行集成測(cè)試,只有二者有機(jī)結(jié)合起來,才能最大限度的發(fā)揮數(shù)據(jù)庫和應(yīng)用軟件的功能。


          posted on 2013-03-06 11:33 順其自然EVO 閱讀(299) 評(píng)論(0)  編輯  收藏 所屬分類: 數(shù)據(jù)庫

          <2013年3月>
          242526272812
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 万荣县| 天全县| 荃湾区| 柳州市| 南涧| 灵丘县| 深水埗区| 孝义市| 锡林浩特市| 蒲江县| 高台县| 舞钢市| 丘北县| 虎林市| 梁山县| 平昌县| 鹤山市| 太和县| 临西县| 西乡县| 怀仁县| 安徽省| 隆化县| 东乡| 湄潭县| 渑池县| 东乌珠穆沁旗| 鲁山县| 迁西县| 宣恩县| 常州市| 玛曲县| 茶陵县| 阜宁县| 泸水县| 凤凰县| 炉霍县| 萨嘎县| 天气| 昭觉县| 滦南县|