When I was a little boy I had a bit of a reputation.
My parents and family knew that if I were to get a toy or some kind of present in the morning, it probably wouldn’t last until the evening.
Especially if it was something that was mechanical and required a screwdriver, motor or batteries.
Back then, we didn’t have the internet or YouTube when I was growing up in London in the 80’s. I didn’t like reading books much and there was only so much TV you could watch.
Like my father who was a builder, I also liked to be a bit ‘hands on’ (not as much now).
I was curious about things. I liked to understand the finer intricate details of how things worked.
It usually meant I ended up breaking things.
Now before you click back on the browser because you think you’re on a DIY blog, just hear me out.
For those of you that are thinking about a career in Software testing and want to know what it involves, it is more than just sitting in front of a computer running a test script.
It requires a great deal of skill, problem solving and creativity.
Below, I’ll go through my experience of what I think is involved with software testing and not some regurgitated drivel.
If you’ve searched for this and only found articles that explain the test process then you’ll be happy to know that I wont go through that in detail in this article.
That can be covered elsewhere.
Software Testing Basics – What is Software testing?
So I promised I won’t go into the nitty gritty of Software testing but I think it’s a good idea just to get some background.
Computer software has been around since the 1940’s and is now a key staple of our life. Pretty much everything we do involves some kind of software program.
Just look around you.
Your phone, your computer, car and even your washing machine use some kind of software.
Lots of industries test their products and services to ensure they are fit for purpose and work as they are expected.
Software is no different.
I don’t want to overcomplicate a definition, but heres how I would describe software testing.
“Software testing involves a process to ensure a product is fit for purpose and fulfills it’s requirements.” – Zaheer at TestingChat.com
For example, if you’ve ever been fortunate to travel in an aeroplane, guess who tested the software? How can you be sure autopilot works?
When you withdraw money at an ATM, how can you be sure that you’ll get the correct amount or nobody else can access your account?
These are just a few examples of software that has been tested.
Software testing is actually quite a broad profession in terms of it’s scope.
I will go through some of the most common roles below.
For the time being let’s go through the key areas
Depending on your role, you may be responsible for the end to end software testing life cycle for a project.
This involves the initial planning, design, execution and closure. And everything in between.
Be able to understand requirements, specifications and design documentation
During your career in Software testing, you will be involved with reviewing requirements documentation.
These documents will come in many forms such as Functional requirements specifications(FRS), Use cases, Business Requirements documents (BRD), High Level design (HLD) and more.
It is therefore imperative to be able to understand the application under test in granular detail.
Its likely you’ll then be required to break these requirements down into low level granular ‘conditions’.
Identify the scope of the application under test (AUT)
You can read requirements all day long but you’ll need to be able to make sense of them.
You’ll often find yourself having conversations with the authors of requirements documentation as well as end users to try and join many pieces of a puzzle.
As you start to understand the application, its purpose, functionality and business logic, this will help you understand the scope of testing that will need to be conducted.
As a Software tester, being highly fluent in the application as a tester is absolutely imperative. Regardless of where you sit in the process, you HAVE to understand ‘what’ is being tested.
Test Planning and Effort Estimation
Planning your test project and then planning how long you think it will take is also another role you might need to undertake.
Design Test Cases
When you have your list of requirements, you’ll want to create what are known as test cases or test scripts.
This term is used interchangeably at many places where I’ve consulted so dont get too bogged down with this.
A test case is essentially a list of specifications that need to prove a particular set of requirement(s).
For example, your involvement may be to create a test case that proves a login page for a banking application.
You may create two test cases that check a valid and invalid login, for example;
- Test Case 1 – Validate login is successful with valid credentials
- Test Case 2 – Login failure with incorrect credentials
I’ve always loved designing test cases and quite weirdly even found it therapeutic.
Its very rewarding when you’ve designed test cases that cover the requirements in full.
Be warned though, it can be a LOT of work on complex projects.
But it wouldn’t be fun any other way right? 🙂
Execute Test Cases
Once test cases are created, they need to be run.
You may need to be involved in ensuring they are exected. Either by actually running the test cases or overseeing them.
Each test case is usually run step by step and you’ll mark the status of each step. For example, passed, failed, in progress etc.
Stakeholder Management (especially if you are a test lead or or a test manager)
Software testing involves a LOT of stakeholder management. Especially if you work in a Lead or Manager capacity.
Regardless of your role within the test team, you will be expected to have some level of stakeholder management skills.
Stakeholders can include;
- People that report into you
- People you report into
- Business Analysts
- Support teams
- External teams such as vendors (if the solution is an externally purchased application).
- End Users
- Project board members and project sponsors
- Anyone who has a commercial interest in your project.
Gone are the days when Test Analysts sat in a corner and just executed scripts.
You’ll be expected to be a clear communicator.
This may be in oral and written form.
Creating project documentation such as Test Strategies and Test Plans
Software testing isn’t just about designing test cases and executing test cases.
There are a number of test artefacts that are created. These are typically;
- Test Strategy
- Test Plan
- Test Summary/Exit Report
- Daily Status Report
- Weekly Status Report
- Monthly Project updates
- Defect Log
You may be involved in creating, reviewing, maintaining and getting document approvals from stakeholders.
Daily / weekly and monthly status reports
Creating reporting for management is quite a common thing as a test analyst/engineer.
Expect to create at least daily status reports which show a summary of tests run on a particular day with a commentary.
This may also include a defect log.
So what else is involved in software testing?
Defect management is the art of ensuring any issues that are identified during your testing activities are raised, managed and moved along the defect lifecycle as efficiently as possible. Some of what is expected is;
- Raising defects – This in itself has to be done in a very specific manner. You may want to learn how to raise a software defect correctly.
- Triage – this when a group of stakeholders get together and collectively make a decision on how to move forward with an issue.
- Defect lifecycle management – facilitating and ensuring the defect is moving through the Software Testing Life Cycle.
- People management – working with various with stakeholders, primarily the Business and Developers.
- Working under extreme pressure and fast paced environments.
Supporting with Processes and governance
If you love documentation (like me) then you’ll really like this part of software testing.
Processes and governance are a really important part of the job.
You may be required to create, help support or input your feedback on how to improve what you are doing.
In heavily regulated environments such as banking, governance is really crucial.
If you don’t have the correct paperwork in order it can land you in a lot of trouble.
If you are a Test Manager or Lead, your role will involve less actual ‘testing’ and will involve more ‘firefighting’.
This may include; dealing with stakeholders, planning, sorting out problems from all angles.
It can be quite an involved job.
This is especially true if you manage people such as offshore teams.
I’ve found that over the years that my roles as a Test Manager was becoming mostly about firefighting and ensuring that my teams had everything they needed to do their jobs.
You’re basically a central cog thats responsible for turning many wheels.
If you love getting your hands dirty and problem solving then you might like a Software Test Lead/Manager role.
Asking Lots of Questions
Be prepared to ask LOTS of questions.
If something isn’t 100% clear in your mind then ask whatever you need to emsure you’re 100%.
This will pay dividends in the long run,
When I first started out in the Software Testing industry, I would only ask a few questions out of the many I wanted.
Maybe because I had a confidence problem.
Or maybe I was worried that others would think “what a stupid question, isn’t it obvious?”.
I also didn’t like those silences in meeting rooms or over a conference call where you would be the focus of the call. It made me uncomfortable.
I now don’t really care less what others think until I have total clarity.
There’s no such thing as a stupid question.
So next time you ask what is involved in software testing, ‘Asking questions’ is without a doubt part of that list.
Software testing role hierarchy – Roles and Responsibilities
Software testing has many opportunities and has various roles that you can think about if you consider a career in software testing.
Roles are not written in stone and can be used interchangeably. Just pay attention to the job description when you apply for a role.
In different parts of the world, a similar role may have a different title.
For example, a Test Analyst in the UK may be called a Test Engineer or QA engineer in South Asia.
In some cases, a single person may do a number of tasks such as act as a Test Lead, manage defects and Non functional testing.
It totally depends on how your organisation is setup.
Don’t get too worried about the title.
Some of the roles can include;
- Test/QA Lead/Manager
- E.g. Test Lead, QA Lead, Test Lead, test Manager essentially mean the same thing.
- Non-Functional Test Lead
- Defect Manager
- Senior Test/QA Analysts/Engineers
- Test/QA Analysts/Engineers
- Junior Test/QA Analysts/Engineers
Do Software testers ‘hack’ into software?
My kids ask me this all the time.
That’s probably because I tell them I ‘break’ software for a living.
Whilst it sounds really cool and like something out of a James Bond or Mission Impossible movie, its not quite like that….although I let my kids continue to think so to make me look cool. 🙂
Ethical hacking or Penetration testing is a form of Security Testing and not really Software testing.
As much as I’d love to say yes, the short answer is no.
Frequently Asked Questions about what is involved in Software Testing
What does it mean when you ‘break’ software?
Whenever I get asked this question I think of the Rocky films.
I’ve always loved the Rocky films.
Why do I like them?
The film isn’t really about boxing.
It’s about the struggles of life.
We can all relate.
When you’re hit, do you take the hit and give up?
Or do you take the hit and bounce back and become stronger?
You learn and become stronger right?
I digress but in some ways this is what software testing is about,
It’s about resiliency and being able to withstand being hit.
When we ‘break’ software, what we are doing is two things.;
- Does the application under test behave as it should according to the requirements?
- What happens if we throw a curveball at it? Will it be able to handle it or will it fall over?
You’ll find most of your bugs will come from the second point. We often refer to this as negative testing or exception handling.
It’s a lot of fun.
Do software testers fix bugs?
Our job is purely to go bug hunting.
Once you’ve familiarised yourself with the requirements, you’ll start to gauge where the possible bugs will be.
You’ll be required to raise defects/bugs and then follow your organisations defect process.
Fixing bugs is the job of other teams on the project.
These could be Software developers or technical teams such as Application Support / Infrastructure etc.
Once the bug has been rectified, it’s then the job of the software tester to ‘re-test’ it to ensure that the issues have been fixed.
So do software testers fix bugs?
No, we identify, raise and re-test them.
Do I need to be familiar with code to become a software tester?
Sorry, I wanted to avoid saying that, but, it does.
I’m not a developer (although I’m familiar with Java).
I can’t code to any professional level.
I’ve always been a Manual Tester and never required to code.
However, if you CAN code or intend to learn then your efforts won’t be wasted.
There are a number of software testing levels that you’ll need to familiarise yourself with.
Unit testing which is essentially the development stage will in the majority of cases require you to know code.
A SDET is a Software Development Engineer in Test who works for the test team. The role involves writing, testing and fixing code.
I myself have specialised in working at the System and Acceptance Testing levels where writing code was not a requirement.
However, with automation tools, learning code is very beneficial for your career.
In addition to code, learning scripting languages or having a grasp of SQL is also a good investment.
Is software testing technical?
Yes and No, it depends on the role you are doing.
You’ll definitely need an element of mediocre technical knowledge.
The ability to read documentation in certain formats such as use cases, technical design documents will be a bonus.
The art of being a Test Analyst or Technical tester will require you some level of technical knowledge.
The art of Test Management doesn’t really require you to be too technical.
I’ve worked with people that come from non technical backgrounds that have managed projects fine.
However it does become somewhat obvious when someone isn’t very technically clued up which does make them look slightly silly.
Ok, I like the sound of software testing. Are there key skills I need to learn or have particular traits?
Software testing is quite a dynamic role where you have to wear a number of hats and posses various traits. Below is just some of the ones that come to mind from my experience.
Attention to detail
The name of the game in software testing is quality.
Therefore everything you do has to be carried out to a very high standard.
Attention to detail is therefore a key trait you’ll need.
- understanding business requirements at a much granular level,
- Creating test conditions with multiple variations
- Writing test cases to a granular level
- Reviewing project documentation and feeding back.
The list goes on.
You’ll be communicating to stakeholders of all levels so verbal and written communication is important. It’s also key that you can articulate yourself with clarity.
The ability to be VERY thick skinned
Us Testers are usually in the firing line since we are the last team prior to a project going live into Production.
If something goes wrong in PRODUCTION, we will generally be the first port of call.
Stakeholders usually ask tough questions and you need to be able to answer them.
Being organised is a VERY important trait
Being orgnaised is always a good trait to have in most jobs.
As a software testing professional, I think its an absolute must.
If you’re not organised, you’ll probably struggle with hitting your deadlines and planning very complex projects.
Especially when dependencies from other teams is required,
Good at planning
This ties in with the point above about being organised.
Good planning is at the key of being a good tester.
You’ll often be asked ‘how long will x take to do…’ so you’ll need to be good at estimations.
This has to be one of the most important skills you’ll need if you’re involved in Software Testing as you’ll be planning to trying to ensure deadlines are met..
When you have a complex project, it can be easy to get lost.
Taking an organised and methodical approach to testing has helped me immensely during my career.
Inquisitive and curious mind
Thinking outside the box
A positive mindset
A ‘Can Do’ attitude
This sounds like one of those clichés that you read from someone’s CV but I promise you, this is very important.
They don’t teach you this in any testing courses.
The rivalry between developers and testers go back decades.
I’ve worked with a LOT of developers and I can tell you that empathy along with a calm demeanour has personally helped me deal with developers.
I’ve even managed to get a few laughs out of them and built good working relationships as a result.
Cool calm and collected attitude
Regardless of the situation, its always helpful to be cool under pressure.
I remember an occasion where I was NOT in a very happy mood.
I was on a call to my offshore team in India and they could tell that I wasn’t in the best of moods.
After the call, one of my team actually messaged me and told me that they felt nervous that I was not in a good mood.
I learnt from this and vowed always to be positive and never let my team feel like this again.
It shows how much your temperament wears off on other people (even though they were 5,000 miles away from my office in London)
The ability to work under pressure.
Some projects may be mission critical so working to get deadlines done is important (although not in all cases).
Don’t expect to work 9-5 (or your usual office hours)
Software testing will really test you in some roles (excuse the pun).
You may be required to stay and work really late hours depending on how urgent the project is.
Finance and the banking industry is somewhere I have first hand experience of where you may be required to work really late.
Types of software testing
I’m not going to go into too much detail on software testing types as that requires a separate discussion.
Before we go into testing types, we need to talk about testing levels.
The following are typical levels of testing;
- Unit Testing – Conducted by developers
- Integration Testing – Conducted by the Test Team
- System Testing – Conducted by the Test Team
- Acceptance Testing – Conducted by End Users
Most of the testing types can fall within each of the testing levels above. An example of testing types are;
- Smoke / Sanity Testing
- Functional Testing
- Failover testing
- Usability Testing
- End to end testing
- Interface testing
- Load testing
- Disaster Recovery
- Operability Testing
…and so on!
Fundamental Test Process
If you are looking to get involved in Software testing, then understanding the fundamental test process is absolutely key.
As per the ISTQB methodology, the fundamental test process consists of the following phases;
- Planning and Control.
- Analysis and Design.
- Implementation and Execution.
- Evaluating exit criteria and Reporting.
- Closure activities.
All software testing projects will fall into a similar process to ensure the project is being covered end to end.
What is Involved in Software testing – Summary and Wrap Up
Thanks for getting to this point.
As a software testing professional, you’ll need a number of traits, some of these include; being inquisitive, curious and creative.
In addition, someone who is thick skinned meticulous and has hawk eyes when it comes to attention to detail.
It may seem like a lot, which it is.
However, a job in software testing can be highly rewarding in terms of job satisfaction, remuneration and long term opportunities.
Don’t worry if you don’t have any experience as a software tester. There are a number of things you can do to start your career in testing.
Now that you’re familiar with what’s involved in Software testing, what are thoughts?
Is this a career that you want to pursue?
I’d love to hear your comments.