Are you wondering how to prepare for an upcoming QA interview? Here is a list of typical QA interview questions that will help prepare you for that.
You will love our Java and Selenium interview questions if you enjoy this content.
What is black-box testing?
Black box testing involves testing a software system in which we know only the input, but we do not see how the output gets produced.
What is functional testing?
Functional testing is one type of black-box testing. It consists of testing functions by feeding them input and evaluating the output. However, there is rare consideration for the inner workings of a program.
What is regression testing?
There are two ways to use regression testing, and familiar to these is the idea of reusing old tests.
- To ensure that a fix does what it’s supposed to do.
- To make sure that a fix doe not compromise the overall integrity of a program.
What is acceptance testing?
Acceptance testing or otherwise User Acceptance Testing (UAT) is the type of testing performed by end-users or stakeholders of a piece of software. It mainly tends to focus on validation-type testing.
What is the difference between validation and verification?
The IEEE Standard Glossary of Software Engineering Terminology (Std 610.12-1990) defines validation as below.
“The process of evaluating a system or component during or at the end of the development process to determine whether it satisfies specified requirements.”
On the other hand, the same standard defines verification as follows.
- (1) The process of evaluating a system or component to determine whether the products of a given development phase satisfy the conditions imposed at the start of that phase.
- Formal proof of program correctness.
What is load testing?
Load testing is a performance testing technique that sees how a system behaves under heavy demand. Load testing examples include but are not limited to the following.
- Test the system with the maximum number of users allowed.
- Send the maximum number of requests that a system can handle at any time.
- Send the largest file size that a system can handle.
- Test a system under low memory conditions.
What is stress testing?
Stress testing is a performance testing technique used to test a system close to and beyond its “breaking point.” I’s intention is to test the robustness of a system. Below are some of the things that we can measure by conducting a stress test.
- How well the system performs under extreme load.
- How well the system’s error handling capabilities perform under stress.
- What is the maximum number of users that the system can handle before failing?
- How well the system performs when taking the maximum number of requests per second.
What are equivalence classes?
When we expect the same result from two tests, we say that they are equivalent. A group of tests forms an equivalence class if they meet the following criteria.
- They all test the same thing.
- If one test catches a bug, the others probably will too.
- If one test doesn’t catch a bug, the others probably won’t either.
Source: Kaner, Falk, Nguyen. Testing Computer Software, pp. 128.
What are state transitions?
State transitions refer to the different states that an application can be in. Take, for instance, an e-commerce website. When a user clicks Checkout, they see a payment screen; once they enter their payment info and the user clicks Purchase, it results in an empty shopping cart, followed by a confirmation screen.
Here are some of the things that we could test in this scenario.
- Does the program switch correctly from state to state?
- Is it possible to make the application do these things out of sequence?
- Is it possible to make the application lose track of its current state?
- What does the program do with user input while switching between states?
- Does the user get charged more than once if we click Purchase multiple times?
- If we refresh the application while processing a transaction, does the program crash?
What is a race condition?
A race condition can occur between two events. For the sake of argument, let’s call these events X and Y. If X comes first, the program works. Since the program expects X always to go first, it fails whenever Y comes first.
Race conditions can be challenging to troubleshoot, given that they only occur under particular conditions. Therefore, be vigilant for race conditions whenever you have “irreproducible” bugs!
What are boundary conditions?
Let’s assume that we have a program that has an input field where a user can enter the current month in number format (e.g., January = 1 and December = 12). That would mean that the numbers between 1 and 12 (inclusive) would be acceptable values, while anything outside this range would be unacceptable or outside the boundaries. One boundary case would be 0 and 1; another possibility would be 12 and 13.
Not every boundary in a program is intentional, and not all intended boundaries are set correctly. This is what most bugs are–most bugs cause a program to change its behavior when the programmer didn’t want or expect it to, or cause the program not to change its behavior when the programmer did expect it to. Not surprisingly, some of the best places to find errors are near boundaries the programmer did intend.
Kaner, Falk, Nguyen, Testing Computer Software, pp. 5
What is beta testing?
We use beta testing to get user feedback. The main idea is to let people who represent your market use your unfinished product as if it was the finished version. Their feedback is used to solve most remaining bugs and any necessary changes before delivering the product to the market.
What is performance testing?
Performance testing is a type of non-functional testing. We use it to evaluate the performance of an application in varying circumstances. Moreover, it helps shine the light on areas of an application that need improvement before launching to the market.
Performance testing includes but is not limited to the following.
- Load testing
- Stress testing
- Soak testing
What is white box testing?
White box testing involves testing a software system in which we know the input and output and how the output gets produced.