簡(jiǎn)介:
單元測(cè)試和性能測(cè)試在測(cè)試領(lǐng)域?qū)儆谝笙鄬?duì)較高的測(cè)試活動(dòng),也是測(cè)試工程師成長(zhǎng)、向上發(fā)展的反向。單元測(cè)試評(píng)測(cè)我們的代碼實(shí)現(xiàn)功能的情況,性能測(cè)試則企圖分析應(yīng)用程序的性能表現(xiàn)和負(fù)載能力。那么“單元性能測(cè)試”能做什么?我們可以這樣說(shuō),單元性能測(cè)試以單元測(cè)試的形式對(duì)代碼進(jìn)行性能測(cè)試。單元性能測(cè)試像單元測(cè)試一樣,需要測(cè)試人員編寫(xiě)測(cè)試代碼,但現(xiàn)在關(guān)注的不是代碼的功能實(shí)現(xiàn)情況了,而是想得到被測(cè)試代碼的性能數(shù)據(jù),包括執(zhí)行方法耗時(shí)、多線程并發(fā)是否線程安全、內(nèi)存是否泄漏、是否存在短期循環(huán)對(duì)象等。單元性能測(cè)試相對(duì)于系統(tǒng)性能測(cè)試更容易定位問(wèn)題,對(duì)關(guān)鍵的方法進(jìn)行測(cè)試,可以降低系統(tǒng)性能風(fēng)險(xiǎn),減少系統(tǒng)集成后系統(tǒng)性能測(cè)試的工作量。本篇文檔演示如何使用JUnitPerf程序包對(duì)代碼進(jìn)行多線程并發(fā)測(cè)試。
待測(cè)代碼DateUtil:
我們待測(cè)的程序代碼為com.loggingselenium.DateUtil類(lèi)。這個(gè)類(lèi)中有一個(gè)私有靜態(tài)成員timeFormator和一個(gè)靜態(tài)方法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("解析日期時(shí)間格式出錯(cuò),期望的字符串格式為[yyyyMMdd HH:mm:ss]");
}
}
}
單元測(cè)試代碼UnitTestDateUtil:
我們的測(cè)試代碼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));
}
}
經(jīng)過(guò)運(yùn)行單元測(cè)試代碼,可以驗(yàn)證com.loggingselenium.DateUtil類(lèi)的compareDateTime(String dateTime1, String dateTime2)的功能已經(jīng)實(shí)現(xiàn)了,可以用來(lái)比較兩個(gè)日期時(shí)間的大小了。