孫華友
(高佳太陽(yáng)能股份有限公司 江蘇無(wú)錫 214174)
計(jì)算機(jī)軟件開(kāi)發(fā)中的數(shù)據(jù)庫(kù)測(cè)試技術(shù)研究
孫華友
(高佳太陽(yáng)能股份有限公司 江蘇無(wú)錫 214174)
在計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中,很多系統(tǒng)功能的設(shè)計(jì)、優(yōu)化都需要進(jìn)行數(shù)據(jù)庫(kù)測(cè)試,通過(guò)數(shù)據(jù)庫(kù)測(cè)試才能檢驗(yàn)軟件開(kāi)發(fā)是否真正成功。因此,數(shù)據(jù)庫(kù)測(cè)試也是計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中非常重要的一個(gè)步驟?;诖?,結(jié)合一些軟件測(cè)試的相關(guān)經(jīng)驗(yàn),對(duì)數(shù)據(jù)庫(kù)測(cè)試的方法內(nèi)容等進(jìn)行探索分析,希望可以對(duì)該領(lǐng)域的研究與實(shí)踐工作提供一些參考思路。
數(shù)據(jù)庫(kù)測(cè)試; 軟件開(kāi)發(fā); 數(shù)據(jù)冗余; 性能測(cè)試
隨著互聯(lián)網(wǎng)大數(shù)據(jù)技術(shù)的快速發(fā)展以及應(yīng)用的深入,在計(jì)算機(jī)軟件開(kāi)發(fā)領(lǐng)域越來(lái)越需要強(qiáng)大的數(shù)據(jù)庫(kù)支持系統(tǒng)。數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā),已經(jīng)成為計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中一項(xiàng)非常重要的工作。數(shù)據(jù)庫(kù)測(cè)試是保證數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行正常,滿足軟件運(yùn)行需要的基礎(chǔ)工作,一個(gè)優(yōu)秀的計(jì)算機(jī)應(yīng)用軟件,離不開(kāi)運(yùn)行流暢、快捷、高效的數(shù)據(jù)庫(kù)支持。不過(guò),由于數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)得越來(lái)越復(fù)雜,處理的數(shù)據(jù)信息也不斷增多,就會(huì)導(dǎo)致出現(xiàn)一定程度的數(shù)據(jù)冗余,在一定程度上影響計(jì)算機(jī)軟件開(kāi)發(fā)的性能和設(shè)計(jì)功能。因此,應(yīng)當(dāng)重視數(shù)據(jù)庫(kù)測(cè)試技術(shù)的研究工作,在計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中,投入必要的時(shí)間和人才,加大對(duì)數(shù)據(jù)測(cè)試研究的開(kāi)發(fā)力度,運(yùn)用先進(jìn)的技術(shù),對(duì)數(shù)據(jù)庫(kù)測(cè)試各項(xiàng)工作進(jìn)行升級(jí),這樣,才能保證數(shù)據(jù)庫(kù)系統(tǒng)的正常運(yùn)行[1]。在測(cè)試過(guò)程中,涉及很多專業(yè)技術(shù)和知識(shí),以下是筆者的一些經(jīng)驗(yàn)和思考。
數(shù)據(jù)庫(kù)設(shè)計(jì)存在問(wèn)題或者漏洞,會(huì)給軟件系統(tǒng)的正常功能發(fā)揮造成不良影響。在大多數(shù)軟件運(yùn)行的過(guò)程中,其性能會(huì)受到數(shù)據(jù)庫(kù)性能的影響。因此,如果設(shè)計(jì)的數(shù)據(jù)庫(kù)運(yùn)行效果較差,就會(huì)影響計(jì)算機(jī)軟件應(yīng)用的性能發(fā)揮。在計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中,為了保證數(shù)據(jù)庫(kù)具有良好的性能,就需要設(shè)計(jì)人員對(duì)數(shù)據(jù)軟件應(yīng)用中涉及的數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行優(yōu)化和升級(jí),保證數(shù)據(jù)庫(kù)中各種表的規(guī)范。數(shù)據(jù)庫(kù)規(guī)范化的范式主要有六種,包括第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、第四范式(4NF)、第五范式(5NF)和BC范式(BCNF)。
根據(jù)一般計(jì)算機(jī)軟件系統(tǒng)的設(shè)計(jì)經(jīng)驗(yàn),經(jīng)常運(yùn)用第三種范式對(duì)邏輯數(shù)據(jù)進(jìn)行規(guī)范化處理。第三種范式處理后的表格結(jié)構(gòu),相對(duì)來(lái)說(shuō),更加容易維護(hù),而且又能滿足基本應(yīng)用功能的要求。從這個(gè)角度來(lái)看,第三種范式是一種更符合常規(guī)標(biāo)準(zhǔn)的范式。雖然這種范式的操作執(zhí)行相對(duì)簡(jiǎn)單,不過(guò)也存在一些不容忽視的缺點(diǎn)。在規(guī)范過(guò)程中,這種技術(shù)把數(shù)據(jù)庫(kù)中的一個(gè)表進(jìn)行拆分,但是,相關(guān)的數(shù)據(jù)在查詢時(shí),又要進(jìn)行多表重新連接,這就會(huì)在一定程度上降低查詢數(shù)據(jù)信息的檢索速度,影響數(shù)據(jù)庫(kù)的整體查詢效率。數(shù)據(jù)庫(kù)設(shè)計(jì)的測(cè)試一般包含兩個(gè)重要部分:一是前期需求分析而產(chǎn)生的數(shù)據(jù)庫(kù)邏輯模型,這類模型針對(duì)的是用戶的基本需求信息。二是后期在業(yè)務(wù)開(kāi)發(fā)過(guò)程中,需要測(cè)試的部分,也就是專業(yè)領(lǐng)域內(nèi)的實(shí)體測(cè)試。
視圖、表、存儲(chǔ)過(guò)程等是數(shù)據(jù)庫(kù)的實(shí)體。在測(cè)試時(shí),最基本的測(cè)試工作就是對(duì)實(shí)體進(jìn)行測(cè)試,如果發(fā)現(xiàn)實(shí)體設(shè)計(jì)得不夠嚴(yán)密,存在一定的遺漏,就需要設(shè)計(jì)人員找準(zhǔn)原因,認(rèn)真分析如何優(yōu)化。
實(shí)體測(cè)試是檢查開(kāi)發(fā)的軟件功能是否完善、合理的重要途徑,經(jīng)過(guò)嚴(yán)密的實(shí)體測(cè)試,能夠發(fā)現(xiàn)軟件各項(xiàng)設(shè)計(jì)功能是否能夠在流暢的環(huán)境下平穩(wěn)運(yùn)行,同時(shí),實(shí)體測(cè)試也能夠發(fā)現(xiàn)大量的數(shù)據(jù)冗余,這就為系統(tǒng)優(yōu)化找到了問(wèn)題根源[2]。在測(cè)試之后,技術(shù)人員可以對(duì)有問(wèn)題的數(shù)據(jù)庫(kù)信息與設(shè)計(jì)人員進(jìn)行充分的溝通,以保證前端設(shè)計(jì)人員能夠及時(shí)掌握軟件數(shù)據(jù)庫(kù)設(shè)計(jì)的缺陷與不足,從而及時(shí)地改變?cè)O(shè)計(jì)思路,采取更加科學(xué)的優(yōu)化措施,減少整體軟件系統(tǒng)設(shè)計(jì)失誤造成的損失。
數(shù)據(jù)庫(kù)在完成實(shí)體測(cè)試后,需要對(duì)表進(jìn)行一致性檢查,保障數(shù)據(jù)信息的一致性。一致性測(cè)試的主要步驟包括如下幾個(gè)部分:
在對(duì)表的主鍵進(jìn)行測(cè)試時(shí),測(cè)試人員要認(rèn)真研讀軟件系統(tǒng)設(shè)計(jì)的實(shí)際需求,根據(jù)需求內(nèi)容與要求進(jìn)行主鍵的測(cè)試工作。每一個(gè)表的主鍵,都有與之相對(duì)應(yīng)的信息記錄要求,為此,要保證實(shí)際測(cè)試效果,就要對(duì)系統(tǒng)中所有主鍵進(jìn)行一致性測(cè)試。測(cè)試結(jié)構(gòu)如果顯示存在不唯一的記錄,則需要對(duì)表的主鍵進(jìn)行重新設(shè)置,如果測(cè)試結(jié)果顯示沒(méi)有,則說(shuō)明表中的主鍵具有完整的一致性,是能夠直接使用的,不需要進(jìn)行優(yōu)化和修復(fù)。
數(shù)據(jù)庫(kù)的測(cè)試工作,關(guān)鍵的一步是要對(duì)數(shù)據(jù)庫(kù)中主外鍵關(guān)鍵字段的類型、長(zhǎng)度、信息等進(jìn)行測(cè)試,確保字段長(zhǎng)度滿足一致性的要求。不過(guò),很多計(jì)算機(jī)應(yīng)用軟件設(shè)計(jì)開(kāi)發(fā)階段,對(duì)數(shù)據(jù)庫(kù)的表主外鍵關(guān)系測(cè)試不夠重視,測(cè)試的標(biāo)準(zhǔn)字段比較模糊,這就容易導(dǎo)致測(cè)試結(jié)果不準(zhǔn)確,一些類似的字段、信息數(shù)據(jù)等,可能會(huì)出現(xiàn)差錯(cuò)。
在級(jí)聯(lián)表測(cè)試時(shí),要保證相關(guān)數(shù)據(jù)信息刪除具有一致性。具體來(lái)說(shuō),就是如果用戶將主表的數(shù)據(jù)信息刪除后,則相對(duì)應(yīng)的報(bào)表也會(huì)自動(dòng)進(jìn)行數(shù)據(jù)刪除。如在校園學(xué)生成績(jī)管理系統(tǒng)中,一個(gè)是學(xué)生信息表,一個(gè)是學(xué)生成績(jī)表,顯然學(xué)生信息表包含學(xué)生成績(jī)表的信息,在這種情況下管理者將學(xué)生信息表中的某位學(xué)生信息刪除,則系統(tǒng)會(huì)自動(dòng)刪除學(xué)生成績(jī)表中的信息。成績(jī)表是級(jí)聯(lián)表,在學(xué)生表中某位學(xué)生的信息刪除后,作為級(jí)聯(lián)表中學(xué)生的成績(jī)信息也應(yīng)該保持同步刪除。這種數(shù)據(jù)庫(kù)的刪除一致性要求,使得很多數(shù)據(jù)信息處理起來(lái)更加高效,現(xiàn)代計(jì)算機(jī)軟件應(yīng)用涉及大量數(shù)據(jù)信息的變化、更新以及刪除等,在數(shù)據(jù)庫(kù)中正是由于這種一致性作用的存在,使得很多信息數(shù)據(jù)的刪除工作變得更加高效。
現(xiàn)代計(jì)算機(jī)軟件管理和存儲(chǔ)的數(shù)據(jù)量正在快速增長(zhǎng),這就對(duì)數(shù)據(jù)庫(kù)的容量有了更高的要求。因此,為了保證用戶數(shù)據(jù)庫(kù)容量能夠滿足需求,需要對(duì)數(shù)據(jù)容量的增長(zhǎng)情況進(jìn)行初步的估算,這對(duì)于數(shù)據(jù)庫(kù)的使用和維護(hù),也是非常重要的。在實(shí)際數(shù)據(jù)庫(kù)容量測(cè)試過(guò)程中,記錄數(shù)據(jù)量等于各個(gè)字段所占字節(jié)數(shù)的總和,表的數(shù)據(jù)量等于記錄數(shù)據(jù)量×記錄數(shù),數(shù)據(jù)庫(kù)大小等于各表數(shù)據(jù)量的總和。
在軟件系統(tǒng)內(nèi)部自身的數(shù)據(jù)庫(kù)中,其容量的大小,不是直接由基本表的大小決定的。在整個(gè)數(shù)據(jù)庫(kù)中,很多內(nèi)容都是占容量的。像系統(tǒng)表、視圖、存儲(chǔ)過(guò)程等,這些實(shí)體都占有一定的數(shù)據(jù)庫(kù)容量。表的數(shù)據(jù)是最基本的表的數(shù)據(jù),在數(shù)據(jù)庫(kù)中,日志文件的容量,一般是系統(tǒng)自動(dòng)預(yù)留文件容量的兩倍左右。
一些計(jì)算機(jī)應(yīng)用軟件在使用時(shí),突然崩潰,很多情況下是由于數(shù)據(jù)庫(kù)性能達(dá)不到最大強(qiáng)度的使用要求而導(dǎo)致的。所以,在開(kāi)發(fā)軟件實(shí)際應(yīng)用之前有必要做好不同狀態(tài)下數(shù)據(jù)庫(kù)性能的測(cè)試工作,以保障數(shù)據(jù)庫(kù)的功能正常,能夠滿足軟件基礎(chǔ)性能的需要。而對(duì)于這部分的性能測(cè)試,一般的手工測(cè)試是不能完成的。在這種情況下,需要測(cè)試人員使用專業(yè)的數(shù)據(jù)庫(kù)性能測(cè)試軟件。常用的性能測(cè)試軟件是DataFactory,該軟件的數(shù)據(jù)測(cè)試功能十分強(qiáng)大,并且具有很強(qiáng)的數(shù)據(jù)生產(chǎn)能力,能夠十分容易地產(chǎn)生百萬(wàn)行有意義的正確的測(cè)試數(shù)據(jù)庫(kù),這就為大量的測(cè)試研究工作提供了豐富的數(shù)據(jù)支持。并且DataFactory也能夠支持DB2、Oracle、Sybase、SQL Server等數(shù)據(jù)庫(kù),使得其應(yīng)用的范圍非常廣泛。
因此,使用這種專業(yè)化的數(shù)據(jù)庫(kù)測(cè)試軟件,能夠基本上模擬軟件應(yīng)用在長(zhǎng)期應(yīng)用后的數(shù)據(jù)庫(kù)情況,掌握數(shù)據(jù)庫(kù)的性能。對(duì)于不同數(shù)據(jù)容量的數(shù)據(jù)庫(kù),如何才能保持最佳性能,以及設(shè)計(jì)過(guò)程中對(duì)各種不同容量區(qū)間的性能,能夠在實(shí)際應(yīng)用中,根據(jù)軟件的應(yīng)用場(chǎng)景和信息負(fù)載量進(jìn)行調(diào)整[3]。同時(shí),這種測(cè)試,能夠及時(shí)地發(fā)現(xiàn)數(shù)據(jù)庫(kù)性能存在的不足與缺陷,可以及時(shí)通知設(shè)計(jì)人員進(jìn)行改進(jìn)和優(yōu)化。
專業(yè)測(cè)試人員進(jìn)行數(shù)據(jù)庫(kù)的性能測(cè)試過(guò)程中,要保證測(cè)試環(huán)境的一致性。這是因?yàn)?,在相同條件下的測(cè)試,才能夠?qū)y(cè)試結(jié)果進(jìn)行比較,這是對(duì)數(shù)據(jù)庫(kù)使用用戶負(fù)責(zé)的測(cè)試方法。保持測(cè)試環(huán)境的一致性,使得測(cè)試的結(jié)果更具說(shuō)服力。
計(jì)算機(jī)軟件開(kāi)發(fā)時(shí),數(shù)據(jù)庫(kù)需要進(jìn)行壓力測(cè)試。一般常說(shuō)的軟件的正確性測(cè)試屬于功能性測(cè)試,軟件的功能正確與否,是衡量軟件開(kāi)發(fā)質(zhì)量是否合格的重要參考指標(biāo)。而數(shù)據(jù)庫(kù)的壓力測(cè)試,屬于非功能性測(cè)試,這種測(cè)試能夠?qū)浖捻憫?yīng)速度做出合理的評(píng)價(jià)。實(shí)際軟件開(kāi)發(fā)過(guò)程中,影響軟件自身響應(yīng)速度的因素非常多,例如,系統(tǒng)算法低效、用戶數(shù)據(jù)量、用戶使用行為習(xí)慣、數(shù)據(jù)庫(kù)級(jí)聯(lián)方法等[4]。
數(shù)據(jù)庫(kù)的壓力測(cè)試,正是專門針對(duì)開(kāi)發(fā)軟件的響應(yīng)速度進(jìn)行的測(cè)試。在較短的時(shí)間內(nèi),如果有大量的并發(fā)用戶訪問(wèn),就會(huì)給軟件系統(tǒng)應(yīng)用的功能發(fā)揮造成很大影響。在這種情況下,進(jìn)行壓力測(cè)試是非常必要的。例如,銀行系統(tǒng)進(jìn)行的壓力測(cè)試,一些購(gòu)物網(wǎng)站的流量壓力測(cè)試等,都是為了保證在某種較大數(shù)據(jù)量同時(shí)占用數(shù)據(jù)庫(kù)空間的情況下,是否會(huì)導(dǎo)致軟件系統(tǒng)運(yùn)行緩慢,甚至導(dǎo)致整個(gè)網(wǎng)頁(yè)的癱瘓[5]。因此,在新的軟件系統(tǒng)正式投入使用之前,或者某些軟件系統(tǒng)在日常使用過(guò)程中,在某個(gè)時(shí)間階段會(huì)面臨較大的訪問(wèn)數(shù)據(jù)量,而使用者對(duì)于軟件系統(tǒng)整體能夠承受的數(shù)據(jù)庫(kù)信息沒(méi)有精確的估計(jì),進(jìn)行壓力測(cè)試就能夠幫助用戶分析軟件系統(tǒng)的壓力承受能力,以根據(jù)自身系統(tǒng)的實(shí)際情況,合理調(diào)整相關(guān)的業(yè)務(wù)接口和開(kāi)放時(shí)間。
壓力測(cè)試也需要借助專業(yè)的自動(dòng)化測(cè)試工具?,F(xiàn)代計(jì)算機(jī)軟件開(kāi)發(fā)中,使用較多的數(shù)據(jù)庫(kù)壓力測(cè)試方法有Web測(cè)試、數(shù)據(jù)庫(kù)測(cè)試等。能夠?qū)?shù)據(jù)庫(kù)的反應(yīng)時(shí)間進(jìn)行優(yōu)化的工具比較多,如一般基于Java的項(xiàng)目使用JMeter,.Net項(xiàng)目使用.Net集成開(kāi)發(fā)環(huán)境中提供的測(cè)試方法等。測(cè)試技術(shù)人員需要掌握不同開(kāi)發(fā)系統(tǒng)與環(huán)境下,使用合理的優(yōu)化工具,這樣才能夠提高數(shù)據(jù)庫(kù)壓力測(cè)試與優(yōu)化的效果。
在計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中,涉及很多數(shù)據(jù)庫(kù)的測(cè)試應(yīng)用工作。由于軟件應(yīng)用各項(xiàng)功能的正常發(fā)揮,需要數(shù)據(jù)庫(kù)系統(tǒng)的有力支持,因此,做好數(shù)據(jù)庫(kù)系統(tǒng)測(cè)試工作,保障在任何條件下,數(shù)據(jù)庫(kù)能夠?yàn)檐浖δ艿牧己冒l(fā)揮提供強(qiáng)大的后臺(tái)數(shù)據(jù)支持,從而不斷提高計(jì)算機(jī)軟件開(kāi)發(fā)的質(zhì)量和水平。對(duì)于用戶來(lái)說(shuō),也能夠更好地利用資源,做到既能夠滿足各項(xiàng)信息數(shù)據(jù)的使用快捷高效,又能夠發(fā)揮出軟件系統(tǒng)的優(yōu)良性能。
[1] 熊輝.數(shù)據(jù)庫(kù)測(cè)試技術(shù)在軟件開(kāi)發(fā)中的應(yīng)用[J].電子技術(shù)與軟件工程,2016(19):203-204.
[2] 高俊,鄒金萍.計(jì)算機(jī)軟件測(cè)試技術(shù)與開(kāi)發(fā)應(yīng)用研究[J].中國(guó)管理信息化,2016(7):176-177.
[3] 王歡.軟件性能云測(cè)試平臺(tái)關(guān)鍵技術(shù)的研究與應(yīng)用[D].北京:北京交通大學(xué),2017:8.
[4] 王瑋琦.基于非齊次泊松過(guò)程的聯(lián)鎖軟件可靠性建模與半實(shí)物仿真[D].北京:北京交通大學(xué),2017:25.
[5] 秦凱倫.基于軟件定義網(wǎng)絡(luò)的無(wú)線傳感器網(wǎng)絡(luò)的研究與設(shè)計(jì)[M].南京:南京理工大學(xué),2016:41.
Study on Database Testing Technology in Computer Software Development
SUN Huayou
(Konca Solar Cell Co. Ltd., Wuxi 214174, China)
In the process of computer software development, many system functions are designed and optimized, and database testing is needed. Through database testing to test whether software development is really successful or not is a very important step in computer software development. Based on this, in this paper, combined with some relevant experience in software testing, test method and content of database are explored and analyzed, hoping to provide some reference ideas to research and practice work in this field.
database testing; software development; redundant data; performance testing
2017-09-26
孫華友(1980-),男,高級(jí)工程師,主要研究方向:企業(yè)信息化、大數(shù)據(jù)應(yīng)用
TP 311.52
A
1672-2434(2017)06-0025-03
李娟]
常州信息職業(yè)技術(shù)學(xué)院學(xué)報(bào)2017年6期