commonGraphics/features/meaningfulTests-small.svgMeaningful unit tests

Meaningful unit tests

Software testing is not about quantity. It is about finding the right inputs to show what is working and what is not. Symflower utilizes symbolic execution to generate manageable test suites that contain only essential tests.
features/symbolicExecution.svg
features/symbolicExecution.svg

Targeted values

Symbolic execution computes the necessary inputs for a function to execute all its relevant paths. The test candidates are computed instead of being randomly chosen, resulting in the highest test coverage possible.

features/targetedValues.svg
features/targetedValues.svg
features/eachTestCaseAddsValue.svg

Slim test suites

Symflower does not report redundant test cases. This means every generated test case adds value, because it executes some new behavior of a function.

features/eachTestCaseAddsValue.svg

Complex data types

A symbolic execution is not restricted to primitive data types and simple source code. Concepts such as complex data types, interfaces and object orientation can be applied and analyzed.

features/complexTypes.svg
features/complexTypes.svg

State-of-the-art test case generation

Symbolic Execution equips your production code with test cases that are computed instead of being randomly chosen, requiring no manual effort to reach a high test coverage.

Manual Testing

Writing unit tests manually requires 30% to 50% of your development time, while still facing the risk of missing essential test cases.

Boundary Values

Boundary value analysis does not take the actual code coverage into account, resulting in very low test coverages.

Fuzzing

Fuzzing throws random values at your code, which means you rely on pure luck to find bugs in your software.

Safe operator usage

Symflower analyzes each operation to see whether there is an input that leads to erroneous behavior. For instance, every access to an array is checked for a possible buffer overflow.

features/safeOperatorUsage.svg
features/safeOperatorUsage.svg
features/mocking.svg

Automated mocking

Mocks for used interfaces are automatically generated, so there is no additional time required to specify their behavior.

features/mocking.svg

Path coverage

Symflower targets each relevant path through your function. In addition to a high path coverage it aims to reach full MC/DC coverage on an expression level.

features/symflowerCoverage.svg
features/symflowerCoverage.svg

Problem coverage

For each operation that can result in erroneous behavior, an explicit check is added to see whether the error can be provoked.

Reproducible bugs

For each revealed bug, Symflower reports a dedicated test case that can be used to reproduce and fix the found issues.

Plug and play

Learn why Symflower works out of the box, wherever you write your code.

Learn more
More than a development tool

Learn how Symflower helps you develop, secure, test and integrate great software.

Learn more