Definition: A type of black-box testing that validates a software system's behavior against defined functional requirements. It verifies that the system produces the correct outputs in response to specific inputs, without concern for the underlying code implementation.
Focus:
Behavior: What the system does
.Requirements: Alignment with documented specifications
.Inputs and Outputs: Verifying the accuracy of results based on input data.
Purpose: To ensure the system meets the user's needs and expectations as outlined in the functional requirements.
Types of Functional Tests:
Unit Tests: Test individual units or components of code in isolation.
Integration Tests: Test how different units or modules of the system work together.
System Tests: Test the entire system as a whole under real-world conditions.
Smoke Tests: A basic suite of tests to quickly check core functionality after a new build is deployed.
Regression Tests: Ensure that existing, previously working functionality remains correct after code changes or updates.
Example: Online Payment Form
Functional Requirements:
Accepts valid credit card numbers (16 digits)
Accepts valid expiration dates (MM/YY format)
Accepts valid CVV codes (3 digits or 4 for Amex)
Calculates correct total amount based on item prices and tax.
Displays an error message if any of the above validations fail.
Upon successful validation, submits the payment securely to the processor.
Functional Test Cases:
Positive tests: Enter valid credit card, expiration, CVV, and purchase amount -> Expect successful payment confirmation.
Negative tests: Enter less than 16 digits for credit card -> Expect "Invalid Card Number" error.Enter past expiration date -> Expect "Card Expired" error.Omit CVV -> Expect "CVV Required" error.
Boundary Tests:Enter a 16-digit credit card at the upper limit and below the lower limit of valid card numbers.
Key Points:
Functional testing is based on "what" the system does, not "how" it does it (implementation is not the focus).
Test cases are derived directly from the detailed functional requirements document.
Definition: A type of testing that focuses on the operational qualities of a software system, rather than its specific behaviors. It assesses how well the system performs under various conditions, along with aspects like usability, security, and compatibility.
Focus:Performance: How fast the system responds, its capacity, and how it handles load.
Usability: How easy and intuitive the system is for users to navigate and use.Reliability: How consistently the system functions correctly over time.
Security: How well the system protects data and resists vulnerabilities.Compatibility: How well the system functions across different browsers, devices, and operating systems.
Purpose: To ensure the system meets implicit or explicit expectations regarding its quality characteristics, not just its core functions.
Types of Non-Functional Tests:
Performance testing: Measures response time, throughput, and resource usage under various loads.
Load testing: Evaluates how the system behaves under heavy user demand.
Stress testing: Pushes the system beyond its limits to identify breaking points and recovery mechanisms.
Usability testing: Assesses user experience with tasks, navigation, and overall ease of use.
Security testing: Identifies vulnerabilities, potential attack vectors, and data protection measures.
Compatibility testing: Checks performance and functionality across different environments.
Example: E-commerce Website
Non-Functional Requirements:
Page load time under 2 seconds, even during peak traffic.
Ability to handle 1,000 concurrent users without significant slowdown.
Uptime of 99.99%.
The user interface is intuitive enough for first-time visitors to easily find products and complete purchases.
Secure storage of customer credit card information and adherence to PCI compliance.
Seamless display and functionality across popular web browsers and mobile devices.
Non-Functional Test Cases:
Performance test: Simulate 500 users simultaneously browsing and measure average page load times.
Load test: Gradually increase simulated users to 1,500 and monitor system responsiveness.
Security test: Conduct penetration testing to attempt various exploit techniques.
Usability test: Conduct user sessions with real participants and observe their ability to complete common tasks.
Compatibility test: Run the website on Chrome, Firefox, Safari, and Edge on both desktop and major mobile devices.
Key Points:
Non-functional testing verifies "how well" the system works, not just the "what".
Non-functional requirements are often as crucial as functional ones for customer satisfaction.
Measurement and metrics are key to quantifying non-functional test results (e.g., load time in seconds, number of successful vs. failed transactions during stress, etc.).
Experienced ISTQB Certified Test Lead | Expert in Financial Services & Insurance
9moWell said👍
What and how.
Quality Assurance. Software Testing Engineer
9moWow! This is a comprehensive article. Keep it up
QA Test Engineer @ Point Comfort Underwriters | Bachelor's degree
9mo👍 👍 👍