Things I’ve learnt in software testing
I’ve spent a little over a decade working in software testing in some capacity, and there have been plenty of lessons that I’ve learnt that can be applied to different careers when it comes to working with software. I find that software testing gives you good experience in understanding the software development life cycle, understanding user behaviour and collaborating with stakeholders.
But I wanted to highlight some of the other key lessons that I’ve learnt in this post. I truly believe that there is something here for everyone, no matter what position you have when it comes to working with software.
You cannot test everything
This is one thing that I feel is absolutely important when it comes to testing software. You cannot test everything in a system, especially if you are given a set time frame, limited resources and funding. In fact, even systems that are moderately complex it's still impossible to test everything.
This ties into another area; risk. There will always be a factor of risk when it comes to software testing and development, so we need to understand how we manage this risk. What we test, and how much we test all relates to this element of risk.
Given that there could be a finite and limited amount of testing available to us, we need to prioritise what needs to be tested. Even in scenarios where the amount of time you have available is limited, you can still claim that the most important testing has been done, and the most important aspects of the system, and it’s functionalities have been tested.
Everyone makes mistakes
This is another area that I feel that more people need to remember, people are fallible. There are also many other factors that make mistakes more likely to occur. When there are deadlines, complex systems (and the complexity of the organisation itself), constantly changing technology all play a part in increasing the chance of defects in system specifications and code. I also believe if a work environment has an issue with blame culture this would also increase the possibility of mistakes being made.
I find that having a work environment that allows you to learn from your mistakes without being heavily blamed is key for personal development and allowing teams to thrive.
QA staff have incredible knowledge of your system
Do you know who has knowledge of your systems apart from your customers? Your QA team. I’ve been involved in teams where our deep knowledge and understanding of the system we would work on was essential in understanding existing business rules, but also how proposed new business rules would impact the system.
Spending hundreds of hours in a system gives QA teams a good opportunity to learn not only the system, but how users interact with it as well. This knowledge can be extremely important in key decision making, understanding defects and offering input on potential features.
Guidance in how to develop your career
Having experience in the software development lifecycle can offer you guidance in where you want to take your career. You may find researching business requirements interesting, or going into development, or maybe looking at product management to be more appealing. It’s worth noting that you can pick up skills that can be taken to these roles (and others). Having a background in QA can offer a key analytical mindset in business analysis or product management. It is also common if someone working in QA decides to work as a developer, as their existing knowledge would be useful when it comes to working with new features or defects.
There are plenty of opportunities to enhance your career with existing skills in QA, and you can always take courses in different areas that might interest you. I have taken several courses myself, I’ve become a certified Scrum Master, done a course on Digital Product Management and a course to gain the understandings of Data Science, just to name a few.
Test automation is a challenge
I’ve worked in a few places where the dream was to have a fully automated test process, something that would minimise the need for manual regression testing (which is a huge manual effort if you work with a large and complex system). It sounds like a good idea on paper, if the amount of time required for regression is reduced, then that would mean releases could be deployed to production in less time. It’s something that QA and stakeholders can agree is important.
But the task of creating this automated process is incredibly challenging. There are plenty of different solutions available, each with their own pros and cons, but there are a few key issues when it comes to test automation; learning and time.
Not everyone is going to have development skills, or have used an automation tool before, so giving an opportunity to learn is key. But finding that opportunity can be difficult if there are more pressing responsibilities, such as testing a new feature for the next release. There is also the time needed to not only learn but also to develop the test automation suite. Developing a series of reliable and accurate tests takes time to do and if the responsibilities I mentioned previously take a higher priority, then developing the tests will take longer than expected.
I still believe that test automation is a good goal to have, and has great potential to improve the speed of a release, but it also allows QA staff to investigate edge cases or other issues.
Artificial Intelligence
Artificial Intelligence (AI) is developing at a incredibly fast pace, so what I have written here might not be relevant in the future. There is a lot of talk about how AI is going to replace workers (which I don’t think will happen), but one area that I’ve been thinking about recently is how AI is going to impact software testing.
As I mentioned above, automated testing is a challenge, but what if writing descriptive and detailed prompts paves the way for the next generation of software testing? This would in theory remove not only having to spend time creating an automated test suite, but what about manual testing in general? Would that also be handled by AI?
There of course would be questions around the ethics of using AI, and the accuracy, which if the system being tested is sensitive and important, then perhaps humans should be involved from start to finish.
I’ve mentioned in several other posts, but I’m hugely skeptical about AI. I think there is a huge amount of hype around it, and I still have my doubts around the technology, but even I think this could impact software testing.
Always keep learning
If there’s anything that I’ve learnt in my time in software testing, it’s always keeps learning. The industry is always changing; there’s always a new framework being announced, a new LLM that promises to be more accurate, a new database or a new qualification. I found it’s important to always be informed in what’s happening in the industry and take qualifications when you can. This can make looking for a new job much easier as you can demonstrate your ability to learn and be involved in the industry. I also find subscribing to newsletters is also a good way to being informed of what’s happening in the industry.
I might have to share a list of newsletters that I subscribe to in a future post. There’s a lot of good content out there.
Wrap up
These are some of the key things that I’ve learnt after working in the software industry as a software tester over the past ten years. Maybe I’ll do a follow up post in 2035, when I’ve been working in the software industry for twenty years and we’ll see if my thoughts on AI having a big impact on software testing comes true.