![]() |
VOOZH | about |
Software testing is the process of evaluating a software application to verify that it works as intended and meets specified requirements. It helps identify defects, improve quality, and ensure the software is reliable before it is released to users.
Below are the questions which cover software testing concepts for freshers preparing for interviews.
SDLC (Software Development Life Cycle) is a structured process used to plan, design, develop, test, deploy, and maintain software applications. It provides a systematic approach to software development, ensuring high quality, timely delivery, and efficient project management.
Software testing can be classified into different types based on the testing approach, purpose, and execution method. Each type helps ensure the software meets quality, functionality, performance, and reliability requirements.
| Testing Type | Short Definition |
|---|---|
| Manual Testing | Testing performed manually without automation tools to verify functionality. |
| Automation Testing | Testing using scripts and tools to execute test cases automatically. |
| White Box Testing | Testing internal code structure and logic with access to source code. |
| Black Box Testing | Testing functionality based on requirements without knowing internal code. |
| Grey Box Testing | Testing with partial knowledge of internal system structure. |
| Functional Testing | Testing the system against functional requirements and specifications. |
| Non-Functional Testing | Testing system performance, reliability, usability, and other quality attributes. |
| Unit Testing | Testing individual components or modules independently. |
| Integration Testing | Testing interaction between combined modules. |
| System Testing | Testing the complete integrated system as a whole. |
| Performance Testing | Testing system speed, responsiveness, and stability under workload. |
| Usability Testing | Testing how user-friendly and easy the application is to use. |
| Compatibility Testing | Testing application performance across different devices, browsers, and environments. |
| Incremental Testing | Testing modules step by step by integrating them gradually. |
| Non-Incremental Testing | Testing all modules together after complete integration. |
| Top-Down Testing | Testing higher-level modules first, then lower-level modules. |
| Bottom-Up Testing | Testing lower-level modules first, then higher-level modules. |
| Load Testing | Testing system behavior under expected user load. |
| Stress Testing | Testing system stability under extreme workload conditions. |
| Testing system performance when user load increases or decreases. | |
| Stability Testing | Testing system reliability over an extended period. |
STLC (Software Testing Life Cycle) is a systematic process that defines the various stages involved in software testing. It ensures that testing activities are performed in a structured manner to improve software quality and identify defects before release.
There are the six major phases of the Software Testing Life Cycle (STLC) in which we are discussing here in detail:
Phases of STLC
Levels of Testing refer to the different stages at which software is tested during the development lifecycle. Each level focuses on a specific part of the application to ensure quality and identify defects early.
A bug is a flaw, error, or defect in a software application that causes it to produce incorrect or unexpected results or behave differently from the specified requirements. Bugs are identified during testing and are fixed by developers before the software is released.
Some of the reasons why software testing is importantare:
A Test Case is a documented set of conditions, inputs, test steps, and expected results used to verify whether a specific feature or functionality of a software application works correctly. It helps ensure that testing is performed consistently and systematically.
A Test Plan is a document that outlines the testing strategy, objectives, scope, resources, schedule, and approach for a software testing project. It serves as a roadmap to ensure testing activities are planned and executed effectively.
Quality Assurance (QA) is a process-oriented approach that focuses on preventing defects by ensuring that proper processes, standards, and methodologies are followed throughout the software development lifecycle. Its goal is to improve software quality and ensure that the final product meets specified requirements.
A Traceability Matrix (usually called Requirement Traceability Matrix – RTM) is a document used in software testing to map and track requirements with corresponding test cases. It ensures that all requirements are covered and tested properly.
Severity and Priority are two important terms used in defect (bug) management to classify and handle issues effectively during software testing.
The Waterfall Model is a linear and sequential software development model where each phase is completed before moving to the next. It follows a step-by-step approach with no overlap between phases.
The Agile Model is an iterative and flexible software development approach where the project is divided into small increments called iterations or sprints. Each sprint delivers a working part of the software.
Below are software testing questions designed for intermediate candidates.
A User Story is a simple, short description of a software feature written from the end user’s perspective. It explains what the user wants to achieve and why they need it, helping the development team understand the requirement clearly.
The test environment is the hardware and software set up for the testing teams to run test cases. This test environment setup varies from product to product and its configuration completely depends on the application under test requirement. The easiest way to organize a test environment is through automation.
Cookie Testing is a type of software testing used to verify that cookies in a web application are created, stored, updated, and deleted correctly. It ensures that cookies function properly and securely to maintain user sessions and preferences.
Bottom-Up Testing is an integration testing approach in which lower-level modules are tested first and then gradually integrated with higher-level modules. Driver programs are used to simulate higher-level modules that are not yet developed.
Dynamic testing is a software testing technique where the dynamic behavior of the code is checked. The purpose of this type of testing is to check and analyze the software behavior with dynamic variables and find the weak areas in the software runtime environment.
Risk-Based Testing (RBT) is a testing approach in which testing activities are prioritized based on the level of risk associated with different features or functionalities of the application. High-risk areas are tested more thoroughly to reduce the chances of critical failures.
Fuzz Testing is a Software Testing technique that uses invalid, unexpected, or random data as input and then checks for exceptions such as crashes and potential memory leaks. It is an automated testing technique that is performed to describe the system testing processes involving randomized or distributed approaches.
A Test Harness is a collection of tools, test data, drivers, stubs, and scripts used to execute test cases and evaluate the results automatically. It provides a controlled environment for testing software components and verifying their behavior.
Concurrency Testing also known as Multi-user Testing checks the software performance when multiple users are logged into the system and perform actions simultaneously.
Defect Age is defined as the time difference between the defect detected date and the current date provided the defect is still in the open state. It is divided into two parameters:
Un-Installation Testing is a type of testing that verifies whether a software application can be completely removed from a system without leaving unwanted files, folders, registry entries, or configuration settings behind.
Equivalence Class Partitioning (ECP) is a black-box testing technique in which input data is divided into groups called equivalence classes. Test cases are designed from each class because all values within the same class are expected to behave similarly.
Software Configuration Management (SCM) is a process to manage, organize, and control the changes in the code, document, and other entities during the Software Development Life Cycle (SDLC).
A Test Script is a set of instructions or code written to automate the execution of test cases. It defines the steps, input data, and expected results required to verify that a software application functions correctly.
A Test Bed is a testing environment that includes the necessary hardware, software, network configurations, test data, and tools required to execute test cases. It provides a controlled setup for validating the functionality and performance of a software application.
Sanity Test also known as Surface Testing is a type of software testing that is performed to make sure that the code changes made are working properly without any bugs.
Test Closure is the final phase of the Software Testing Life Cycle (STLC) in which all testing activities are completed, evaluated, and documented. The testing team reviews the test results, ensures that testing objectives have been met, and prepares final reports for stakeholders.
A Stub is a temporary piece of code used during Top-Down Integration Testing to simulate the behavior of lower-level modules that are not yet developed or available. It allows testing of higher-level modules without waiting for all dependent components to be completed.
A Driver is a temporary piece of code used during Bottom-Up Integration Testing to simulate the behavior of higher-level modules that are not yet developed or available. It calls and controls lower-level modules to test their functionality.
A Cause-Effect Graph is a black-box testing technique that represents the relationship between input conditions (causes) and output actions (effects) using a graphical model. It helps identify test cases by analyzing logical combinations of inputs and their corresponding outputs.
A Test Strategy is a high-level document that defines the overall approach, objectives, testing methods, tools, and guidelines for a software testing project. It provides a framework for planning and executing testing activities effectively.
Test Scenario is a detailed document that covers end to end functionality of a software application that can be tested. It is also known as Test Possibility or Test Condition. In this, the testers need to put themselves in the place of the user as they test the software application from the user's point of view.
Code Coverage s a software testing metric that measures the percentage of source code executed during testing. It helps determine how much of the application's code has been tested and identifies areas that may require additional test cases.
Below are advanced software testing interview questions designed for experienced professionals.
Software testing plays a crucial role in the software development process by ensuring that the application functions correctly, meets user requirements, and delivers a high-quality product. It helps identify defects early, reduce risks, and improve the reliability and performance of the software before release.
ABug Report is a document created by a tester to record and communicate a defect found in a software application. It contains detailed information about the bug, helping developers understand, reproduce, and fix the issue efficiently.
Risk-based testing involves accessing the risk based on the software complexity, frequency of use, and many other factors. It prioritizes testing of the functionality and features of the system which are more impactful and are likely to have defects. The purpose of risk-based testing is to
Testing Metrics are quantitative measures used to evaluate the effectiveness, quality, progress, and performance of the software testing process. They help teams monitor testing activities and make informed decisions.
Defect Cascadingis a situation where a defect in one module or component causes defects in other related modules, leading to a chain reaction of errors throughout the system. This usually occurs when an existing defect is not identified and fixed at an earlier stage of development.
Test-Driven Development (TDD)is a software development approach in which test cases are written before the actual code is developed. Developers first create a test, then write the minimum code required to pass the test, and finally refactor the code to improve its quality.
| Verification | Validation |
|---|---|
| Verification is the process of checking whether the software achieves its goals without any bugs. | Validation is the process of checking whether the software product has high-level requirements. |
| Verification is static testing. | Validation is Dynamic Testing. |
| Quality assurance comes under verification. | Quality control comes under validation. |
| In verification, the execution of the code does not happen. | In Validation, the execution of the code happens. |
| In verification, it is verified whether the inputs follow the outputs or not. | In Validation, it is validated whether the user accepts the product or not. |
| Verification is done before validation testing. | Validation testing takes place after verification testing. |
| Here it is checked whether we are developing the right product or not. | Here it is checked whether the product developed is right or not. |
Read More:Verification and Validation.
The main aim of white-box testing is to verify the following areas in the software:
| Functional Testing | Non-Functional Testing |
|---|---|
| Verifies what the system does. | Verifies how well the system performs. |
| Tests features and functionality against requirements. | Tests performance, usability, reliability, security, and scalability. |
| Focuses on business requirements and expected behavior. | Focuses on quality attributes of the application. |
| Ensures functions work correctly. | Ensures the system performs efficiently under various conditions. |
| Examples: Unit Testing, Integration Testing, System Testing, UAT. | Examples: Performance Testing, Load Testing, Stress Testing, Usability Testing. |
Read More: Functional and Non-functional testing.
| Data-driven testing | Retesting |
|---|---|
| It is an automated testing procedure. | It is a manual testing procedure. |
| In this, the application is tested with multiple test data. | In this, the application is tested with an entirely new set of data. |
| Most of the time this testing is part of regression testing. | Most of the time this testing is independent of regression testing. |
| It is a very easy procedure than retesting. | It is a very tedious and boring procedure as the tester needs to give input manually. |
Developers can perform testing on their own code, but relying only on developers for testing is not recommended. Since developers are closely involved in building the software, they may overlook defects due to familiarity with the code and assumptions about how it should work. Independent testers provide an unbiased perspective and are more likely to identify issues that developers might miss.
A Software Developer should possess a combination of technical skills, problem-solving abilities, and professional qualities to develop high-quality software efficiently and effectively.
Acceptance testing is based on user requirements and function processing. It is also known as User Acceptance Testing (UAT). It is a process that verifies if a solution is conforming to specified requirements and user requirements or not. It is done by the customer before accepting the final product. Some of the benefits of user acceptance testing are:
The Bug Life Cycle (Defect Life Cycle) is the process through which a defect goes from identification to closure. It defines the various stages of a bug and helps track its status until it is resolved.
Usability testing means determining the ease with which an end-user can easily access the application with or without programming language knowledge. It is also known as User Experience testing which is recommended during the initial design phase of SDLC. It is done to serve the following purpose: