Testing can no longer significantly lag behind development
In order to accommodate rising customer expectations of frequent updates and new features, companies have had to accelerate speed of development significantly. Unfortunately, developing software so quickly means that there's lots of code to test in a limited time span, which can lead to delays. When test coverage is low, bugs, performance issues and other problems can turn a new feature into a nightmare for customers. Therefore, it's very important for testing to keep up with, and even drive, development.
Our testing expertise
Traditionally, test driven development was used by developers at the unit test level. After years of working in continuous delivery, and following Agile and DevOps best practices, we elevated this practice to the functional testing level, performed by quality engineers. While our focus is not always to precede development with testing, we strive to accomplish the goal of getting tests done with zero or minimal lag behind development. Our architects and engineers have years of experience in combining testing with development, having implemented this practice with many clients of various sizes in different industries.
Closing the testing and development gap
Building a cross-functional team
While individual team members may have specializations, everyone on the team should have all the skills and roles to deliver working software. When we embed QA engineers in our teams, we ensure a close collaboration between:
- Quality engineers and product owners. Quality engineers' deep understanding of the requirements allows them to create test cases before development starts, and helps developers understand the full scope of work, leading to a higher quality product.
- Quality engineers and developers. In many cases, we practice an approach similar to pair programming, where QA engineers work with developers on implementing a feature.
Once the development process is established and the team has enough skills to deliver, quality engineers will automate all aspects of testing, including:
Integrating with the CI/CD pipeline
Test automation is not complete until it is integrated into the continuous delivery pipeline. To achieve test driven development, integration must start with source code management. Automated tests typically share all the techniques that the development team uses to manage code, including the branching strategy and versioning. QA engineers also ensure that test environment preparation and automated test execution are properly configured in the CI/CD pipeline, notifying developers of defects early in the process.
Reduced lead time to change
Increased development speed
We prefer a hands-on approach in our engagements from day one. When starting with new clients to improve their testing process and tooling, our architects and engineers are embedded into their application development teams. Their work begins by investigating requirements and the project management process, the testing and release management process, application architecture and existing test suites.
After we understand the current situation in depth, we make point improvements to bring the most value with the least amount of work, and in the shortest period of time. Once we show value in some areas, we move to long-term improvements in process and tooling, adopt test driven development across the board, and educate client teams to spread knowledge and know-how within the organization.