簡介:
單元測試和性能測試在測試領域屬于要求相對較高的測試活動,也是測試工程師成長、向上發展的反向。單元測試評測我們的代碼實現功能的情況,性能測試則企圖分析應用程序的性能表現和負載能力。那么“單元性能測試”能做什么?我們可以這樣說,單元性能測試以單元測試的形式對代碼進行性能測試。單元性能測試像單元測試一樣,需要測試人員編寫測試代碼,但現在關注的不是代碼的功能實現情況了,而是想得到被測試代碼的性能數據,包括執行方法耗時、多線程并發是否線程安全、內存是否泄漏、是否存在短期循環對象等。單元性能測試相對于系統性能測試更容易定位問題,對關鍵的方法進行測試,可以降低系統性能風險,減少系統集成后系統性能測試的工作量。本篇文檔演示如何使用JUnitPerf程序包對代碼進行多線程并發測試。
待測代碼DateUtil:
我們待測的程序代碼為com.loggingselenium.DateUtil類。這個類中有一個私有靜態成員timeFormator和一個靜態方法compareDateTime(String dateTime1, String dateTime2)。
package com.loggingselenium;
import java.util.Date;
import java.text.SimpleDateFormat;
public class DateUtil {
private static SimpleDateFormat timeFormator =
new SimpleDateFormat("yyyyMMdd HH:mm:ss");
public synchronized static int compareDateTime(String dateTime1, String dateTime2) {
try {
Date date1 = timeFormator.parse(dateTime1);
Date date2 = timeFormator.parse(dateTime2);
if (date1.before(date2))
return -1;
if (date1.after(date2))
return 1;
else
return 0;
} catch (Exception e) {
throw new RuntimeException("解析日期時間格式出錯,期望的字符串格式為[yyyyMMdd HH:mm:ss]");
}
}
}
單元測試代碼UnitTestDateUtil:
我們的測試代碼com.loggingselenium.UnitTestDateUtil如下:
package com.loggingselenium;
import junit.framework.TestCase;
public class UnitTestDateUtil extends TestCase {
protected void setUp() throws Exception {
super.setUp();
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testCompareDateTime(){
String dateTime1="20120111 01:02:03";
String dateTime2="20130111 01:02:03";
String dateTime3="20130111 01:02:03";
assertEquals(-1, DateUtil.compareDateTime(dateTime1, dateTime2));
assertEquals(1, DateUtil.compareDateTime(dateTime2, dateTime1));
assertEquals(0, DateUtil.compareDateTime(dateTime2, dateTime3));
}
}
經過運行單元測試代碼,可以驗證com.loggingselenium.DateUtil類的compareDateTime(String dateTime1, String dateTime2)的功能已經實現了,可以用來比較兩個日期時間的大小了。