Testimize 1.1.6
See the version list below for details.
dotnet add package Testimize --version 1.1.6
NuGet\Install-Package Testimize -Version 1.1.6
<PackageReference Include="Testimize" Version="1.1.6" />
<PackageVersion Include="Testimize" Version="1.1.6" />
<PackageReference Include="Testimize" />
paket add Testimize --version 1.1.6
#r "nuget: Testimize, 1.1.6"
#addin nuget:?package=Testimize&version=1.1.6
#tool nuget:?package=Testimize&version=1.1.6
Testimize
๐ Smart and scalable test data generation engine for .NET automated testing.
<p align="center"> <img src="https://github.com/AutomateThePlanet/Testimize/blob/main/testimize_banner_beige_bg.png?raw=true" width="100%" alt="Testimize Banner" /> </p>
โจ Why Testimize?
Testimize helps you design high-quality, optimized test cases for automated testing with minimal effort.
It supports:
- โ Boundary Value Analysis (BVA)
- โ Pairwise Test Case Generation
- โ Heuristic Optimization (Artificial Bee Colony Algorithm)
- โ Fully-controlled Precise Mode for CI/CD and validation
- โ Rich, extensible DSL for defining valid/invalid inputs and expected error messages
- โ Configuration via JSON files and localization support
๐ ๏ธ Installation
dotnet add package Testimize
๐ Modes of Generation
Testimize offers three powerful modes of test case generation:
โ 1. Precise Mode
For CI/CD, strict validations, and known input sets. Allows full control over:
- Specific valid/invalid values
- Expected validation messages
- Boundary values
TestimizeEngine
.Configure(
parameters => parameters
.AddSelect(s => s
.Valid("US")
.Valid("BG")
.Valid("FR")
.Invalid("XX").WithExpectedMessage("Country code is invalid")
.Invalid("U1").WithExpectedMessage("Country code must contain only letters")
.Invalid("").WithExpectedMessage("Country code is required"))
.AddSelect(s => s
.Valid("en")
.Valid("fr")
.Valid("de")
.Invalid("zz").WithExpectedMessage("Language code not supported")
.Invalid("123").WithExpectedMessage("Language code must be alphabetic"))
.AddSelect(s => s
.Valid("EU")
.Valid("AF")
.Valid("AS")
.Invalid("999").WithExpectedMessage("Continent code cannot be numeric")
.Invalid("X").WithExpectedMessage("Continent code too short")
.Invalid("").WithExpectedMessage("Continent code is required")),
settings =>
{
settings.Mode = TestGenerationMode.HybridArtificialBeeColony;
settings.ABCSettings = new ABCGenerationSettings
{
TotalPopulationGenerations = 20,
MutationRate = 0.3,
FinalPopulationSelectionRatio = 0.5,
EliteSelectionRatio = 0.5,
OnlookerSelectionRatio = 0.1,
ScoutSelectionRatio = 0.3,
EnableOnlookerSelection = true,
EnableScoutPhase = false,
EnforceMutationUniqueness = true,
StagnationThresholdPercentage = 0.75,
CoolingRate = 0.95,
AllowMultipleInvalidInputs = false,
OutputGenerator = new NUnitTestCaseAttributeOutputGenerator()
};
})
.Generate();
โ
Best for: validation rules, known test inputs, automation suites
โ
Supports: [TestCase]
, [TestCaseSource]
, CSV, JSON
๐ 2. Pairwise Mode
Generates a minimal set of test cases covering every pairwise combination of parameters.
config.Mode = TestGenerationMode.Pairwise;
โ
Best for: wide input coverage with low execution time
โ
Supports: Output generators + category filtering
โ
Stateless: No heuristics or randomness required
๐ง 3. Exploratory Mode (ABC Algorithm)
Uses a metaheuristic algorithm to explore input combinations based on:
- Fitness functions
- Mutation rate
- Heuristic selection strategies
public static List<IInputParameter> ABCGeneratedTestParameters() =>
TestimizeInputBuilder
.Start()
.AddSingleSelect(s => s
.Valid("US")
.Valid("BG")
.Valid("FR")
.Invalid("XX").WithoutMessage()
.Invalid("U1").WithoutMessage()
.Invalid("").WithoutMessage())
.AddSingleSelect(s => s
.Valid("en")
.Valid("fr")
.Valid("de")
.Invalid("zz").WithoutMessage()
.Invalid("123").WithoutMessage())
.AddSingleSelect(s => s
.Valid("EU")
.Valid("AF")
.Valid("AS")
.Invalid("999").WithoutMessage()
.Invalid("X").WithoutMessage()
.Invalid("").WithoutMessage())
.Build();
[Test]
[ABCTestCaseSource(nameof(ABCGeneratedTestParameters), TestCaseCategory.Validation)]
public void QueryCountry_WithLanguageAndContinentFilters_ShouldReturn200(
string countryCode, string languageCode, string continentCode)
{
// your test logic here
}
โ
Best for: finding edge cases, fuzzing, unknown test spaces
โ
Not ideal for: stable CI/CD (unless deterministic seed used)
๐ง Configuration via testimizeSettings.json
{
"testimizeSettings": {
"seed": 12345,
"locale": "en",
"includeBoundaryValues": true,
"allowValidEquivalenceClasses": true,
"allowInvalidEquivalenceClasses": true,
"abcGenerationSettings": {
"totalPopulationGenerations": 20,
"mutationRate": 0.3,
"finalPopulationSelectionRatio": 0.5,
"eliteSelectionRatio": 0.5,
"onlookerSelectionRatio": 0.1,
"scoutSelectionRatio": 0.3,
"enableOnlookerSelection": true,
"enableScoutPhase": false,
"enforceMutationUniqueness": true,
"stagnationThresholdPercentage": 0.75,
"coolingRate": 0.95,
"allowMultipleInvalidInputs": false
},
"inputTypeSettings": {
//...
}
}
๐งฉ Supported Input Types
Text
,Email
,Phone
,Password
,Username
,URL
,Address
Integer
,Decimal
,Percentage
,Boolean
Date
,Time
,DateTime
,Week
,Month
Currency
,GeoCoordinate
,Color
SingleSelect
,MultiSelect
๐ฆ Output Generators
Class Name | Description |
---|---|
NUnitTestCaseAttributeOutputGenerator |
[TestCase(...)] attributes |
NUnitTestCaseSourceOutputGenerator |
IEnumerable<object[]> method |
CsvTestCaseOutputGenerator |
CSV output |
JsonTestCaseOutputGenerator |
JSON test data output |
๐งช Integration & Test Frameworks
โ Primary support for:
- NUnit: with
[TestCase]
and[TestCaseSource]
generation
๐ก Planned support:
- xUnit
- MSTest
๐ฎ Roadmap
- xUnit and MSTest support
- Java support
- Security testing parameters
- GitHub Action to generate data as part of CI
๐ Samples
See /samples
for examples of using Testimize in:
- โ Unit tests
- โ Data-driven tests
- โ Exploratory test generation
๐ฅ Contributors
Made with โค๏ธ by [@angelovstanton] and the Testimize community.
๐ License
Licensed under the Apache License, Version 2.0.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- Bogus (>= 35.6.2)
- Microsoft.Extensions.Configuration (>= 9.0.2)
- Microsoft.Extensions.Configuration.Binder (>= 9.0.2)
- Microsoft.Extensions.Configuration.Json (>= 9.0.2)
- NUnit (>= 4.3.2)
- TextCopy (>= 6.2.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
- Introduced Precise Mode for full test input control
- Added Pairwise Mode for lightweight coverage
- Added ABC Heuristic Generator for exploratory testing
- Integrated NUnit output generators (TestCase, TestCaseSource)
- Config-driven generation via JSON
- Faker-based localized values support
- 20+ supported input types
- Optimized for TDD and CI pipelines
- .NET 8 Support