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