您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
自動(dòng)化測(cè)試插件Eclipse[基于Junit]
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/2/16 14:14:37 ] 推薦標(biāo)簽:

    本文將以一個(gè)真實(shí)的項(xiàng)目為背景,從分析過(guò)去存儲(chǔ)過(guò)程的測(cè)試方法中存在的問(wèn)題入手,逐步闡述我們分析問(wèn)題,尋找問(wèn)題根源和尋求解決辦法的過(guò)程,介紹我們開(kāi)發(fā)這個(gè)基于 JUnit 的存儲(chǔ)過(guò)程自動(dòng)化測(cè)試的 Eclipse 插件的過(guò)程和存儲(chǔ)過(guò)程單元測(cè)試的解決方案。

1 摘要

存儲(chǔ)過(guò)程的測(cè)試,是數(shù)據(jù)庫(kù)開(kāi)發(fā)人員經(jīng)常要面臨的任務(wù),多數(shù)情況下這是一項(xiàng)繁瑣、費(fèi)時(shí)、又沒(méi)有太多創(chuàng)新的工作。有沒(méi)有辦法改變這一現(xiàn)狀呢?有沒(méi)有可能實(shí)現(xiàn)快速、批量、自動(dòng)化的存儲(chǔ)過(guò)程測(cè)試呢?

本文將以一個(gè)真實(shí)的項(xiàng)目為背景,從分析過(guò)去存儲(chǔ)過(guò)程的測(cè)試方法中存在的問(wèn)題入手,逐步闡述我們分析問(wèn)題,尋找問(wèn)題根源和尋求解決辦法的過(guò)程,介紹我們開(kāi)發(fā)這個(gè)基于 JUnit 的存儲(chǔ)過(guò)程自動(dòng)化測(cè)試的 Eclipse 插件的過(guò)程和存儲(chǔ)過(guò)程單元測(cè)試的解決方案。

開(kāi)始之前,我們希望讀者有以下基本知識(shí),如果您沒(méi)有接觸過(guò)這些方面的技術(shù),那也不要緊,我們?cè)谖恼轮袑?duì)相關(guān)的技術(shù)做了簡(jiǎn)單的說(shuō)明,以幫助您的理解。

    讀者有 Eclipse 或者 WSAD(WebSphere Studio Application Developer)平臺(tái)上的開(kāi)發(fā)經(jīng)驗(yàn)
    讀者對(duì)數(shù)據(jù)庫(kù)開(kāi)發(fā)比較熟悉,有一定的 Java 語(yǔ)言開(kāi)發(fā)經(jīng)驗(yàn)。
    讀者對(duì) JUnit 或 Cactus 有所了解


2 一個(gè)真實(shí)的項(xiàng)目

項(xiàng)目 A 是一個(gè)使用了 200 多個(gè)存儲(chǔ)過(guò)程的 J2EE 電子商務(wù)應(yīng)用項(xiàng)目,數(shù)據(jù)庫(kù)系統(tǒng)是 DB2 V8.2,Web 應(yīng)用程序采用 WSAD 5.1 開(kāi)發(fā)。有 5 位程序員參與開(kāi)發(fā)這些存儲(chǔ)過(guò)程,并負(fù)責(zé)存儲(chǔ)過(guò)程的單元測(cè)試和性能測(cè)試。在現(xiàn)有的技術(shù)條件下,通常我們是如何進(jìn)行測(cè)試的呢?

首先,程序員會(huì)打開(kāi) DB2 的命令行窗口,連接到數(shù)據(jù)庫(kù),提交類似這樣的命令:

db2 call SP_QUERY('1','2',?)

程序員希望獲得的測(cè)試結(jié)果包括:

    存儲(chǔ)過(guò)程的運(yùn)行是否正常?
    存儲(chǔ)過(guò)程的參數(shù)調(diào)用正確嗎?
    存儲(chǔ)過(guò)程的返回結(jié)果正確嗎?
    存儲(chǔ)過(guò)程的性能是否達(dá)到要求呢?

程序員通常會(huì)把命令窗口中的結(jié)果信息拷貝下來(lái),存到一個(gè)文件里,以后可以分析或者比較用。有時(shí)候我們也使用類似 Rapid SQL 等圖形化的工具來(lái)幫助我們做一些工作,但完成測(cè)試工作的工作量基本相當(dāng)。在完成這些測(cè)試后,通常我們還需要根據(jù)測(cè)試的結(jié)果手工來(lái)完成測(cè)試報(bào)告。

這樣的測(cè)試工作通常情況下不只做一次,例如有相關(guān)的存儲(chǔ)過(guò)程、UDF、Table 或者其他所依賴的數(shù)據(jù)庫(kù)對(duì)象更改之后,都需要重新驗(yàn)證這些更改所涉及到的存儲(chǔ)過(guò)程。這也意味著我們的程序員需要再次重復(fù)上面的工作,一個(gè)一個(gè)的驗(yàn)證每個(gè)存儲(chǔ)過(guò)程,評(píng)測(cè)它們的性能,并終形成所需的測(cè)試報(bào)告。項(xiàng)目 A 的情況而言,按照每個(gè)程序員負(fù)責(zé) 40 個(gè)存儲(chǔ)過(guò)程計(jì)算,整個(gè)開(kāi)發(fā)周期平均下來(lái),每個(gè)人每天都要花上大約 2 個(gè)小時(shí)的時(shí)間來(lái)做這些測(cè)試工作和測(cè)試報(bào)告。

盡管我們的程序員在開(kāi)發(fā)過(guò)程中做了很多測(cè)試工作來(lái)保證存儲(chǔ)過(guò)程的可用性、可靠性和高性能,但是在項(xiàng)目后期尤其是上生產(chǎn)系統(tǒng)后的回歸測(cè)試中我們依然需要做類似的測(cè)試,來(lái)保證所有的存儲(chǔ)過(guò)程在生產(chǎn)系統(tǒng)上運(yùn)行正常,同時(shí)完成生產(chǎn)系統(tǒng)的性能測(cè)試報(bào)告。顯而易見(jiàn),很多工作不得不重復(fù)進(jìn)行。


3 存在的問(wèn)題

這樣大部分依靠手工進(jìn)行的存儲(chǔ)過(guò)程單元測(cè)試,有著如下一些問(wèn)題:

1) 效率低下:程序員要花每天近 1/4 的時(shí)間來(lái)進(jìn)行重復(fù)的測(cè)試工作,這段時(shí)間應(yīng)該通過(guò)使用可重復(fù)的測(cè)試方式應(yīng)該是可以縮短的。下圖是在我們項(xiàng)目 A 中的一位程序員的平均時(shí)間分配圖,可以看出單元測(cè)試和回歸測(cè)試占用了他 40% 的工作量。

2) 手工進(jìn)行性能測(cè)試,測(cè)試結(jié)果不準(zhǔn)確。

3) 無(wú)法重用,沒(méi)有留下可供重用的工具或代碼。

4) 無(wú)法進(jìn)行自動(dòng)化的回歸測(cè)試。

5) 沒(méi)有直觀的測(cè)試結(jié)果,需要程序員自己整理測(cè)試結(jié)果并生成測(cè)試報(bào)告。

軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd