Thanks to visit codestin.com
Credit goes to www.scribd.com

0% found this document useful (0 votes)
20 views25 pages

SQA-Chapter 3

Uploaded by

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

SQA-Chapter 3

Uploaded by

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

Chapter 3

Functional (Black Box)


Testing
By Haimanot D.
Introduction
Functional testing is a type of software testing that primarily focuses
on testing the functionalities of an application to ensure that it behaves
as expected.
The key characteristic of functional testing is that the tester does not
have to know the internal workings of the application.
The testing is based on the requirements and specifications of the
software, and the main objective is to verify whether the system
behaves as intended for a given input.
Key Features of Functional Testing
Black Box Testing:
 The tester is concerned only with the inputs and outputs.
 They do not need knowledge of the internal code structure.
Focus on Functional Specifications:
 Functional testing checks the functions of the system, such as processing
transactions, performing calculations, and interacting with external systems.
User Behavior Simulation:
 Test cases are designed to simulate how the end-user will interact with the system.
Validation Against Requirements:
 The goal is to confirm whether the system is meeting its functional requirements.
User-centered approach:
 It is designed to ensure that user expectations are met.
Types of Functional Testing:
Unit Testing:
Focuses on individual components or modules in isolation to
ensure they work correctly.
Integration Testing:
Verifies that multiple components or systems work together as
expected.
System Testing:
A complete test of the entire system to ensure everything works as
a whole.
Cont..,
Sanity Testing:
Conducted to verify if the basic functionalities of the application
are working after a change or update.
Smoke Testing:
A high-level test to ensure that the application is stable enough for
further testing.
Regression Testing:
Ensures that new changes or fixes do not break existing
functionality.
Importance of Functional Testing
Functional testing is crucial for ensuring:
Reliability:
 The application functions correctly under expected conditions.
Compliance:
 The system meets industry standards and regulatory requirements.
User Satisfaction:
 The application delivers the expected functionality and user
experience.
Error-Free Performance:
 Identifies defects before deployment, reducing potential failures.
Conti..,
Security:
Ensures that the system is protected from unauthorized access
and vulnerabilities.
Interoperability:
Confirms that the application works well with other software
and systems.:
Functional Testing Approaches
Functional testing can be approached in different ways depending on
the scope and depth of the testing.
The following are some common approaches:
Black Box Testing
 Black Box Testing refers to testing an application without
knowledge of its internal structures or code.
 The focus is solely on what the system is supposed to do (inputs
and outputs).
 Testers will interact with the system’s user interface and verify
that it behaves as expected.
Conti..,
 Key Characteristics:
No knowledge of internal code is needed.
Focuses on functional requirements.
Tests are based on specifications, use cases, and user stories.
 Advantages:
Helps ensure that the system meets user expectations.
It can be performed by individuals who are not involved in the
software development process.
Provides a more user-centric view of testing.
Conti..,
 Disadvantages:
Test coverage can be incomplete if the functional specifications
are vague or incomplete.
Tests tend to focus only on "happy path" scenarios and might
miss edge cases or deeper system issues.
Manual Functional Testing
 This approach involves human testers executing test cases
without using automation tools.
 It is beneficial for exploratory testing, usability testing, and
testing small applications.
Conti..,
Boundary Value Analysis (BVA)
 Boundary Value Analysis is a technique used to test the
boundaries of input values.
 It ensures that values at the boundaries of valid input ranges are
handled correctly by the system.
 Test Case Design:
For an input range of 1 to 10, the boundary values would be
1, 10, and values just outside these boundaries, such as 0 and
11.
Conti..,
 Key Points:
 Identifying boundaries and testing them ensures that
boundary-related defects are caught.
 This approach often uncovers edge-case issues that could
lead to unexpected behavior
Conti..,
Equivalence Class Partitioning (ECP)
 Equivalence Class Partitioning divides input data into
different equivalence classes, where each class is treated as
equivalent for testing purposes.
 Rather than testing every possible input value, testers focus
on representative values from each class.
 If an input field accepts integers between 1 and 100, the input
can be divided into three equivalence classes:
 Valid inputs (1 to 100)
 Invalid inputs (less than 1 or greater than 100)
 Boundary values (1 and 100)
Conti..,
Integration Testing
 Integration testing ensures that multiple components or
systems interact correctly.
 It can be performed using:
Top-down approach: Tests higher-level modules first.
Bottom-up approach: Tests lower-level modules first.
Big Bang approach: All modules are tested together.
Hybrid approach: A combination of top-down and bottom-up
testing.
Conti..,
System Testing
 System testing validates the complete application, ensuring
all modules work together as expected.
 It includes:
End-to-end testing: Simulating real-world user scenarios.
Performance testing: Assessing speed, stability, and scalability.
Security testing: Ensuring data protection and access control.
Compatibility testing: Verifying software functionality across
different devices, operating systems, and browsers.
Conti..,
Regression Testing
 Regression testing ensures that new updates do not break existing
functionality.
 Automated tools are commonly used to speed up this process.
 It is particularly important in agile and DevOps environments, where
software is frequently updated.
Acceptance Testing
Acceptance testing determines whether the application meets business
requirements and is ready for deployment.
Alpha Testing: Conducted in a controlled environment by internal testers.
Beta Testing: Conducted by real users in a production-like environment.
User Acceptance Testing (UAT): Ensures the system meets end-user
requirements before final release.
Conti..,
Smoke and Sanity Testing
 Smoke Testing
Purpose: Ensures that the critical functionalities of an application
are working before proceeding with more in-depth testing.
When It's Performed: After a new build is deployed to check if it's
stable enough for further testing.
Scope: Broad and shallow (covers major functionalities but
doesn’t go into details).
Example: Checking if the application launches successfully, login
works, and key features are accessible.
Conti..,
 Sanity Testing
Purpose: Validates that specific functionality is working correctly
after a minor change or bug fix.
When It's Performed: After a small change in the codebase, such
as a bug fix or minor enhancement.
Scope: Narrow and deep (focuses on a specific functionality
without checking the entire system).
Example: If a bug in the loan interest calculation was fixed, sanity
testing ensures that the fix works and hasn’t introduced new issues.
Tools for Functional Testing
 Functional Testing is conducted using various manual and automated
tools to ensure software behaves as expected.
 The choice of a testing tool depends on factors like project size,
application type, budget, and team expertise.
 Below is a detailed breakdown of the most commonly used Functional
Testing tools.
Manual Functional Testing Tools
TestRail Test case management tool.
JIRA with Xray or Zephyr Bug tracking and test management.
 qTest Bug tracking and test management.
Conti..,
Automated Functional Testing Tools
 Automation tools help speed up functional testing by executing pre-written
test scripts without manual intervention.
Selenium Web application testing.
Appium Mobile application testing (iOS and Android).
Katalon Studio Low-code automation for web, API, mobile,
and desktop testing.
Postman API testing.
Cypress End-to-end testing for web applications.
TestComplete UI testing for desktop, web, and mobile
applications.
Best Practices in Functional Testing
Functional Testing plays a critical role in ensuring software reliability.
However, to achieve effective and efficient testing, teams must follow
best practices that
Enhance accuracy,
Reduce testing time, and
Improve overall software quality.
Below are the best practices for conducting Functional Testing.
Understand the Business Requirements Clearly
Create Well-Defined Test Cases
Automate Repetitive Functional Tests
Perform Both Positive and Negative Testing
Conti..,
Use Realistic Test Data
Implement Regression Testing Regularly
Ensure Cross-Browser and Cross-Device Testing
Prioritize Exploratory Testing for Unscripted Scenarios
Challenges in Functional Testing
Test Case Design Complexity
 Possible Solutions:
Collaborate with stakeholders to clarify business logic before writing test
cases.
Use Equivalence Partitioning & Boundary Value Analysis to minimize
redundant test cases.
Maintain a well-structured test case repository to avoid duplication.
Frequent Changes in Requirements
 Possible Solutions:
 Maintain dynamic and modular test scripts to adapt to changes quickly.
 Use version control (Git, SVN) to track changes in test cases.
 Involve testers early in requirement discussions to anticipate changes.
Conti..,
Test Data Management Issues
 Possible Solutions:
Use data-driven testing (DDT) to test multiple inputs dynamically.
Mask or anonymize sensitive production data before using it.
 Utilize test data generation tools like Mockaroo, Faker.js, or Test Data
Manager.
Lack of Skilled Testers
 Possible Solutions:
Provide regular training on automation, performance, and security testing.
Use low-code/no-code automation tools (Katalon, TestComplete) for beginners.
 Encourage cross-training between developers and testers.
Incomplete Test Coverage
Conti..,
 Possible Solutions:
Use traceability matrices to ensure each requirement has
corresponding test cases.
 Perform exploratory testing to uncover unexpected issues.
 Automate regression testing to cover older functionalities.
Time Constraints and Deadlines
 Possible Solutions:
Automate frequent test cases to save time.
Prioritize critical functionalities for testing when time is limited.
Use parallel testing to execute multiple test cases simultaneously.

You might also like