【摘要】? ? 數(shù)據(jù)庫(kù)是指在按照一定的規(guī)則與數(shù)據(jù)結(jié)構(gòu),來(lái)組織、儲(chǔ)存、管理數(shù)據(jù)的倉(cāng)庫(kù),如今市面上常見(jiàn)的任何一款軟件應(yīng)用程序都離不開(kāi)數(shù)據(jù)庫(kù)的使用,而每一款軟件都必須要經(jīng)過(guò)數(shù)據(jù)庫(kù)測(cè)試通過(guò)后,才能正式投入使用?;诖?,本文主要是對(duì)計(jì)算機(jī)軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)測(cè)試的內(nèi)容與測(cè)試方法進(jìn)行簡(jiǎn)要探究。希望此文能夠在開(kāi)發(fā)測(cè)試上,帶給軟件工作者一點(diǎn)理論幫助。
【關(guān)鍵詞】? ? 計(jì)算機(jī)? ? 數(shù)據(jù)庫(kù)測(cè)試? ? 軟件開(kāi)發(fā)
引言:
隨著人們?cè)诙喾N生活情景中對(duì)應(yīng)用軟件的功能性需求越來(lái)越高,催生設(shè)計(jì)出了越來(lái)越多樣化的軟件應(yīng)用程序。軟件程序的復(fù)雜程度增加之后,就需要功能更加穩(wěn)定、處理更加高效、安全系數(shù)更高的數(shù)據(jù)庫(kù)來(lái)支持。像是數(shù)據(jù)處理、信息配置、圖像管理這些功能若是完全放到程序中讓程序自行管理,那么將會(huì)是一個(gè)非常巨大的計(jì)算量,那軟件程序就不存在快速響應(yīng)的優(yōu)勢(shì)了。而軟件開(kāi)發(fā)中,數(shù)據(jù)庫(kù)測(cè)試正是其中一步關(guān)鍵的測(cè)試環(huán)節(jié)。
一、數(shù)據(jù)庫(kù)的基礎(chǔ)操作
如今市面上的數(shù)據(jù)庫(kù)工具多種多樣,舉幾個(gè)比較常見(jiàn)的例子,如MS SQL Server2008 r2、Oracle Financial、DB2、PostgreSQL等,在成本、功能性、安全性、穩(wěn)定性上表現(xiàn)各有千秋。但不論是哪種數(shù)據(jù)庫(kù)工具,普通用戶在使用軟件對(duì)應(yīng)的數(shù)據(jù)庫(kù)時(shí)都只有四種操作:
Creat-創(chuàng)建用戶,建立一種與數(shù)據(jù)庫(kù)的映射關(guān)系,取得相應(yīng)的數(shù)據(jù)庫(kù)管理權(quán)限、數(shù)據(jù)庫(kù)用戶也就是數(shù)據(jù)庫(kù)的使用者,擁有在當(dāng)前數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)象、調(diào)取數(shù)據(jù)、備份數(shù)據(jù)以及處理數(shù)據(jù)的權(quán)限。
Retrieve-檢索,為數(shù)據(jù)調(diào)用設(shè)置一條邏輯規(guī)則,以特定的信息需求為目的,在信息庫(kù)集合內(nèi)所有的信息元素中,找出對(duì)應(yīng)的內(nèi)容并調(diào)用,通常情況下為視圖檢索。
Update-更新,數(shù)據(jù)表是數(shù)據(jù)庫(kù)中最基本的數(shù)據(jù)存儲(chǔ)單元,在舊的數(shù)據(jù)表結(jié)構(gòu)搭建完成后,根據(jù)某種特殊功能用途,將新的數(shù)據(jù)表以插入的形式來(lái)“頂替”舊的信息表,實(shí)現(xiàn)對(duì)已有數(shù)據(jù)的修改。
Delete-刪除,將已經(jīng)不需要的數(shù)據(jù)從數(shù)據(jù)庫(kù)的列表中清除,并且在原有的儲(chǔ)存位置允許其他新數(shù)據(jù)進(jìn)行覆寫(xiě),此后在數(shù)據(jù)庫(kù)內(nèi)將不會(huì)再檢索到此信息。
二、數(shù)據(jù)庫(kù)測(cè)試的內(nèi)容
Atocity-原子性,它是數(shù)據(jù)庫(kù)能夠正常運(yùn)行的基礎(chǔ)判定標(biāo)準(zhǔn)。在數(shù)據(jù)庫(kù)執(zhí)行某一事務(wù)時(shí),它包含的所有數(shù)據(jù)操作,只有全部完成與全部未完成兩個(gè)動(dòng)作,在數(shù)據(jù)處理的中間環(huán)節(jié)將不會(huì)突然意外終止,即使事務(wù)意外報(bào)錯(cuò)未能完成,也會(huì)被自動(dòng)恢復(fù)到事務(wù)未被執(zhí)行的狀態(tài)。數(shù)據(jù)庫(kù)中,事務(wù)必須是進(jìn)程的最小量級(jí)單位,而軟件事務(wù)則是指由數(shù)據(jù)庫(kù)的操作所成立的一個(gè)完整邏輯事件。以銀行扣款為例,扣除款項(xiàng)后,還必須要有打款賬戶,而一扣一進(jìn)完成兩個(gè)數(shù)據(jù)庫(kù)的對(duì)接,才能算作一個(gè)完整的邏輯事件,而這種邏輯事件就是軟件數(shù)據(jù)庫(kù)的事務(wù)[1]。
Consistency-一致性,當(dāng)數(shù)據(jù)庫(kù)需要執(zhí)行某一事務(wù)時(shí),期間與事務(wù)相關(guān)的數(shù)據(jù)完整性不能遭到破壞,在數(shù)據(jù)庫(kù)中后寫(xiě)入的數(shù)據(jù),必須在預(yù)設(shè)規(guī)則上與此前保持一致。這樣才能確保數(shù)據(jù)庫(kù)檢索的數(shù)據(jù)是相對(duì)準(zhǔn)確的,且由于數(shù)據(jù)執(zhí)行同一種預(yù)設(shè)規(guī)則,所以數(shù)據(jù)庫(kù)中具有相同特征的數(shù)據(jù)才會(huì)具有一定關(guān)聯(lián)性關(guān)系。
Isolation-獨(dú)立性,數(shù)據(jù)庫(kù)在執(zhí)行多種不同事務(wù)時(shí),會(huì)同時(shí)對(duì)各自對(duì)應(yīng)的數(shù)據(jù)進(jìn)行調(diào)用與修改。而若是不能將它們完全獨(dú)立開(kāi)來(lái),就會(huì)因?yàn)槭聞?wù)交叉執(zhí)行導(dǎo)致同一組數(shù)據(jù)因前后不一出現(xiàn)邏輯錯(cuò)誤。因此在數(shù)據(jù)庫(kù)中需要將多種并行事務(wù)以四個(gè)不同的管理級(jí)別進(jìn)行隔離:讀未提交、讀提交、串行化和復(fù)讀。
Durability-永續(xù)性,軟件庫(kù)在執(zhí)行事務(wù)時(shí),數(shù)據(jù)處理必須是永久性質(zhì)的改動(dòng)。即使是數(shù)據(jù)刪除,也應(yīng)當(dāng)是將信息調(diào)出后再進(jìn)行清除的過(guò)程,而不是數(shù)據(jù)丟失。哪怕是系統(tǒng)出現(xiàn)了故障,改動(dòng)后的數(shù)據(jù)也應(yīng)當(dāng)是被存儲(chǔ)在數(shù)據(jù)庫(kù)中的。數(shù)據(jù)庫(kù)的穩(wěn)定性問(wèn)題,正是來(lái)源數(shù)據(jù)修改儲(chǔ)存的永續(xù)性特點(diǎn)[2]。
三、數(shù)據(jù)庫(kù)測(cè)試的基本流程
(一)創(chuàng)建查詢
以SQL數(shù)據(jù)庫(kù)工具為例,創(chuàng)建查詢首先需要使用Transact-SQL語(yǔ)句創(chuàng)建信息庫(kù)的標(biāo)識(shí),而后將Transact-SQL語(yǔ)句描述的數(shù)據(jù)庫(kù)名稱與標(biāo)識(shí)設(shè)置為第一key值,再保存該數(shù)據(jù)庫(kù)的信息作為第一value值,得到第一組KV數(shù)據(jù)記錄。然后在該數(shù)據(jù)庫(kù)中建立一個(gè)數(shù)據(jù)表,將數(shù)據(jù)表的名稱與數(shù)據(jù)庫(kù)的名稱設(shè)置為第二key值,再保存建立的數(shù)據(jù)表名稱作為第二value值,得到第二組KV數(shù)據(jù)記錄。最后再在上一步建立的數(shù)據(jù)表中寫(xiě)入新的數(shù)據(jù),將數(shù)據(jù)表與數(shù)據(jù)的名稱設(shè)置為第三key值,保存這組寫(xiě)入數(shù)據(jù)的信息作為第三value值,得到第三組KV數(shù)據(jù)記錄??晒㏒QL數(shù)據(jù)庫(kù)工具使用的查詢語(yǔ)句只有“Select”,在利用KV數(shù)據(jù)庫(kù)創(chuàng)建查詢時(shí),還需要開(kāi)發(fā)人員結(jié)合其他語(yǔ)句一同組成不同的查詢功能指令[3]。
(二)數(shù)據(jù)表查詢
查詢數(shù)據(jù)表是數(shù)據(jù)庫(kù)測(cè)試中最容易簡(jiǎn)單理解的過(guò)程,它是通過(guò)對(duì)SQL數(shù)據(jù)庫(kù)的數(shù)據(jù)表形成來(lái)驗(yàn)證應(yīng)用程序GUI操作的結(jié)果是否合理,其主要操作分為單表查詢與多表查詢兩種:
單表查詢的工作相對(duì)于多表查詢來(lái)說(shuō)工作量要少,但它需要開(kāi)發(fā)人員足夠的細(xì)致耐心。首先要對(duì)數(shù)據(jù)表的所有字段的所以方式進(jìn)行查詢,制定一個(gè)特定的字段條件后,查詢被制定的記錄。而后需要對(duì)帶有“in”與“l(fā)ike”字符的所有關(guān)鍵字符的匹配關(guān)系,進(jìn)行查詢比對(duì)。接著需要查詢數(shù)據(jù)表的條件描述,查看“and”與“or”的邏輯關(guān)系是否嚴(yán)密,除此之外還要對(duì)數(shù)據(jù)庫(kù)的COUNT、SUM、MAX、MIN、AVG五類集合函數(shù)進(jìn)行查詢[4]。最后是對(duì)數(shù)據(jù)表中的空值進(jìn)行查詢,空值Null是一個(gè)不可用的,沒(méi)有被分配且無(wú)法得到的值,它與0和空格有著本質(zhì)上的區(qū)別,在數(shù)據(jù)表中空值可能會(huì)引起一些算法結(jié)構(gòu)發(fā)生改變,會(huì)使這組算法的快速訪問(wèn)與索引功能失效。在完成單表的所有查詢工作后,需要將查詢結(jié)果全部分類排序后,使用LIMIT工具對(duì)查詢結(jié)果的數(shù)量進(jìn)行修改與限制。
而多表查詢,則是在單表查詢的基礎(chǔ)上,展開(kāi)對(duì)含有any、some、all、exists、in等關(guān)鍵字以及運(yùn)算符的子查詢。除此之外還要對(duì)多表連接的形式進(jìn)行查詢,以雙表連接為例,一共分為:內(nèi)連接查詢、外連接查詢與復(fù)合條件查詢?nèi)N形式。但該過(guò)程需要軟件開(kāi)發(fā)人員投入大量的時(shí)間精力,對(duì)于數(shù)據(jù)容量龐大的數(shù)據(jù)庫(kù),想要完成所有數(shù)據(jù)表的查詢工作也是非常困難的。
(三)開(kāi)發(fā)人員查詢
開(kāi)發(fā)人員查詢是測(cè)試數(shù)據(jù)庫(kù)最容易操作的方法,利用GUI工具在數(shù)據(jù)庫(kù)上運(yùn)行任意CRUD操作與SQL查詢后,在開(kāi)發(fā)人員中獲得它的驗(yàn)證結(jié)果。若是在開(kāi)發(fā)人員中找到了語(yǔ)句描述錯(cuò)誤,或是與用戶需求不符的語(yǔ)句描述,就可以直接對(duì)不合適的語(yǔ)句進(jìn)行修改了。
四、數(shù)據(jù)庫(kù)測(cè)試的內(nèi)容
(一)設(shè)計(jì)測(cè)試
為了使數(shù)據(jù)庫(kù)能夠更好地滿足于應(yīng)用程序的CRUD操作,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)表都是采用規(guī)范化設(shè)計(jì)的,常見(jiàn)的規(guī)范化范式有很多種,如第一范式到第五范式,和BCNF范式等。而常見(jiàn)類型的應(yīng)用程序數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì),都以第三范式的要求規(guī)范為參考,這是一種將單個(gè)的數(shù)據(jù)表拆分為多表連接結(jié)構(gòu)的查詢管理規(guī)則,盡管犧牲了一定程度的查詢速度,但換來(lái)的卻是容易維護(hù)的表結(jié)構(gòu)。我們暫時(shí)將數(shù)據(jù)庫(kù)理解為一個(gè)有形實(shí)體,它的內(nèi)部主要是由表、視圖與儲(chǔ)存規(guī)則組成的,那么設(shè)計(jì)測(cè)試就是以數(shù)據(jù)庫(kù)的表、視圖、儲(chǔ)存規(guī)則三個(gè)實(shí)體結(jié)構(gòu)為對(duì)象,展開(kāi)的測(cè)試,通過(guò)設(shè)計(jì)測(cè)試可以檢驗(yàn)數(shù)據(jù)庫(kù)的三個(gè)組成元件是否在設(shè)計(jì)上合理、充分,是否存在邏輯紕漏,以及每個(gè)元件是否具備極佳的拓展性。設(shè)計(jì)測(cè)試主要是為了檢驗(yàn)應(yīng)用軟件在功能上存在的不足,以及刪去影響軟件響應(yīng)效率的冗余數(shù)據(jù),而設(shè)計(jì)測(cè)試的過(guò)程并不是測(cè)試技術(shù)人員獨(dú)立完成的,一些存在著爭(zhēng)議的問(wèn)題,還需要通過(guò)與軟件的設(shè)計(jì)人員的溝通了解來(lái)解決。
設(shè)計(jì)方面的測(cè)試通常情況下若無(wú)特殊需求,可以僅僅對(duì)數(shù)據(jù)一致性進(jìn)行測(cè)試,其中主要包括了表主鍵測(cè)試、表與表主外鍵關(guān)系測(cè)試、刪除一致性測(cè)試三種:
1.表主鍵測(cè)試。表主鍵的測(cè)試應(yīng)當(dāng)遵循下列原則:一是測(cè)試人員必須要能夠?qū)?shù)據(jù)庫(kù)的表結(jié)構(gòu)擁有一定了解認(rèn)識(shí),并基于表結(jié)構(gòu)的特性展開(kāi)相應(yīng)的測(cè)試,如過(guò)程性表結(jié)構(gòu)與非過(guò)程性表結(jié)構(gòu)的測(cè)試邏輯方法和語(yǔ)句描述均有不同;二是在對(duì)數(shù)據(jù)庫(kù)內(nèi)部表主鍵進(jìn)行測(cè)試時(shí),必須是基于數(shù)據(jù)庫(kù)的實(shí)際運(yùn)行基礎(chǔ)上的,以滿足測(cè)試結(jié)構(gòu)的精準(zhǔn)性要求;三是按照各個(gè)不同的表信息規(guī)定,對(duì)測(cè)試結(jié)果對(duì)應(yīng)的顯示記錄進(jìn)行同步記錄,如果出現(xiàn)測(cè)試結(jié)果對(duì)應(yīng)多種不同記錄的情況,應(yīng)當(dāng)重新對(duì)表主鍵進(jìn)行測(cè)試,而如果顯示記錄未出現(xiàn),則說(shuō)明在測(cè)試過(guò)程中,表主鍵始終保持一致性,無(wú)需進(jìn)行下步優(yōu)化。在實(shí)際測(cè)試時(shí),為了減少測(cè)試工作量,可以考慮找出一個(gè)SQL腳本,如SELECT * FROM information_schema.tables`類型的循環(huán)代碼,用于測(cè)試表內(nèi)主鍵的存在。
2.表與表外主鍵之間的關(guān)系測(cè)試。測(cè)試表主外鍵的要點(diǎn)在于建立搜索語(yǔ)句的邏輯,表主外鍵同樣是一種主鍵,應(yīng)當(dāng)以表主外鍵的語(yǔ)句字段長(zhǎng)度與語(yǔ)句類別為突破口。這種通過(guò)檢查表與表主外鍵關(guān)系,來(lái)確認(rèn)數(shù)據(jù)庫(kù)檢索邏輯一致性的方法被稱為Dbcc,它是通過(guò)兩個(gè)方面來(lái)實(shí)現(xiàn)的:一是利用checkstorage、checktable或checkdb工具,以頁(yè)級(jí)或行級(jí)為單位檢查頁(yè)鏈、行鏈以及指針的準(zhǔn)確性,其中可供優(yōu)化的部分是指針的空間占用問(wèn)題;二是利用checkstorage工具來(lái)檢查行或頁(yè)的分配關(guān)系。關(guān)于表與表外主鍵關(guān)系的一致性測(cè)試,通常在下列情況必須要進(jìn)行:一是備份數(shù)據(jù)庫(kù)操作時(shí),為了備份數(shù)據(jù)庫(kù)的完整性,必須進(jìn)行Dbcc測(cè)試;二是當(dāng)軟件系統(tǒng)出現(xiàn)報(bào)錯(cuò)信息時(shí),必須要檢查數(shù)據(jù)庫(kù)是否受到損壞;三是對(duì)數(shù)據(jù)庫(kù)運(yùn)行有日常維護(hù)檢查需求的軟件,這種軟件的數(shù)據(jù)庫(kù)完整性完全取決于sa或dbo,需要定期運(yùn)行Dbcc來(lái)進(jìn)行測(cè)試;四是當(dāng)出現(xiàn)單一某個(gè)表?yè)p壞時(shí),提取該表的損壞信息,檢查同主鍵關(guān)系性質(zhì)的其他數(shù)據(jù)表是否同樣存在損壞。
3.刪除一致性測(cè)試。基于上文中的CRUD操作理論,出于保護(hù)隱私或者其它功能目的,數(shù)據(jù)刪除本身就是用戶經(jīng)常使用的一個(gè)訪問(wèn)數(shù)據(jù)庫(kù)功能。因此在對(duì)存在級(jí)聯(lián)性質(zhì)數(shù)據(jù)表的數(shù)據(jù)庫(kù)進(jìn)行測(cè)試時(shí),必須要保證數(shù)據(jù)庫(kù)數(shù)據(jù)刪除的一致性。級(jí)聯(lián)關(guān)系的數(shù)據(jù)表我們可以簡(jiǎn)單地理解為一種插入臨時(shí)表的性質(zhì),如數(shù)據(jù)表1是對(duì)包括數(shù)據(jù)表2在內(nèi)多種數(shù)據(jù)集合的描述,如果我們將數(shù)據(jù)表2全部刪除,那么數(shù)據(jù)表1中與之相關(guān)的所有數(shù)據(jù)描述都理應(yīng)被一同刪除。但這種級(jí)聯(lián)關(guān)系的數(shù)據(jù)表經(jīng)常會(huì)使用的一種存在關(guān)系是依靠主鍵ID來(lái)記錄的,當(dāng)將下一級(jí)表信息刪除后,因?yàn)閿?shù)據(jù)庫(kù)本身在一致性上的邏輯設(shè)計(jì)上存在不足,而留下被刪除信息的主鍵ID。因此確保數(shù)據(jù)庫(kù)刪除的一致性,能夠?yàn)檐浖脩粼谔幚砗A繜o(wú)用數(shù)據(jù)時(shí),帶來(lái)極大的便利。
(二)容量測(cè)試
鑒于數(shù)據(jù)庫(kù)容量對(duì)于數(shù)據(jù)庫(kù)功能實(shí)現(xiàn)的重要性,它的測(cè)試優(yōu)先級(jí)甚至還要高于性能測(cè)試。我們都知道數(shù)據(jù)庫(kù)所能存儲(chǔ)的數(shù)據(jù)量并不是無(wú)限大的,為了使數(shù)據(jù)庫(kù)能夠適應(yīng)不斷激增的數(shù)據(jù)處理量,除了數(shù)據(jù)庫(kù)本身邏輯合理之外,還要對(duì)數(shù)據(jù)庫(kù)容量進(jìn)行初步估算,為軟件程序的用戶提供可靠的參考。那么數(shù)據(jù)庫(kù)的容量測(cè)試,可以利用以下公式來(lái)進(jìn)行簡(jiǎn)單估算:數(shù)據(jù)庫(kù)容量=Sum所有表數(shù)據(jù)量;表數(shù)據(jù)量=每條記錄的單個(gè)數(shù)據(jù)量*總記錄目數(shù);記錄數(shù)據(jù)量=Sum單個(gè)記錄包含所有字段的占字節(jié)。其中需要注意的是,容量測(cè)試時(shí)需要分析單表單行的各種數(shù)據(jù)類型占字節(jié)情況,如char類型的字節(jié)是固定的;number類型字節(jié)可變長(zhǎng),但最多也只能占用22字節(jié);而varchar類型的是按照2/3總長(zhǎng)度進(jìn)行折算的。熟悉各個(gè)類型數(shù)據(jù)的占字規(guī)律后,利用數(shù)據(jù)字典指令來(lái)查詢每張表的占用空間似乎是一個(gè)不錯(cuò)的選擇,具體代碼為:SELECT*FROM USER_TAB_COLUMNS WHERE TABLE_NAME=”。查詢數(shù)據(jù)字典的顯示結(jié)果中,在DATA_LENGTH一項(xiàng)中,就記錄了該數(shù)據(jù)表的最大占用字節(jié)。但數(shù)據(jù)表并不是數(shù)據(jù)庫(kù)容量的全部,還要考慮系統(tǒng)表、視圖表以及實(shí)體的存儲(chǔ)過(guò)程中所占用的實(shí)際容量。如何界定一個(gè)數(shù)據(jù)庫(kù)的容量是否合格,就是看它的容量是否擁有兩倍數(shù)據(jù)庫(kù)文件量的預(yù)留空間,來(lái)存放數(shù)據(jù)庫(kù)日志文件。
(三)性能測(cè)試
確認(rèn)過(guò)數(shù)據(jù)庫(kù)的邏輯設(shè)計(jì)以及容量都能符合用戶需求實(shí)際后,還需要對(duì)數(shù)據(jù)庫(kù)的性能進(jìn)行測(cè)試分析,軟件程序的性能,很大程度是由數(shù)據(jù)庫(kù)的性能來(lái)決定的。而應(yīng)用軟件的性能問(wèn)題,就是用戶最關(guān)注且最能直接反映程序應(yīng)用體驗(yàn)的參數(shù)。數(shù)據(jù)庫(kù)的性能測(cè)試由于計(jì)算量與操作量極大,無(wú)法完全由軟件開(kāi)發(fā)測(cè)試人員以人工的方式來(lái)完成,需要應(yīng)用一種DATA Factory數(shù)據(jù)產(chǎn)生器來(lái)自動(dòng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行測(cè)試。在這個(gè)數(shù)據(jù)產(chǎn)生器中,可以以每秒上百萬(wàn)行的數(shù)據(jù)生成量,來(lái)實(shí)際模擬數(shù)據(jù)庫(kù)投入使用后在長(zhǎng)期運(yùn)行的條件下對(duì)海量數(shù)據(jù)的存儲(chǔ)處理情況。這樣測(cè)試人員就能夠在性能測(cè)試過(guò)程中,及時(shí)發(fā)現(xiàn)數(shù)據(jù)庫(kù)的潛在問(wèn)題,對(duì)數(shù)據(jù)庫(kù)進(jìn)行性能優(yōu)化了。當(dāng)然在性能測(cè)試中,需要開(kāi)發(fā)人員注意使用數(shù)據(jù)產(chǎn)生器時(shí),要注意環(huán)境變量條件始終與用戶端保持一致,如操作系統(tǒng)、軟件版本、硬件配置等。若從軟件的長(zhǎng)期運(yùn)行視角來(lái)看,在進(jìn)行性能測(cè)試時(shí),必須要能夠?qū)?shí)際使用狀況進(jìn)行有效模擬,用專業(yè)的測(cè)試技術(shù)與測(cè)試軟件來(lái)進(jìn)行性能測(cè)試。軟件性能測(cè)試通常情況下,就是通過(guò)數(shù)據(jù)發(fā)生器,在正常的使用環(huán)境與系統(tǒng)條件下,通過(guò)重復(fù)性地物理驗(yàn)證操作,來(lái)驗(yàn)證軟件是否滿足了某些性能指標(biāo)。
(四)壓力測(cè)試
數(shù)據(jù)庫(kù)的壓力測(cè)試就是一種對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)上限、并行事務(wù)上限以及響應(yīng)速度展開(kāi)的一種物理測(cè)試。假如某一軟件后臺(tái)同時(shí)登錄訪問(wèn)數(shù)據(jù)庫(kù)的用戶過(guò)多,那么數(shù)據(jù)庫(kù)同一時(shí)間內(nèi)單次訪問(wèn)操作的響應(yīng)速率一定會(huì)慢于正常情況,一旦超過(guò)了軟件數(shù)據(jù)庫(kù)的壓力閾值,甚至?xí)管浖谠L問(wèn)數(shù)據(jù)庫(kù)時(shí)出現(xiàn)卡頓甚至崩潰,而這是軟件開(kāi)發(fā)的客戶所不愿意看到的。我們對(duì)軟件進(jìn)行壓力測(cè)試的目的,就是假想一種理論上的該軟件最大用戶承載的情況,查看數(shù)據(jù)庫(kù)的壓力閾值是否能夠滿足一定比例的軟件用戶同時(shí)訪問(wèn)數(shù)據(jù)庫(kù)操作的需求。該階段與性能測(cè)試一樣都無(wú)法由人工獨(dú)立操作完成,需要借助自動(dòng)化測(cè)試軟件來(lái)對(duì)數(shù)據(jù)庫(kù)的索引、觸發(fā)器、實(shí)體存儲(chǔ)過(guò)程以及數(shù)據(jù)鎖進(jìn)行承載性驗(yàn)證。通過(guò)自動(dòng)化測(cè)試軟件描述的測(cè)試結(jié)果,我們就可以間接地獲知SQL語(yǔ)句與數(shù)據(jù)存儲(chǔ)過(guò)程是否還存在繼續(xù)優(yōu)化的空間與必要了。進(jìn)行壓力測(cè)試的自動(dòng)化測(cè)試軟件的類型有很多,例如Jmeter適用于所有的JAVA基礎(chǔ)的軟件項(xiàng)目,而Net項(xiàng)目則在本身自有的開(kāi)發(fā)環(huán)境中含有用于壓力測(cè)試的工具與方案。
五、結(jié)束語(yǔ)
綜上所述,數(shù)據(jù)庫(kù)測(cè)試是軟件開(kāi)發(fā)中必不可少的重要環(huán)節(jié),它是指對(duì)軟件的數(shù)據(jù)庫(kù)結(jié)構(gòu)、與調(diào)用數(shù)據(jù)的方式和邏輯關(guān)系進(jìn)行驗(yàn)證、分析的過(guò)程。只有完成數(shù)據(jù)庫(kù)測(cè)試,找出邏輯設(shè)計(jì)與功能性上的缺陷并對(duì)其進(jìn)行修改優(yōu)化,才能使軟件程序各項(xiàng)功能的正常使用,與程序本身的運(yùn)行穩(wěn)定性得到保障。
參? 考? 文? 獻(xiàn)
[1]王天云.軟件開(kāi)發(fā)中的數(shù)據(jù)庫(kù)測(cè)試技術(shù)研究[J].無(wú)線互聯(lián)科技,2013(2):69-69.
[2]周?chē)?guó)裕.淺談?dòng)?jì)算機(jī)軟件開(kāi)發(fā)的數(shù)據(jù)庫(kù)測(cè)試技術(shù)[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2021(05):62-63.
[3]郭俊杰.數(shù)據(jù)庫(kù)測(cè)試技術(shù)在計(jì)算機(jī)軟件開(kāi)發(fā)中的應(yīng)用[J].信息與電腦(理論版),2021,33(07):113-115.
[4]張赟.計(jì)算機(jī)軟件開(kāi)發(fā)的數(shù)據(jù)庫(kù)測(cè)試技術(shù)[J].電子技術(shù)與軟件工程,2020(17):150-151.
作者單位:胡航語(yǔ)? ? 西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院
胡航語(yǔ)(2001.05-),男,漢族,陜西西安,本科,研究方向:數(shù)據(jù)庫(kù)、軟件。