開源的負載測試/壓力測試工具 NBomber

張善友發表於2021-07-18

負載測試和壓力測試對於確保 web 應用的效能和可縮放性非常重要。 儘管它們的某些測試是相同的,但目標不同。

負載測試:測試應用是否可以在特定情況下處理指定的使用者負載,同時仍滿足響應目標。 應用在正常狀態下執行。

壓力測試:在極端條件下(通常為長時間)執行時測試應用的穩定性。 測試會對應用施加高使用者負載(峰值或逐漸增加的負載)或限制應用的計算資源。

壓力測試可確定壓力下的應用是否能夠從故障中恢復,並正常返回到預期的行為。 在壓力下,應用不會在正常狀態下執行。

NBomber是一個開源的 .NET 框架,開源協議是Apache 2.0, NBomber 用於對多種服務進行負載測試,包括 Web、訊息佇列、資料庫等。  今年5月份釋出了 NBomber 2.0版本。 NBomber 類似於JMeter,但是和JMeter 不一樣的地方是, NBomber 是通過F#/C#/JSON 程式碼來表達測試場景。

  1. NBomber 背後的主要原因是為編寫負載測試提供了一個輕量級框架,您可以使用它來測試任何系統並模擬任何生產工作負載。我們只想提供一些抽象,以便我們可以描述任何型別的負載,並且仍然有一個簡單、直觀的 API。
  2. 另一個目標是提供構建塊,通過應用任何複雜的負載分佈來驗證您的 POC(概念驗證)專案。
  3. 使用 NBomber,您可以測試任何 PULL 或 PUSH 系統(HTTP、WebSockets、GraphQl、gRPC、SQL Databse、MongoDb、Redis 等)。
  4. 使用 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、執行負載測試

image

image

執行測試後,您將獲得一份報告,放在F:\Samples\NBomberTest\reports\2021-07-18_12.04.89_session_57c6dcf0。

資料夾下有有4種格式(txt、csv、html、md)的報告,其中Html 頁面的報告比較直觀:

image

相關文章