Difference Between Functional and Exploratory Testing

Functional Testing

  • Based on functional test cases.
  • Mainly covers interactions, requirements, and functional scenarios.
  • Focuses on verifying whether the system is functionally perfect and whether the implementation is accurate.

Exploratory Testing

  • Relies on the experience of QA testers.
  • Involves simultaneous test design and execution.
  • Focuses on discovering missing edge cases that are not easily covered in the scope of other tests.

Common Methods

UAT(User Acceptance Testing)

  • Focuses on business scenarios of online active users.
  • Filters historical customer bugs in the module you are going to test.
  • Expands by combining the two scenarios above to find out some complex cases.

Interaction Testing

  • Tests multiple operations.
  • Tests components rendering.
  • Tests specific interactions among data points in the implementation (e.g., where a value depends on earlier values).
  • Focuses on discovering unexpected interactions.

Exception Scenarios

  • Tests how the system behaves under exceptional circumstances (e.g., when there is an unexpected input or an error).

Performance testing

  • Tests the system’s performance under heavy load (e.g., large amounts of data or high QPS).
  • Tests the system’s ability to handle concurrent requests (e.g., using semaphores).

Data Compatibility

  • Tests whether the system can handle different types of data inputs (e.g., different formats, encodings, or character sets).

Expansion testing

  • Tests the system’s ability to handle expansions in the database (e.g., MongoDB, Redis).
  • Tests the system’s ability to handle expansions in caching mechanisms (e.g., local storage, cookies).
  • Tests the order of completion of API requests.

Focus on the impact on other modules

  • Tests how changes in one module can affect other modules in the system.

Blind Spot

Up to your project. You should list them by yourself.