# Testing with Waffle

“Testing” takes on at least two distinct meanings with Waffle:

- Testing your application with automated tools
- Testing your feature with users

For the purposes of this chapter, we’ll refer to the former as “automated testing” and the latter as “user testing” for clarity.

- Automated testing with Waffle
- User testing with Waffle

## Automated testing

Automated testing encompasses things like unit and integration tests, whether they use the Python/Django unittest framework or an external tool like Selenium.

Waffle is often non-deterministic, i.e. it introduces true randomness to the system-under-test, which is a nightmare for automated testing. Thus, Waffle includes tools to re-introduce determinism in automated test suites.

Read more about automated testing.

## User testing

User testing occurs on both a (relatively) large scale with automated metric collection and on a small, often one-to-one—such as testing sessions with a user and research or turning on a feature within a company or team.

Waffle does what it can to support these kinds of tests while still remaining agnostic about metrics platforms.

Read more about user testing.