Getting Restarted With Software Testing: Part 2
Source: Dev.to
Functional Testing
Functional testing verifies that the application behaves as expected and that each feature works correctly. It is divided into several types.
Smoke Testing
Performed by developers and the QA team on initial builds to confirm that the basic functionalities are stable after each release.
Sanity Testing
Carried out by QA members to verify that the main functionality works once a build is considered stable, ensuring that new changes have not introduced regressions.
Regression Testing
Ensures that recent code changes have not adversely affected existing functionality.
Retesting
Focuses on verifying that specific defects fixed in a new build are indeed resolved.
Example: After fixing a bug that prevented adding, deleting, or modifying customers, the QA team retests those operations in the latest build.
Ad‑hoc Testing
Testing without formal test cases or requirements; the tester explores the application randomly.
Example: A tester manually checks various flows in a web‑shop application without predefined scripts.
Exploratory Testing
The tester explores the entire application, identifies possible scenarios, documents them, and uses this documentation for systematic testing.
Example: Exploring all user journeys in an online shopping application.
User Interface (UI) Testing
Validates the visual elements and basic interactions of the software’s user interface.
End‑to‑End Testing
Tests the complete workflow across all integrated modules, including data flow and external system interactions.
Example: An e‑commerce mobile app test that validates the entire purchase process—from front‑end browsing to payment, notifications, and admin tracking.
Non‑functional Testing
Non‑functional testing assesses attributes such as performance, security, reliability, and compatibility to ensure the software operates well under expected conditions.
Performance Testing
Evaluates speed, response time, and stability under varying loads.
- Load Testing – Checks response under expected user load.
- Stress Testing – Pushes the system beyond expected load to find breaking points.
- Volume Testing – Measures how the application handles large volumes of data.
Security Testing
Ensures that user data are protected from unauthorized access and cannot be stolen or misused.
Example: Verifying credential validation during login for a web‑shop application.
Recovery Testing
Verifies how quickly the system recovers after failures such as network or power outages.
Compatibility Testing
Confirms that the software works across different browsers, devices, and operating systems.
- Browsers: Chrome, Edge, Firefox, Safari
- Devices: Mobile, Laptop, Desktop, Tablet
- Operating Systems: Android, iOS, Windows, macOS
Example: Testing a web‑shop application on various browsers and devices.
Localization & Globalization Testing
Ensures the system supports multiple languages, currencies, and regional date/time formats.
- Currency selection: USD, EUR, INR
- Language translation: English → French
- Date formats: MM/DD/YYYY (USA) vs. DD/MM/YYYY (UK)