開源的負載測試 - 壓力測試工具 NBomber
負載測試和壓力測試對於確保 web 應用的性能和可縮放性非常重要。儘管它們的某些測試是相同的,但目標不同。
負載測試:測試應用是否可以在特定情況下處理指定的用戶負載,同時仍滿足響應目標。應用在正常狀態下運行。
壓力測試:在極端條件下(通常爲長時間)運行時測試應用的穩定性。測試會對應用施加高用戶負載(峯值或逐漸增加的負載)或限制應用的計算資源。
壓力測試可確定壓力下的應用是否能夠從故障中恢復,並正常返回到預期的行爲。在壓力下,應用不會在正常狀態下運行。
NBomber 是一個開源的 .NET 框架,開源協議是 Apache 2.0, NBomber 用於對多種服務進行負載測試,包括 Web、消息隊列、數據庫等。 今年 5 月份發佈了 NBomber 2.0 版本。NBomber 類似於 JMeter,但是和 JMeter 不一樣的地方是, NBomber 是通過 F#/C#/JSON 代碼來表達測試場景。
-
NBomber 背後的主要原因是爲編寫負載測試提供了一個輕量級框架,您可以使用它來測試任何系統並模擬任何生產工作負載。我們只想提供一些抽象,以便我們可以描述任何類型的負載,並且仍然有一個簡單、直觀的 API。
-
另一個目標是提供構建塊,通過應用任何複雜的負載分佈來驗證您的 POC(概念驗證)項目。
-
使用 NBomber,您可以測試任何 PULL 或 PUSH 系統(HTTP、WebSockets、GraphQl、gRPC、SQL Databse、MongoDb、Redis 等)。
-
使用 NBomber,您可以輕鬆地將一些集成測試轉換爲負載測試。
NBomber 作爲一個現代框架提供:
-
零依賴協議(HTTP/WebSockets/AMQP/SQL)
-
對語義模型的零依賴(Pull/Push)
-
非常靈活的配置和非常簡單的 API (F#/C#/JSON)
-
集羣支持
-
實時報告
-
CI/CD 集成
-
數據饋送支持
NBomber 的使用 比較簡單,跟着入門文檔走一遍就學會了 :https://nbomber.com/docs/overview
1、創建一個控制檯程序
dotnet new console -n NBomberTest -lang "C#"
cd NBomberTest
2、添加 NBomber 包
dotnet add package NBomber
3、創建 hello world 負載測試
讓我們先從一個空的 hello world 開始,以便更熟悉 NBomber。在這個例子中,我們將定義一個簡單的 步驟 和 場景,它什麼都不做。
using System;
using System.Threading.Tasks;
using NBomber.Contracts;
using NBomber.CSharp;
namespace NBomberTest
{
class Program
{
static void Main(string[] args)
{
// first, you need to create a step
var step = Step.Create("step", async context =>
{
// you can define and execute any logic here,
// for example: send http request, SQL query etc
// NBomber will measure how much time it takes to execute your logic
await Task.Delay(TimeSpan.FromSeconds(1));
return Response.Ok();
});
// second, we add our step to the scenario
var scenario = ScenarioBuilder.CreateScenario("hello_world", step);
NBomberRunner
.RegisterScenarios(scenario)
.Run();
}
}
}
4、運行負載測試
運行測試後,您將獲得一份報告,放在 F:\Samples\NBomberTest\reports\2021-07-18_12.04.89_session_57c6dcf0。
文件夾下有有 4 種格式(txt、csv、html、md)的報告,其中 Html 頁面的報告比較直觀:
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/n3uWijjb7KwVHcxFIW1ZTw