Reducing risk and cost with Test Driven Development tooling in Blaze

 A test-driven software development model delivers a number of commercial and operational advantages to business. Test Driven Development (TDD) makes maintaining an application easier, allowing for more predictable releases, it makes refactors easier and the development team will consequently spend less time debugging code and releasing code.

Quality Assurance testing means that developers and product testers spend less time testing, as much of the testing can be simulated and automated, if the right tools are in the stack. This lowers risk and the total cost of ownership for software owners, developers and users.

TDD is a software development process that relies on creating 'test cases' before any development or deployment is undertaken. Software releases are then undertaken with tests running within the release process, against these test cases.

Blaze infrastructure also allows developers working within the Blaze framework to add and manage tests and testing within the release process, to easily follow a test-driven approach too.

Within the Blaze framework, testing can be broken down into 4 main areas; Code Linting, Unit Testing, Functional Testing and QA testing. 

1 - Code Linting

We have created a rule set of best practices across different languages and technologies e.g. TypeScript, JavaScript and React, in use within Blaze. The process of testing againt those rules is called Code Linting. When code is added, the linter is looking for common code issues best practices and the lint must be passed in order to enter the Unit Testing process.

2 - Unit Testing

Each area of functionality has a Test Suite created using Jest where we aim for 100% coverage across all code.  When creating unit tests, we mock the data in order to have lots of efficient tests that resemble real-world usage of the code. We have Unit test covererage of the code monitored overtime so can track trends, using CodeCov. Blaze overall unit test coverage currently sits at 82% and comprises of over 5,000 unique tests. Once unit tests pass, we move onto Functional testing.

3 - Functional Testing

Where we use Integration testing in the form of Puppeteer & Jest Snapshots in order to check services are responding in the expected way and format. After this is complete the CI / CD platform moves onto the User Interface (UI) Regression Resting.

4 - Visual/UI Regression Testing

At this stage we programmatically compare and store snapshots of pages before and after to look for breaking User Interface changes in modern web browsers using Playwright, which simulates interfaces loading and records any discrepancies. 

What are the benefits of this test-strategy for Blaze users?

Byte9's ingrained test-driven approach will provide best practice testing methodologies to any development overseen by, or undertaken with Blaze, by any developers. This will help improve the quality of software and maintain the operational efficiencies between systems, as functional changes are made by any developers.

Blaze provides an increasingly, performant, scalable, secure and robust platform for data and media handling and presentation within and between systems in the digital ecosystem.

Byte9 were able to react unbelievably quickly to transition our entire website into a far more stable and performance-enabled hosting environment.

Sam Gore, Bear and Bear