白盒測試中如何實現真正意義上併發測試(Java)

2021-07-04 07:52:57 字數 1549 閱讀 4421

在這個話題開始之前,首先我們來弄清楚為什麼要做併發測試?

一般併發測試,是指模擬併發訪問,測試多使用者併發訪問同乙個應用、模組、資料時是否產生隱藏的併發問題,如記憶體洩漏、執行緒鎖、資源爭用問題。

站在效能測試的角度,併發測試不是為了獲得效能指標,而是為了發現併發引起的問題。

那麼併發對應的技術實現到底是怎樣的呢?

簡單地說,併發是指多個程序或執行緒在某一時刻同時處理指定的操作,有點類似於效能測試中集合點的概念,講究同時性。

普及到這裡,接下來討論技術實現:

最近在專案裡面發現一些開發人員做動態測試模擬500併發時,實現**如下:

**片段1:

public

static

void main(string args)

}static

class

mythread

implements

runnable

}

因為涉及一些共享物件的使用,避免多執行緒亂序現象,我建議加上同步鎖,後來開發人員改寫了**,實現如下:

**片段2:

public

static

void main(string args)

executor.shutdown();

}static

class

mythread

implements

runnable

}}

其實上述這種方式在cpu層面採用的是fifo策略(先進先出),執行緒是依次拿到鎖資源進行處理的,無法達到同時性,所以我決定自己來做白盒測試,使用下面2種方式來實現:cyclicbarrier 和 countdownlatch .

**片段3:

public

static

void main(string args)

try catch (interruptedexception e)

}static

class

mythread

implements

runnable

@override

public

void run()

}

上面每個執行緒都共享了乙個計數器,減1後呼叫await()方法掛起,直到count減為0時,才一起繼續執行;

**片段4:

public

static

void main(string args)

es.shutdown();

}static

class

mythread

implements

runnable

@override

public

void run() catch (exception e)

}}

所有執行緒建立完畢後呼叫await()方法掛起,直至所有執行緒都到達barrier狀態再同時執行;

今天就總結到這了~~

白盒用例測試程式 go實現

簡單介紹一下白盒測試 原始碼公開,清楚傳參 返回值和處理邏輯 我們在測試乙個方法或者介面時,通過傳入合法或者非法的引數,並且抽選一些具有代表性的值作為測試用的合法傳參,通過模仿正常請求,檢測方法或介面內部的異常。週末沒事,又想學習一下go,最近又老寫bug,所以就想到用go寫乙個測試程序,實現白盒 ...

軟體測試中的「黑盒」與「白盒」

軟體測試中,最常聽到 黑盒測試 與 白盒測試 它們是軟體測試中最基本的測試方法。那麼究竟何為 黑盒 何為 白盒 呢?下面就對其概念與常用方法進行一下介紹。也稱功能測試 資料驅動測試,它將被測軟體看作乙個打不開的黑盒,主要根據功能需求設計測試用例,進行測試。概念 黑盒測試是從一種從軟體外部對軟體實施的...

軟考總計之白盒測試中的覆蓋

白盒測試 中的邏輯覆蓋有分為很多種,在此對其中比較有代表性的幾種覆蓋簡單總結如下 覆蓋標準 概念特點 語句覆蓋 選擇足夠多的測試資料,使得被測試程式中每一條語句至少執行一次 對程式執行邏輯的覆蓋很低。判定覆蓋 分支覆蓋 選擇足夠的測試資料,使得被測試程式中每乙個判定表示式至少獲得一次 真 值和 假 ...