胡雙
摘 要:隨著科學(xué)技術(shù)的不斷發(fā)展,Java技術(shù)得到了人們的廣泛關(guān)注,如何提高Java應(yīng)用程序成為當(dāng)前保障測(cè)試軟件質(zhì)量的重要基礎(chǔ),為提高軟件的可靠性提供了基礎(chǔ)性的條件。人工進(jìn)行單元測(cè)試呈現(xiàn)出費(fèi)時(shí)和繁瑣的情況,而自動(dòng)化的單元測(cè)試能夠在一定程度上實(shí)現(xiàn)軟件開(kāi)發(fā)成本的節(jié)約,成為提高軟件可靠性的重要手段。因此,提高Java應(yīng)用程序單元測(cè)試中的自動(dòng)生成測(cè)試數(shù)據(jù)和自動(dòng)化程序是當(dāng)前Java平臺(tái)單元測(cè)試技術(shù)的重點(diǎn)。
關(guān)鍵詞:Java平臺(tái);單元測(cè)試;數(shù)據(jù);技術(shù)
Java自身具有安全、可靠和高性能的特點(diǎn),是一項(xiàng)重要的編程語(yǔ)言,在網(wǎng)絡(luò)環(huán)境和分布式環(huán)境中被廣泛應(yīng)用。Java作為當(dāng)前重要的網(wǎng)絡(luò)語(yǔ)言,在各個(gè)領(lǐng)域中被廣泛應(yīng)用,但是在Java的軟件開(kāi)發(fā)過(guò)程中不能忽略測(cè)試的環(huán)節(jié),通過(guò)面向?qū)ο缶幊痰男问綄?shí)現(xiàn)了對(duì)消息的傳達(dá),并且在不同的生命周期內(nèi)會(huì)呈現(xiàn)出不同的狀態(tài),因此,軟件測(cè)試得到了業(yè)界的廣泛關(guān)注。實(shí)踐表明,在軟件的開(kāi)發(fā)階段應(yīng)該對(duì)各個(gè)時(shí)期的軟件開(kāi)發(fā)周期進(jìn)行測(cè)試,以便能夠及時(shí)發(fā)現(xiàn)存在的故障,降低軟件開(kāi)發(fā)的成本。
1 Java平臺(tái)單元測(cè)試技術(shù)的現(xiàn)狀
當(dāng)前,Junit已經(jīng)成為單元測(cè)試的事實(shí)標(biāo)準(zhǔn),在Java的集成環(huán)境開(kāi)發(fā)中形成了Junit。程序人員能夠進(jìn)行測(cè)試案例模板的生成,但是相關(guān)的數(shù)據(jù)信息需要程序人員自行進(jìn)行設(shè)計(jì)。此外,Junit也實(shí)現(xiàn)了自動(dòng)測(cè)試框架,能夠在不同程度上對(duì)程序員的自動(dòng)化單元測(cè)試程序進(jìn)行開(kāi)發(fā)。Junit作為一個(gè)集成的Java單元測(cè)試工具,有效地增強(qiáng)了代碼的穩(wěn)定性能,避免了軟件錯(cuò)誤現(xiàn)象的出現(xiàn)。
2 基于Java平臺(tái)的單元測(cè)試數(shù)據(jù)
2.1 契約自動(dòng)生成測(cè)試數(shù)據(jù)
對(duì)于測(cè)試方法中的參數(shù),需要對(duì)等價(jià)的類型和邊界進(jìn)行合理的劃分,在測(cè)試過(guò)程中需要對(duì)滿足測(cè)試要求的數(shù)據(jù)進(jìn)行挑選。通過(guò)對(duì)工農(nóng)業(yè)生產(chǎn)領(lǐng)域的研究來(lái)看,為了保證實(shí)驗(yàn)的科學(xué)性和合理性,應(yīng)該對(duì)實(shí)際的情況進(jìn)行了解,采用最優(yōu)的實(shí)驗(yàn)設(shè)計(jì)和統(tǒng)計(jì)實(shí)驗(yàn)的形式對(duì)實(shí)驗(yàn)方法進(jìn)行安排。通常,實(shí)驗(yàn)者會(huì)在做實(shí)驗(yàn)的過(guò)程中,選擇具有代表性的水平組合進(jìn)行實(shí)驗(yàn),運(yùn)用均衡性對(duì)部分水平組合進(jìn)行挑選,實(shí)現(xiàn)了各個(gè)因素之間的均衡搭配,以便獲取滿足測(cè)試要求的數(shù)據(jù)集。通過(guò)實(shí)驗(yàn)研究可知,正交設(shè)計(jì)采用了從左至右的設(shè)計(jì)方法,從上而下的元素能夠充分地展現(xiàn)出對(duì)應(yīng)參數(shù)的水平值。因此,應(yīng)該根據(jù)正交設(shè)計(jì)或者均勻設(shè)計(jì)的形式表現(xiàn)設(shè)計(jì)測(cè)試方法參數(shù)取值組合,從而更好地表現(xiàn)生成測(cè)試的數(shù)據(jù)。
2.2 遺傳算法自動(dòng)生成測(cè)試數(shù)據(jù)
遺傳算法主要應(yīng)用于數(shù)據(jù)測(cè)試中,除了確保生成測(cè)試能夠取得良好的效果,在問(wèn)題編碼時(shí)不能只局限于二進(jìn)制的編碼方式,應(yīng)該運(yùn)用賦值和交叉的形式將編碼施加于種群的個(gè)體上。為了計(jì)算出種群的個(gè)體適應(yīng)度,應(yīng)該將種群的個(gè)體解碼變成測(cè)試程度的輸入形式,對(duì)程序的執(zhí)行情況進(jìn)行實(shí)時(shí)監(jiān)控。
3 Java平臺(tái)單元測(cè)試技術(shù)
3.1 基于Junit自動(dòng)生成測(cè)試案例模板
當(dāng)前,Junit已經(jīng)成為Java程序單元測(cè)試框架的主要參考標(biāo)準(zhǔn),應(yīng)該對(duì)自動(dòng)化測(cè)試工具進(jìn)行擴(kuò)展,程序員需要對(duì)生成的測(cè)試框架添加測(cè)試數(shù)據(jù),以便獲取一個(gè)較為完整的測(cè)試案例。Jtest在測(cè)試工具中具有單元測(cè)試的功能,能夠?qū)o態(tài)和動(dòng)態(tài)的測(cè)試實(shí)現(xiàn)自動(dòng)化的功能,應(yīng)該依靠人工的形式對(duì)子類的對(duì)象進(jìn)行訪問(wèn),或者依靠人工的形式對(duì)對(duì)象中涉及的內(nèi)容進(jìn)行訪問(wèn),降低了程序員測(cè)試的效率。
同時(shí),Liskov替代原則在替代超類型行為的過(guò)程中會(huì)產(chǎn)生意想不到的效果,在實(shí)際的運(yùn)用過(guò)程中具有兼容性,既可以運(yùn)用子類類型的形式進(jìn)行使用,又可以視作超類型方式進(jìn)行使用。Java主要由構(gòu)造器和實(shí)例方法等共同構(gòu)成,在接口實(shí)現(xiàn)的過(guò)程中主要包含接口契約的對(duì)象,能夠?qū)?duì)象的類型和行為進(jìn)行有效的規(guī)范,避免在運(yùn)行過(guò)程中產(chǎn)生類型錯(cuò)誤的現(xiàn)象。因此,為了實(shí)現(xiàn)保持類型行為的兼容性,必須要在計(jì)算時(shí)建立一個(gè)求精演算的過(guò)程,實(shí)現(xiàn)違背測(cè)試類型的兼容性。
3.2 基于Java平臺(tái)單元測(cè)試原型工具的實(shí)現(xiàn)
Java平臺(tái)單元測(cè)試具有覆蓋分析功能,主要應(yīng)用于代碼的覆蓋測(cè)試,在測(cè)試過(guò)程中,主要是根據(jù)二進(jìn)制中的文件對(duì)相關(guān)的應(yīng)用指令進(jìn)行添加,并結(jié)合Junit和Jcoverage能夠?qū)y(cè)試的代碼進(jìn)行覆蓋,并對(duì)測(cè)試中的語(yǔ)句進(jìn)行測(cè)試和執(zhí)行,通過(guò)對(duì)這些信息的了解能夠明確代碼的測(cè)試質(zhì)量,并實(shí)現(xiàn)對(duì)測(cè)試語(yǔ)句的覆蓋,在測(cè)試執(zhí)行的過(guò)程中能夠通過(guò)對(duì)語(yǔ)句的收集工作,對(duì)覆蓋的信息進(jìn)行分支,對(duì)計(jì)算的結(jié)果進(jìn)行報(bào)告,對(duì)數(shù)據(jù)的結(jié)果進(jìn)行分析和評(píng)估。
在用戶界面的選擇設(shè)計(jì)上,應(yīng)該將菜單和圖標(biāo)等元素作為人機(jī)交互接口的重要組成部分,主要負(fù)責(zé)對(duì)用戶界面相關(guān)操作的處理,應(yīng)該對(duì)操作的過(guò)程進(jìn)行捕捉,并觸發(fā)相應(yīng)的操作。在文件處理過(guò)程中,應(yīng)該對(duì)打開(kāi)的Java類軟件進(jìn)行測(cè)試,并創(chuàng)建測(cè)試類的案例文件,并實(shí)現(xiàn)對(duì)案例文件的保存,在打開(kāi)測(cè)試類Java文件的過(guò)程中并沒(méi)有獲得打開(kāi)文件路徑的方式,打開(kāi)的內(nèi)容會(huì)在Window的文本區(qū)中進(jìn)行顯示,需要進(jìn)行模塊處理。
4 結(jié)論
Java程序的單元測(cè)試是程序員在進(jìn)行軟件開(kāi)發(fā)過(guò)程中必須要完成的一項(xiàng)工作內(nèi)容,可以對(duì)產(chǎn)生的故障問(wèn)題進(jìn)行方法調(diào)用。由于面向的對(duì)象具有增量的特點(diǎn),應(yīng)該對(duì)設(shè)計(jì)好的測(cè)試代碼進(jìn)行重新構(gòu)建,并且主要的工作內(nèi)容也需要依靠人工來(lái)完成,有效地避免了自動(dòng)化單元測(cè)試中存在的不足。通過(guò)本文的敘述,解決了Java平臺(tái)上的單元測(cè)試問(wèn)題,對(duì)測(cè)試的內(nèi)容進(jìn)行了完善。因此,在未來(lái)的發(fā)展中,還需要對(duì)測(cè)試的工具進(jìn)一步完善,促進(jìn)Java平臺(tái)單元測(cè)試技術(shù)的發(fā)展。
參考文獻(xiàn)
[1]孫麗紅.基于輕量級(jí)Java EE的高校在線投票系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].吉林大學(xué),2012.
[2]蒲昊.基于Http反向代理的Web動(dòng)態(tài)適配平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].西安電子科技大學(xué),2014.
[3]張建飛.研發(fā)與應(yīng)用平臺(tái)測(cè)試方案的研究與技術(shù)實(shí)現(xiàn)[D].北京交通大學(xué),2012.