Stellar & Toyota

Continuous integration project case study

Stellar helps Toyota automatically test updates to its BI system using Continuous Integration

Stellar and Toyota New Zealand have collaborated for more than five years to build, maintain and upgrade Toyota’s enterprise data warehouse.

As the solution grew in size and complexity, changes to the system became harder to test, and risked putting an increased burden on the development team and business users. Also, with a mix of large and small projects all using the same data warehouse, there was an administrative overhead to maintain multiple streams of work. “Often you are using the same resource to get these projects built and tested,” says Michael Shepherd, responsible for Business Intelligence at Toyota.

“We’ve had timing issues, where we’ve been unable to meet deadlines with a project because we had to wait for something else to be tested first. Likewise there might be pressure to refresh the data, but we can’t until the business finish testing.” Michael Shepherd, Toyota.

Integration and Testing is the phase of the software development life cycle (SDLC) where the code for a new feature or fix is merged into the solution and tested, ready for deployment to production. If the new feature has taken weeks or even months to develop, with lots of changes to the code, then testing can be a long and difficult exercise. There can be clashes between the various changes, and bugs can be introduced (or old bugs re-emerge). Comprehensive testing is required to make sure the new code works, and the existing code still works as expected.

microsoft-partner

Toyota-Logo


How Continuous Integration works

Continuous Integration (CI) is a development approach that uses an automated process for the Integration and Testing phase. Developers merge their new code as often as they like, sometimes even multiple times a day, into a replica of the live system. The full solution is then built and tested automatically.

Using CI, developers get rapid feedback on their changes so they can identify and resolve issues earlier. The automation means developers spend more time developing new features and fixes rather than “administering” the development.

CI gives developers the confidence to make bigger changes to improve the solution because they know there is a suite of automated tests ensuring the output to business users remains the same. This in turn leads to lower costs to improve and maintain the solution. This is sometimes referred to as refactoring or paying down technical debt.

Although CI is common in software companies, where code is the primary product, it’s still rare to find it used in corporate environments for bespoke solutions intended for internal consumption.

The Toyota project

The CI project at Toyota involved approximately two months of work by Stellar consultants, installing and configuring a specialist piece of software to enable Continuous Integration. The tool selected was Atlassian Bamboo which has great integration with the other Atlassian developer tools that were already in use (BitBucket, Confluence and JIRA).

Bamboo was configured to automatically retrieve the latest code, build the solution, run the full Extract/Transform/Load (ETL) of data for each area of the business, and then run a suite of tests to confirm the results were as expected. Bamboo logs each step of this cycle and reports the result.

“Bamboo is a generic system that allows you to automate the testing of any type of software,” says Craig Larmer, Lead Consultant at Stellar. “We had to configure it to work with Toyota’s data warehouse solution – and there were a couple of tricks along the way because we were using Microsoft BI tools, which do not natively support automated testing. We were able to ‘roll our own’ based on our knowledge of the data warehouse solution, and similar work we have done for other clients.”

Michael adds: “Continuous Integration gives us confidence that what’s being ‘thrown across the fence’ for us to use has been tested. And it’s not limited to the things we are currently focused on developing or changing; it’s also the other little things that we may not have time to go and test to the Nth degree.”

”We want to try and take this as a best practice for other areas of our business running on a variety of core systems. If we can be more efficient and quicker at getting enhancements deployed without errors, it will be a massive step forward, and enable us to focus on new projects rather than fixing the things we thought were fixed.”

Michael Shepherd, Toyota.


Benefits of Continuous Integration

Business stakeholders can be slightly unsure about this type of project because it takes developers away from delivering features while they work on process improvements. But the investment in a CI solution will
soon be paid back in efficiencies and new features.

“The whole thing is about going quicker and with a wider scope because we’re not limited to testing just a narrow piece,” says Michael. “It’s going to get better and better because we’re going to add more tests – the test scripts that we develop will not be used just once. This naturally fits into our Kaizen (continuous improvement) approach at Toyota.”

One unexpected outcome of the project was the number of issues in the existing solution that were identified by building the solution completely from a blank database. Typically, changes are applied incrementally on top of the existing data warehouse. So, before the project was even implemented the code quality of the solution had improved.

“You push a button, and it tells you that a report has run correctly. That’s so much better than relying on a member of the business, who is not a professional tester, to try and remember what they need to do to test a particular chart, so it’s going to very quickly pay for itself,” says Michael.

Looking ahead at Toyota

“The project went really well – it was painless for us, and the feedback from the infrastructure team has been really positive,” says Michael.

”We want to try and take this as a best practice for other areas of our business running on a variety of core systems. If we can be more efficient and quicker at getting enhancements deployed without errors, it will be a massive step forward, and enable us to focus on new projects rather than fixing the things we thought were fixed.”

“Continuous Integration is a first step,” adds Craig. “The next piece, called ‘Continuous Delivery,’ will allow us to automatically deploy code to an acceptance test environment and alert users that their request is ready for them to test.”

Michael is also eager to expand Toyota’s use of CI. “Seeing how successful this has been, we’d be silly not to consider the next level of automation, which would be very exciting.”

Continuous Integration

Continuous-Integration

Continuous Delivery

Continuous-Delivery

Download Case Study as a PDF

CLICK HERE