20 things you need to do before testing your software

20 things you need to do before testing your software
Software testing is the process of identifying gaps, bugs, or defects that are in contrast with requirements. The purpose of software testing is to make sure that software features meet predetermined requirements. Being an inevitable part of product development, software testing rarely fails to surprise teams in how much more effort it takes to complete than what they anticipated. For small and medium-sized teams it takes anywhere from 20% to 50% of resources (money and time) to complete testing of their product. Just like with the development, to minimize wasted time, mistakes and maximize the output, there are strategic steps you need to take before starting to code. In helping teams around the world to tackle their software testing, we have come to understand how important planning and strategy is. More importantly, we have identified certain things testers, developers, and teams as a whole can do before they start testing. Below we list 20 sequential steps you need to take before starting software testing.
Ula Rustamova
Ula RustamovaSoftware Engineer

1. Know your user demographic

Who is the end-user?

Understanding end-user can save you much time. Knowing your end-users and their needs will help you to deliver software that covers their needs. Most importantly, it will help you focus on the core functionality of the software you are planning to develop.

That also includes, in most cases, cutting down on the planned features, simplifying the interface and making sure that the end result will indeed serve the purpose it was intended to.

Specifying the user demographic will help in outlining the value of your product, which brings us to the next step.

2. Understand and describe your user

By building on the demographics and outlining the user profile, you can determine further which functionality will be the most and least useful to the user. Understanding your users is a long process that requires deep market research for the products and solutions in the market, as well as user behaviour and expectations to determine their needs.

There is no argument that the functionality of the software is its core. Therefore, before you start coding up or testing an application, it is extremely useful to know what functionality will be of the highest priority to the user. Obviously, at the beginning of product development ambition hits the roof, and the ever-growing list of functionality overwhelms the whole team. With the end-user in mind, you can cut down on some features and prioritize the main ones.

3. Technical specification and documentation is a must!

Most developers and product managers would consider this a trivial mention. However, you would be surprised how large is the proportion of people who fail to document the initial product specification, and its subsequent versions.

We are afraid, “‘I have it in my mind” rarely cuts it. Having a concrete description in a document will serve as your north star, and make sure that everyone is on the same page from the beginning and throughout the process. Documentation will help you to keep track of the development process and make it easy to compare throughout the process. It mainly includes information about business goals and requirements, server, database, code deployment, application.

4. Build prototypes and proof of concepts (POC)

Resisting the urge of building the whole system in one go is difficult. Once you have technical documents, or sometimes even before you do, you might get a compulsion to roll your sleeves and get to it.

You can build a prototype with simplified core functionality only and validate it. Prototyping allows developers, designers and users to review the flow, test functionality before, give feedback and focus on the key points. In the case when you are building it for a client, the scenario is much easier to structure. Using the specifications you have been provided you can build a prototype or a mock-up.

5. Set goals and timeline for testing

Once you have the product or at least have settled what functionality it is going to have, it is a good idea to start planning the testing. However, before you can start building the strategy, it is important to write down the goals and potential deadlines for testing.

You can’t shoot a target you can’t see.

All in all, the more detail you can determine in your timeline, the better it usually works out in delivering the product on time.

This step shouldn’t take a long time or effort, assuming you are already using some sort of product/project management tool. If you are not currently employing any of the methodologies, we could recommend setting goals and timeline considering your budget, planned date to release, available human and technical resources.

6. Research available testing methodologies

There is no doubt that you already know many testing approaches and types. Such testing categories as functional and non-functional are widely known and practised.

But there are also some approaches you might not be aware of. Whether those are the testing types, meaning what you are testing, or testing methodologies, meaning how you are testing.

Ultimately, having a good understanding of what’s ‘out there’ and available for you to utilize can save you a lot of time and effort. Utilizing different testing methodologies ensures that your software can perform on various platforms and OS systems. Not only will it help organize the timeline in general, but also it can clear out the ambiguity that comes with the overwhelming amount of planned testing.

7. Know the best testing practices

If you have the time to skim through some testing tips online, it will definitely show in your productivity and efficiency. The more you can keep in mind the errors other people have made, the more you can avoid them yourself.

A couple of testing tips from Stakify’s extensive list we thought would be useful to list include:

  • Cultivating a testing culture
  • Always start with a product map
  • Understand the data flow
  • Divide long test procedures into small test cases

8. Strategy, structure and timeline - Selection

Now that you are equipped with knowledge about existing testing types, methodologies and some tips, you are ready to build your own strategy.

After all, though it would be great to employ 20+ testing types, let’s be realistic - nobody has the time and resources it takes to actually do it.

Here steps 1, 2 and 3 come very handy. Namely, if you have a good understanding of the user, main/prioritized functionality, plus the available testing types, this becomes a matching exercise.

In the system used by people with a design background, GUI is one of the main priorities, and it makes sense that some of the testing types you might look into using are GUI testing, Usability Testing, and potentially, running focus groups.

9. Strategy, structure and timeline - Prioritize

Tying everything together, one of the final and most crucial steps is to prioritize the testing. Prioritization does not necessarily break down according to the testing type. In fact, prioritization could happen in several layers.

One of the great tips Stackify mentions, that can also work in great symbiosis with prioritization, is finding the ‘good enough threshold’. Simply put, since perfect and defect-free software is a well-known utopia, you might want to achieve the quality that satisfies your users. In other words, the considerable minimum you are ready to settle down for.

Apart from prioritizing your testing tasks, you could also give a task its estimated completion time. Those can be done in actual time units, such as hours, days or weeks, depending on how you have partitioned the activities. Or, it can be done using an arbitrary scale, similar to prioritization.

10. Test as much as you can yourself

Before outsourcing testing, whether to some automated tools/company or the crowds, you can determine how much of it you can do yourself. Testing the software yourself will get you up to speed with the development process, and give you some insight on the quality of the product.

Besides, third party tools are rarely cheap. Detecting most of the surface level bugs in-house can take very little time and effort. In contrast, third party companies can cost you a significantly higher amount, and lead to the same results.

Note, that we are not disregarding third-party testing tools completely, as they can yield incredible efficiency within fields of testing that do require attention to detail. In fact, sometimes it’s the best option to opt-in for a service. Starting the testing process yourself will give you prerequisites for choosing the further testing types you will outsource. Choosing when to do it is a more critical piece of the puzzle.

11. Try testing with your friends and colleagues first

Most crucial user-related testing, such as usability and user satisfaction, for obvious reasons, is performed the very last. By leaving user-related testing to the last minutes you can face the threat of discovering important feedback too late, which may lead to suboptimal quality and product value. Why not perform some usability testing throughout the development to minimize the effects of these threats?

One of the simplest ways to see real user reaction is asking people in your circle to have a look at the software you are working on. The key here is to re-create a real-life scenario - restraining from giving instructions and explaining how to use it. It is not that much difficult to defend the software and start guiding a user once you see they are not using the application “the way it’s supposed to.”

But we promise, if you bear with it and take the criticism objectively it will give you incredible insight.

12. Choose the right tools

As we mentioned before, outsourcing testing can yield incredible results. However, outsourcing tools are not the only means of speeding up the testing process or making it more efficient.

Similar to testing types, knowing available tools, their categories and purposes are an incredibly useful step in determining the right ones for your project.

To most people, the notion of testing tools is almost synonymous to automated tools. There are plenty of resources online listing leading companies in automated testing. Software Testing Help’s article gives a good overview of such companies with a short description of the types of testing each of those tools cover.

Regardless of your decision to use automated testing tools or not, you will definitely benefit from tools designed to manage the testing. Whether you are a tester, developer or product manager, there is a tool for you to manage testing better.

In addition, some higher-level tools can help manage the process for a team as a whole. Tutorialspoint summarizes and categorizes available tools by mentioned roles, giving a good starting point to choosing such tools.

13. Organise your team and roles

As simple as it sounds, makes sure everyone in the team understands the scope of their work and expectations. Most likely, you are managing a product according to some development methodology, as Agile for example. This step then only means including testing into the overall structure, by defining roles and tasks. It will help minimize ambiguity, avoid the risk of misalignment within the team, and make the whole process more structured.

14. Define the required efforts and resources

Steps 14 and 15 ties very closely together, and help to bring the planning a little closer to the ground and make it more realistic.

Once you have determined the categorization of your testing, whether, by type, functionality or priority, you can go ahead and exercise how long you think each of those would take.

Bear in mind, these are only approximations and there is no precise way of estimating how long it would take to complete testing a piece of software.

15. Compare with available efforts and resources

Following the previous step, you can match the expected and actual effort you to a certain activity. Ultimately, this step is all about tweaking the timeline and employing other strategies when needed.

For example, let’s say you have a deadline for the completion of testing. And the estimated time to finalize clearly indicates that you won’t be able to make it. In these scenarios, you could consider to double down on developers and testers or shorten the planned features list. Alternatively, if you have the financial means you can look into employing third-party tools to take some load off the team.

Importantly, third party tools do not have to be extremely expensive. While automated testing tools can cost a fortune, crowdsourced testing tools can be much more budget-friendly. Here in Buglance, we give access to more than 40,000 testers for the price of a single tester you may hire.

16. Schedule and document

If it’s not on the calendar, it is not going to happen.

We recommend documenting the timeline using some kind of a tool, which could be as simple as a calendar. Set up interim deadlines and reviews for testing, as well as for development to make sure you stay on track, and that you adjust the timeline as you go (if you need to).

External reminders and commitments can be a powerful tool to drive progress incrementally and steadily.

The same applies to the overall documentation of testing. Keeping up with the documentation and updating is as important as setting up the initial document. Arguably, it might be more important to successfully finish the testing process than the initial document.

In addition, we all know how important documentation is if there are plans to work on the consequent versions of the project, or potentially pass the project to other people. But don’t forget to include testing plans, lessons and reports into these files. By doing so, you can seriously help following developers and testers in their own future attempts.

17. Leave overhead time

Sure, you know this and you are already taking measures to leave some room between each testing task, just in case. What we recommend is slightly different in that we suggest you do it systematically and religiously.

When you set the expected time for each testing category and build the timeline, leave 20-30% extra. Not less, and maybe even more. You can definitely adjust the number as you go, you will be able to get a sense of whether it works out for your team or not.

Importantly, it will also give you a less stressful time working on a product, and will not create havoc when you, as it happens, don’t finish the task at the designated time.

18. Neat organization and meetings throughout the process

Whether you are performing daily stand-ups for Agile, or bi-daily meetings with your team, make sure to be consistent with them. Even if you feel like you have nothing major to report, others still might. There is a reason why most innovations and breakthroughs were made in collaboration and discussion.

Some problems that you have could be easily resolved in a simple discussion and brainstorming session. In addition, seeing where others are with their testing can help you keep the bigger picture in mind.

19. Involve focus groups

Developer bias is real, and we mention this time and again. Try to do everything you can to avoid it - give your product into the hands of people who have no idea of the product.

Focus groups provide a great methodology to make these observations and validations in a more structured way. It is one of the most essential ‘testing’ types that gets performed before the product launch.

20. Be prepared and flexible

And lastly, Hope for the best, be prepared for the worst. Most probably your team is not big, and you can take advantage of that.

Being flexible with your timeline, priorities and tasks is something that can help you create an innovative product and keep a healthy culture in the teams.

This also manifests itself in the tools you use for testing - choose more flexible tools that will lead you to not get stagnant in the approach you are taking.


Closing

It should be obvious by now that there are plenty of steps you could take before starting the testing process to make it smoother and as efficient as possible. From our own experience in Buglance, and from working with small to large scale companies we have identified some particularly high-output and critical ones. Thus, the list is not exhaustive, and in addition, does necessarily apply to all cases equally effectively.

We have seen them work for teams we have worked with, and hopefully, they will assist you in your testing as well.


Check out Buglance to see how crowdtesting can assist your testing as well, or to access more material on testing methodologies.

That was a long list! Hold tight, there are four more things we recommend you to look into. But don’t worry, these are more like tips and tricks we think can be helpful in your testing journey.