測試(本頁所收集測試相關的文章來自http://www.junit.org/

整理:Areca Chen

你寫程式有做測試嗎?如果你寫程式而沒有測試,你如何知道你的程式碼的結果是正確的而且符合客戶的需求。亦或是你自認是天縱英名你寫的程式絕對沒有問題,亦或是你的程式碼是讓客戶來除蟲的。

如果你寫的程式有測試,那你是如何測試的。你的測試周延嗎?為了周延的程式測試你要耗費多少成本?怎樣的測試才是適當的呢?經過哪些測試你認為你的程式碼才能發行呢?

測試議題從開始有程式設計既已存在,測試也發展成一特定議題及技術。但在資源有限的限制下不是把整個測試理論皆搬到你工作室就可以確保你的程式碼可以發行,其中牽涉到測試技術的運用與整合,以及在合理的成本下應有哪些測試行為。

同時在XP(eXtreme Programming)的理論中測試就佔有重要的地位,在XP中的測試不只是我們原來所知的測試,同時也包含了其他的意義。

1.JUnit相關文章

2.測試樣式(Test Patterns)

3.先寫測試(Test First)

4.J2EE

5.診斷Java程式碼(Diagnosing Java Code)

JUnit相關文章

標題&內容摘要

作者

資料來源

翻譯或評論

張貼日期

測試的感染:程式設計師喜歡寫測試(Test Infected:  Programmers Love Writing Tests)

這篇文章深入介紹撰寫單元測試的步驟。在XP中單元測試是撰寫程式中最重要的一道程序。本文詳細說明撰寫單元測試的流程,著重的是測試的風格,作者言簡意賅的逐步引領你如何撰寫單元測試。 並實踐XP所揭櫫的「寫一點程式,寫一些測試,寫一點程式,寫一些測試」。故可作為單元測試作業手冊之用。

Kent Beck,
Erich Gamma
JUnit
(本文已獲Kent Beck的授權翻譯並公布於網頁。)
Areca Chen 2002/2/4

JUnit簡介(Introducing JUnit)

這篇文章是引介開發者一個單元測試的先導專案的概觀。包括使用單元測試的策略理由及使用免費的JUnit框架撰寫單元測試控制工具(harness)以簡化工作的手法。本文並未涵蓋所有使用Junit的議題。

Alan Griffiths, 2001 Octopull
(本文已獲Alan Griffiths的授權翻譯並公布於網頁。)
Areca Chen 2002/1/17
Large View

極端軟體製程的JAVA工具-精通開放程式碼工具:Ant、JUnit及Cactus(java tools for eXtreme programming)

學習如何將XP的理論,轉換成具體的Java開發技術!
軟體開發人員生活的真言是「成長,否則便是死亡。」堅持這個理念,Richard Hightower與Nicholas Lessiecki呈現給你一本有關極端軟體製程(Extreme Programming XP)的書—XP是一種軟體開發的方法論,它可以讓開發人員建構彈性且高品質的軟體,而且其建構過程是快速、有效率及具有成本效益的。這本書教導你如何在Java中使用開放程式碼工具實施XP及如何精通XP開發程序中最困難的部分:測試、整合及部署。

這本書的作者是一個非常有經驗的Java開發人員,本書一開始簡略的介紹XP方法論及技術。接著導入範例應用程式,這個應用程式是使用本書介紹的工具來開發或測試。提供你一個實際使用工具及開發實務的影像。作者簡明的描述每一種工具後面的關鍵概念,同時也提供程式碼範例,並一步一步導引讀者精通XP開發的技術觀點。

本書涵蓋下列的XP主題:
自動化的單元測試及功能測試
從建構到部署的自動化持續性整合
重整及持續性整合的價值
如何使用Ant、JUnit、JUnitPerf、Cactus、HTTPUnit及JMeter,達成XP方法論的目標

目錄

本書簡介

1 極端軟體製程簡介
2    J2EE部署的概念
3 應用程式範例
4 使用Ant於持續性整合
5 使用Ant建構Java應用程式
6 使用Ant建構J2EE應用程式
7 使用JUnit實作單元測試
8 使用Cactus測試容器伺服器
9 使用HttpUnit 實作功能測試
10  使用JMeter量測應用程式效率
11  使用JUnitPerf實作負荷測試
12  Ant的標籤參照 
13  Ant的API參照
14  JUnit的API參照
15  Cactus的API參照
16  HttpUnit的API參照
17  JunitPerf的API參照
 

Richard Hightower, Nicholas Lesiecki, November 9, 2001 rick hightower dot co Areca Chen 2002/12/31

Java程式的單元測試(Unit Testing Java Programs)

程式碼測試可能是非常乏味的,尤其是測試別人的程式,而當你是一個程式設計師的時候尤甚。但程式設計師喜歡撰寫程式,因此為什麼不讓程式設計師轉寫一些程式可以作為測試之用?這是自動測試背後的概念,也是本文要討論的。

Keld H. Hansen, November 2001 internet.com logo Areca Chen 2002/1/24

JUnit的動態代理的特色(JUnit Featuring Dynamic Proxies)

Shane Celis目前使用JUnit做整合測試(或功能測試),而不是單元測試。這牽涉到與標準JUnit所建議的一些差異。重要的是;瞭解Shane Celis所做的修改對於做單元測試的人是不必要的,但是瞭解JUnit也可以做其他種類的測試對你也可能是有幫助的。

 

Shane Celis, August 21, 2001 www.gnufoo.org    

建構及測試程序的自動化(Automating the build and test process)

漸進式測試及持續建構是XP方法論中的兩個基石?結合此二者成為一個自動的程序--並且自動產生e-mail的報告--如此你可以達到XP的極樂世界。Erik Hatcher告訴你如何完整的修改目前流行的Ant 1.3及JUnit測試框架,客製化自動的建構及測試程序。

 

Erik Hatcher , August 14, 2001 IBM    

聰明的使用你的唯一樣式(Use your singletons wisely)

在程式界一般建議你不要使用廣域資料及物件。但是有時候還是需要用到一個類別的單一物件實例讓廣域指標存取這個類別。一般的作法使使用唯一樣式來實作這個情況。但是唯一樣式難以測試而且使用時對於應用系統有許多強大的限制。在本文中,作者提出避免唯一樣式主要的不適應狀況。作者也說明有些類別的特性實際上是唯一樣式。

 

J. B. Rainsberger, July, 2001 IBM    

資料庫程式碼的單元測試(Unit testing database code)

本文解決的問題是:你有一個SQL資料庫,有一些儲存程序及介於你的應用程式及資料庫中間層的程式碼。你如何適當的放入測試以確認你的程式碼是正確的從資料庫讀寫資料。

Richard Dallaway,
May 2001
www.dallaway.com

(本文已獲Richard Dallaway的授權翻譯並公布於網頁。)

Areca Chen 2002/1/29
TomcatBook中有關測試的章節(TomcatBook: Chapter on Testing)

這是TomcatBook中有關測試的章節。主要內容是測試框架包括:JUnit(一般性的Java程式碼測試)、HTTPUnit(網頁的黑箱測試)、Cactus(伺服器端的單元測試)
 

Kent Beck

Erich Gamma

Russell Gold

Vincent Massol

Erik Meade

Armin Roehrl

Alexander Roehrl

Stefan Schmiedl

, May 2001

Approximity home page

   

JUnit++測試工具(JUnit++ Testing Tool)

Dr Dobb's中主要的部分:JUnit++是一個免費的Java單元測試框架;其中包含測試資料儲存器、指令列參數及一個TestRunner類別,TestRunner類別支援內建重複計數器及在指令列中的多執行序。

 

Siegfried Goeschl, February 2001
   

JUnit中最佳的作業實務(JUnit Best Practices)

構建彈性的、可重複定址、多執行序的JUnit測試。

 

Andy Schneider, December 2000    

使用Ant及JUnit實作漸進式開發(Incremental development with Ant and JUnit)

使用單元測試以小步驟的修正以改善你的程式碼。

 

Malcolm Davis,  November 2000 IBM    

JUnit入門(Junit Primer)

本文展示如何使用JUnit測試框架撰寫及執行簡單的測試案例及測試系列。

Mike Clark, October 7, 2000 Clarkware Consulting, Inc.
(本文已獲Mike Clark的授權翻譯並公布於網頁。)
Areca Chen 2002/1/23

終極測試(eXtreme Testing)

本文涵蓋JUnit程式碼範例,包括(公開的文件)JUnit的擴充類別,此類別中允許重複測試及多執行序測試。由位於St. Louis的Java使用者群組所發展。

 

Eric Burke, October, 2000 St. Louis

User's Group
   

在XP中測試的設定(Testing in an Extreme Programming Setting)

撰寫TestCases的簡介。

 

Joseph Bergin, Pace University, September 2000 PACE University    

測試很有趣,真的嗎?(Testing, fun, Really?)

測試,嘔...!我已恨死了測試。測試包括單元測試及功能測試,是進入『真實』工作的某些東西。每一個人都知道他們的程式碼是完美的,對不對?在不確定的情況下程式碼確實需要變動,註解寫得很好以致於每一個人都可以理解。哇,我需要成長(可能有相同的忠告)。

 

Jeff Canna, RoleModel Software, Inc., March 2001 IBM    

在XP中的測試/撰寫程式碼循環之1:模組(The Test/Code Cycle in XP: Part 1, Model)

本文說明在程式開發時單元測試及簡單設計如何協調合作。

 

William C. Wake, February 2000 XPlorations    

在XP中的測試/撰寫程式碼循環之2:GUI(The Test/Code Cycle in XP: Part 2, GUI)

本文提供一個小的但合理的範例,這個範例使用JUnit測試使用者介面讓你感受測試及程式設計的味道。

 

William C. Wake, January 2000 XPlorations    
程式設計師的測試(Testing for Programmers)

 

Brain Marick, 2000 testing.com    

終極測試(eXtreme Testing)

XP面對開放程式碼的趨勢。
 

 

Juancarlo Anez, October 18, 1999 www.borland.com    

UML測試框架(A UML Testing Framework)

當以UML顯示系統如何運作,清楚溝通的關鍵是保持你的圖形簡單,而仍然內容豐富。

 

Martin Fowler, Chief Scientist, ThoughtWorks, April 1999 Software Development Magazine    

持續性整合(Continuous Integration)

任何軟體開發程序中有一個很重要的部分就是增進軟體的可信度(reliable)。既使這是很重要的,我們一直感到很訝異其一直未被落實。本文中我們討論的程序是Matt在ThoughtWorks中主要的一個專案中實施的,這個程序是逐步的使用於整個公司當中。這個程序強調完全的自動及再生的建構,包括測試,這些測試每天執行許多次。這種方式允許每一個開發者每天整合以便降低整合的問題。

 

Martin Fowler,
Matthew Foemmel

透明


Areca Chen

2002/2/8

測試樣式(Test Patterns)

標題&內容摘要

作者

資料來源

翻譯或評論

張貼日期

模仿物件(Mock Objects)

單元測試是XP中基礎的實務工作,但多數瑣碎的程式碼很難單獨的測試。因此使得測試系列無可避免變的很複雜、不完整並且很難維護及理解。在單元測試當中使用模仿物件可以改善領域程式碼及測試系列。模仿物件允許單元測試被寫成任何東西,以簡化測試結構,並可避免測試基礎建設污染到領域程式碼。

 

Tim Mackinnon, Steve Freeman, Philip Craig, June 2000
browser companion, information provider, internet tool, search tool, super-browser, meta-browser, relevant information finder, free download facility, internet search tool, internet search facility, search facility, information finder, free internet browser, free internet browser companion, information search tool, information search facility, relevant links, free browser, content providers, internet information provider, increased site visibility, browser search tool, link locator, website browser, information browser, sidewise, conextra, browsar, relevant information, link locator, browser, sidewize, links, search, information
   

先寫測試(Test First)

標題&內容摘要

作者

資料來源

翻譯或評論

張貼日期

瞄準、射擊(Aim, Fire)

[內容摘要]

很多人批評XP是『先射擊、再瞄準』,XP的創始人Kent Beck也曾經在其著作當中說明XP的確是『先射擊、再瞄準』,而且是比『先射擊、再瞄準』的好。不管是先瞄準還是後瞄準主要的重點是所謂的的瞄準所指的就是『設計』。XP不使用一般開發方式使用『前置設計』預先對系統架構作設計。

在本文中Kent Beck提出了一個新的觀念,也就是在舊有的理論中『先寫測試(test-first)』也就是代表了『設計』的概念。因為先寫測試迫使程式設計師對系統架構必須有鮮明的了解,其結果也就是『設計』的概念。 所以XP也可以說是『先瞄準、再射擊』

Kent Beck Computer.org
(本文已獲Kent Beck的授權翻譯並公布於網頁。)
Areca Chen 2002/1/13

先寫測試(Test First)

每一個人都知道你應該使用一個表格撰寫一個十進位到羅馬數字的轉換。如果嘗試先寫測試會如何?

 

Roger Lipscombe, July 13, 2001 Roger's Home Page    

先寫測試的程式設計--一些人的經驗(Test First Programming -- Some Personal Experiences)

作者受到相關文章的影響,寫出對於先寫測試在實作上的感想。

 

ParticleWave, May 2001 particlewave.com    

先寫測試設計(Test First Design)

你如何設計?你是否在UML中繪製靜態及動態圖形?你是否使用CRC卡。或者,你只是每天與你的團隊坐在一起並且在開始撰寫程式之前在設計議題達成一致的口頭協議?

 

Michael Feathers, Object Mentor, September 2000 XProgramming    

以先寫測試方式開發JDBC應用程式(Developing JDBC applications test-first )

許多開發者發現單元測試軟體third-party的元件,如資料庫,非常難做。一般而言其困難度是因為設定元件以確保單元測試之間沒有相依關係時太過於複雜或緩慢。本文使用JDBC;Java的資料庫介面;說明如何完全避免使用一個真正的資料庫的可能性。同時說明以模仿物件(Mock Objects)為基礎的方式可以產生更精準的單元測試及(我相信)比使用真實資料庫更好的程式碼結構。

 

Steve Freeman, 2001 Mock Objects    

J2EE

標題&內容摘要

作者

資料來源

翻譯或評論

張貼日期

以JUnit測試EJBs(Testing EJBs with JUnit)

當使用EAServer及EJBs,開發者忙於撰寫程式碼、部署及測試。現在當要測試的時候,程式設計師知道單元測試非常重要同時我們應該保留一系列的測試。由於某些緊迫的進度、安裝成本、測試框架不使用或沒有測試框架等因素使我們無法做這些單元測試。本文為你介紹一個JUnit(一個免費的測試框架)及JUnit如何可以幫助你使得測試更容易。

 

Allen Lau , October 24, 2001    

應用程式品質保證:單元測試(Application Quality Assurance: Unit Testing)

單元測試對於維護應用程式品質保證非常重要。為達到專案的測試案例配額你要耗費整夜思考單元測試。不管如何,不像傳統的單元測試那麼嚴苛,JUnit幫助你使你更快速的撰寫程式碼同時提升程式碼品質。

 

IBM, July 2001 IBM    

J2EE測試入門(A J2EE Testing Primer)

你開發軟體只是讓你的軟體可以運轉是不足夠的。而要證明你的軟體可以運轉只有一種方式:測試你的軟體。由於以Java開發軟體天生的複雜性,尤其是在J2EE平台,測試往往比原先所看到的更困難。

 

Scott W. Ambler, May 2001 Software Development Magazine    

J2EE專案的危機(J2EE project dangers!)

本文分析危及所有企業Java專案的10個最重大的危機並且指出某些避免危機的方法。

 

Humphrey Sheil, March 2001    

介紹JavaCon 2000 - Servlet單元測試(JavaCon 2000 Presentation - Servlet Unit Testing)

本文提供需要執行Servlet單元測試的範例相關的連結。

 

Chuck Ford, September 2000 Delphi Consultant    

測試污染你的企業JavaBeans(Test infect your Enterprise JavaBeans )

學習如何測試存在的及未開發的J2EE元件。

軟體決無法充分的測試,而測試往往開始的太慢,尤其是J2EE應用程式。因為元件在單獨的時候與組合起來的時候其行為是不一樣的,在多個元件組合起來之前單獨的測試每一個元件可以確保在J2EE應用程式中每一部份的程式碼是依照設計來執行工作。因此如果在應用程式中發生一個錯誤,開發者知道應用程式的組合可能是原因。本文說明單元測試技術及如何在EJBs中應用單元測試。

 

Michael T. Nygard and Tracie Karsjens, May 2000    

診斷Java程式碼(Diagnosing Java Code)

標題&內容摘要

作者

資料來源

翻譯或評論

張貼日期

簡介臭蟲樣式(Bug patterns: An introduction)

診斷及修正你的Java程式中重複發生的臭蟲。

 

Eric E. Allen, Feburary 2001 IBM    

診斷Java程式碼:破壞分派臭蟲樣式(Diagnosing Java Code: The Broken Dispatch bug pattern)

在像Java物件導向語言中的分派方法;這些方法可以被覆載或改寫;既使在不是很複雜的程式中可能導致程式碼管理上的困難。作者詳述由於這些困難點的臭蟲樣式,概述當比對參數導致錯誤的方法被啟動的症狀,及提供一些解決方法以對抗這個問題。

 

Eric E. Allen, May 2001 IBM    

診斷Java程式碼:孤兒執行序臭蟲樣式(Diagnosing Java Code : The Orphaned Thread bug pattern)

在多執行序程式碼中,往往使用單一主執行序,此主執行序驅動其他執行序的動作。主執行序可以送出訊息,一般是放到一個儲列中,然後由其他的執行序處理。但如果主執行序丟出一個例外,其他的執行序可能繼續執行,並等待主執行序送出訊息到儲列中,而導致程式凍結。在連載診斷Java程式碼中作者論述發覺、修復及避免這種臭蟲樣式。

 

Eric E. Allen, August 31, 2001 IBM    

診斷Java程式碼:分裂清除臭蟲樣式(Diagnosing Java Code: The Split Cleaner bug pattern)

Java程式語言有一個功能就是儲存體是自動管理,這個功能可以保護程式設計師免於在使用記憶體並釋放時產生臭蟲。雖然如此,許多程式仍然需要操作資源,如檔案及資料庫連接,這些在使用之後一定要正確的釋放。像手工儲存管理有許多陷阱,當程式設計師以這種方式管理資源可能發生。這個陷阱之一就是分裂清除臭蟲樣式。

 

Eric E. Allen, July 2001 IBM    

診斷Java程式碼:(Diagnosing Java Code: The Fictitious Implementation bug pattern, Part 1)

Java程式語言沒有一般支援多重繼承的程式語言的許多特定問題--有一部份是因為Java限制介面規格為不變的型別標記。但這個限制可能結合差的文件而導致問題。如果你錯誤的假設介面應如何實作,你可能在執行期產生『物件無效』的臭蟲。本文分成兩部分,第一部份概述可能導致這類錯誤的開發實務--及避免的方法。

 

Eric E. Allen, July 31, 2001 IBM    

診斷Java程式碼:(Diagnosing Java Code: The Fictitious Implementation bug pattern, Part 2)

在上一篇的連載當中,我們看到實作一個Java介面時無須實際符合其預期的語意是可能的。本篇屬於第二部分說明兩種方便的工具可以找出這種錯誤的實作臭蟲。作者說明如何使用assertion及單元測試當作可執行的文件,讓你的程式碼更安全及更具可攜性。

 

Eric E. Allen, August 14, 2001 IBM    

診斷Java程式碼:啟動適當方法的記錄器測試(Diagnosing Java Code: Recorders test for proper method invocation)

在你的單元測試中使用記錄器(一種特定型別的傾聽者)以確保一系列的方法以適當的順序被啟動。
 

Eric E. Allen, June 2001 IBM    

診斷Java程式碼:旋盪元件臭蟲樣式(Diagnosing Java Code: The Dangling Composite bug pattern)

壓制最普遍導致空指標的例外之一。

 

Eric E. Allen, March 2001 IBM    

診斷Java程式碼:空旗標臭蟲樣式(Diagnosing Java Code: The Null Flag bug pattern)

避免使用空指標作為例外的旗標。

 

Eric E. Allen, March 2001 IBM    

診斷Java程式碼:雙繼承臭蟲樣式(Diagnosing Java Code: The Double Descent bug pattern)

一開始便避免遞迴類別分類的錯誤概念。

 

Eric E. Allen, April 2001 IBM