李鵬基
(蘭州外語職業(yè)學(xué)院,甘肅 蘭州 730101)
研究表明,對于已投入運(yùn)行的軟件而言,其性能往往與數(shù)據(jù)庫性能密切相關(guān),這也間接說明如若數(shù)據(jù)庫所表現(xiàn)出運(yùn)行效果不理想,軟件必然會被影響,在對計算機(jī)軟件進(jìn)行開發(fā)時,出于全面優(yōu)化數(shù)據(jù)庫性能的考慮,技術(shù)人員通常需要將更多精力用在數(shù)據(jù)庫升級方面,以此來為數(shù)據(jù)庫各表所具有規(guī)范性提供保證[1]。
對數(shù)據(jù)庫而言,其規(guī)范的范式主要分為1NF~5NF以及BCNF,結(jié)合實踐經(jīng)驗可知,在設(shè)計軟件系統(tǒng)時,技術(shù)人員應(yīng)優(yōu)先考慮利用3NF 處理邏輯數(shù)據(jù),這是因為經(jīng)過3NF 處理的數(shù)據(jù)結(jié)構(gòu)可得到簡化,真正做到了以滿足應(yīng)用需求為前提,最大程度降低維護(hù)難度。 這里要注意一點,雖然3NF 在規(guī)范化處理方面有良好表現(xiàn),但也有尚未解決的問題存在,即:在數(shù)據(jù)處理環(huán)節(jié),3NF需要拆分?jǐn)?shù)據(jù)庫各表,當(dāng)測試工作進(jìn)行到數(shù)據(jù)查詢階段,再對各表進(jìn)行連接。 拆分、連接操作往往需要花費較多時間,不僅檢索、查詢信息的速度會受到影響,整體查詢效果也無法得到保證。
對數(shù)據(jù)庫設(shè)計進(jìn)行測試的關(guān)鍵點,可被歸納如下:其一,對需求分析階段所形成邏輯模型進(jìn)行測試,該模型與用戶需求密切相關(guān)。 其二,對業(yè)務(wù)進(jìn)行開發(fā)時,測試內(nèi)容應(yīng)以實體測試為主,相關(guān)測試往往更具專業(yè)性。存儲過程、視圖和表均為數(shù)據(jù)庫實體,要想使測試工作發(fā)揮出應(yīng)有作用,基于上述實體展開測試很有必要,若測試結(jié)果表明實體設(shè)計有明顯漏洞存在,則需要有關(guān)人員對問題成因進(jìn)行分析,從而制定切實可行的優(yōu)化對策,使實體設(shè)計更加嚴(yán)密且科學(xué)。 另外,實體測試的作用還體現(xiàn)在對軟件功能合理性、完善性進(jìn)行檢查方面,除特殊情況外,有關(guān)人員均可通過實體測試對軟件功能運(yùn)行情況和平穩(wěn)程度加以了解,如果實體測試結(jié)果表明數(shù)據(jù)庫有大量冗余數(shù)據(jù)存在,則需要酌情對其進(jìn)行優(yōu)化,以免系統(tǒng)出現(xiàn)不必要的問題。 待測試環(huán)節(jié)告一段落,由技術(shù)人員聯(lián)合設(shè)計人員圍繞問題數(shù)據(jù)庫展開討論,確保設(shè)計人員可對數(shù)據(jù)庫在設(shè)計方面所存在不足具有全面了解,通過更改設(shè)計方案、制定優(yōu)化措施等方式,將由于設(shè)計失誤導(dǎo)致故障出現(xiàn)的概率降至最低。
待實體測試環(huán)節(jié)告一段落,技術(shù)人員便可著手對數(shù)據(jù)庫表是否具有一致性進(jìn)行測試。 相關(guān)測試結(jié)果往往能夠反映數(shù)據(jù)庫結(jié)構(gòu)性及完善程度,具體測試流程如下:第一步,由技術(shù)人員對測試對象所提出需求加以了解。 第二步,以相關(guān)需求為依據(jù),對表主鍵進(jìn)行測試,通過逐一測試各表存儲過程的方式,了解存儲過程與數(shù)據(jù)庫容量的關(guān)系。 第三步,根據(jù)測試結(jié)果,判斷數(shù)據(jù)庫是否具備良好的兼容性,為日后開發(fā)軟件系統(tǒng)的工作提供保證,使數(shù)據(jù)庫所開發(fā)系統(tǒng)在功能性、穩(wěn)定性方面的表現(xiàn)達(dá)到預(yù)期。
對數(shù)據(jù)庫測試而言,測試各表對應(yīng)主外鍵關(guān)系極為重要,測試內(nèi)容通常涉及信息類型和字段長度等方面,旨在保證字段長度所具有合理性得到精確定位,使其最大限度滿足一致性要求[2]。 現(xiàn)階段,無論是設(shè)計軟件系統(tǒng)、還是開發(fā)軟件系統(tǒng)的工作,均存在未將主外鍵關(guān)系納入測試范圍的情況,少數(shù)技術(shù)人員沒有認(rèn)識到該測試的重要性,對系統(tǒng)測試而言,缺少該測試所造成的問題主要是測試結(jié)果無法準(zhǔn)確反映實際情況。 另外,在開展相關(guān)測試時,技術(shù)人員應(yīng)密切關(guān)注標(biāo)準(zhǔn)字段所表現(xiàn)出的模糊性,這是因為字段模糊性與測試結(jié)果息息相關(guān),極易致使測試結(jié)果出現(xiàn)不確定或是不準(zhǔn)確的問題。 要想有效規(guī)避上述情況,關(guān)鍵是要以全面性和針對性為指導(dǎo)原則,將字段、信息長度和內(nèi)在關(guān)聯(lián)作為切入點,通過全面覆蓋結(jié)合集中針對的方式,確保測試工作可得到有序開展,使測試結(jié)果得到鞏固。
對級聯(lián)表進(jìn)行測試時,技術(shù)人員應(yīng)確保各項數(shù)據(jù)信息在刪除操作方面具有良好的一致性,簡單來說,在用戶對主表所存儲數(shù)據(jù)信息進(jìn)行刪除后,報表應(yīng)自行刪除對應(yīng)數(shù)據(jù)信息。 以成績管理系統(tǒng)為例,該系統(tǒng)往往包含兩個報表,分別是成績表和信息表,其中,作為信息表的分支,成績表對應(yīng)級聯(lián)表,若管理人員對信息表某一欄信息進(jìn)行了刪除,系統(tǒng)將自動刪除信息表相關(guān)信息。 正是由于數(shù)據(jù)庫對刪除一致性提出了嚴(yán)格要求,才確保數(shù)據(jù)處理效率得到了顯著提高。 對需要運(yùn)行大量軟件應(yīng)用的現(xiàn)代計算機(jī)而言,數(shù)據(jù)更新、變化及增刪的操作不可避免,基于一致性作用對數(shù)據(jù)進(jìn)行刪除,其速度和準(zhǔn)確度往往可變得更加理想。
作為實質(zhì)測試階段,性能測試對數(shù)據(jù)庫具有極為重要的意義。 根據(jù)實踐所積累經(jīng)驗可知,對數(shù)據(jù)庫進(jìn)行測試的側(cè)重點應(yīng)落在性能測試方面,為保證測試工作發(fā)揮出應(yīng)有作用,技術(shù)人員應(yīng)做到從軟件開發(fā)需求出發(fā),在對測試方法加以明確的基礎(chǔ)上,結(jié)合現(xiàn)有工具制定切實可行的應(yīng)用方案[3]。 另外,在實際工作中,以下內(nèi)容同樣需要技術(shù)人員引起重視:一是確保所應(yīng)用測試軟件科學(xué)且高效。 二是以信息技術(shù)為依托,同步開展云測試、在線測試工作,實時保存測試結(jié)果,將各項數(shù)據(jù)交由權(quán)威機(jī)構(gòu)進(jìn)行核實。 三是采取規(guī)范且標(biāo)準(zhǔn)的方式定位測試結(jié)果,在提高軟件開發(fā)質(zhì)量的前提下,為其順利投入運(yùn)行提供有力支持。 表1 為測試流程及具體內(nèi)容。
表1 測試流程及具體內(nèi)容
隨著技術(shù)的進(jìn)步,由計算機(jī)軟件負(fù)責(zé)存儲并管理的數(shù)據(jù)量顯著增加,這也給數(shù)據(jù)庫容量提出了更為嚴(yán)格的要求,要想使數(shù)據(jù)庫容量達(dá)到用戶需求,當(dāng)務(wù)之急便是以數(shù)據(jù)容量增長規(guī)律為依據(jù),科學(xué)預(yù)估其增長情況,為日后維護(hù)、使用數(shù)據(jù)庫的操作提供便利。 對數(shù)據(jù)庫容量進(jìn)行測試時,測試所記錄數(shù)據(jù)量通常是各字段對應(yīng)字節(jié)數(shù)之和,而表的數(shù)據(jù)量為記錄數(shù)、記錄數(shù)據(jù)量的乘積。 在了解各表數(shù)據(jù)量之和后,技術(shù)人員便可根據(jù)計算結(jié)果對數(shù)據(jù)庫大小加以確定。 這里要明確一點,對軟件系統(tǒng)所搭載數(shù)據(jù)庫而言,其容量往往不受基本表影響,數(shù)據(jù)庫所存儲內(nèi)容均需要占據(jù)一定容量,例如,存儲過程、系統(tǒng)表還有視圖,上述實體所占容量并不固定。 另外,數(shù)據(jù)庫所存儲日志容量,通常大于軟件系統(tǒng)所預(yù)留容量,二者的比值約為2 ∶1。
少數(shù)計算機(jī)在軟件運(yùn)行期間,偶爾會出現(xiàn)系統(tǒng)崩潰的情況,導(dǎo)致故障發(fā)生的原因主要是數(shù)據(jù)庫性能無法達(dá)到使用要求,由此可見,在將軟件投入使用前,技術(shù)人員應(yīng)對數(shù)據(jù)庫在不同工況下所表現(xiàn)出性能進(jìn)行測試,保證數(shù)據(jù)庫能夠長期處于穩(wěn)定運(yùn)行狀態(tài),使軟件在基礎(chǔ)性能方面所提出需求得到最大程度的滿足。 事實證明,基于傳統(tǒng)手工測試模式對數(shù)據(jù)庫性能進(jìn)行測試,通常無法取得理想效果,為保證測試工作可發(fā)揮出應(yīng)有作用,技術(shù)人員往往更傾向于借助專業(yè)軟件展開測試。 目前,多數(shù)技術(shù)人員均選擇利用DataFactory 輔助測試,該軟件在數(shù)據(jù)測試、數(shù)據(jù)生產(chǎn)方面的表現(xiàn)極為突出,可快速形成百萬行正確且有實際意義的測試數(shù)據(jù),使測試工作具有堅實的數(shù)據(jù)基礎(chǔ)[4]。 另外,該軟件還可被用來對SQL 和DB2 等諸多數(shù)據(jù)庫進(jìn)行測試,其應(yīng)用范圍較其他軟件更為廣泛。 對該軟件加以應(yīng)用,可最大程度還原長期運(yùn)行工況下,數(shù)據(jù)庫所處狀態(tài)和內(nèi)部情況,確保技術(shù)人員能夠?qū)?shù)據(jù)庫性能進(jìn)行快速且全面的了解。
對于容量不同的數(shù)據(jù)庫而言,性能測試的目的主要體現(xiàn)在以下方面:首先是明確可使自身性能始終維持在最佳狀態(tài)的方法。 其次是以各容量區(qū)間對應(yīng)基本性能為基礎(chǔ),綜合考慮信息負(fù)載量、應(yīng)用場景等因素,對其性能加以調(diào)整。 最后是確保技術(shù)人員可及時發(fā)現(xiàn)并優(yōu)化數(shù)據(jù)庫在性能方面所存在的缺陷,以免在正式投入運(yùn)行后出現(xiàn)不必要的問題。 與此同時還要明確一點,在測試數(shù)據(jù)庫性能時,技術(shù)人員應(yīng)確保測試環(huán)境完全一致,而提出這一要求的原因,主要是只有在不改變環(huán)境條件的前提下進(jìn)行測試,才能確保測試結(jié)果具有比較意義,使測試結(jié)果具有的科學(xué)性和說服力得到彰顯。
除此之外,壓力測試同樣需要引起重視。 從傳統(tǒng)意義來說,對軟件正確性進(jìn)行測試的工作為功能性測試分支,只有軟件功能正確,才代表軟件質(zhì)量合格,而面向數(shù)據(jù)庫所開展壓力測試,則屬于典型的非功能測試,其作用主要是評價軟件對指令進(jìn)行響應(yīng)的速度。對軟件開發(fā)工作而言,可給軟件響應(yīng)速度產(chǎn)生影響的因素極多,既有眾所周知的用戶習(xí)慣和數(shù)據(jù)量,還有專業(yè)性較強(qiáng)的級聯(lián)方法以及系統(tǒng)算法,如果大量用戶選擇在相同時間對系統(tǒng)進(jìn)行訪問,系統(tǒng)功能必然會被影響,針對數(shù)據(jù)庫進(jìn)行壓力測試的重要性有目共睹。 無論是對淘寶等購物平臺進(jìn)行壓力測試、還是對銀行系統(tǒng)進(jìn)行測試,其根本目的都是確保在數(shù)據(jù)庫空間被大量數(shù)據(jù)占用的前提下,軟件系統(tǒng)仍然能夠正常運(yùn)行。鑒于此,對軟件進(jìn)行壓力測試就顯得很有必要,這樣做有助于用戶對軟件系統(tǒng)所能承受壓力具有更準(zhǔn)確的了解,真正做到以系統(tǒng)情況為依據(jù),對業(yè)務(wù)接口以及對應(yīng)開放時間加以調(diào)整。 當(dāng)然,壓力測試同樣需要應(yīng)對專業(yè)測試工具加以應(yīng)用,現(xiàn)階段,常見的測試方法包括數(shù)據(jù)庫測試、Web 測試,可被用來優(yōu)化反應(yīng)時間的工具,則需要根據(jù)項目類型加以確定,例如,Java 對應(yīng)JMeter,為保證優(yōu)化效果達(dá)到預(yù)期,有關(guān)人員應(yīng)對軟件開發(fā)環(huán)境、核心系統(tǒng)有所了解,在此基礎(chǔ)上對現(xiàn)有優(yōu)化工具加以應(yīng)用,這點需要尤為注意。
4.1.1 處理接口數(shù)據(jù)
對負(fù)責(zé)傳輸數(shù)據(jù)的接口而言,其可靠性和準(zhǔn)確性往往決定了系統(tǒng)功能的發(fā)揮效果,基于接口數(shù)據(jù)所開展測試處理工作,通常需要關(guān)注以下內(nèi)容:首先是對系統(tǒng)接口數(shù)據(jù)進(jìn)行提取,根據(jù)提取所得數(shù)據(jù)對臨時表格進(jìn)行編制。 其次是提取和接口密切相關(guān)的數(shù)據(jù),并對臨時表格進(jìn)行編制。 最后是比對上述表格,確保數(shù)據(jù)信息具有高度一致性。 該技術(shù)的優(yōu)點主要是能夠使接口數(shù)據(jù)得到直接呈現(xiàn),為后續(xù)管控工作的開展提供便利。 在此期間有關(guān)人員可選擇對前臺系統(tǒng)接口所提供數(shù)據(jù)進(jìn)行針對性檢查,明確數(shù)據(jù)所表現(xiàn)出一致性能否達(dá)到系統(tǒng)要求,從而確定切實可行的處理及優(yōu)化方案。
4.1.2 查看日志
前臺操作期間,有關(guān)人員應(yīng)按下新增按鈕,根據(jù)新增數(shù)據(jù)對數(shù)據(jù)庫日志所記錄內(nèi)容加以了解,結(jié)合日志確定數(shù)據(jù)流向特征,通過系統(tǒng)分析的方式,為測試可靠性、準(zhǔn)確性提供有力保證。 若要對該技術(shù)加以應(yīng)用,有關(guān)人員既要對數(shù)據(jù)庫日志具有系統(tǒng)且準(zhǔn)確的了解,還應(yīng)具備豐富的經(jīng)驗和突出的能力,確保數(shù)據(jù)表結(jié)構(gòu)可得到科學(xué)處理,使該技術(shù)的價值得到最大程度實現(xiàn)。
4.2.1 測試邏輯構(gòu)架
測試邏輯架構(gòu)的關(guān)鍵是要保證測試方法合理且科學(xué),只有這樣才能使測試效果得到顯著提高。 對相關(guān)測試工作進(jìn)行開展的流程如下:先對數(shù)據(jù)庫字段名、列名報表和數(shù)據(jù)類型進(jìn)行搜集,保證表名及表格直觀且清晰,再利用所搜集信息進(jìn)行測試。 研究表明,數(shù)據(jù)庫主鍵值普遍具有位移的特征,而對邏輯架構(gòu)進(jìn)行測試的關(guān)鍵是對已發(fā)現(xiàn)漏洞進(jìn)行系統(tǒng)分析,確定漏洞特點及成因,并提出相應(yīng)的處理方案,真正做到利用科學(xué)措施對測試效果進(jìn)行優(yōu)化[5]。
4.2.2 數(shù)據(jù)認(rèn)證
在數(shù)據(jù)庫測試期間對數(shù)據(jù)進(jìn)行系統(tǒng)認(rèn)證,其作用主要體現(xiàn)在3 個方面,一是可確保數(shù)據(jù)庫情況得到全面檢查,二是依托測試環(huán)境自動生成鏡像備份數(shù)據(jù),并利用現(xiàn)有程序驗證方式完成驗證,三是通過提取數(shù)據(jù)庫所存儲鏡像數(shù)據(jù)并進(jìn)行比對的方式,對數(shù)據(jù)一致性做出判斷。 另外,相關(guān)工作還需要對數(shù)據(jù)準(zhǔn)確性加以了解,通過比對隨機(jī)調(diào)取數(shù)據(jù)和鏡像數(shù)據(jù)的方式,對數(shù)據(jù)準(zhǔn)確性進(jìn)行認(rèn)證,充分利用合理且科學(xué)的方法完成測試處理工作,使數(shù)據(jù)庫性能達(dá)到相關(guān)要求。
4.2.3 測試集成度
對集成測試技術(shù)加以應(yīng)用的關(guān)鍵是以正確觀念為導(dǎo)向,使測試任務(wù)得到高效完成。 該技術(shù)又被稱作聯(lián)合+組裝技術(shù),強(qiáng)調(diào)以單元測試為基礎(chǔ),根據(jù)設(shè)計標(biāo)準(zhǔn)對模塊系統(tǒng)進(jìn)行創(chuàng)建,通過組裝的方式獲得優(yōu)質(zhì)子系統(tǒng),其特點是組織體系科學(xué),可為集成化測試提供支持,使測試效果得到顯著提升。
4.2.4 測試物理構(gòu)架
集成測試的關(guān)鍵是以程序方式或其他現(xiàn)有工具方式為基礎(chǔ),快速檢查數(shù)據(jù)庫的數(shù)據(jù)存儲情況,確保數(shù)據(jù)庫能夠做到先對數(shù)據(jù)來源加以了解,再對其進(jìn)行存儲。對存儲工作而言,程序系統(tǒng)的作用主要是對字符長度、數(shù)據(jù)類型進(jìn)行檢查,明確數(shù)據(jù)庫是否有漏洞或錯誤存在。 一般來說,錯誤數(shù)據(jù)均會被記錄在測試日志中。待測試工作告一段落,無論測試處理所取得效果是否符合預(yù)期,相關(guān)程序均會對測試日志進(jìn)行自動生成,如果存在錯誤,有關(guān)人員只需分析日志內(nèi)容,便可明確錯誤數(shù)據(jù)所處位置并加以處理,使工作效率得到顯著提高[6]。 由此可見,對數(shù)據(jù)庫進(jìn)行測試時,有關(guān)人員應(yīng)形成正確的觀念,明確測試物理構(gòu)架的意義,充分利用現(xiàn)有技術(shù)開展測試工作,使測試效果達(dá)到預(yù)期。
綜上,在開發(fā)計算機(jī)軟件時,通常需要對數(shù)據(jù)庫進(jìn)行多項測試,這是因為軟件能否發(fā)揮出應(yīng)有功能,主要由數(shù)據(jù)庫運(yùn)行狀況決定,只有通過系統(tǒng)測試的方式,確保數(shù)據(jù)庫無論處于何種工況均能為軟件提供穩(wěn)定運(yùn)行所需數(shù)據(jù)支持,才能使軟件開發(fā)整體水平及最終質(zhì)量得到顯著提高。 而從用戶的角度來看,數(shù)據(jù)庫測試所具有作用主要是確保資源得到充分利用,使軟件系統(tǒng)所具有良好性能得到直觀且充分的展現(xiàn)。