java簡(jiǎn)單并發(fā)測(cè)試代碼 java并發(fā)編程深度解析

java 并發(fā)實(shí)現(xiàn)原理: 是否可以利用多線程,實(shí)現(xiàn)10個(gè)并發(fā)執(zhí)行 請(qǐng)給個(gè)例子(java代碼),非常感謝?。。。?/h2>

public static void main(String[] args) {

10多年的雨湖網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。全網(wǎng)營(yíng)銷推廣的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整雨湖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“雨湖網(wǎng)站設(shè)計(jì)”,“雨湖網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

for(Thread t:getThreads()){

t.start();

}

}

public static Thread[] getThreads(){

Thread[] thread = new Thread[10];

for(int i=0;i10;i++){

final Integer num = new Integer(i);

thread[i] = new Thread(new Runnable(){

public void run() {

int j=5;

while(j--0){

System.out.println("this is thread"+num);

}

}

});

}

return thread;

}

有了java代碼,如何測(cè)試

你這說(shuō)的太籠統(tǒng)了,應(yīng)該具體些。

有了Java代碼之后

1、可以在代碼中寫些測(cè)試的方法,把你想要驗(yàn)證的東西,輸出看一下。

2、可以用Debug的形式,跟蹤代碼執(zhí)行,驗(yàn)證程序的邏輯是否正確。

3、利用JUnit寫斷言,測(cè)試結(jié)果

怎么寫Java測(cè)試代碼?

可以用main函數(shù)和JUnit來(lái)寫測(cè)試代碼。main是最早使用的,但是現(xiàn)在更流行的測(cè)試工具是JUnit。

JUnit是一個(gè)Java語(yǔ)言的單元測(cè)試框架。它由Kent Beck和Erich Gamma建立,逐漸成為源于Kent Beck的sUnit的xUnit家族中最為成功的一個(gè)。 JUnit有它自己的JUnit擴(kuò)展生態(tài)圈。多數(shù)Java的開(kāi)發(fā)環(huán)境都已經(jīng)集成了JUnit作為單元測(cè)試的工具。

下面是一些具體的編寫測(cè)試代碼的技巧或較好的實(shí)踐方法:

1. 不要用TestCase的構(gòu)造函數(shù)初始化Fixture,而要用setUp()和tearDown()方法。

2. 不要依賴或假定測(cè)試運(yùn)行的順序,因?yàn)镴Unit利用Vector保存測(cè)試方法。所以不同的平臺(tái)會(huì)按不同的順序從Vector中取出測(cè)試方法。

3. 避免編寫有副作用的TestCase。例如:如果隨后的測(cè)試依賴于某些特定的交易數(shù)據(jù),就不要提交交易數(shù)據(jù)。簡(jiǎn)單的回滾就可以了。

4. 當(dāng)繼承一個(gè)測(cè)試類時(shí),記得調(diào)用父類的setUp()和tearDown()方法。

5. 將測(cè)試代碼和工作代碼放在一起,一邊同步編譯和更新。(使用Ant中有支持junit的task.)

6. 測(cè)試類和測(cè)試方法應(yīng)該有一致的命名方案。如在工作類名前加上test從而形成測(cè)試類名。

7. 確保測(cè)試與時(shí)間無(wú)關(guān),不要依賴使用過(guò)期的數(shù)據(jù)進(jìn)行測(cè)試。導(dǎo)致在隨后的維護(hù)過(guò)程中很難重現(xiàn)測(cè)試。

8. 如果你編寫的軟件面向國(guó)際市場(chǎng),編寫測(cè)試時(shí)要考慮國(guó)際化的因素。不要僅用母語(yǔ)的Locale進(jìn)行測(cè)試。

9. 盡可能地利用JUnit提供地assert/fail方法以及異常處理的方法,可以使代碼更為簡(jiǎn)潔。

10.測(cè)試要盡可能地小,執(zhí)行速度快。

11.不要硬性規(guī)定數(shù)據(jù)文件的路徑。

12.利用Junit 的自動(dòng)異常處理書寫簡(jiǎn)潔的測(cè)試代碼

事實(shí)上在Junit 中使用try-catch 來(lái)捕獲異常是沒(méi)有必要的,Junit 會(huì)自動(dòng)捕獲異常。那些沒(méi)有被捕獲的異常就被當(dāng)成錯(cuò)誤處理。

13. 充分利用Junit 的assert/fail 方法

assertSame()用來(lái)測(cè)試兩個(gè)引用是否指向同一個(gè)對(duì)象

assertEquals()用來(lái)測(cè)試兩個(gè)對(duì)象是否相等

14. 確保測(cè)試代碼與時(shí)間無(wú)關(guān)

15. 使用文檔生成器做測(cè)試文檔。

jmeter用java代碼怎樣編寫接口測(cè)試源碼

我們?cè)谧鲂阅軠y(cè)試時(shí),有時(shí)需要自己編寫測(cè)試腳本,很多測(cè)試工具都支持自定義編寫測(cè)試腳本,比如LoadRunner就有很多自定義腳本的協(xié)議,比如"C?Vuser","Java?Vuser"等協(xié)議.同樣,Jmeter也支持自定義編寫的測(cè)試代碼,不過(guò)與LoadRunner不同的是,Jmeter沒(méi)有自帶編譯器,需要借助第三方編譯器才能實(shí)現(xiàn).下面舉一個(gè)簡(jiǎn)單的Java自定義測(cè)試代碼例子,使用Java編譯器編寫測(cè)試代碼(Java編譯器可以用Eclipse,JBulider等),實(shí)現(xiàn)功能為:在測(cè)試前輸入任意一個(gè)字符串,然后判斷該字符串的長(zhǎng)度是否大于5,如果大于則測(cè)試結(jié)果成功,否則測(cè)試結(jié)果位失敗,然后在放到Jmeter中模擬10個(gè)用戶測(cè)試,同時(shí)運(yùn)行這段代碼,具體實(shí)現(xiàn)如下:

1.打開(kāi)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",不過(guò)這個(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)代碼如下:

package?app;

import?org.apache.jmeter.config.Arguments;

import?org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

import?org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

import?org.apache.jmeter.samplers.SampleResult;

import?com.passpod.core.t8.*;

/**

*?@author樂(lè)以忘憂

*

*?TODO?To?change?the?template?for?this?generated?type?comment?go?to

*?Window?-?Preferences?-?Java?-?Code?Style?-?Code?Templates

*/

public?class?TestLength?extends?AbstractJavaSamplerClient{

private?SampleResult?results;

private?String?testStr;

//初始化方法,實(shí)際運(yùn)行時(shí)每個(gè)線程僅執(zhí)行一次,在測(cè)試方法運(yùn)行前執(zhí)行,類似于LoadRunner中的init方法

public?void?setupTest(JavaSamplerContext?arg0)?{

results?=?new?SampleResult();

testStr?=?arg0.getParameter("testString",?"");

if?(testStr?!=?null??testStr.length()??0)?{

results.setSamplerData(testStr);

}

}

//設(shè)置傳入的參數(shù),可以設(shè)置多個(gè),已設(shè)置的參數(shù)會(huì)顯示到Jmeter的參數(shù)列表中

public?Arguments?getDefaultParameters()?{

Arguments?params?=?new?Arguments();

params.addArgument("testStr",?"");???//定義一個(gè)參數(shù),顯示到Jmeter的參數(shù)列表中,第一個(gè)參數(shù)為參數(shù)默認(rèn)的顯示名稱,第二個(gè)參數(shù)為默認(rèn)值

return?params;

}

//測(cè)試執(zhí)行的循環(huán)體,根據(jù)線程數(shù)和循環(huán)次數(shù)的不同可執(zhí)行多次,類似于LoadRunner中的Action方法

public?SampleResult?runTest(JavaSamplerContext?arg0)?{

int?len?=?0;

results.sampleStart();?????//定義一個(gè)事務(wù),表示這是事務(wù)的起始點(diǎn),類似于LoadRunner的lr.start_transaction

len?=?testStr.length();

results.sampleEnd();?????//定義一個(gè)事務(wù),表示這是事務(wù)的結(jié)束點(diǎn),類似于LoadRunner的lr.end_transaction

if(len??5){

System.out.println(testStr);

results.setSuccessful(false);???//用于設(shè)置運(yùn)行結(jié)果的成功或失敗,如果是"false"則表示結(jié)果失敗,否則則表示成功

}else???

results.setSuccessful(true);

return?results;

}

//結(jié)束方法,實(shí)際運(yùn)行時(shí)每個(gè)線程僅執(zhí)行一次,在測(cè)試方法運(yùn)行結(jié)束后執(zhí)行,類似于LoadRunner中的end方法

public?void?teardownTest(JavaSamplerContext?arg0)?{

}

}

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)聽(tīng)器(聚合報(bào)告),設(shè)置一下模擬的用戶數(shù)就可以測(cè)試了.如果測(cè)試不成功,Jmeter會(huì)在它自己個(gè)輸出框中拋出這個(gè)字符串.

通過(guò)上面的例子我們可以發(fā)現(xiàn),使用Jmeter自定義Java測(cè)試代碼,配合Jmeter自帶的函數(shù),就可以實(shí)現(xiàn)出LoadRunner中"Java?Vuser"協(xié)議的絕大多數(shù)功能,而且是沒(méi)有用戶數(shù)限制和完全免費(fèi)的(嘿嘿).上面的例子非常簡(jiǎn)單,而且沒(méi)有任何實(shí)際意義,只是一個(gè)簡(jiǎn)單的Jmeter測(cè)試代碼示例,用于拋磚引玉,希望大家一起交流,共同?進(jìn)步.

網(wǎng)站名稱:java簡(jiǎn)單并發(fā)測(cè)試代碼 java并發(fā)編程深度解析
網(wǎng)站網(wǎng)址:http://muchs.cn/article28/ddcdocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、網(wǎng)頁(yè)設(shè)計(jì)公司云服務(wù)器、App開(kāi)發(fā)、電子商務(wù)、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(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í)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營(yíng)