import?java.io.BufferedReader;

10年積累的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶對(duì)網(wǎng)站的新想法和需求。提供各種問題對(duì)應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先制作網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有上思免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
import?java.io.File;
import?java.io.FileInputStream;
import?java.io.InputStreamReader;
import?java.io.PrintWriter;
import?java.net.HttpURLConnection;
import?java.net.URL;
import?java.util.HashMap;
import?java.util.Map;
import?java.util.concurrent.ExecutorService;
import?java.util.concurrent.Executors;
import?java.util.concurrent.Semaphore;
public?class?ConcurrentTest?{
private?static?int?thread_num?=?200;
private?static?int?client_num?=?460;
private?static?Map?keywordMap?=?new?HashMap();
static?{
try?{
InputStreamReader?isr?=?new?InputStreamReader(new?FileInputStream(
new?File("clicks.txt")),?"GBK");
BufferedReader?buffer?=?new?BufferedReader(isr);
String?line?=?"";
while?((line?=?buffer.readLine())?!=?null)?{
keywordMap.put(line.substring(0,?line.lastIndexOf(":")),?"");
}
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
public?static?void?main(String[]?args)?{
int?size?=?keywordMap.size();
//?TODO?Auto-generated?method?stub
ExecutorService?exec?=?Executors.newCachedThreadPool();
//?50個(gè)線程可以同時(shí)訪問
final?Semaphore?semp?=?new?Semaphore(thread_num);
//?模擬2000個(gè)客戶端訪問
for?(int?index?=?0;?index??client_num;?index++)?{
final?int?NO?=?index;
Runnable?run?=?new?Runnable()?{
public?void?run()?{
try?{
//?獲取許可
semp.acquire();
System.out.println("Thread:"?+?NO);
String?host?=?"?";
String?para?=?"method=getQueryResultpageNum=1pageSize=5"
+?"queryKeyWord="
+?getRandomSearchKey(NO)
+?"questionID=-1questionIdPath=-1searchType=1"
+?"proLine=proSeries=proType="?+?NO;
System.out.println(host?+?para);
URL?url?=?new?URL(host);//?此處填寫供測(cè)試的url
HttpURLConnection?connection?=?(HttpURLConnection)?url
.openConnection();
//?connection.setRequestMethod("POST");
//?connection.setRequestProperty("Proxy-Connection",
//?"Keep-Alive");
connection.setDoOutput(true);
connection.setDoInput(true);
PrintWriter?out?=?new?PrintWriter(connection
.getOutputStream());
out.print(para);
out.flush();
out.close();
BufferedReader?in?=?new?BufferedReader(
new?InputStreamReader(connection
.getInputStream()));
String?line?=?"";
String?result?=?"";
while?((line?=?in.readLine())?!=?null)?{
result?+=?line;
}
//?System.out.println(result);
//?Thread.sleep((long)?(Math.random())?*?1000);
//?釋放
System.out.println("第:"?+?NO?+?"?個(gè)");
semp.release();
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
};
exec.execute(run);
}
//?退出線程池
exec.shutdown();
}
private?static?String?getRandomSearchKey(final?int?no)?{
String?ret?=?"";
int?size?=?keywordMap.size();
//?int?wanna?=?(int)?(Math.random())?*?(size?-?1);
ret?=?(keywordMap.entrySet().toArray())[no].toString();
ret?=?ret.substring(0,?ret.lastIndexOf("="));
System.out.println("\t"?+?ret);
return?ret;
}
}
你好,你的UserDao第46行已經(jīng)報(bào)空指針了,還有Connection reset是估計(jì)你的連接池資源不夠達(dá)到上限了!
1.打開Java編譯器,新建一個(gè)項(xiàng)目"TestLength",然后新建一個(gè)包"app".2.從Jmeter的安裝目錄lib/ext中拷貝兩個(gè)文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"Tester"的項(xiàng)目中,然后引入這兩個(gè)JAR文件.(具體的引入方法參考各個(gè)Java編譯器的使用方法)3.在"app"包中新建一個(gè)類,名字叫"TestLength",不過這個(gè)類要繼承"AbstractJavaSamplerClient"類,如果項(xiàng)目引入步驟二中的兩個(gè)文件,就可以找到"AbstractJavaSamplerClient"類了.4."TestLength"類在繼承"AbstractJavaSamplerClient"類的同時(shí)也會(huì)繼承四個(gè)方法,分別是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法."getDefaultParameters"方法主要用于設(shè)置傳入的參數(shù);"setupTest"方法為初始化方法,用于初始化性能測(cè)試時(shí)的每個(gè)線程."runTest"方法為性能測(cè)試時(shí)的線程運(yùn)行體;"teardownTest"方法為測(cè)試結(jié)束方法,用于結(jié)束性能測(cè)試中的每個(gè)線程.5.具體實(shí)現(xiàn)代碼如下:packageapp;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;importcom.passpod.core.t8.*;/***@author樂以忘憂**TODOTochangethetemplateforthisgeneratedtypecommentgoto*Window-Preferences-Java-CodeStyle-CodeTemplates*/publicclassTestLengthextendsAbstractJavaSamplerClient{privateSampleResultresults;privateStringtestStr;//初始化方法,實(shí)際運(yùn)行時(shí)每個(gè)線程僅執(zhí)行一次,在測(cè)試方法運(yùn)行前執(zhí)行,類似于LoadRunner中的init方法publicvoidsetupTest(JavaSamplerContextarg0){results=newSampleResult();testStr=arg0.getParameter("testString","");if(testStr!=nulltestStr.length()0){results.setSamplerData(testStr);}}//設(shè)置傳入的參數(shù),可以設(shè)置多個(gè),已設(shè)置的參數(shù)會(huì)顯示到Jmeter的參數(shù)列表中publicArgumentsgetDefaultParameters(){Argumentsparams=newArguments();params.addArgument("testStr","");//定義一個(gè)參數(shù),顯示到Jmeter的參數(shù)列表中,第一個(gè)參數(shù)為參數(shù)默認(rèn)的顯示名稱,第二個(gè)參數(shù)為默認(rèn)值returnparams;}//測(cè)試執(zhí)行的循環(huán)體,根據(jù)線程數(shù)和循環(huán)次數(shù)的不同可執(zhí)行多次,類似于LoadRunner中的Action方法publicSampleResultrunTest(JavaSamplerContextarg0){intlen=0;results.sampleStart();//定義一個(gè)事務(wù),表示這是事務(wù)的起始點(diǎn),類似于LoadRunner的lr.start_transactionlen=testStr.length();results.sampleEnd();//定義一個(gè)事務(wù),表示這是事務(wù)的結(jié)束點(diǎn),類似于LoadRunner的lr.end_transactionif(len5){System.out.println(testStr);results.setSuccessful(false);//用于設(shè)置運(yùn)行結(jié)果的成功或失敗,如果是"false"則表示結(jié)果失敗,否則則表示成功}elseresults.setSuccessful(true);returnresults;}//結(jié)束方法,實(shí)際運(yùn)行時(shí)每個(gè)線程僅執(zhí)行一次,在測(cè)試方法運(yùn)行結(jié)束后執(zhí)行,類似于LoadRunner中的end方法publicvoidteardownTest(JavaSamplerContextarg0){}}6.把上面的例子打包,然后把生成的"TestLength.jar"文件拷貝到Jmeter的安裝目錄lib/ext下.7.運(yùn)行Jmeter,添加一個(gè)線程組,然后在該線程組下面添加一個(gè)Java請(qǐng)求(在Sampler中),在Java請(qǐng)求的類名稱中選擇咱們剛創(chuàng)建的類"app.TestLength",在下面參數(shù)列表的"testStr"后面輸入要測(cè)試的字符串,然后添加一個(gè)監(jiān)聽器(聚合報(bào)告),設(shè)置一下模擬的用戶數(shù)就可以測(cè)試了.如果測(cè)試不成功,Jmeter會(huì)在它自己個(gè)輸出框中拋出這個(gè)字符串.通過上面的例子我們可以發(fā)現(xiàn),使用Jmeter自定義Java測(cè)試代碼,配合Jmeter自帶的函數(shù),就可以實(shí)現(xiàn)出LoadRunner中"JavaVuser"協(xié)議的絕大多數(shù)功能,而且是沒有用戶數(shù)限制和完全免費(fèi)的(嘿嘿).上面的例子非常簡(jiǎn)單,而且沒有任何實(shí)際意義,只是一個(gè)簡(jiǎn)單的Jmeter測(cè)試代碼示例,用于拋磚引玉,希望大家一起交流,共同進(jìn)步.
使用loadrunner,進(jìn)行壓力測(cè)試,有比較詳細(xì)的測(cè)試結(jié)果,
就是配置和使用loadrunner比較麻煩,不過網(wǎng)上有詳細(xì)的教程,去下載一個(gè)吧,
自己寫循環(huán)去測(cè)試,極不準(zhǔn)確
你好,你這個(gè)問題問的好抽象。測(cè)試是測(cè)什么,測(cè)你寫的程序,當(dāng)你連你的程序是什么的類型的時(shí)候還沒有弄清楚,怎么能寫壓力測(cè)試呢,你是要測(cè)并發(fā)呢?還是測(cè)效率呢?
所以這個(gè)要根據(jù)實(shí)際情況來確定。
經(jīng)典的自然是loadrunner,可以進(jìn)行并發(fā)壓力測(cè)試,很實(shí)用,可以模擬多IP,多用戶同時(shí)運(yùn)行,可以設(shè)置運(yùn)行間隔,可以參考下相關(guān)的文檔,建議去csdn上下一個(gè)相關(guān)的教程
分享文章:java壓力測(cè)試代碼 Java測(cè)試員
新聞來源:http://chinadenli.net/article32/hpjesc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、網(wǎng)站排名、定制開發(fā)、搜索引擎優(yōu)化、Google、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)