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

負載測試和壓力測試對於確保 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 作爲一個現代框架提供:

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