持續測試:將軟件缺陷扼殺在搖籃之中

發表于:2013-03-04來源:IBM作者:郝萍 甘志點擊數: 標簽:持續測試
持續測試:將軟件缺陷扼殺在搖籃之中介紹 現在IT開發人員比以往任何時候都更加關注測試的重要性,沒有經過良好測試的代碼更容易出問題。在極限編程中,測試驅動開發已經被證明是一種有效提高軟件質量的方法。在測試驅動的開發方式中,軟件工程師在編寫功能代碼

  介紹

  現在IT開發人員比以往任何時候都更加關注測試的重要性,沒有經過良好測試的代碼更容易出問題。在極限編程中,測試驅動開發已經被證明是一種有效提高軟件質量的方法。在測試驅動的開發方式中,軟件工程師在編寫功能代碼之前首先編寫測試代碼,這樣能從最開始保證程序代碼的正確性,并且能夠在程序的每次演進時進行自動的回歸測試。

  單元測試是和開發人員最密切相關的測試類型。它通常由開發人員編寫和執行。由于單元測試通常發生在錯誤產生之后不久,因此通過單元測試發現錯誤然后進行修正的代價通常比較小。單元測試是如此重要,以至于一些極限編程愛好者主張任何未經測試的代碼都應該被自動刪除。JUnit是Java開發人員進行單元測試事實上的標準。盡管現在出現了TestNG和JTiger這樣功能更為完善的測試工具,JUnit仍然占據著測試工具的頭把交椅。

  JUnit占據市場壟斷地位的一個證據是目前有很多為JUnit開發的擴展和插件。今天我們要講述的就是一個配合JUnit使用的Eclipse插件Continuous Testing。它能夠利用機器的空閑計算周期執行測試,并將其作為error顯示在Problem View和編輯器的標記區。

  在編寫代碼的空閑時間執行測試會占用一些CPU時間和其他資源。不過相對Continuous Testing提供的好處而言,我們不需要對此斤斤計較。還記得第一次使用Eclipse的增量編譯嗎?

  我記得當時我對這個功能不屑一顧,現在我已經完全依靠增量編譯來糾正我偶爾犯下的語法錯誤了。對于軟件開發人員而言,任何能夠有效縮短"編寫-編譯-測試-修改"循環的工具都具有重要的意義。就此而言,我相信Continuous Testing對于軟件開發人員具有重要的意義。在http://www.eclipse-plugins.info/上我們可以看到Continuous Testing受到眾多使用者的好評

  回頁首

  安裝Continuous Testing

  在Eclipse中安裝Continuous Testing的方法非常簡單,類似于安裝其他的plugin的方法。首先我們啟動Eclipse3.1,單擊菜單項Help->Software Update->Find and Install。在彈出的向導對話框中,我們選擇"Search New Features to Install",在彈出的對話框中點擊"New Remote Site",如圖1所示。在URL中輸入 http://beust.com/eclipse,點擊"OK"。如圖 1所示,點擊"Finish",Eclipse會幫助我們增加一個用于Update的站點。熟悉 Eclipse的讀者對這個過程一定不會覺得陌生。

  圖 1新建Update Site

  添加Update Site之后,在隨后出現的Install對話框中選中剛剛添加的Update Site,并且按下Finish按鈕,如圖 2所示。經過后續的下載和確認之后,我們就安裝好了Continuous Testing了。

  圖 2安裝Continuous Testing

圖 2安裝Continuous Testing

  在工程中啟用Continuous Testing 安裝了Continuous Testing之后,我們就可以在任何java工程中激活Continuous Testing了。在Package Views中單擊鼠標右鍵并從菜單中選擇Property。在隨后出現的工程屬性對話框中,我們可以看到配置信息有了一個新的分類Continuous Testing。選擇這個分類,并在Continuous Testing Properties頁面中選中"Enable Informed Testing"和"Enable Continuous Testing"。這樣我們就激活了Continuous Testing。

  圖 3 配置Continuous Testing

圖 3 配置Continuous Testing

  在這個對話框中,我們還可以配置Continuous Testing的一些設置信息。例如尋找Test Case的策略、進行測試的優先級設置以及在測試開始之前進行過濾操作等。例如我就喜歡讓Continuous Testing優先測試最近出錯的測試。

  回頁首

  Continuous Testing提供的視圖

  接下來,我們在一個激活了Continuous Testing的工程中新建一個如下的Test Case??梢钥吹?,我們這個Test Case沒有包含任何有用的測試。我們提供的兩個測試方法一個必定會失敗,而另外一個會拋出異常。通過這個例子,我們可以看到Continuous Testing為我們提供了什么。

package test;
import java.util.Arrays;
import junit.framework.TestCase;
public class DummyTest extends TestCase {
	public void testTopThreeIntsUnsorted() {
		Integer one = new Integer(1);
		Integer two = new Integer(2);
		Integer three = new Integer(3);
		Integer four = new Integer(4);
		Integer five = new Integer(5);
		Integer six = new Integer(6);
		assertEquals(Arrays.asList(new Integer[] { one, two, three }), Arrays
				.asList(new Integer[] { four, five, six }));
	}
	public void testException() throws Exception {
		throw new IllegalArgumentException();
	}
}

  Continuous Testing插件在后臺執行測試代碼,當監測到有錯誤或異常發生,Continuous Testing將會通過Problem View來通知開發人員。在我們提供的測試用例中,Problem View將會如下所示:

  圖 4 Problem View

圖 4 Problem View

  如果我們在Problem View當中雙擊某一條測試錯誤信息,那么Java編輯器將會打開并顯示產生錯誤的測試方法。這和我們察看其他錯誤發生地點的方式非常象,不是嗎?另外,如果我們在編輯器中打開了DummyTest.java,我們還可以看到新的測試錯誤標記出現在編輯器的左側欄上。

原文轉自:http://www.ibm.com/developerworks/cn/rational/r-ct/index.html

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97