最近因為任務,需要對公司的平台做 smoke testing
與一些基本的 load testing
。但因為我們是 Web3 的產品有點麻煩,登入要 OTP 驗證,還有很多簽章的流程需要處理。剛好又是做借貸撮合的平台,需要開多個瀏覽器登入不同角色跟帳號進行操作。剛好 k6 有提供 xk6
來建置出 k6 的插件。
除此之外這測試腳本還是能跟原本的 k6 http load testing 腳本混合執行。同時能執行瀏覽器的測試以及 API 的壓測的 solution 不算多,k6 算是其中之一。
但這篇先來寫 xk6 .
k6 Browser 本來也是 k6 的插件之一,也是用 xk6 來編譯使用的,但到了 k6 0.56
版本後,就被合併到 k6 的主要程式庫當中了。剛好在寫文章當下也是最新版本也是 0.56
。
Starting from k6 version v0.56, this codebase has been merged and is now part of the main k6 repository.
但我們能看一下它原本是怎麼透過 xk6 編譯的。根目錄中的 Makefile 中的 build job.
go install go.k6.io/xk6/cmd/xk6@latest &&
xk6 build --output xk6-browser --with github.com/grafana/xk6-browser=.
https://github.com/grafana/xk6 xk6 主要是利用 Go 語言的 package 管理器來進行套件的下載與編譯出 k6 套件的, 所以套件開發者需要安裝 Go 才方便編譯 xk6 撰寫的套件.
** 安裝 xk6 **
# Install xk6
go install go.k6.io/xk6/cmd/xk6@latest
然後用 Go 指令新建一個專案, 這裡我用簡單的 OTP 產生器為例子. 以下是檔案目錄.
├── otp
│ ├── go.mod
│ ├── go.sum
│ └── otp.go