SOFTWARE TESTING
Group 09 Members:
Hafiza Laiba F2023266320
Laiba [Link] F2023266330
Afra Fatima F2023266176
Maria hanif F2023266779
What is Software?
• Software is basically a set of intrustions or commands that tells a
computer what to do.
•
What is Software Testing?
Please click to edit text
what is Software Testing?
Software testing means checking how well a software work
its quality, and how it performs
to make sure it meets the requirements.
Types of software testing
Please click to edit text
Unit
System Regression
Testing Integration
Testing Testing
Testing
bang
bang
top down
bottom up
mixed
Unit Testing
• Unit testing is the process of checking small pieces of codes to
ensure that the individual parts of a program work properly of their
own.
• unit tests are used to test individual blocks (units) of functionality.
• unit Testing is done by developers.
Integration Testing
• Integration testing is used to make sure that the combined parts of a
system or software work together properly and meet the expected
requirements.
• It occurs after unit testing and before system testing.
Types of Integration Testing.
BiG-Bang
Top Down
Bottom Up
Mixed
System Testing
• System Testing is a level of testing they validates the complete and
fully integrated software product.
• The purpose of system test is to evaluate the end-to-end system
specifications.
• System testing is a Black Box testing.
• system testing categories based on: Who is Doing the Testing?
• System Testing categories based on: Functional/Non-Functional
Requirements.
System Testing
performance / Non Functional
based on who is
doing testing i-volume
ii-load
i- Alpha iii-stress
ii- Beta iv-security
iii-Acceptance v-configuration
vi-compatibility
vii-recovery
viii-install
Regression Testing
• Regression Testing is a type of Software Testing that verifies
the changes made to the system, such as Bugs fixes or new
features, do not impact previously working Functionality.
There are several types of
Regression Testing, Including:
• Full Regression Testing: Testing the entire Application from start to
finish after changes have been made.
• Partial Regression Testing: Testing only those parts of application
that were affected by the changes.
HOW TO PERFORM SOFTWARE TESTING?
Assess Development Plan and
Status
Develop the Test Plan
Test Software Requirements
Steps Test Software Design
Build Phase Testing
for software testing Execute and Record Result
Acceptance Test
Report Test Results
The Software Installation
[Link]
Test Software Changes
Assess Development Plan Develop the Test Test Software
Plan Requirements
and Status
This step is essential for creating Creating a testing plan is Most software failures happen
a Verification, Validation, and similar to any other software because the requirements are
Testing Plan to evaluate the planning process. The plan's incomplete, incorrect, or
software. Testers check if the structure stays the same, but inconsistent. If requirements
event plan is complete and its details depend on how are not clear during the
accurate. Based on the project's risky the testers think the planning phase, it can lead to
details, they can estimate the software is. higher implementation costs.
resources needed to test the Testers need to verify that the
software. requirements are accurate,
complete, and don’t conflict
with each other.
Test Software Design Build Phase Execute and Record
Testing Result
The method used to build
This step tests the external and software affects the type and This step tests the code while
internal design using verification amount of testing needed. it is running. The methods and
techniques. Testers check if the More automation means less tools from the test plan are
design meets the requirements testing is required. However, used to check if the code
and works effectively and if the software is developed meets the software
efficiently on the chosen using the waterfall method, requirements and matches the
hardware. it’s more prone to errors and design structure.
needs verification. Fixing
issues during development is
much cheaper than finding
them later during testing.
Acceptance Test Report Test The Software
Results Installation
Test reporting is an ongoing
Acceptance testing helps users process, done through After the test team confirms
see if the software is practical and speaking and writing. It's the software is ready, it should
useful for their daily tasks. It important to report problems be tested in the production
checks if the software works as early so they can be fixed environment to ensure it works
users expect, not just what the quickly and cheaply. with the operating system,
requirements say it should do. other software, and
procedures.
Test Software Changes Evaluate Test
Effectiveness
Although it's often seen as Step Testing improvements are best
10, this idea applies during both made by evaluating how well
maintenance and implementation. the testing works after each
Whenever requirements change, test. While testers mainly do
the test plan must be updated, this, developers, users, and
and the effect of the change on quality assurance
the software should be tested. professionals should also be
involved if available.
[Link]
principles
Testing shows the presence of defects:
Testing helps find bugs or issues in the software.
It cannot prove that the software is 100% bug-free,
It only shows where problems exist.
Exhaustive testing is impossible:
It's practically impossible to test every possible scenario
or combination of inputs in a program.
There are just too many possibilities, so testing focuses on
the most critical or likely cases.
[Link]
[Link]
[Link]
Early testing:
Testing should start as early as possible in the software
development process.
The earlier defects are found, the cheaper and easier it
is to fix them.
Defects clustering:
This principle states that defects tend to appear in a
small number of areas in the software.
A few parts of the code might have more bugs than
others, so focus should be placed there during testing.
[Link]
[Link]
Pesticide Paradox:
Running the same set of tests repeatedly won’t find
new bugs.
Just like using the same pesticide won't eliminate all the pests,
you need to create new tests to find more issues.
Testing is context-dependent:
The way you test software depends on the type of
software you're testing, its purpose, and its environment.
For example: Testing for a mobile app might differ from testing for
a banking system, for example.
[Link]
[Link]
bf83cdaa/85/[Link]
Absence of error fallacy:
Just because the software doesn’t show errors doesn’t
mean it's doing the right thing.
The absence of defects doesn’t mean the software
meets its intended purpose or is user-friendly.
[Link]
images/1186043/[Link]
Why Testing is Crucial for Software Success?
Please click to edit text
What do you mean by “Software Success”
Response Time: Measures how quickly the software responds to user requests.
Throughput: Indicates the number of transactions the system can handle in a given
time.
Error Rate: Tracks the frequency of errors or failures in the software.
System Availability: Measures the percentage of time the software is operational and
accessible.
Scalability: Assesses the software's ability to handle increasing user demands.
Customer Satisfaction: Gauges user satisfaction through surveys.
Time to Market (TTM): Measures how quickly a product is developed and launched.
Bug Resolution Time: Average time taken to resolve reported bugs.
Deployment Frequency: How often new code is deployed to production.
Mean Time to Recovery (MTTR): Average time taken to recover from failures.
Test Coverage: Percentage of code covered by automated tests.
Please click to edit text
Why Testing is Crucial for Software Success?
Clear Requirements Definition
Clarifying Requirements:
Testing helps in refining and clarifying
requirements, which is vital since unclear or
changing requirements are a common cause
of project failures.
Acceptance Criteria:
Establishing clear acceptance criteria during the testing phase ensures
that all stakeholders have a shared understanding of what constitutes a
successful implementation.
Please click to edit text
Clear Requirements Definition
Acceptance Criteria:
Establishing clear
acceptance criteria during
the testing phase ensures
that all stakeholders have
a shared understanding of
what constitutes a successful
implementation.
Please click to edit text
Enhanced Communication
Regular Updates and Meetings:
Continuous communication among team members
fosters a culture of transparency and collaboration,
which is crucial for identifying issues early.
Involvement of Stakeholders:
Engaging all relevant stakeholders throughout the testing process ensures
that user needs and expectations are met, contributing to overall product
success.
Risk-Based Testing
Focus on High-Risk Areas:
By identifying and prioritizing high-risk components,
testing can effectively target areas that are most likely
to fail, ensuring critical functionalities are robust
before release.
Resource Optimization:
Allocating resources to test the most crucial parts
of the application maximizes the impact of testing
efforts, leading to a more reliable product.
Test Automation Frameworks:
Automation for Implementing robust automation
frameworks can significantly reduce manual
Efficiency testing time, allowing for more
comprehensive testing cycles.
Continuous Integration/
Continuous Deployment (CI/CD):
Automated tests integrated into CI/CD
pipelines enable rapid feedback on code
changes, improving development efficiency
and product quality.
Please click to edit text
Performance Testing
Real-World Simulations:
Conducting performance tests that simulate
real- world usage scenarios helps identify potential
bottlenecks and scalability issues before
deployment.
User Experience Focus:
Ensuring that the software performs well
under expected loads enhances user satisfaction
and retention.
Learning from Tests:
Feedback Loop Regularly analyzing test
results creates a feedback loop
Creation that informs future development
and testing strategies, leading to
continuous improvement in
software quality.
Adaptation to Changes:
This iterative process allows
teams to adapt quickly to changes
in requirements or technology,
maintaining alignment with
business goals.
Prioritization of Test Cases
Prioritizing test cases based on their importance and risk allows
teams to focus on critical functionalities first, ensuring that
essential features are tested thoroughly before less critical ones.
This approach helps in managing time and resources effectively,
especially when deadlines are tight.
Benefits of Software Testing
[Link]-Free Application
o Identify and fix bugs.
o A bug-free app functions smoothly and
meets user requirements.
Reference: "Software Testing: Principles and
Practices" by Naresh Chauhan.
[Link] Security
o Keeps data safe from improper use.
o Reduce security risks.
o Protects against cyberattacks
Reference: OWASP (Open Web Application
Security Project) Website.
[Link] Defect Detection
o Identifies defects early, before they become
complex.
o Allows the development team to address issues
during devevelopment process.
Reference: Atlassian - Early Bug Detection.
[Link] Product
o Increases the overall quality and reliability of the
application.
o Security, performance, and functionality are priority.
[Link]-Effective
o Reduces time and costs in the long run.
o Fixing errors during the design stage is 100 times cheaper than post-release fixes.
Reference: IBM’s Cost of Defects Study (IBM Systems Sciences Institute).
6. Low Failure Rate
o Finds issues to improve stability.
o Stress testing checks reliability.
o Makes the product more stable and dependable.
7. Customer Satisfaction
o Gives a bug-free experience.
o Builds trust and keeps customers happy.
Please click to edit text
Citations:
Software Performance Indicators: Key Metrics To Track - Metridev
[Link]
34 Software Testing Metrics And KPIs: Complete Guide 2025 | Thinksys Inc. [Link]
testing/software-testing-metrics-kpis/
[Link]
[Link]
KU-Bangkok_SuccessFactor-SWTesting_2015-16_v1.[Link]
[Link]
esting/
[Link]
Please click to edit text
Citations:
[Link]
[Link]
[Link]
[Link]
[Link]
[Link]