# TestBench Values
TestBench respects the Unix Philosophy of software design, which favors small tools that can be composed together, and simple, short, clear, modular, and extensible code that avoids the limits of monolithic design.
TestBench values simplicity above all things. Small, cohesive API with no superfluous elements. No wasted motion. No stopping to figure things out. No API members that have to be memorized rather than simply intuited. TestBench requires no executable other than Ruby, and tests execute exactly the way they read, as Ruby scripts.
TestBench promotes clean, principled test design. By dramatically reducing the surface area of the API, it limits the choices that developers can make to only choices that benefit the outcomes of clean design. TestBench itself respects fundamental design principles, which allows the code in TestBench to be leveraged exactly as a developer expects, without surprises.
The audience for TestBench is arguably smaller and more constrained, and that's on-purpose. TestBench is intended for more experienced developers and test designers. Writing tests with TestBench is just programming, and its users are programmers who are comfortable with that. TestBench doesn't discourage beginners. It does encourage them to learn more about the fundamentals of software design and development so that the power and subtlety of technique is the deciding factor, rather than perishable and crude factors, like mere tooling.