Software Testing

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 11

Software testing involves evaluating and verifying a software product's

functionality.
Basically, it checks whether the software product matches anticipated
requirements and makes sure it is defect-free

Type Description
A programmatic test that tests the internal working of a unit of
Unit Testing
code, such as a method or a function.
Integration Ensures that multiple components of systems work as expected
Testing when they are combined to produce a result.
Regression Ensures that existing features/functionality that used to work are
Testing not broken due to new code changes.
System Complete end-to-end testing is done on the complete software to
Testing make sure the whole system works as expected.
A quick test performed to ensure that the software works at the
Smoke most basic level and doesn’t crash when it’s started. Its name
Testing originates from the hardware testing where you just plug the
device and see if smoke comes out.
Ensures that the software performs according to the user’s
Performance
expectations by checking the response time and throughput
Testing
under specific load and environment.
User- Ensures the software meets the requirements of the clients or
Acceptance users. This is typically the last step before the software is live, i.e.
Testing it goes to production.
Ensures that the performance of the software doesn’t degrade
when the load increases. In stress testing, the tester subjects the
Stress Testing
software under heavy loads, such as a high number of requests or
stringent memory conditions to verify if it works well.
Measures how usable the software is. This is typically performed
Usability
with a sample set of end-users, who use the software and provide
Testing
feedback on how easy or complicated it is to use the software.
Now more important than ever. Security testing tries to break a
Security software’s security checks, to gain access to confidential data.
Testing Security testing is crucial for web-based applications or any
applications that involve money.
Unit testing : It a level of the software testing process where individual
units/components of a software/system are tested.
Integration testing : It is a level of the software testing process where individual
units are combined and tested as a group.
System testing : It is a level of the software testing process where a complete,
integrated system/software is tested.
4. Acceptance testing : It is a level of the software testing process where a
system is tested for acceptability.
The purpose of this test is to evaluate the system’s compliance with the
business requirements and assess whether it is acceptable for delivery.

1. Functional Testing
Functional Testing is a type of Software Testing in which the system is tested
against the functional requirements and specifications. Functional testing
ensures that the requirements or specifications are properly satisfied by the
application.
Non-functional Testing is a type of Software Testing that is performed to verify
the non-functional requirements of the application. It verifies whether the
behavior of the system is as per the requirement or not. It tests all the aspects
that are not tested in functional testing
Performance Testing is a type of software testing that ensures software
applications perform properly under their expected workload.
In Stress Testing , we give unfavorable conditions to the system and check how
it perform in those conditions.
Smoke Testing is done to make sure that the software under testing is ready or
stable for further testing
Key Differences:
Feature Regression Testing Sanity Testing
Scope Entire system or specific modules Core functionalities
Ensure existing functionality
Goal Quick check for stability
remains intact
Test cases Re-execution of existing test cases Small subset of test cases
When to After major releases or significant
After any changes to the software
use changes
Sanity
Testing is
a high-
level
testing
process
that
verifies
the basic
functional
ity of a
software
applicatio
n after a
change or
update.
It's a quick
smoke
test to
ensure
that the
core
features
are
working
as
expected.
Acceptance testing is done by the customers to check whether the delivered
products perform the desired tasks or not, as stated in the requirements.
User Acceptance Testing is a testing methodology where clients/end users
participate in product testing to validate the product against their requirements
Exploratory Testing is a type of software testing in which the tester is free to
select any possible methodology to test the software. It is an unscripted
approach to software testing.
Adhoc testing is a type of software testing that is performed informally and
randomly after the formal testing is completed to find any loophole in the
system
Security Testing is a type of Software Testing that uncovers vulnerabilities in the
system and determines that the data and resources of the system are protected
from possible intruders.
Advantages of Software Testing

1. Improved software quality and reliability.


2. Early identification and fixing of defects.
3. Improved customer satisfaction.
4. Increased stakeholder confidence.
5. Reduced maintenance costs.
6. Customer Satisfaction
7. Cost Effective
8. Quality Product
9. Low Failure
10.Bug-Free Application
11.Security
12.Speed Up the Development Process
13.Early Defect Detection
14.Reliable Product
Test Cases can be simply determined as conditions that a tester will check
whether the code runs perfectly or not.
SDLC vs. STLC: A Comparison
Both SDLC (Software Development Life Cycle) and STLC (Software Testing Life
Cycle) are integral parts of software development, but they have distinct
focuses.
SDLC (Software Development Life Cycle)
 Purpose: Defines the overall framework for developing software, from
inception to deployment and maintenance.
 Phases: Typically includes requirements gathering, design, development,
testing, deployment, and maintenance.
 Focus: The entire software development process, encompassing planning,
execution, and delivery.
STLC (Software Testing Life Cycle)
 Purpose: Outlines the specific activities involved in testing software to
ensure its quality.
 Phases: Typically includes test planning, test design, test development,
test execution, and test reporting.
 Focus: The testing activities within the SDLC, ensuring that the software
meets specified requirements.
In summary:
 SDLC provides the overall framework for software development.
 STLC focuses specifically on the testing activities within that framework.
What is the Waterfall Process?

Ans: The Waterfall process is a step-by-step development and project


management process. As the name suggests, this model follows a straight path
where each step (like planning, designing, building, testing, and launching)
needs to be finished before moving to the next.
debugging is the process of fixing a bug in the software. When there’s a
problem with software, programmers analyze the code to figure out why
things aren’t working correctly. They use different debugging tools to
carefully go through the code, step by step, find the issue, and make the
necessary corrections.
Bug Life Cycle is a systematic process used to track and manage defects or bugs
discovered in software development. It outlines the various stages a bug goes
through from the time it is reported until it is resolved.
Typical stages of a bug life cycle:
1. New: The bug is initially reported and assigned a unique identifier.
2. Assigned: The bug is assigned to a developer or tester for investigation.
3. Open: The developer is actively working on the bug.
4. Fixed: The developer has fixed the bug and believes it is resolved.
5. Retest: The bug is retested to verify if the fix was successful.
6. Closed: If the bug is successfully fixed and retested, it is marked as closed.
7. Reopened: If the bug reappears after being closed, it is reopened and the
process starts again.
STLC is a structured approach to software testing, divided into several distinct
phases. Here's a breakdown of each phase:
1. Test Planning:
o Define the scope of testing.
o Identify testing objectives and goals.
o Create a test plan, including test strategy, resources, and timelines.
2. Test Design:
o Develop test cases based on requirements and design
specifications.
o Identify test data and test environments.
o Create test scripts or scenarios.
3. Test Development:
o Develop test scripts or automation scripts.
o Set up test environments.
o Prepare test data.
4. Test Execution:
o Execute test cases and record results.
o Identify and report defects.
o Retest fixed defects.
5. Test Reporting:
o Prepare test reports summarizing test results, defects, and overall
status.
o Analyze test data to identify trends and areas for improvement.
Test Plan and Test Strategy are both essential components of the Software
Testing Life Cycle (STLC), but they serve different purposes.
Test Strategy
 High-level document: Provides a broad overview of the testing approach
and objectives.
 Scope: Defines the overall testing scope, including types of testing to be
conducted (e.g., functional, non-functional, performance).
 Goals: Outlines the desired outcomes of the testing process, such as
defect detection, risk mitigation, and quality assurance.
 Resources: Specifies the necessary resources, including personnel, tools,
and infrastructure.
 Timeline: Establishes the overall testing timeline and milestones.
Test Plan
 Detailed document: Outlines the specific activities and tasks required to
execute the testing strategy.
 Scope: Defines the specific test cases, test data, and test environments.
 Goals: Specifies the specific objectives of each testing activity.
 Tasks: Lists the detailed tasks to be performed, such as test case design,
test execution, and defect reporting.
 Metrics: Defines the metrics to be used to measure the effectiveness of
testing.
In summary:
 Test Strategy provides the overarching framework for testing.
 Test Plan details the specific activities and deliverables required to
achieve the testing goals.
Test Case vs. Test Plan: A Comparison
Both test cases and test plans are essential components of the software testing
process, but they serve different purposes.
Test Case
 Scope: A specific set of actions or inputs to be performed on a software
system to verify a particular requirement or functionality.
 Level of detail: Detailed instructions on how to execute a test.
 Focus: Verifying specific requirements or functionalities.
 Purpose: To ensure that the software behaves as expected under different
conditions.
Test Plan
 Scope: A high-level document that outlines the overall testing approach
and objectives.
 Level of detail: Provides a general overview of the testing process.
 Focus: Defining the scope, resources, and timeline for testing.
 Purpose: To guide the testing activities and ensure that they are aligned
with the project goals.
In summary:
 Test cases are the individual steps or actions that are executed to verify
specific requirements.
 Test plans provide the overall framework and guidance for the testing
process.
Relationship between test cases and test plans:
 The test plan defines the overall testing strategy and objectives.
 The test cases are derived from the test plan and provide the specific
instructions for executing the tests.
Severity vs. Priority in STLC
Severity and priority are two important concepts in software testing that help
prioritize and manage defects.
They are used to assess the impact of a bug on the software system and
determine the urgency of its resolution.
Severity
 Definition: A measure of the impact a defect has on the software system.
 Factors: Severity is typically determined based on factors like
functionality, usability, performance, and security.
 Levels: Severity levels can vary depending on the organization, but
common levels include:
o Critical: The defect prevents the software from being used.
o Major: The defect significantly affects the software's functionality.
o Minor: The defect is inconvenient but does not affect the core
functionality.
o Low: The defect is cosmetic or has minimal impact.
Priority
 Definition: A measure of how urgently a defect needs to be fixed.
 Factors: Priority is often determined based on the severity of the defect,
its impact on users, and business objectives.
 Levels: Priority levels can also vary, but common levels include:
o High: The defect must be fixed immediately.
o Medium: The defect should be fixed as soon as possible.
o Low: The defect can be fixed at a later time.
Who Decides Severity and Priority:
Typically, a testing team or a defect triage committee decides the severity and
priority of a defect. This decision is often made in collaboration with developers,
project managers, and business analysts.
Factors influencing decisions:
 Impact on users: How many users are affected by the defect?
 Business impact: Does the defect affect critical business processes?
 Risk: What is the risk of the defect causing further problems?
 Cost: How expensive is it to fix the defect?
Agile testing is a software testing approach that aligns with the principles of
Agile software development. It emphasizes flexibility, collaboration, and
continuous feedback throughout the development process. Unlike traditional
waterfall methods, where testing occurs at the end of the development cycle,
Agile testing is integrated into each iteration or sprint of development.
 Continuous Testing: Testing is performed throughout the development process,
rather than waiting until the end.
 Collaboration: Testers work closely with developers and other stakeholders to
ensure quality.
Test data is a set of input values or conditions that are used to evaluate the
behavior of a software system under various scenarios.
It helps to identify defects, validate functionality, and assess the quality of the
software.
Types of test data:
 Positive test data: Valid data that is expected to produce the correct
output.
 Negative test data: Invalid data that is expected to produce an error or
unexpected result.
 Boundary value test data: Data that tests the boundaries of input values.
 Equivalence class test data: Data that represents different groups of
equivalent values.

Testing is a critical phase in the software development lifecycle (SDLC) that


ensures the quality of a software product. It involves systematically checking a
software application or system to identify and correct errors or defects before it
is released to end-users.
Types of Testing
There are various types of testing, each with its specific purpose and focus:
 Unit Testing: Verifies the correctness of individual units or components of
the software.
 Integration Testing: Checks how different components or modules
interact with each other.
 System Testing: Evaluates the overall functionality of the software system
as a whole.
 Acceptance Testing: Determines if the software meets the specified
requirements and is ready for release.
 Regression Testing: Verifies that changes made to the software have not
introduced new defects or affected existing functionality.
 Performance Testing: Assesses the software's performance under various
load conditions.
 Security Testing: Identifies vulnerabilities and weaknesses in the
software's security.
 Usability Testing: Evaluates the software's ease of use and user
experience.
 Compatibility Testing: Checks how the software performs on different
hardware, software, and network configurations.
Test Case, Test Plan, and Test Strategy
 Test Case: A document that outlines the steps to be performed, the
expected results, and the actual results of a test.
 Test Plan: A comprehensive document that defines the scope, objectives,
resources, and schedule of testing activities.
 Test Strategy: A high-level plan that outlines the overall approach to
testing, including the types of testing to be performed, the testing
methodologies, and the expected outcomes.
Software Testing Life Cycle (STLC)
The STLC is a framework that defines the phases involved in testing activities. It
typically includes:
1. Test Planning: Creating a test plan that outlines the scope, objectives, and
resources for testing.
2. Test Design: Designing test cases based on the requirements and
specifications.
3. Test Development: Developing test scripts or procedures.
4. Test Execution: Executing the test cases and recording the results.
5. Test Reporting: Analyzing the test results and generating test reports.
6. Test Closure: Finalizing the testing activities and archiving test artifacts.
Agile Testing
Agile testing is a testing approach that aligns with the principles of agile
development. It emphasizes continuous testing throughout the development
process, rather than waiting until the end. Key characteristics of agile testing
include:
 Iterative and incremental: Testing is conducted in short iterations or
sprints.
 Collaborative: Testers work closely with developers and other
stakeholders.
 Adaptive: Testing adapts to changes in requirements and the evolving
product.
 Automated: Automation is used to improve efficiency and reduce manual
effort.
Bug Life Cycle
The bug life cycle refers to the stages a defect goes through from the time it is
discovered to the time it is resolved. It typically includes:
1. New: The bug is first reported.
2. Assigned: The bug is assigned to a developer for investigation.
3. Fixed: The developer fixes the bug.
4. Retest: The bug is retested to verify the fix.
5. Closed: If the bug is fixed and retesting is successful, it is closed.
6. Reopened: If the bug is still present after the fix, it is reopened.
Severity and Priority
 Severity: The impact of the bug on the software system. It is typically
categorized as high, medium, or low.
 Priority: The urgency of fixing the bug. It is often determined by factors
such as the severity of the bug, its impact on users, and business
objectives
1. Explain boundary value analysis in software testing.
BVA (Boundary Value Analysis) is a black box software testing technique that
uses boundary values to create test cases.
Input values near the boundary have a higher probability of error, so BVA is
used to test boundary values. BVA includes values at the boundaries in the test
cases. If the input falls within the boundary range, then the test is positive; if it
falls outside, then it is negative. There are several types of values, including
maximum or minimum, inside or outside edge, and typical or error values.
9. What is a bug report?
During testing, a tester records their observations, findings, and other
information useful to the developers or the management. All this data belongs
to a test record, also called a bug report.

You might also like