Adopting a DevOps practice starts with understanding where you are in the implementation journey. Download the DevOps Transformation Roadmap. Brought to you in partnership with Techtown.
Are you considering a career in Software Testing? Have you watched videos describing your future job opportunities and the training or roles you have to consider?
Well, this blog post and associated video might help. I’ve distilled my 20+ years of Software Testing and Development experience into some Software Testing career advice notes.
And this isn’t just for beginners and people at the start of their career. I hope this advice will help you even if you have been a Software Tester for a few years.
We will cover topics such as:
Is there much to learn?
What opportunities are available?
What types of Software Testing could you do?
Is testing a Stepping Stone to becoming a Programmer?
Is testing really an entry level role?
How to create career opportunities?
Should I learn to code?
How do I get started?
What should I read?
How to recognise a bad job?
How to escape a bad job?
Should you start by learning to automate?
Should you get certification?
Some of this might only be covered in the video!
I’ve pursued Software Testing as a Career for 20+ years, so I’m going to let you in on the reality of pursuing this topic as a career.
Is There Much to Learn?
You have the chance, over your career, to become very technical if you want to: deep diving into the technology and manipulating the system under the covers, performance testing, security testing, automating applications. You also have the option to focus more on the people and work more closely with users and requirements. There can be a lot of opportunities.
You can also do both.
Software Testing is a skill. It can take a long time to learn. There is a lot to learn.
Read as many books as you can. In the video I recommend:
Software Testing Techniques by Boris Beizer
Lessons Learned in Software Testing - Bach, Kaner, Pettichord
Testing Computer Software - Kaner, Falk, Nguyen
I spent a year working through the Beizer book (Software Testing Techniques) and applying it to my work. Read as many as you can get your hands on.
Stepping Stone to Programmer?
Some people view Software Testing as a stepping stone role to becoming a programmer.
Rule that out now.
If you want a career as a programmer you should start by focusing on programming. You might get lucky; if you are in the right company, working as a tester, and you want to work as a programmer, they might support that shift. But be honest with yourself. If you want to program, program. If you want to test, test. If you are not sure, try both. If you try both, then you’ll probably be in a stronger position long term.
But it depends on how much time you have to get ready.
The hard part is getting your first job.
It is very important to learn the fundamental and underlying techniques that are associated with Software Testing. A lot of people miss this out. People at the moment seem to think that if you pursue a certification that you will learn these techniques and you are instantly a good software tester.
We have to distinguish between the learning you need to do to get a job, and the learning you need to fulfill the role of a good software tester. Hopefully you’ll be able to get a job by demonstrating software skill via a blog or a Github account and don’t have to pursue certification, but that is a choice you will have to make for yourself.
Software Testing Is Still Viewed as an Entry Level Role
That can make it easier to get a job as a software tester, but if you do not control your career and keep learning then you might get stuck in a low level, unskilled testing role with a company that does not value your chosen path.
Once you have earned your stripes, find a company that does not view the tester as an entry level role.
It Can Be Easier to Switch to Software Testing
From Business Analyst, designer, manager, or programmer it can be easier to switch to testing. Sometimes because people undervalue and don’t understand testing. Sometimes you may be offered a Software Testing opportunity because they see potential in you and recognize that you have the creativity, tenacity, problem exploration, and questioning mind required to be good at Software Testing.
You Need to Get in the Right Company
Once you are in and you’ve got some hands on experience and tool knowledge, mastered at least one technology (API, Web, Mobile, Desktop), and gotten good grounding in the domain (terminology and techniques), move to a good company. Make sure that it is one that:
values testing and working flexibly (Agile, contextually),
automating acceptance criteria,
and offers you the chance to learn more.
It Is Possible to Get Stuck
Particularly with outsourcing companies, you can get stuck in a few ways. Spending days writing lots of documents, writing test cases and test scripts that require a lot of rework, automating badly with a lot of maintenance, or automating but not learning how to code or automate effectively (building keyword scripts but not implementing the keywords).
All of that is going to keep you in the low paid dungeon of Software Testing.
To escape you can:
focus on testing as a problem solving activity — modelling systems, exploring systems, looking for risk, building experiments.
build your coding skills to automate and write tools to support your testing and work more closely with programmers
learn how systems are architected to understand them as a whole and identify risk and alternative ways to design systems
focus on testing as a questioning process by identifying ambiguity in requirements and discussions and helping remove that ambiguity
focus on the outcomes of testing rather than the legacy processes e.g. if people want to know about the coverage of testing, then find ways to track and visualize coverage but not in terms of "number of test cases written" and "test scripts executed"
learn about Agile, and Lean, and take control of your own test processes to remove waste and the parts of your process that do not add value
What I’m really talking about there is building your expertise as a Software Developer—or Software Engineer—but retaining a specialism in testing so that everything you learn you apply to the process of Software Testing.
Note: Developer does not mean Programmer; it means someone involved in the whole lifecycle of Software Development.
The more that you can expand your Domain Knowledge to cover the Software Development Discipline as a whole, the better and more valuable a tester you will become. You will constantly learn new things and identify new approaches and tools to help you test. That won’t happen if you stick to a very legacy view of Software Testing as: creating test conditions, writing test cases, writing test scripts and using a Test Case management system.
Choose your companies carefully and get out of those that are stuck in the past.
Should You Automate?
I can’t tell you not to, because I know how to. I started with programming as my specialism and I kept my programming knowledge up to date. I think the ability to code helps me because I have more options in how I approach my work.
You probably don’t need to learn to code as well as a production level programmer, certainly not at the start of your career (you can improve your coding skills over time). You certainly don’t need to learn to code at the expense of learning how to test, and you don’t need to know how to code to test; having the ability to code gives you more options, but is not required.
I would recommend you concentrate on test techniques and the actual practice of testing. Learn to code later on. And learn in small chunks by automating your work or scripting the tools you use. Build it up over time. I’ve been doing this for 20+ years and I’m confident with production level coding, I’m also confident with testing - take the long term view and build your skills over time.
Should You Learn to Develop?
I think Software Development is meta to testing and programming and analysis and management, so learning Software Engineering: modelling, requirements, concepts, architecture.
All of that will help in the short term (and long term), much more than how to write a script in a programming language.
You Should Learn How to Test
Find some open source software. Test it. Make notes online and share your learning.
Use your work time wisely to learn as much as you can. There are a lot of opportunities within testing - if you can find the right company to work with.
And if you work hard, experiment, and share what you learn then you can open up new opportunities for others, as well as for yourself.
The above was the notes I used to create the video below. The video expands on the above and has additional information about Agile, Automating, Technical Testing and some other stuff.