Benchmark testing web applications
Much like unit testing, benchmark testing within Go is very simple, as Go provides a great abstraction. Also like unit testing, there is a strong convention for naming your benchmark tests. Benchmark tests need to include the word Benchmark
at the beginning of the function name. In addition, the parameter expected is the *testing.B
type instead of the *testing.T
structure. Here is an example in which we benchmark our /health-check
endpoint, which can be found in $GOPATH/src/github.com/PacktPublishing/Echo-Essentials/chapter7/handlers/health_check_test.go
:
func BenchmarkHealthCheck(b *testing.B) { e := echo.New() e.Pre(middlewares.RequestIDMiddleware) e.GET("/health-check", HealthCheck) w := httptest.NewRecorder() r, _ := http.NewRequest("GET", "/health-check", nil) for i := 0; i < b.N; i++ { e.ServeHTTP(w, r) } }
As seen here, our test starts out very similar to the unit test, we...