Are you considering a career in software
testing? Watch this video first before making any decision.
So I saw a lot of really bad software
testing career videos on YouTube, and they seem to be, "Hi!
We're a big consultancy and we want to
recruit really cheap staff for our software testing team.
And that could be you - if you're creative and imaginative.
I thought, you know, really?
Let's have a look at software testing as a career from a reality perspective.
I've been doing this for 20 plus years, so
I'm going to go over what I've learned and what I see now.
Now, one of the good things about software testing is there is a lot to learn right?
Over the course of your career you have a
chance to become incredibly technical, deep diving into protocols, looking at how
systems work, learning databases, looking at all the HTTP traffic, figuring out how
browsers work, looking at all the different programming languages, see how
to test those, doing performance testing, security testing, automating applications.
You can test under the covers.
You can do really technical testing from the front end.
Or you can focus on the people.
You can look at the requirements, you can look at the management aspects.
You can look at how people interact.
You can help people test better rather than just do testing or you can do both.
There is no limit here i n what you want to do.
When I started doing software testing, the
reason I went into testing because I started as a programmer, I was a good
programmer and I was writing commercial software.
I moved into testing because it gave me the chance to do programming and do design
and do testing and do management and do .......
.
There was that thing that spanned the entire lifecycle.
So software testing has a lot of opportunities.
If you are interested in software, I think that's the key thing here.
If you're interested in people and the
requirements and the relationships, your software testing is going to
edge over into business analysis and that's fine or edge over management.
And that's fine. There's a lot of overlaps.
There's lot of spaces to move in here. But because software testing has all those
opportunities, it can take a long time to learn.
And software testing is fundamentally a
skill and there is an enormous amount to learn.
Some people seem to start or focus on
software testing because it's the stepping stone to becoming a programmer.
To be honest, if you want to be a programmer, start with being a programmer.
You're going to find a lot easier to become a programmer if you learn how to
program and code and focus in on the design and the programming part.
If you're in a good company and you are learning to be a tester and you're
automating and you're learning how to code, then there might be a career route
naturally into programming, if that's what you want.
But don't start in software testing because you think it's an easy into the
industry and it will help you become a programmer.
More likely than not, if that's your
viewpoint, you will get stuck on a software testing level that you can't
advance because you're not really interested in testing or you will end up
becoming an Automator rather than a tester or a programmer.
And that might work. But I think if you want to do software
testing, you have to be interested in helping people make software work,
communication and trying to find the problems in software that are hard.
So it's it's a problem investigation and experimentation mindset.
So in order to get started in software testing - getting started with no money
whatsoever, just read everything on the Internet.
So read all the free testing magazines,
look at all the people that they list, look at them on Twitter, go and read their
websites, follow everyone that's on all the Twitter lists.
Subscribe to the Ministry of Testing blog aggregator, get as much information as
humanly possible and just immerse yourself in it.
Go on to YouTube, watch every video, but
don't just focus in on a single person look around.
YouTube has got so many conference talks on there.
Watch every conference talk that is
related to software testing, just everything.
And then as you get into your career, keep doing that right.
That's the focus we have to continually
learn, continually watch videos, conference talks, books.
Now, the books that helped me these - remember I'm old now.
So these books are a little bit - they're
not the most modern, right? But to me, they're still the most valuable.
This book for Boris Beizer's Software Testing Techniques.
This was my Bible for a year.
I went through this.
I did every exercise.
This is probably the most important software testing book I've read.
Because one of the things we have to do as
software testers is learn the fundamental techniques that underpin our craft.
And there's a bunch of books that will cover that.
So pick one or more or many of them but I encourage you to read as much as you can.
This is essentially a process book - Testing Computer Software by Kaner
Falk and Nguyen - I think that's how you pronounce his name.
This is a process book. It teaches you the processes around
testing and some of the mindsets around testing, and it doesn't necessarily cover
the techniques like Beizer does, but this is a good overview book.
This is an experience based book, Lessons Learned in Software Testing by
Cem Kaner, James B ach and Brett Pettichord.
This is a book to read to learn how to
think about testing and how people in the real world think about testing and to
cause you to think about how are you testing the software and is it the way you
want? But read every book you can get your hands on, but read as much free material
because I'm not asking you to spend money, but do - these books
are someone has sat down for a year, just thought about the topic.
So they've condensed it and they present
it in a way that makes it very easy to read.
And you can read these books relatively quickly if you're a fast reader.
But we don't stop there because software testing, if all you do is
focus on testing, you're going to get stuck.
So we need to learn software engineering design processes.
At this point in time this, I think, is one of the easiest books that's an in-road
into the design process for software Domain Driven Design.
And again, there's Domain Driven Design design websites.
There's plenty of talks on YouTube.
Watch those videos.
And if you're interested, then get this,
because software testing fits into the development process.
And very often the software development
process that we use is custom for every environment.
Therefore, we have to flex testing to fit in there.
So we have to know as much as possible, in fact that's not true.
The more that we know about the software development process, the more we can
tailor our testing process to fit in there.
So because I started as a programmer and designer and analysis, I have some of
those skill sets already and find it much easier to flex my test approach.
If I didn't have those, I would have to learn.
Coming into software testing is not about just learning testing.
It's about learning the process of
software development, why we test within that and how to test more effectively.
And we have to take ownership of our testing to do that.
When we come through,
certainly in the modern world, you'll
probably want to start learning how to code at some point.
So you may want to read the kind of books
that I've been writing Java for Testers, Automated & Testing A Rest API - or just
any other programming book that resonates with you.
Because if you learn how code, once you've learned how to test, then you start having
more opportunities in how you approach testing.
That's all.
It's not that you're trying to become a programmer.
It's not that you're trying to do
automated execution of entire applications.
You're just giving yourself another tool,
another way of approaching your work that can help, that's all.
Plus, it rounds you off more as a software development professional.
And I'm really strong on that.
We need to round ourselves off as software
development professionals, but we have a testing focus within there.
But to get started, focus on software testing.
The key to be a good software tester is to learn software testing.
That means the techniques and the processes.
You're probably going to be encouraged to pursue a certification to get started.
And that might be important if that's the only way that you've got of getting a job.
That's the only way you've got getting a foot in the door.
I hope - and I hope that that's not the way that you have to get a job.
I hope that you can get a job by demonstrating that you've read some of the
books, that you're interested, you've watched YouTube, you've actually tested
some open source software, that you've created a GitHub account and you've
started creating logs of the testing that you have done and the defects that you
have raised against open source software, that you have a blog that demonstrates and
book reviews for the books that you've read, your thoughts on those books.
All of those, I hope, are a much better
way of getting a foot in the door than doing certification.
I don't value the certification very much.
I think it's very expensive for training that may not cover what you need.
I'm not going to say any more about that.
I don't value it as a route in, but for a
lot people, that's their filtering process for CVs.
So you're going to have to make a tough decision at some point.
If you want to get into software testing
and are really struggling - do you get the certification that helps you get in?
Or do you find a better way of presenting your software testing skill sets?
And hope that eventually there's a company
that sees that and wants to recruit those people.
And usually there is.
Usually - certainly if you're at the more
junior level, people struggle to hire good testers.
So if you can demonstrate that you
understand testing and that you've been doing the work and that you've got
evidence that you can test, I think you will be able to get hired as a junior
software tester without having certification.
Now, let's get real here.
Software testing is still viewed as an entry level job.
I see some companies advertising for programmers with three or four years
experience, testers with three or four years experiences.
And the salaries are like that.
Developers are getting paid more than software testers in some organisations
because it is still viewed as an entry level and unskilled job.
It's up to us as testers to demonstrate
that that is not the case and that we have the skills.
And then sometimes you're going to take
something that's low just to get a foot in the door.
It's our job once we got our foot in the door to control our careers.
Your your career is going to be limited
purely by your ability to identify opportunities to advance.
And your ability to be able to take them
up because you may not have done the work that allows you to.
Company over there is looking for a performance tester.
If you haven't done any performance
testing, haven't investigated it, haven't explored or experimented with any
performance testing tools, but you want to do performance testing.
Why should they employ you?
You take control of your career and you work towards that.
And yes, that does mean effort and time and lunch hours just spent learning.
People who have worked with me have seen me not go out for lunch, but just sit at
my desk learning stuff because that's what I did.
But one of the benefits of software
testing still being viewed as an entry level job is it's usually easier for
people who haven't done software testing or haven't done software programming or
any computer science to move into software testing.
That's why we have so many people from
business analysis, music, history, whatever else.
Because software testing is about thought processes, modelling, communication, and
when the right employer sees that, there's a good chance of getting into that.
But that's because
underpinning software testing, what we're looking for is creativity, tenacity,
problem exploration, problem investigation, problem solving, a
questioning mind, very similar skills for all the parts of software development.
And testing in particular,
that ability to question and just not have
a single point, not a fixed point of view is really important.
All right.
So at some point you're going to need to get into the right company.
You can start with any company you want, but once you paid your dues, once you've
got hands on experience, when you've got some tool knowledge, once you've mastered
a technology like web or mobile or desktop or APIs, whichever one, and once you've
got a good grounding in testing, so you understand the terminology, you understand
the techniques, know how to apply them and use them.
It's time, if your company is not a good
one, to move companies because your company is going to hold you back.
If there's no opportunities for exploring your technical knowledge, using new
technologies, moving into the areas that you're interested in, doing more automated
execution, doing performance testing, expanding into security testing.
You're working in a company where you are writing test cases, you're writing test
scripts, you're putting everthing in a test management tool.
You're not really doing exploratory investigative work.
That's not really testing.
And that is the lowest point in what we class as software testing.
And it's a vulnerable position and it's not a good career path.
If you're in that career path, you're
basically going, I need to get out of this.
I need to get into management.
That doesn't have to be the career path.
You can get a career path by becoming a
better tester and moving into a better organisation that values testing.
Now, that's very often the case.
If you're working at one of those big
consultancies that's putting out, "Hi, testing is a great job!" Where you're
essentially an outsourced vendor for people's testing.
Which means it's very documentation heavy and it's not even evidence based.
It's just - have you followed these steps?
Have you followed our process?
So it doesn't adapt to the software development process.
It's very often squeezed for time.
It's very often a horrible way to work.
So to escape, we need to focus on testing
as a problem solving activity, modelling systems, exploring systems, looking for
risk, building experiments and how we test them, boosting your coding skills to
give you extra options to just automate some tasks.
And I mean, when I started, I automated
the report generation the management wanted.
I automated the creation of test scripts
that were mandated in our process because it was taking so long to write them.
There were a complete waste.
I had a model and I just went through that model, built the test scripts
automatically because I had programming skills that could augment my testing
process, learning how systems are architected so that we can pull them
apart, understand where the risks are and that we can test it at more deeper levels,
focus on testing as a questioning process, learning how to identify ambiguity and
requirements and challenge them in ways that people take notice.
But they don't exclude you from the conversation.
These are hard skills, people
class them as soft skills, but these are hard skills to learn.
And if you can master those, you have a
huge opportunity for moving into different sectors.
And they're certainly important skills moving into management.
When you're learning testing, learn to focus on the outcomes of testing and
understand what they are rather than the processes.
Testing is not test cases, test scripts.
Testing is, I want to explore these paths through the system.
How many ways have I got of identifying
those paths and working out what variation I have to do in them?
If your only approach is test scripts,
you are limited in your way of achieving that outcome.
So learn to identify what the outcomes are.
Experiment different ways of doing, of generating those outcomes.
Learn about agile because we're going to move to more agile processes in more and
more industries and take control of your processes to help make
them more agile, regardless of what project you're in.
So that when you're going for those jobs,
for agile jobs, even if you haven't worked in agile before you're able to explain how
you took ownership of your work, to make it more agile, to make it more lean, to
make it add more value, more effectively, more quickly.
So in order to escape the bad roles, you
have to build your experience as essentially a software engineer.
Round it off, learn as much about testing as you can be able to communicate it.
But also remember that as you're rounding
off your experience, you're focused on improving as a software tester.
And if you want to be a tester, that's your main skill set.
That's your main focus.
Even if you learn how to code, even if you learn how to design, even if you learn
architecture, even if you learn communication.
Testing for a while is still going to be your focus.
After 20 plus years,
you might discover that your programming skills are as good as programmers that
have only been programmers for five or 10 years.
Because I've got 20 plus years programming experience now, I have the same level of
programming skills as some of the lead programmers out there.
That's a natural extension just by working in the industry for enough time..
Take a long term view, focus on testing,
build your skill set out, but don't aim within two years to have
master testing and automation and design and requirements analysis because you
won't have mastered any of them at the start focus on mastering testing to
the best extent you can then augment, augment it and just build it out.
So if you've looked to the industry, you've looked at, should you automate?
At the start, the answer is - well if you've got a programming background, then
use your programming background as you learn how to test.
So automating parts of your work is going to be a natural extension to that.
That doesn't mean you learn how to automate through the GUI.
That doesn't mean you have to learn how to do page objects, and all these
abstractions because that's going to distract from the testing
learning. It means that you learn how to build little
tools for analysing log files, generating data, all that kind of stuff.
You harness your programming skills in testing.
But over time that will make it easier for you to learn how to automate.
I don't think that you probably want your first job in software testing to be
automating, because you haven't learned how to test at that point.
So you're going to automate your problem.
You might be able to automate well, but you probably won't be able to do
automating for testing particularly well because you don't know testing.
So really, you're just a junior programmer.
You haven't really got the testing part, but a lot of companies don't realise that.
So it may be that that's the best way to get a job.
And I can't tell you not to do that. I can't tell you to do that.
I've got programming expertise I can automate, I think.
But if you're focused on software testing,
the automating part is not the most relevant thing.
But if you can program, it might help you get in.
So use whatever skills you've got.
If you've got a skill, if you've studied history, your understanding of
depends what type of history is, but human interaction, why people make decisions,
understanding that you can look back at trends and see how they possibly impact
the future will be useful to you in testing.
If you studied physics, your ability to do experiments will help you in testing.
Whatever skills you've got, harness them and use them in your software test.
So fundamentally, learn how to test as
your core, but learn everything else as well.
But take your time doing it.
The important point is to control your career, identify opportunities within the
companies you work for or outside the company, and target those with learning.
Be very specific about your career.
Certainly in the early days, take ownership of it and experiment with as
many things as you can because that gives you a broad range of experience.
I think there's still a lot of scope and
software testing for learning effectively what you have to do.
I think it's still a good career, but you
have to own it. It is possible in software testing to get stuck on
dreadful jobs in dreadful companies doing the most mundane and horrible work.
Now, equally, those same companies hire
programmers to do dreadful coding, dreadfully mundane coding in horrible
languages with horrible processes and horrible IDEs.
So it's not really the role that is bad.
Software testing can be enormously flexible, challenging, rewarding,
technical, however far you want to push it.
But you have to take ownership and control of that.
And if you're considering just starting out, there is a lot of scope here.
There's not so much to learn, but it's not an entry level unskilled -
this is an easy way to make money, I'll do a training course for two days.
I'll get a job that will be well paid that will satisfy me long term.
You're going to have to push it to get that satisfaction out there.
And I hope that if you're considering software testing, you are prepared to push
it because the industry needs good testers who do learn, who do push it, who have a
career trajectory that's going to push testing and software development forward.
And I hope that's you.