Integration Testing হল সফটওয়্যার টেস্টিং এর একটি ধাপ, যেখানে বিভিন্ন মডিউল বা সিস্টেম অংশ একত্রে কাজ করছে কিনা তা যাচাই করা হয়। ASP.Net অ্যাপ্লিকেশনগুলির জন্য, API টেস্টিং বিশেষভাবে গুরুত্বপূর্ণ, কারণ এটি সিস্টেমের একক ইউনিটগুলোকে একত্রে পরীক্ষা করে তাদের ইন্টিগ্রেশন এবং কার্যকারিতা যাচাই করে।
Integration Testing এর মাধ্যমে API টেস্টিং, ASP.Net Core এর মাধ্যমে বিভিন্ন ওয়েব API এর কার্যকারিতা পরীক্ষা করতে সহায়তা করে, যেমন একটি RESTful API এর সঠিক রেসপন্স, ডাটাবেস থেকে ডেটা রিট্রিভাল, এবং একাধিক সিস্টেমের মধ্যে যোগাযোগ সঠিকভাবে হচ্ছে কিনা।
Integration Testing API এর জন্য প্রয়োজনীয় কারণগুলো:
ASP.Net Core এ API Integration Testing করার জন্য সাধারণত xUnit, NUnit, বা MSTest টেস্ট ফ্রেমওয়ার্ক ব্যবহার করা হয়। ASP.Net Core এর জন্য TestServer এবং HttpClient ব্যবহারের মাধ্যমে API এর কার্যকারিতা পরীক্ষা করা যায়।
Integration Testing করতে হলে, প্রথমে আপনার টেস্ট প্রজেক্টে কিছু NuGet প্যাকেজ ইনস্টল করতে হবে:
dotnet add package Microsoft.AspNetCore.Mvc.Testing
dotnet add package xUnit
dotnet add package Microsoft.EntityFrameworkCore.InMemory
dotnet add package xunit.runner.visualstudio
public class MyApiIntegrationTest : IClassFixture<WebApplicationFactory<Startup>>
{
private readonly HttpClient _client;
private readonly WebApplicationFactory<Startup> _factory;
public MyApiIntegrationTest(WebApplicationFactory<Startup> factory)
{
_factory = factory;
_client = factory.CreateClient();
}
[Fact]
public async Task Get_Products_ReturnsSuccessStatusCode()
{
// Arrange
var url = "/api/products";
// Act
var response = await _client.GetAsync(url);
// Assert
response.EnsureSuccessStatusCode(); // 200-299 HTTP status code
}
[Fact]
public async Task Post_Product_ReturnsCreatedAtActionResult()
{
// Arrange
var product = new { Name = "New Product", Price = 100 };
var content = new StringContent(JsonConvert.SerializeObject(product), Encoding.UTF8, "application/json");
var url = "/api/products";
// Act
var response = await _client.PostAsync(url, content);
// Assert
response.EnsureSuccessStatusCode();
var result = await response.Content.ReadAsStringAsync();
Assert.Contains("New Product", result);
}
}
এখানে, WebApplicationFactory ASP.Net Core অ্যাপ্লিকেশনকে টেস্ট সার্ভারে শুরু করে, এবং HttpClient ব্যবহার করে HTTP রিকোয়েস্ট পাঠানো হয়।
ডাটাবেসের সাথে ইন্টিগ্রেশন টেস্ট করতে হলে, সাধারণত In-Memory Database ব্যবহার করা হয়, যাতে আসল ডাটাবেসে কোন পরিবর্তন না হয়।
public class ProductControllerIntegrationTests : IClassFixture<WebApplicationFactory<Startup>>
{
private readonly HttpClient _client;
private readonly WebApplicationFactory<Startup> _factory;
public ProductControllerIntegrationTests(WebApplicationFactory<Startup> factory)
{
_factory = factory;
_client = factory.WithWebHostBuilder(builder =>
{
builder.ConfigureServices(services =>
{
// Replace real DbContext with in-memory provider
services.AddDbContext<ApplicationDbContext>(options =>
options.UseInMemoryDatabase("TestDatabase"));
});
}).CreateClient();
}
[Fact]
public async Task Get_Products_ReturnsOkResult()
{
// Arrange
var url = "/api/products";
// Act
var response = await _client.GetAsync(url);
// Assert
response.EnsureSuccessStatusCode();
var products = await response.Content.ReadAsStringAsync();
Assert.Contains("Product", products);
}
}
এখানে, In-Memory Database ব্যবহার করে ডাটাবেস অপারেশন পরীক্ষিত হচ্ছে, যা টেস্টের জন্য উপযুক্ত এবং দ্রুত।
Integration Testing এর মাধ্যমে API Endpoints যেমন GET, POST, PUT, DELETE এর কার্যকারিতা পরীক্ষা করা হয়।
Integration Testing এর মাধ্যমে ASP.Net API টেস্টিং সঠিকভাবে করা সম্ভব। TestServer এবং HttpClient ব্যবহার করে API এর কার্যকারিতা পরীক্ষা করা হয়। এর মাধ্যমে API এর সমস্ত endpoint, ডেটাবেস ইন্টিগ্রেশন, এবং অন্যান্য সিস্টেমের সাথে সংযোগ সঠিকভাবে কাজ করছে কিনা তা যাচাই করা সম্ভব।