In your testers' career, you will find yourself from time to time either taking
interviews or interviewing other people to join your team. I tried to come up with a
list of some software testing interview questions that I find both interesting and
relevant, regardless of which side of the interview I am on I am personally not a
big fan of very theoretical questions - you can find those answers online. I also don't
like trick questions - I don't think those reveal the actual skills of the person being
interviewed.
So without further ado, let's look over some interview questions you might
encounter.
Software Testing Interview Questions
I decided not to use the word "manual" for this section because these are questions
that reflect generic software testing skills, which both manual and automation
testers should have
From my own experience, I noticed that the more experienced the tester, the less
theoretical the interview questions. So whenever you are at an interview, try to
describe as much as possible your usual tasks, your past experiences, and anything else you achieved. Also, depending on your own experience and skills, and the specific requirements for the job, the interviewer will focus on different things.
1. What do you include in a bug report?
A good bug report should contain a clear summary, explicit steps to
reproduce, actual and expected results, data used to reproduce, the
version/build number as well as the environment where it was found, and the
priority and severity. It's also good to include screenshots or videos wherever
they are relevant.
2. How do you define severity and priority? What is the difference
between the two?
This one may sound like a trick question, but it's actually not. And I think it's
really important to know the answer, even outside the interview. The severity
of a bug relates to the direct impact it has on the user or the application,
while priority means how quickly it should be fixed.
3. What do you do when you encounter a bug once but then are unable
to reproduce it again?
There is no single answer to this question, as the way you handle this
situation may differ from project to project. There are projects where any
error is reported, while on others it can be delayed until the testers encounter
it again. If you do indeed report it, make sure to note the circumstances in
which you reproduced the bug, and include as much relevant information as
possible: log files, test data, the environment used, and so on.
4. What is the information you include in a test case?
Another rather basic skill for software testers is writing good test cases A
test case should have a clear description, reproduction steps, expected
results, test data, and priority. In some cases, if relevant, you might also
include preconditions to the test case or additional information about the
environment.
5. What is the difference between regression and retesting?
Regression and retesting fall into the category of change-related testing and
can be functional or non-functional. Retesting is done to validate that a
previously failing test is now passing, while regression testing means
retesting existing functionalities to make sure that they still work after
development changes were done in the area.
6. What is the regression testing process in your team? When do
you perform regression testing? How do you select which test to
execute during regression?
The answer here will differ based on your experience, and the process in your
previous projects. I've worked on projects where the last part of the sprint
was dedicated to regression testing, and on projects where the team
performed the regression tests before each release. In either case, the tests
to execute were selected so they all focused on the changed areas of the
application. Then again, they were prioritized, so the most important tests
were executed first.
7. What do you do when you don't have enough time to test?
If you're familiar with the classical testing principles, you know that
exhaustive testing is impossible. And even if it were possible, we rarely have
all the time in the world to test. The time constraint usually comes from
decision-making people in the team, such as project managers. In my
opinion, the best way is to assess the risks of what's being tested and
estimate how much time it would take to test all the high-risk cases. Based
on this, you can select the highest-priority tests to be run and the highest-risk
areas that can be affected.
8. How would you test this feature?
This is another rather common interview question. You are given a specific
feature, and you are asked to come up with the tests you would perform on
it. It can be something generic, like signing up for a Google account, or
something specific, on an internal application.
Either way, I recommend you start with the "happy flow" scenarios and only
afterward think about all the negative test cases. Don't be afraid to ask
questions - if you are not sure what a button or form should do, ask for
details. This way you can also identify better boundaries and equivalence
classes.
9. How would you test this object?
This is similar to the previous question, except you are given a physical
object to test. I've been asked how I would test an elevator, a blue ball, and a
coffee machine. It's good to try to give as many test examples as you can,
and again, if you have questions, don't hesitate to ask.
10. What is the most interesting bug you found?
This one is different from person to person so I cannot suggest an answer,
but I wanted to mention it so you keep it in mind. Because the time I got
asked it, I was caught so off-guard I had no idea how to answer it.
11. What is a mistake you did in your career? What did you learn
from it?
Again, the answer really depends on your experience. I always find that it's
best to be honest about your mistakes, and own up to them, and that applies
to interviews as well.
12. What is your experience with non-functional testing?
This depends from person to person, and from job to job. But it's a good
moment to expand on types of testing other than functional that you've
performed. If you did performance testing, mention the tools you worked it
and the tests you ran. If you worked on localization, mention how you went
about doing it. The same goes for security testing, accessibility testing, and
any other kind of non-functional testing.
13. What test management tools are you familiar with?
Some jobs might require you to know a specific tool. In my experience, I've
learned that if you know one or more test management tools, all the next
ones you'll be using are pretty much the same. Not in the sense that they
have the exact features, but they do share a lot of them. Also, we are
software professionals, so learning a new tool should not be that
complicated So just go ahead and mention what tools you have worked it,
how they are used in the testing process, and if you have any opinions on them,
mention why you prefer some tools over others.
14. What project management tools have you worked with?
The same as the question above, the answer will depend on what your
team(s) worked with. And just like the previous question, you can also say
why you like or dislike specific tools, and what features you find most useful.
15. What is your experience with Agile?
While not directly related to testing, it's good to have experience with Agile.
And if you don't yet, you can read up on it, and answer that even if you didn't
work on Agile projects, you know what Agile is, and the different frameworks,
such as Scrum and Kanban.
Automation and API Testing Interview Questions
I dedicated this section to the more technical software testing interview questions. I
will focus mostly on Selenium because it's still the standard when it comes to UI
automation. I will also include some object-oriented programming questions,
without focusing on a specific language.
But again, the questions will be different based on your skills and experience. For
example, someone with a lot of experience on Cypress will get a lot of questions on
Cypress, while someone with a lot of experience with mobile will be asked more
about Appium.
16. What is the automation process used in your project?
Are you using BDD or TDD? Is the automation team separate from the
manual testing team, or is everybody involved in the automation effort? Do
you automate tests for features that are under development, or is the
automation still behind the development timewise? The answer to these
questions all depend on how you are currently working, and there isn't
necessarily a good or a bad answer.
17. How did you choose the automation tools used?
Even if you were not involved in choosing the tools for automation, you can
still read up on this or ask your colleagues about how they selected the tools
you are currently using. Things to consider when choosing an automation tool
are:
- is it a free or a commercial tool?
- what is its learning curve?
- what features it offers?
- does it integrate with other tools the team is already using?
- what programming languages does it support?
18. How do you decide which tests to automate?
Automated tests should be repeatable tests, tests that would otherwise be
more prone to human error, tests with multiple data inputs, and tests that
would normally be difficult to run manually.
19. What are the locator strategies you use?
I'm talking here about the Selenium UI locators - ID, name, link and partial
link, tag, class, XPath, and CSS selector.
20. What is the difference between absolute and relative XPath?
The absolute XPath is the complete path of the element, while the relative
XPath starts from a referenced element. It's always better to use relative
XPath because it is less risky. If some elements on the page change, the
complete XPath will change as well, but using a relative XPath should be
safer in this situation.
21. How do you automate a specific feature?
This type of question is more to the point. I got asked how I would test a
drop-down, or a login, or similar things. You might even receive a small
coding exercise, to create automated tests for a given feature.
22. What is the difference between implicit and explicit waits in
Selenium?
The implicit wait in Selenium applies to all the web elements of the script and
means a fixed amount of time the driver waits for the element to be found
before it throws a NoSuchElementException. The explicit wait is set for a
specific element, and the driver waits for a certain condition to be met - such
as for the element to be clickable, for the element to be visible, for the
element not to be visible, and so on.
23. What design patterns have you used in your test automation
projects?
The most popular design pattern in UI test automation is POM (or Page Object
Model). It's a pattern where the UI elements are stored in page object
repositories, which are separate from the tests. But if you've used other design patterns, feel free to expand on them as much as possible, explaining why you chose them, how they are used, and what their benefits are
24. What are the CRUD methods for REST APIs?
The CRUD HTTP methods are: POST for Create, GET for Read, PUT and PATCH
for Update, and DELETE for delete.
25. What is the difference between a PUT and a POST request?
The PUT method updates an existing resource on the server. The POST
request creates a new resource. Sending the same PUT request multiple
times will have the same result every time - the same resource will be
updated. Sending the same POST request multiple times will either create
multiple resources or return an error.
26. What are the HTTP response code groups?
The HTTP response codes fall into 5 main categories:
- 1xx: information;
- 2xx: success;
- 3xx: redirect;
- 4xx: client error;
- 5xx: server error.
27. What are the 4 OOP principles? How can you apply them to test
automation?
The 4 principles in object-oriented programming are encapsulation,
inheritance, polymorphism, and abstraction. You can check out this series on
OOP in test automation for more details on each one.
28. What are method overloading and method overriding?
Method overloading means having the same method with different signatures
and different implementations. Method overriding is when a method from the
parent class is written with a different implementation in the derived class.
29. What is the difference between an abstract class and an
interface?
An abstract class contains implementations for its method, while the interface
does not. A class can inherit a single abstract class, but it can inherit multiple
interfaces. An abstract class can have non-abstract methods, and any
modifiers, while all methods in an interface are public.
30. What version control tools are you familiar with?
This one again is subjective to your experience. Most people these days
probably worked with Git, but there are other version control tools out there.
If you've worked with other tools, make sure to mention them.
The Takeaway
In this post, I tried to add my favorite software testing interview questions I like to
ask and be asked, along with their answers. Of course, the interview will differ
depending on what the company is looking for, and on the candidate's experience
and skills. However, I personally encountered all of these questions at some point in
my career.