13 steps to take your product development and QA to next level during COVID-19

13 steps to take your product development and QA to next level during COVID-19
Amongst the many changes companies had to go through since the appearance of COVID-19, they had to switch to remote operations and reconsider their business and product strategies. The majority of companies have found themselves in situations where all of their customer communication had to transition online. Web and mobile-based applications are now the main avenues for generating revenue and keeping the companies afloat. This naturally means that the quality of digital products has become one of the top priorities. Companies are facing many challenges in their transitions, and software development and Quality Assurance (QA) is naturally taking a hit.
Ula Rustamova
Ula RustamovaSoftware Engineer

Usually, the whole testing process takes place in 4 stages. Those are:
Planning: organization and establishment of processes related to testing, its objectives, and schedules
Execution: development and testing of the determined processes
Monitoring: checking performance and testing progress against the predetermined objectives
Improvement: measuring necessary actions taken to achieve better performance, results and quality

In this article we discuss steps you could take in the first two stages, planning and execution, to improve your QA processes and get better results.
Planning
Preparing software environments and performing testing is hard enough when it’s done offline with a team of testers nearby. And it gets even more complicated when doing it remotely with team members potentially scattered around the world.

Product releases have become more important and urgent, and the inclination is to get to developing and testing right away. However, the more you can plan before testing, the more time you will save, and the better quality product you will get in the end.

1. Start with a product map

Most certainly, you have re-evaluated your business and product strategy when the lockdown took place due to the virus. Product maps that came out of such discussions can come in very handy before jumping into testing. They can help with modelling the features and requirements of the product and producing useful graphs and concise representations. This map can be used very effectively to communicate to the developers and testers, as well as help uncover some potential features that you might have not thought of before.

And this brings us to the next point:

2. Get the deliverables and requirements right

Knowing your requirements can help schedule and prioritize testing activities. It can also help testing teams focus on the most important bits, especially when they are on a tight schedule.
Make sure to write them down and have them available to everyone, since you will not have the amount of communication you used to have. When working remotely such documents can be extremely helpful, as team members will have them as points of reference.

Ultimately, getting requirements right means better quality products and less time spent on reworking through testing cycles.

3. Test plan

Testing Planning is usually an overlooked process since it can be seen as one to take loads of time and effort. Some can also view it as a process that goes against the Agile Development Methodology.

We have outlined the reasons as to why test plans are useful here and have prepared a cheat sheet for it.

Overall, test plans help predetermine potential risks and challenges and communicate the schedule, deliverables, and responsibilities to the team and clients.

4. Plan for a changeable environment

Typically, software products need to run on several platforms. Be it a mobile application, in which case it runs either on iOS, Android or some other OS, or a web-based application, when it runs in a variety of web browsers.

In any case, your product will be dependent on some external environments, usually several at a time. These dependencies mean that constant maintenance has to take places, together with updates and bug fixes. Now that all your users will be communicating with you digitally, you need to pay extra attention to such dependencies, as it is very likely that high levels of variance will occur in platforms you users use.

Having testing environments that allow for such maintenance procedures is more important than ever, and maintenance activities need to be included in the schedules.

5. Understand the data flow

Understanding how data moves through your application can help see possible vulnerabilities and analyze the impact of failures of each component of the application. This can speed up the testing process by prioritizing the most impactful components of the application.

Medium has a good introduction to data flow charts and examples that can be a good place to start.

Execution

After taking the 5 steps of planning, here you have 8 more steps to execute what you have planned.

6. Test early and test consistently

As we mentioned earlier, software quality has become of the utmost importance. It is absolutely crucial that you start testing early and keep testing throughout the project. Usually, teams keep testing until the very last moment, which only leads to slowing down of the process. Testing at the final stages can also expose some design flaws that lead to the reimplementation of some components and, ultimately, to delay in the product release and release of a worse quality product.

Practically speaking the best-structured way to go about consistency within testing is using regression testing techniques.

A study on the impact of engaging testers early and throughout the software development process published in the Journal of Information Technology Management estimated the costs of involvement of testers in the process of testing. They defined five stages of the process:

  • Business Requirements
  • Systems Requirements
  • High-level Design
  • Detailed Design
  • Implementation

The results showed that the costs to fix a bug in a system increases roughly 10 times with each passing stage. So, for example, if an error cost $100 to fix in the business requirement stage would cost $1000, $10,000 and $100,000 to fix in the following stages.

The authors also argue that:

By engaging early and throughout the software development process, testers will see themselves as stakeholders in the quality of the finished applications by virtue of their work throughout the software development process.

7. Test with tools

If you really want to scale and make your testing more efficient, you would achieve this easier and better with the help of testing tools. It is a common misconception that automated and crowdtesting can or should replace all other testing methods. However, usually, those are integrated with manual and in-house testing.

The main point to make here is that in-house testing can only go that far, and tools should be added on top of it. These tools are not a panacea to all testing issues and should be used in conjunction with in-house activities.

Since the consequences of the virus are forcing companies to launch their products quicker and make digital products’ quality the number one priority, testing tools are very relevant in this situation.

Crowdtesting is one of those tools. It can make testing more efficient and speedy with real user feedback. To read more about how it can improve your results in testing and speed it up you can read this article.

8. Automate what can be automated

Other available tools can be of great help as well. If crowdtesting is the tool to go with components that, for example, need more real user input and/or related to Graphical User Interface (GUI), automated testing can help with more straight forward, transactional functionality.

Some other automated tools are intended for creating test cases. Such tools can increase your speed and offer coverage of test cases that developers/testers could have forgotten about.

However, It is important to keep in mind that automated testing can help, but it would not fix poor design choices. In some cases, automation could be risky as it could mask poor design. It is better to consider all areas of testing that need to be performed beforehand, identifying high-risk areas where test automation would add the most value. Such decisions should be left to the last moments of development.

9. Communicate, communicate, communicate

In any business or development activity communication is key. To improve quality assurance results it is important that all parties involved have access to all information and are able to communicate with all team members and managers.

We have listed the best remote work tools we recommend for team communication and collaboration. This article also includes collaboration and storage tools, which can be essential for testing purposes. You can store schedules, documentation, updates and test plans on repositories that would be available to everyone in the team.

Clear communication can also help avoid bottlenecks and misunderstandings. The clearer the communication, the smoother the whole process is going to be.

10. Engage with the end-user

No matter how much functional testing you perform, the product ultimately has to create value for the user. Due to biases and assumptions, it is often difficult to see how users will react to the product. So in order to step out of your assumptions get involved with user activities and user acceptance testing.

Crowdtesting offers an efficient and scalable way to do this in a timely manner. Real users test the applications and give feedback on them within hours of submission.

Another way to engage with users is to create focus groups. Obviously, you would not be able to run interviews and studies with people face-to-face. However, online interviews and focus groups are possible to set up and can give incredible insight.

11. Don’t skip load testing

Load testing is a testing method that ensures the application performs as expected under specific loads, which vary in intensity.

We cannot stress enough how important load testing is in the days of lockdowns. Since all of your users are only able to communicate with you and engage with your product through your digital products, it is more than likely that your application will have a higher load than before the virus.
In addition, the risks and consequences of defected digital products are much greater for this exact reason. It is therefore essential that you are prepared for a higher load, and are able to serve as many customers as possible. Otherwise, with such unexpectedly high traffic your company and application is not able to put your best foot forward.

12. Report bugs effectively

Requesting more information in bug reports can create unnecessary overhead. However, a good report can save you a lot of time and help avoid miscommunication, as well as additional communication.

Detailed bug reports are one of the best ways to increase productivity in fixing bugs, and is something that every team should strive for. Detailed information about issues and their resolutions from developers and testers can be short-term pain, however, brings so many long-term benefits by ensuring quicker future problem-solving.

Some of the guidelines for effective bug reports include:

Bug reports are the foundation of communication between testers and developers.
Solutions should be provided in the reports if possible.
Bug reports should be clear and concise.
Reported bugs should be reproducible, and reproduction instructions should be included in the reports. Even if bugs appear periodically, instructions and frequency of their occurrence should be included as well.
Clarity of bug reports is essential. It should be fairly easy to understand for developers, and all included attachments should help achieve this clarity.
Screenshots and screen recordings. Make sure testers are able to attach documents to the bug reports. A short video or image can save huge amounts of time for the developers in understanding the issue.
Bug summary and/or tags. These can not only help understand the overall issues better but can also help with sorting the bugs and assigning them to the right developers to fix them quicker.

13. Try crowdsourced testing

Crowdsourced testing utilizes the power of the crowd in achieving better quality products. Similar to other crowdsourced activities, crowdtesting has characteristics that are extremely useful in speeding up the process and improving throughput. The most relevant ones are the increased speed of testing, real user interaction and cost-effectiveness.
Some of the tips mentioned above can be directly tackled by a crowdtesting platform.

For example, consistency in testing, utilization of testing tools, load testing and effective bug reporting. Most importantly, by engaging with real users you can get feedback, suggestions on the content of the applications and Graphical User Interface testing.
In Buglance, you can also specify the bug report templates, which can be as detailed as you like with optional or required attachments.

More than 40,000 testers from all over the world have been testing applications through Buglance, and have great experience in reporting issues effectively and concisely.

Another important feature to point out is the diversity of hardware environments, i.e. devices available on the platform. As your product is going to be accessed from different Operating Systems, browsers and platforms, testing the application on a variety of devices will minimize the defects that arise from such variances.

To see how Buglance works with the help of 40,000+ testers request a demo today.