Are you wondering how to prepare for your next QA interview? Well, here is a list of typical QA interview questions that will help prepare you for that.
What is black box testing?
Black box testing involves testing a software system in which only the input and output are known, but it is not known how the output is 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. The inner workings of a program is rarely considered.
What is regression testing?
Regression testing is used in two ways and common to these is the idea of reusing old tests.
- It is used to make sure that a fix does what it’s supposed to do.
- It is used 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 and/or stakeholders of a piece of software. It mainly tends to focus on validation type testing.
What is the difference between validation and verification?
According to the IEEE Standard Glossary of Software Engineering Terminology (Std 610.12-1990) validation is defined as follows.
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. (2) Formal proof of program correctness.
What is load testing?
Load testing is a performance testing technique in which one 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 given 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 in which a system is tested close to and even beyond its “breaking point”. It is intended to test the robustness of a system. Below are some of the things that we are able to 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 is able to handle before failing.
- How well the system performs when handling 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 refers to the different states that an application can be in. Take for instance an ecommerce website. In which case when a user clicks Checkout, they are presented with a payment screen; once payment info is entered and the user clicks Purchase, the shopping cart is emptied and a confirmation screen is shown. Some of the things that we could test in this scenario are listed below.
- 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 it is switching between states?
- If we click Purchase multiple times does the customer get charged more than once.
- If we refresh the application while a transaction is being processed, 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 to always come first, it fails whenever Y comes first.
Race conditions can be difficult to troubleshoot given that they only occur under special conditions. Therefore, be specially 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). This 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 case 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 paces to find errors are near boundaries the programmer did intend.Kaner, Falk, Nguyen, Testing Computer Software, pp. 5
What is beta testing?
Beta testing is used to get user feedback. The main idea behind it is to let people who represent your market to use your unfinished product as if it was the finished version. Their feedback is used to solve most remaining bugs and any other necessary changes before the product is shipped out to the market.
What is performance testing?
Performance testing a type of non-functional testing. It is used to evaluate the performance of an application in varying circumstances. Moreover, it helps to shine the light on areas of an application that need improvement before it is launched to the public.
Performance testing includes but is not limited to the following.
What is white box testing?
White box testing involves testing a software system in which we know the input, output and how the output is produced.