Testing Software Functionality
Software testing is the process of evaluating a software application to ensure it meets the
specified requirements and is free of defects
Purpose:
Verify that software behaves as expected
Identify bugs and issues
Ensure reliability, performance, and quality
Installation Checklist in software testing is a structured list of tasks, validations, and
configuration steps that must be followed to ensure a software application is installed correctly
and functions as expected in the target environment.
Purpose of an Installation Checklist
To prevent installation errors
To ensure all components and dependencies are in place
To confirm the software is ready for testing or production
To help teams follow a standardized process
To ensure repeatability and traceability of setup
Functional vs Non-Functional Testing
Functional Testing:
o Tests what the system does
o Focuses on user requirements
o Example: Login functionality, search feature, transaction processing
Non-Functional Testing:
o Tests how the system performs
o Focuses on performance, usability, security, etc.
o Example: Load testing, security testing
Functional Testing Basics
Objective: Validate the software system against the functional
requirements/specifications.
Inputs: Requirements documents, user stories, business logic
Outputs: Pass/fail status, defect reports
Common Types of Functional Testing
Type Description Example
Testing individual
Unit Testing Test a function that calculates discounts
components/modules
Integration Testing combined parts of the Ensure login module integrates with the
Testing application dashboard
End-to-end testing of an online
System Testing Testing the entire system as a whole
shopping platform
Acceptance User checks if a mobile app works as
Validation by the end-user or client
Testing expected
Functional Testing Techniques
Black Box Testing:
Focus on input/output without knowledge of internal code
White Box Testing Techniques
Focuses on the internal logic and structure of the code.
Gray Box Testing
Combination of black and white box testing.
Tester has partial knowledge of code.
Useful for integration testing and identifying defects in interactions between modules.
Exploratory Testing
Tester explores the software without predefined test cases.
Relies on tester's experience and intuition.
Helpful for discovering unexpected issues.
Ad-hoc Testing
Unstructured, informal testing.
No documentation or planning involved.
Often done when time is limited.
Regression Testing
Re-run test cases to ensure new changes don’t break existing functionality.
Automated Testing Techniques
Uses tools/scripts to perform repetitive testing.
Common in Agile and CI/CD pipelines.
Tools: Selenium, JUnit, TestNG, Cypress, etc.
Functional Testing Process
1. Understand Requirements
2. Write Test Scenarios
3. Design Test Cases
4. Prepare Test Data
5. Execute Test Cases
6. Log Defects
7. Retest & Regression Testing
Tools for Functional Testing
Manual Tools:
o Test case templates, Excel, Word
Automation Tools:
o Selenium
o QTP/UFT
o TestComplete
o JUnit/TestNG (for unit testing)
Advantages of Functional Testing
Ensures software meets user expectations
Detects errors in business logic
Enhances software quality and reliability
Challenges in Functional Testing
Incomplete or unclear requirements
Complex business logic
Time constraints
Environment issues