在應用程序的開發中,驗證應用程序的性能幾乎總處于次要的地位。請注意,我強調的是驗證 應用程序的性能。應用程序的性能總是 首要考慮的因素,但開發周期中卻很少包含對性能的驗證。
由于種種原因,性能測試常被延遲到開發周期的后期。以我的經驗,企業之所以在開發過程中不包含性能測試是因為,他們不知道對于正在進行開發的應用程序要期待什么。提出了一些(性能)指數,但這些指數是基于預期負載提出的。
發生下列兩種情況之一時,性能測試就成為頭等大事:
生產中出現顯而易見的性能問題。
在同意付費之前 ,客戶或潛在客戶詢問有關性能指數的問題。
本月,我將介紹兩種簡單的性能測試技術,在上述兩種情況中的任何一種發生前進行測試。
改進代碼質量
別錯過 Andrew 的 討論論壇,里面有關于代碼語法、測試框架以及如何編寫專注于質量的代碼的幫助。
用 JUnitPerf 進行測試
在軟件開發的早期階段,使用 JUnit 很容易確定基本的低端性能指數。JUnitPerf 框架能夠將測試快速地轉化為簡單的負載測試,甚至壓力測試。
可使用 JUnitPerf 創建兩種測試類型:TimedTest 和 LoadTest。這兩種類型都基于 Decorator 設計模式并利用 JUnit 的 suite 機制。TimedTest 為測試樣例創建一個(時間)上限 —— 如果超過這個時間,那么測試失敗。LoadTest 和計時器一起運行,它通過運行所需的次數(時間間隔由配置的計時器控制),在一個特定的測試用例上創建一個人工負載。
恰當的時限測試
JUnitPerf TimedTest 讓您可以編寫有相關時間限制的測試 —— 如果超過了該限度,就認為測試是失敗的(即便測試邏輯本身實際上是成功的)。在測試對于業務致關重要的方法時,時限測試相比其他測試來說,在確定和監控性能指數方面很有幫助。甚至可以測試得更加細致一些,可以測試一系列方法來確保它們滿足特定的時間限制。
例如,假設存在一個 Widget 應用程序,其中,特定的對于業務致關重要的方法(如 createWidget())是嚴格的性能限制的測試目標。假設需要對執行該 create() 方法的功能方面進行性能測試。這通常會由不同的團隊使用不同的工具在開發周期的后期加以確定,這通常不能指出精確的方法。但假設決定選擇早期經常測試 方法取而代之。
創建 TimedTest 首先要創建一個標準的 JUnit 測試。換言之,將對 TestCase 或其派生類進行擴展,并編寫一個以 test 開頭的方法,如清單 1 所示:
清單 1. 簡單的 widget 測試
public class WidgetDAOImplTest extends TestCase {
private WidgetDAO dao;
public void testCreate() throws Exception{
IWidget wdgt = new Widget();
wdgt.setWidgetId(1000);
wdgt.setPartNumber("12-34-BBD");
文章來源于領測軟件測試網 http://www.kjueaiud.com/