The core idea
We wanted our pricing to be simple, reflect the value provided, and predictable (for budgeting purposes). Diffblue Cover is more valuable for large applications (it saves you more time and writes more code) than it is for smaller applications. The more code you have, the more tests Cover writes and maintains for you. This approach also allows you to start using Diffblue in smaller projects at a lower cost, and expand when budgets allow.
Secondly, lines of source code – excluding test code – is a simple figure to calculate: you can get the answer in one click in a product like SonarQube, or install and run the open source tool JaCoCo (which is what SonarQube runs under the covers) to get the number.
Thirdly, per-user pricing works well for “inner loop” development – the cycle of coding, compiling and testing that a developer does locally – but not so much for the “outer loop” – a Continuous Integration system or “software pipeline”. When Cover is run as part of CI to write and maintain tests automatically, how many users are there? Everyone who has access to the repo? Everyone who gets a test? Over what time period do we count the users? It gets complicated very quickly which is bad when you want pricing to be simple and predictable.
The net: We arrived at the lines-of-code model after conversations with customers about how per-user pricing was difficult to administer, and didn’t make much sense when Diffblue Cover was used in automated software pipelines.
What is the definition of a line of code?
We use the same basic definition as JaCoCo: a line of code that is not whitespace or a comment, and is not a line of test code.
How can I use Cover on a subset of my larger project?
Cover works on a per-project or per-module level. You cannot get more granular and this — the product does not work properly if you try to only write tests for some classes and not others within a module.
If you have code you want to exclude from Cover’s test-writing (e.g. it is 3rd party code or not unit-testable), put it in a separate module and exclude it that way.
To be clear, Cover does not write tests for code included as a dependency by the build system.
If you license by lines of code, why do you also limit users in some licenses?
For the Teams edition we have limits on lines of code and users so that we can bring down the prices of those editions. The user limit is for the “inner loop” – e.g., the IntelliJ plugin – and the line of code limit is for the project(s) overall.
How are plans licensed?
Commercial Editions of Diffblue Cover (Teams and Enterprise) are priced per instance per year and based on your lines of code (LOC). An instance is an installation of Diffblue Cover. You pay per instance for a maximum number of LOC to be tested.
How do we count lines of code?
You take the figure from the output of JaCoCo when run with standard “out of the box” settings on each project, and sum them to get the total.
What happens if we need to scale LOC / if my instance reaches limits?
We have Add-Ons available for both Teams and Enterprise editions.
For Teams, we can offer 200,000 additional LOC for $25,000 per annum.
For an Enterprise license, we can offer additional LOC in multiples of 1,000,000. Talk to sales to learn more.