快速开始
什么是Bencher?
Bencher是一套持续型的性能基准测试工具。
你是否曾经因为性能回归影响到了你的用户?
Bencher可以防止这种情况的发生。
Bencher让你有能力在性能回归进入生产环境 之前 就进行检测和预防。
- 运行: 使用你喜爱的基准测试工具在本地或CI中执行你的基准测试。
bencher
CLI简单地包装了你现有的基准测验设备并存储其结果。
- 追踪: 追踪你的基准测试结果的趋势。根据源分支、测试床和度量,使用Bencher web控制台来监视、查询和绘制结果图表。
- 捕获: 在CI中捕获性能回归。Bencher使用最先进的、可定制的分析技术在它们进入生产环境之前就检测到性能回归。
基于防止功能回归的原因,在CI中运行单元测试,我们也应该使用Bencher在CI中运行基准测试以防止性能回归。性能问题就是错误!
安装 bencher
命令行工具
Linux,Mac,& Unix
对于 Linux,Mac 和其他 Unix 类操作系统,请在你的终端运行以下命令:
Windows
对于 Windows 操作系统,打开 PowerShell 终端,然后运行以下命令:
🐰 如果你遇到一个错误,显示 running scripts is disabled on this system
(此系统上已禁止运行脚本):
- 以
管理员身份运行 Powershell
- 运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- 输入:
Y
- 重新运行此脚本
更多安装选项,请查看如何安装 bencher
命令行工具。
现在,让我们测试一下我们是否已经安装了 bencher
命令行工具。
运行:bencher --version
你应该会看到:
创建一个Bencher Cloud账户
Bencher是开源的,可以自行托管。
如果你对自行托管感兴趣,请查看 Bencher Docker教程。
不过在本教程中,我们将使用Bencher Cloud。
一旦你创建了一个帐户,你需要确认你的邮箱地址。
查看你的邮箱中的确认链接。
然后,你应该可以登录到Bencher Cloud。
创建 API 令牌
如果要使用 Bencher API,您需要创建一个 API 令牌。
导航至 Bencher 控制台。
将鼠标悬停在右上角的您的名字上。
应该会出现一个下拉菜单。选择令牌
。
在 API 令牌页面,点击➕ 添加
按钮。
一旦您创建了新的 API 令牌,您需要将它复制到剪贴板。
在您打算工作的终端中,将 API 令牌导入为环境变量。
在 Linux、Mac 和其他类 Unix 系统上运行:export BENCHER_API_TOKEN=YOUR_TOKEN
在 Windows 上运行:$env:BENCHER_API_TOKEN = "YOUR_TOKEN"
然后运行 echo $BENCHER_API_TOKEN
或 Write-Output $env:BENCHER_API_TOKEN
。
你应该会看到:
🐰 注意:如果你转到另一个终端,你将需要再次导出 API 令牌。
创建一个项目
现在我们有了用户帐户和API令牌,我们可以创建一个项目。
首先,我们需要知道我们新项目将属于哪个组织。
运行:bencher org list
你应该看到类似以下的东西:
你的输出应比以上略有不同:
uuid
是伪随机的
name
和 slug
将基于你的用户名
created
和 modified
时间戳应该是你刚注册的时间
我们现在可以在你的组织中创建一个新项目。
将你的组织slug替换到下方命令的 organization
参数 (例如 YOUR_ORG_SLUG
)。
运行:bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
你应该看到类似以下的东西:
同样,你的输出应该和以上稍有不同。
只需确保这个命令能正常运行。
记下Project slug
字段 (例如 save-walter-white-1234abcd
)。
运行一个报告
我们终于可以开始收集一些基准度量数据了!
为了简单起见,我们在本教程中将使用模拟数据。
运行:bencher mock
你应该看到类似以下的东西:
你的输出应该和以上稍有不同,因为数据是伪随机的。
只需这个命令能正常运行。
现在让我们使用模拟的基准度量数据运行一个报告。
将你的项目 slug
替换到下方命令的 --project
参数 (例如YOUR_PROJECT_SLUG
)。
运行:bencher run --project YOUR_PROJECT_SLUG "bencher mock"
你应该看到类似以下的东西:
你现在可以在浏览器中查看每个基准测试的结果。
点击或复制并粘贴 View results
的链接。
现在每个基准测试应该只有一项数据,让我们添加更多数据!
首先,让我们将项目slug设置为环境变量,这样我们就不需要在每次运行命令时提供 --project
。
运行:export BENCHER_PROJECT=save-walter-white-1234abcd
然后运行:echo $BENCHER_PROJECT
你应该看到:
我们再次运行同样的命令(不使用 --project
)来生成更多数据。
运行:bencher run "bencher mock"
现在,让我们生成更多的数据,但这次我们将结果传给 bencher run
。
运行:bencher mock | bencher run
有时你可能想将你的结果保存到一个文件中,并让 bencher run
来读取它们。
运行:bencher run --file results.json "bencher mock > results.json"
同样地,你可能有一个独立的进程运行你的基准测试并将你的结果保存到一个文件中。然后 bencher run
将会读取它们。
运行:bencher mock > results.json && bencher run --file results.json
最后,让我们通过 bencher run
的 --iter
参数生成大量的数据。
运行:bencher run --iter 16 "bencher mock"
🐰 提示:查看 bencher run
CLI子命令文档以获取全面了解bencher run
能干什么!
生成一个警报
现在我们的基准测试有了一些历史数据,让我们生成一个警报!
警报是当基准结果被确定为性能退化时生成的。
所以让我们模拟一个性能退化!
运行:bencher run "bencher mock --pow 8"
在输出的最后部分应该有一个新的区域,叫作 View alerts
:
你现在可以在浏览器中查看每个基准测试的警报。
点击或复制并粘贴 View alerts
的链接。
🐰 提示:查看 阈值和警报文档以全面了解如何检测性能退化!
🐰 恭喜!你捕捉到了你的第一个性能退化! 🎉
Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Sun, September 29, 2024 at 12:25:00 PM UTC