At Codemate, we understand that quality in software development is a complex and multi-faceted concept. It can mean different things to different stakeholders, and there is rarely a one-size-fits-all solution. However, we believe that quality can be managed and integrated into every aspect of what we do. This is why we focus on testing as one of the core activities for ensuring quality in our software products.
In this blog, we will provide a high-level overview of our approach to testing and quality management. We will discuss how we think about testing, how we approach it in practice and some of the activities we use to keep it on track. We will also provide some insight into how we might be able to assist with the quality of your own products.
Quality starts with active planning and assessment.
Before we dive into the topic of quality in software development, it’s important to understand that the approaches to ensuring quality differ for new products and existing products or partially built products.
For new products, the focus is on planning for quality from the early stages of the development process. This may involve design workshops to test ideas and identify risks, and the creation of a quality plan based on the risks associated with the product. Ensuring quality at this stage can help to prevent issues and defects from occurring later on in the development process, ultimately saving time and resources.
On the other hand, existing products or partially built products may require a different approach. In these cases, the focus is on identifying opportunities for improvement by establishing the current state of the product and its quality activities. This may involve collaborative discussion workshops or a more technical hands-on approach, such as code, architecture, and design reviews, as well as evaluations of real product usage and testing. The goal is to identify any weaknesses or areas for improvement in order to ensure the overall quality of the product. As a software development house, we are able to take a holistic view of these aspects rather than focusing on a single area in isolation.
To sum it up, gaining a deep understanding of our customers is the key to everything. This includes learning about their business goals, values, and vision for the future of their product. We also focus on the key attributes that will make the product a high-quality one.
Staying on the quality track with a holistic view of testing.
In the past, testing often focused on the basic verification and validation of written requirements, resulting in a lot of documentation and evidence of testing. However, this approach had its limitations and carried a lot of waste and unnecessary bottlenecks. In modern times, testing has evolved to be more about discovery, investigation, and experimentation, with a focus on risks that can harm the quality of the product. This increases the value aspect, reduces waste significantly, and aims to eliminate bottlenecks. Testing activities should accelerate the whole team while empowering them to keep quality on track.
This model highlights the importance of team-based testing, where everyone is involved and its many applications throughout a product’s cycle to keep your quality goals on track and provide rapid feedback loops to the team. After all, each member of the multidisciplinary team spots and acts on different things. With this holistic view we will cover all aspects of quality in our daily work.
Each product will have its own testing needs, and it is unlikely that all of these practices will apply to your product. The quality planning activity will help you match some of these testing activities to your specific needs.
Next, we will showcase some of the approaches we use in order to achieve quality for our customers.
Embedding a web and mobile testing specialist as part of an Agile team.
To ensure the quality of our projects, we often assign one of our quality specialists to work closely with the development team. These specialists have expertise in web and mobile application testing and play a crucial role in continuously testing risks at the feature and system levels. They also contribute to the full lifecycle of quality in our projects. The specific allocation of a quality specialist may vary depending on the needs of the project.
This model is a great match for teams with any of the following characteristics:
- multiple developers involved
- many potential risks
- broad user base
- rapid and or regular feature development
- usability and user experience are of high importance.
The milestone or release approach.
Efficient testing and minimising waste are important values for us. Our Rebel Apps Studio sub-brand, a world-leading Flutter app development team known for its 5-star apps, demonstrates this approach. Often, small teams using Flutter’s built-in testing tools and the technology’s stability and single codebase result in lower risks. In these cases, we use a milestone approach where our quality consultants review the application at key milestones. This hands-on testing by professionals is highly efficient for lower-risk apps that need to be brought to market quickly, and it consistently provides valuable insights for the team.
Automation: Reducing feature lead time from idea to production.
Automation can be a valuable tool, but it’s important to carefully consider the root cause of the challenges you are facing before implementing it. When planning for quality, we also plan for automation by considering the goals of automation and the challenges we are trying to solve. Some potential goals of automation include:
- provide rapid feedback loops to the team
- provide confidence to develop at a fast pace
- run smoke tests to confirm readiness for testing and reduce waste
- cover regression risk
- streamline the CI process
- monitor the system for unexpected events
- expand risk coverage
- reduce mundane, repetitive tasks prone to human error
- gather and analyse data
Our automation experts can assist with tool selection and scripting, and we generally recommend that developers build the bulk of test automation for new products for optimisation purposes, with support from automation engineers or testers.
For more mature projects, regression risk may be the primary challenge due to technical debt. In these cases, our automation engineers have experience selecting and building a framework and suite for broad coverage of regression risk. Sometimes, we continue to support the development team in maintaining automation, while other times we aim to hand it over to the development team when it is stable and they are ready to take ownership of quality themselves. We strive to make this transition as smooth as possible.
Running smoothly: don’t let your guard down.
By using a discovery-focused approach, we not only address known risks, but also actively search for unknown or unconsidered risks. This allows us to be proactive in identifying and mitigating potential hazards.
Security risks are an important consideration when developing a project. To mitigate these risks, it is essential to make informed decisions about architecture, coding languages, tools, and coding practices from the beginning of the project. Despite our best efforts, however, it is possible that new information or changes may reveal previously unforeseen security risks. In these cases, it may be necessary to conduct a more thorough analysis of the risk, even if the likelihood of it occurring is low. Our security risk specialists can assist with structured penetration testing sessions using professional tools to identify and address any potential vulnerabilities.
Wrapping up
We hope that the information provided above has given you a better understanding of our approach to quality and how testing activities contribute to guiding it. Quality is an ongoing journey that often begins with a great idea and a discussion. If you would like to learn more about how we can help you on your own quality journey, please don’t hesitate to give us a call. One of our quality consultants will be happy to set up an introduction chat with you to discuss your needs and goals.
We believe in the importance of continuous improvement and strive to provide top-quality services to our clients. Our team of experts is dedicated to helping you achieve your quality objectives through a variety of testing and automation techniques. Whether you are just starting out on your quality journey or looking to optimise your current processes, we are here to support you every step of the way.
Want to learn more?
Contact Minna for more in-depth discussions about quality and testing.