0% found this document useful (0 votes)
31 views17 pages

Software Testing Presentation

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views17 pages

Software Testing Presentation

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 17

SOFTWARE TESTING

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

scenarios (GeeksforGeeks, 2024).

What is Software Testing?


Software Testing is a method to assess the functionality of the software program. The process

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

requirements in contrast to actual requirements (GeeksforGeeks, 2024).

Purpose: Why do we test software?

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

product is an important metric to consider. An exceptional product can only be delivered

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.

( Kinza Yasar, 2021)


2
iii. Helps with scalability: A type of nonfunctional software testing

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

concurrent app users.

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

is better to conduct software testing at regular intervals during software development.

v. Easy while adding new features: The more interconnected and older the code, the more

difficult it is to change. Tests counteract this calcification tendency by allowing

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

beat the competition (Pradeep Parthiban, 2021).

Importance of Software Testing

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

minimizes the risk of costly bugs surfacing later in the process.

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.

3. Improved User Satisfaction: Imagine struggling with a clunky interface or encountering

frequent errors. Not a recipe for happy users! Testing helps identify usability issues that can

frustrate users, ultimately leading to a more user-friendly and satisfying experience.

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

development. Additionally, well-tested software reduces the risk of post-launch customer

support issues, further improving ROI.

5. Compliance: Many industries have specific regulations and compliance requirements for

software. Testing helps ensure that software adheres to these regulations, avoiding potential

legal issues and penalties (Verbat Technologies, 2024).

Types of Software Testing

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)

Advantages of Manual Testing


i. Fast and accurate visual feedback: It detects almost every bug in the software application

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

testing method. It is easy to learn for the new testers.

iv. Efficient for unplanned changes: Manual testing is suitable in case of unplanned changes

to the application, as it can be adopted easily. (GeeksforGeeks, 2024)

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

overall test execution and increasing the efficiency of the application.

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

and more features can be tested.

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)

Levels of Software Testing

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

integration server (Sten Pittet, 2024).

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

require multiple parts of the application to be up and running.

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

assess whether it is acceptable for delivery. (GeeksforGeeks,2024)

Software Testing Technique


As the name suggests, testing techniques comprise the various ways and angles from which any

software can be verified to ensure that it works and appears (UI elements, design) as expected

during the planning and requirements gathering stage. (Shreya Bose,2023)

1. Black Box Testing:

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

architecture, components, and business/technical requirements.

The intent of black-box testing is to find performance errors/deficiencies, entire functions

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

Partitioning (ECP) and is a black-box testing technique.

2. White Box Testing:

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

box testing, and transparent box testing.

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.

3. Grey Box Testing:

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.

Functional vs Non-Functional 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:

Non-functional testing is a type of testing to check non-functional aspects (performance,

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

client satisfaction. (Thomas Hamilton, 2024)

Tools for Software Testing


 Selenium: Selenium is a widely used open-source testing framework for web applications. It

allows testers to automate browser interactions and perform regression testing across

different browsers and platforms. Selenium’s flexibility and extensibility makes it a popular

choice for web application testing.(Ibrahim Adebisi, 2024)

 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

developers and testers.

 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

collaborate with team members, all from an intuitive interface

 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

is tested, helping ensure comprehensive test coverage

 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

testing and ease of setup

 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)

Software Testing Life Cycle (STLC)

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

techniques, and construct a test schedule for meeting the deadline)

3. Test Case Development

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.

4. Test Environment Setup

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

of the environment for testing.

5. Test Execution Phase

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,

blocked, closed, etc.)

6. Test Cycle Closure

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,

Defect Report, Time taken, Cost, etc. (Heera P, 2024)


12
Challenges in Software Testing

1. Rapid technological advancements

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

issues in new software versions.

2. Complex software architectures

Modern software systems frequently consist of interconnected parts, such as various APIs,

microservices, and third-party integrations. This complexity poses a challenge in achieving

thorough test coverage and fully understanding how different components interact and affect

each other.

3. Effective communication in distributed teams

Effective communication is a significant hurdle in remote or widely distributed teams,

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

diminishing the overall quality of the software.

4. Resource and budget constraints

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.

5. Keeping up with changing user expectations

Adapting to evolving user expectations and market demands is a significant challenge in

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)

Best Practices in Software Testing

1. Plan Your Testing Process

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).

2. Document and Report Testing Results

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

clear and not open to misinterpretation.

3. Ensure Comprehensive Testing Coverage

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.

5. Test One Feature Per Case

Writing a test case for independent features enables the reusability of the case in multiple

tests or integration tests. Furthermore, it allows developers to understand errors in specific

features instead of whole systems.

6. Distribute Tasks Based on Skills

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,

can be prepared by non-technical team members (Cem Dilmegani, 2024).

15
REFERENCE

GeeksforGeeks. (2024, September 26). What is Software Testing?.

https://www.geeksforgeeks.org/software-testing-basics/

Kinza Yasar. (2022, August). software testing.

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/

GeeksforGeeks. (2024, September 26). What is Software Testing?.

https://www.geeksforgeeks.org/software-testing-basics/

GeeksforGeeks. (2024,September 26). Types of Software Testing.

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/

Heera P. (2024, August 14). Software Testing Life Cycle (STLC).

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

Thomas Hamilton. (2024, April 24). Functional Vs Non-Functional Testing – Difference

Between Them.
16
https://www.guru99.com/functional-testing-vs-non-functional-testing.html

17

You might also like