mysql 壓力測試 golang 壓力測試

2021-10-22 03:22:35 字數 2059 閱讀 6449

1. 壓力測試

1.1.1. go怎麼寫測試用例

開發程式其中很重要的一點是測試,我們如何保證**的質量,如何保證每個函式是可執行,執行結果是正確的,又如何保證寫出來的**效能是好的,我們知道單元測試的重點在於發現程式設計或實現的邏輯錯誤,使問題及早暴露,便於問題的定位解決,而效能測試的重點在於發現程式設計上的一些問題,讓線上的程式能夠在高併發的情況下還能保持穩定。本小節將帶著這一連串的問題來講解go語言中如何來實現單元測試和效能測試。

go語言中自帶有乙個輕量級的測試框架testing和自帶的go test命令來實現單元測試和效能測試,testing框架和其他語言中的測試框架類似,你可以基於這個框架寫針對相應函式的測試用例,也可以基於該框架寫相應的壓力測試用例,那麼接下來讓我們一一來看一下怎麼寫。

另外建議安裝gotests外掛程式自動生成測試**:

1.1.2. 如何編寫測試用例

由於go test命令只能在乙個相應的目錄下執行所有檔案,所以我們接下來新建乙個專案目錄gotest,這樣我們所有的**和測試**都在這個目錄下。

接下來我們在該目錄下面建立兩個檔案:gotest.go和gotest_test.go

gotest.go:這個檔案裡面我們是建立了乙個包,裡面有乙個函式實現了除法運算:

package gotest

import (

"errors"

func division(a, b float64) (float64, error) else else

go test不會預設執行壓力測試的函式,如果要執行壓力測試需要帶上引數-test.bench,語法:-test.bench="test_name_regex",例如go test -test.bench=".*"表示測試全部的壓力測試函式

在壓力測試用例中,請記得在迴圈體內使用testing.b.n,以使測試可以正常的執行

檔名也必須以_test.go結尾

下面我們新建乙個壓力測試檔案webbench_test.go,**如下所示:

package gotest

import (

"testing"

func benchmark_division(b *testing.b) {

for i := 0; i < b.n; i++ { //use b.n for looping

division(4, 5)

func benchmark_timeconsumingfunction(b *testing.b) {

b.stoptimer() //呼叫該函式停止壓力測試的時間計數

//做一些初始化的工作,例如讀取檔案資料,資料庫連線之類的,

//這樣這些時間不影響我們測試函式本身的效能

b.starttimer() //重新開始時間

for i := 0; i < b.n; i++ {

division(4, 5)

我們執行命令go test webbench_test.go -test.bench=".*",可以看到如下結果:

benchmark_division-4 500000000 7.76 ns/op 456 b/op 14 allocs/op

benchmark_timeconsumingfunction-4 500000000 7.80 ns/op 224 b/op 4 allocs/op

pass

ok gotest 9.364s

上面的結果顯示我們沒有執行任何test***的單元測試函式,顯示的結果只執行了壓力測試函式,第一條顯示了benchmark_division執行了500000000次,每次的執行平均時間是7.76納秒,第二條顯示了benchmark_timeconsumingfunction執行了500000000,每次的平均執行時間是7.80納秒。最後一條顯示總共的執行時間。

1.1.4. 小結

通過上面對單元測試和壓力測試的學習,我們可以看到testing包很輕量,編寫單元測試和壓力測試用例非常簡單,配合內建的go test命令就可以非常方便的進行測試,這樣在我們每次修改完**,執行一下go test就可以簡單的完成回歸測試了。

mysql之system壓力測試

1 yum安裝 curl s sudo bash sudo yum y install sysbench cd sysbench 0.5 autogen.sh configure make j make install 到此為止安裝成功 如上圖所示,則表示完成。sysbench test usr s...

Mysql壓力測試shell指令碼

mysql壓力測試shell指令碼 mysql自帶了壓力測試工具mysqlslap,所以我們可以不用自己編寫程式來測試mysql讀取的壓力。壓力測試shell指令碼如下 www.2cto.com plain bin sh while true do mysqlslap concurrency 100...

mysql壓力測試指令碼例項

建立表dept 複製 如下 create table dept 部門表 deptno mediumint unsigned not null default 0,dname varchar 20 not null default loc varchar 13 not null default eng...