Software Testing Presentation
Software Testing Presentation
BY
NAME MATRIC NO
ADEGBOYE ADEBOLA IFEOLUWA 0489
ADEDARA SAMUEL PRECIOUS 0488
ADEBIMPE PRECIOUS DAVID 0486
ADEBAYO OLUWATOSIN ISAAC 0485
ADEBOWALE GIDEON ADEDAYO 0487
ABIOYE DANIEL OLUWAMAYOWA 0483
1
Introduction to Software Testing
Software testing is an important process in the software development lifecycle. It
involves verifying and validating that a software application is free of bugs, meets the technical
requirements set by its design and development, and satisfies user requirements efficiently and
effectively.
This process ensures that the application can handle all exceptional and boundary cases,
providing a robust and reliable user experience. By systematically identifying and fixing issues,
software testing helps deliver high-quality software that performs as expected in various
checks whether the actual software matches the expected requirements and ensures the software
is bug-free. The purpose of software testing is to identify the errors, faults, or missing
i. Defects can be identified early: Software testing is important because if there are any
bugs they can be identified early and can be fixed before the delivery of the software.
ii. Improves product quality: When it comes to customer appeal, delivering a quality
if it's tested effectively before launch. Software testing helps the product pass quality
assurance (QA) and meet the criteria and specifications defined by the users.
process, scalability testing is done to gauge how well an application scales with
increasing workloads, such as user traffic, data volume and transaction counts. It can also
identify the point where an application might stop functioning and the reasons behind it,
which may include meeting or exceeding a certain threshold, such as the total number of
iv. Saves time and money: After the application is launched it will be very difficult to trace
and resolve the issues, as performing this activity will incur more costs and time. Thus, it
v. Easy while adding new features: The more interconnected and older the code, the more
developers to confidently add new features. As a new developer, changing older parts of
your codebase can be terrifying, but with tests, you’ll at least know if you’ve broken
anything important. This helps in making your software stand ahead in the market, and
1. Risk Mitigation: Imagine launching a new e-commerce platform only to discover crashes
during peak shopping hours. Yikes! Testing helps identify and fix defects early in the
development cycle, when they're less expensive to address. This proactive approach
3
2. Enhanced Quality: Thorough testing leads to higher quality software. By identifying and
fixing issues like crashes, compatibility problems, and security vulnerabilities, testing
ensures the final product is reliable, stable, and delivers a positive user experience.
frequent errors. Not a recipe for happy users! Testing helps identify usability issues that can
4. Increased ROI: Investing in upfront testing can save significant costs down the line. Fixing
bugs after launch is often more expensive and time-consuming than addressing them during
5. Compliance: Many industries have specific regulations and compliance requirements for
software. Testing helps ensure that software adheres to these regulations, avoiding potential
4
1. Manual Testing:
Manual testing is done in person, by clicking through the application or interacting with the
software and APIs with the appropriate tooling. This is very expensive since it requires someone
to setup an environment and execute the tests themselves, and it can be prone to human error as
the tester might make typos or omit steps in the test script. (Sten Pittet, 2024)
and is used to test the dynamically changing GUI designs like layout, text, etc.
ii. Less expensive: It is less expensive as it does not require any high-level skill or a specific
type of tool.
iii. No coding is required: No programming knowledge is required while using the black box
iv. Efficient for unplanned changes: Manual testing is suitable in case of unplanned changes
2. Automated Testing:
Automated tests, on the other hand, are performed by a machine that executes a test script that
was written in advance. These tests can vary in complexity, from checking a single method in a
class to making sure that performing a sequence of complex actions in the UI leads to the same
results. It's much more robust and reliable than manual tests – but the quality of your automated
tests depends on how well your test scripts have been written (Sten Pittet, 2024).
5
Advantages of Automation Testing:
i. Simplifies Test Case Execution: Automation testing can be left virtually unattended and
thus it allows monitoring of the results at the end of the process. Thus, simplifying the
ii. Improves Reliability of Tests: Automation testing ensures that there is equal focus on all
the areas of the testing, thus ensuring the best quality end product.
iii. Increases amount of test coverage: Using automation testing, more test cases can be
created and executed for the application under test. Thus, resulting in higher test coverage
and the detection of more bugs. This allows for the testing of more complex applications
iv. Minimizing Human Interaction: In automation testing, everything is automated from test
case creation to execution thus there are no changes for human error due to neglect. This
reduces the necessity for fixing glitches in the post-release phase. (GeeksforGeeks,2024)
1. Unit Testing:
Unit tests are very low level and close to the source of an application. They consist in testing
individual methods and functions of the classes, components, or modules used by your software.
Unit tests are generally quite cheap to automate and can run very quickly by a continuous
2. Integration Testing:
Integration tests verify that different modules or services used by your application work well
together. For example, it can be testing the interaction with the database or making sure that
6
microservices work together as expected. These types of tests are more expensive to run as they
3. System Testing:
System testing is a type of software testing that evaluates the overall functionality and
performance of a complete and fully integrated software solution. It tests if the system meets
the specified requirements and if it is suitable for delivery to the end-users. This type of testing
is performed after the integration testing and before the acceptance testing.
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
software can be verified to ensure that it works and appears (UI elements, design) as expected
7
In this case, a tester uses the software to check that it functions accurately in every situation.
However, the test remains completely unaware of the software’s internal design, back-end
missing (if any), initialization bugs, and glitches that may show up when accessing any external
database.
Example: You input values to a system that is slotted into different classes/groups, based on the
similarity of outcome (how each class/group responds) to the same values. So, you can use one
value to test the outcomes of a number of groups/classes. This is called Equivalence Class
Here, testers verify systems they are deeply acquainted with, sometimes even ones they have
created themselves. No wonder white box testing has alternate names like open box testing, clear
8
White box testing is used to analyze systems, especially when running unit, integration, and
system tests.
Example: Test cases are written to ensure that every statement in a software’s codebase is tested
at least once. This is called Statement Coverage and is a white box testing technique.
Another part of manual testing is Grey box testing. It is a collaboration of black box and white
box testing. Since, the grey box testing includes access to internal coding for designing test
cases. Grey box testing is performed by a person who knows coding as well as testing.
1. Functional Testing:
Functional testing is a type of testing which verifies that each function of the software
application operates in conformance with the requirement specification. This testing mainly
involves black box testing, and it is not concerned about the source code of the application.
Every functionality of the system is tested by providing appropriate input, verifying the output
and comparing the actual results with the expected results. This testing involves checking of
9
User Interface, APIs, Database, security, client/ server applications and functionality of the
Application under Test. The testing can be done either manually or using automation
2. Non-Functional Testing:
usability, reliability, etc.) of a software application. It is explicitly designed to test the readiness
of a system as per nonfunctional parameters which are never addressed by functional testing.
A good example of non-functional test would be to check how many people can simultaneously
login into a software. Non-functional testing is equally important as functional testing and affects
allows testers to automate browser interactions and perform regression testing across
different browsers and platforms. Selenium’s flexibility and extensibility makes it a popular
JUnit: JUnit is a popular testing framework for Java applications. It provides a simple and
easy-to-use platform for writing and executing unit tests, making it an essential tool for Java
Postman: Postman is a powerful API testing tool that simplifies the process of testing APIs.
With Postman, testers can create and execute API requests, automate workflows, and
Jest: Jest is a widely used JavaScript testing framework, particularly favored for its simplicity
and speed. Developed by Facebook, it is especially popular for testing applications built with
10
React: Jest offers a user-friendly interface and comes with several powerful features,
including Snapshot Testing and built-in code coverage that measure how much of your code
Cypress: Cypress is an end-to-end testing framework designed for modern web applications.
It simplifies the process of writing and executing tests, allowing developers to simulate user
interactions and verify application behavior. Key features of Cypress include real-time
Appium: Appium is an open-source testing tool for mobile applications. It allows testers to
automate native, hybrid, and mobile web applications across different platforms, including
iOS and Android, using the WebDriver protocol. .(Ibrahim Adebisi, 2024)
1. Requirement Analysis
This is the initial stage of STLC, which involves identifying all the testable requirements,
that is, “what to be tested,” and determining them. Where the QA team or members interact
with business analysts, stakeholders, clients, system architects, developers, etc. to understand
the requirements completely. QA is the one who analyzes the entire system for its quality,
which requires them to have clear and in-depth knowledge of the requirements.
2. Test Planning
Test Planning is the phase, which involves activities that define the objectives of testing and
the approach required in order to reach the objective (e.g., determining suitable test
11
This is the phase where the test conditions are developed into Test Cases. As “what to be
tested” is identified, this phase involves “how to test” in order to achieve the objective.
This includes creating and prioritizing the test cases, and determining the test data in order to
support the test conditions and test cases. Determining the testing tool and infrastructure, if
any. Each of the test cases will contain test inputs, procedures, execution conditions, and
expected results.
Test Environment Setup determines the software and hardware conditions under which the
system is tested. Moreover, this phase can be done side by side with the test case
development phase. When developers set up the environment that needs to be tested, the test
team may not be involved. However, QA performs a smoke test (i.e., High-level testing to
confirm that the environment is blocker free and is ready for testing) to check the readiness
Test execution is the actual phase where the features are tested. Testers start executing the
test cases/Test script against the build to validate its behavior. Test case executions are done
either manually or using automation tools. The defects found on testing the build are logged
as bugs and reported to the developer and a bug report is submitted on the same. Based on it
Test cases /Test procedures status are updated (e.g., Status – New, Pass, Fail, Rejected,
This is the final phase which delivers a complete test result report. It involves a summary of
the entire Testing process – Objectives met, Test Case Execution Report, Test coverage,
The technology sector constantly evolves, frequently introducing new tools, programming
languages, and frameworks. This rapid pace of change demands that software testers
continuously update their skills and testing approaches. If they fail to keep pace, their testing
methods risk becoming outdated, potentially leading to ineffective testing and overlooked
Modern software systems frequently consist of interconnected parts, such as various APIs,
thorough test coverage and fully understanding how different components interact and affect
each other.
especially within software testing. The mix of different time zones and cultural backgrounds
and the lack of in-person interactions often lead to misunderstandings, delayed decision-
making, and unclear project objectives and testing requirements. These communication
barriers can cause inconsistencies in the testing processes and outcomes, potentially
Resource and budget limitations present significant challenges in software testing. These
constraints often mean fewer staff members, limited access to advanced testing tools, and
restricted time for comprehensive testing. Such limitations can lead to a reduced scope of
testing, increasing the risk of missing critical bugs and vulnerabilities, particularly in
13
complex or large-scale projects. Budget constraints may also limit the ability to conduct
extensive automated testing, load testing, and other specialized tests that are vital for assuring
software quality.
software testing. Users increasingly expect intuitive, seamless, and feature-rich applications.
Failing to meet these expectations can result in decreased user satisfaction and engagement,
impacting the product's success in the market. (GAT Staff Writers, 2023)
Testing should have a formal plan that guides all related parties and creates a clear roadmap
for testing. It should be well documented to establish clear communication. The goals and
objectives of the plan should be SMART( specific, measurable, achievable, relevant, and
time-bound).
Testing must be well documented. All the observations and progress of the test must be
documented and incorporated into the testing report accordingly. The test report should be
An application or an API has many different dimensions. Ensure that your tests cover all
sizes; otherwise, you might miss problems and bugs. Do not focus on the functionality part
only. UI/UX, performance, and security issues are examples of different dimensions that can
have a profound impact on your success. Thus, ensure they are tested.
14
4. Test on Real Devices
Although simulation is a tempting option in testing, no simulator or emulator can reflect the
actual end-user experience. The system, application, or bot automation tests need to be run in
environments that encounter low batteries, slow internet, and network connections, pop-ups,
etc. Testing on real devices enables developers to spot errors and fix them before launching
the system.
Writing a test case for independent features enables the reusability of the case in multiple
Although communication and collaboration are critical to a successful testing process, team
members can have different skills that target specific automation testing roles. For example,
writing test scripts requires QA testers with expert knowledge of scripting languages. In
contrast, keyword-driven tests, which rely on simulating keyboard strokes and click buttons,
15
REFERENCE
https://www.geeksforgeeks.org/software-testing-basics/
https://www.techtarget.com/whatis/definition/software-testing
Pradeep Parthiban. (2021, April 14). 7 Reasons Why Software Testing is Important.
https://www.indium.tech/blog/why-software-testing/
https://www.geeksforgeeks.org/software-testing-basics/
https://www.geeksforgeeks.org/types-software-testing/
Verbat Technologies. (2024, April 25). The Importance of Software Testing: All You Need to
Know. https://www.linkedin.com/pulse/importance-software-testing-all-you-need-know-
verbatltd-qwbhc/
Shreya Bose. (2023, May 25). Software Testing Techniques: Explained with Examples.
https://www.browserstack.com/guide/software-testing-techniques
Ibraheem Adebisi. (2024, April 15). Top 10 Free Testing Tools Every Software Tester Should
Know. https://getscandium.com/top-10-free-testing-tools-every-software-tester-should-know/
https://www.qatouch.com/blog/software-testing-life-cycle/
GAT Staff Writers. (2023, December). 9 Key challenges of software testing to keep in mind.
https://www.globalapptesting.com/blog/challenges-of-software-testing
Between Them.
16
https://www.guru99.com/functional-testing-vs-non-functional-testing.html
17