ModuleWorks Case Study

ModuleWorks achieves 15 times faster test cycles for Precision CAM with IncrediBuild

Overview

ModuleWorks is a software component provider for the CAD/CAM industry. ModuleWorks’ expertise in 5-Axis Machining and Simulation is recognized throughout the CAM industry and its software components and development services are used by the majority of the leading CAM vendors. ModuleWorks 5-Axis and Simulation software has been used in the manufacture of complex parts for over a decade and they have many users in the global CAD/CAM industry.

Challenge

ModuleWorks provides software components for machine-controlled engineering. Several teams develop geometric algorithms using C++.

ModuleWorks has their own continuous integration system, which builds and runs all modules when changes are integrated into their code base.

The continuous integration server must process each cycle very fast. All developers need to integrate their code sequentially. This caused big problems and major delays. The developers had to wait several days before they could integrate their code. Teams could not continue developing and testing until the whole codebase was finished integrating in their continuous integration system.

ModuleWorks are using GTest, Google’s testing framework for writing C++ tests. Gtest was running hundreds of tests, including unit and integration tests, which, in aggregate, took a long time. These long running tests further slowed down their continuous integration lifecycle.

ModuleWorks provides 32 different binary configurations for their customers. Each configuration is built separately before every release, 3 times per year. Without IncrediBuild, this took several days to build all of the configurations they needed. Release time really bogged them down.

Solution

Since ModuleWorks introduced IncrediBuild for test runs, time per job dropped from 60 minutes to 30 minutes. As a result, developers can process several jobs per day and get their code integrated in less than a day. Implementing IncrediBuild more than doubled the amount of developers that the continuous integration server can serve per day.

After implementing IncrediBuild, build times plummeted. With IncrediBuild, ModuleWorks can run a full build in about 3 minutes. Without IncrediBuild, it would take at least half an hour.

After implementing IncrediBuild, their test cycles also plummeted. Their test times with IncrediBuild are over 15x faster. Without IncrediBuild, the tests would take over 150 seconds per test. With IncrediBuild, they take 20 seconds – an 86% improvement.

Each developer runs about two builds per day. Each developers daily builds used to take 3 hours daily, for two full rebuilds daily. After implementing IncrediBuild, these times went down to 30 minutes a day – an 83% improvement.

Before IncrediBuild With IncrediBuild
Unit Tests (per test) 150 seconds 20 seconds
Full Rebuilds (2x/day) 3 hours 30 minutes

Benefits

By accelerating their GTests with IncrediBuild, ModuleWorks can work more efficiently. Much of the code is shared among different developers, leading to frequent regressions. Reducing the GTest runtime with IncrediBuild motivates the developers to run tests more frequently, especially while refactoring. This improves their code quality, as the developers have to spend less time debugging, freeing up more time for them to write good code.

Additionally, because they have less regressions that reach customers, their code coverage is much better with much higher code coverage, thanks to accelerating GTests and system tests. In summary, the benefits achieved with IncrediBuild are:

  • Enabled continuous integration
  • Accelerated testing cycles
  • Fewer regressions got to customers
  • Increased code coverage
  • Increased automated testing, adding more tests and increasing code quality
  • Faster releases

“Working with CAD/CAM accuracy and precision is essential. IncrediBuild enables our development, saving us many months of work. By using IncrediBuild, we are able to enable continuous integration and testing, which would not otherwise be possible.”
Jan Theegarten
Developer