【发布时间】:2019-04-22 05:07:12
【问题描述】:
在测试从 API 调用的数据库过程时,当它按顺序运行时,它似乎在大约 3 秒内始终如一地运行。但是我们注意到,当多个请求同时进入时,这可能需要更长的时间,从而导致超时。我正在尝试以go test 的形式重现“一次多个请求”的情况。
我尝试了 -parallel 10 去测试标志,但 the timings 在大约 28 秒时是相同的。
我的benchmark function有什么问题吗?
func Benchmark_RealCreate(b *testing.B) {
b.ResetTimer()
for n := 0; n < b.N; n++ {
name := randomdata.SillyName()
r := gofight.New()
u := []unit{unit{MefeUnitID: name, MefeCreatorUserID: "user", BzfeCreatorUserID: 55, ClassificationID: 2, UnitName: name, UnitDescriptionDetails: "Up on the hills and testing"}}
uJSON, _ := json.Marshal(u)
r.POST("/create").
SetBody(string(uJSON)).
Run(h.BasicEngine(), func(r gofight.HTTPResponse, rq gofight.HTTPRequest) {
assert.Contains(b, r.Body.String(), name)
assert.Equal(b, http.StatusOK, r.Code)
})
}
}
还有什么方法可以实现我的目标?
【问题讨论】:
-
我会质疑这种方法。看起来您确实想要实现部署的负载测试,而不是测试单个代码单元(您已经建立)的效率。对于后者,Go 的 benchmark 特性是合适的。对于前者,我强烈建议使用暂存环境并使用Apache JMeter
标签: go testing benchmarking