Agile Zone is brought to you in partnership with:

I am an author, speaker, and loud-mouth on the design of enterprise software. I work for ThoughtWorks, a software delivery and consulting company. Martin is a DZone MVB and is not an employee of DZone and has posted 83 posts at DZone. You can read more from them at their website. View Full User Profile

Business Facing Test

  • submit to reddit

A business-facing test is a test that's intended to be used as an aid to communicating with the non-programming members of a development team such as customers, users, business analysts and the like. When automated, they describe the system in domain-oriented terms, ignoring the component architecture of the system itself. Business-facing tests are often used as acceptance criteria, having such tests pass indicates the system provides the functionality that the customer expects.

Automated business-facing tests are often represented in some form of DomainSpecificLanguage, since this helps communication with non-programmers and also helps give programmers a mechanism that helps them step back from the details of the code. Tools like Cucumber and Twist help design such DSLs and provide mechanisms to bind them to the system under test.

Business-facing tests are commonly implemented as BroadStackTests since their user-oriented expression suggests treating the system under test as a black box. However there are significant advantages to implementing business-facing tests as ComponentTests since this often results in easier maintenance and faster execution.

I'm a big fan of automated testing, but it's important to recognize that manual tests play a significant role in business-facing testing. Techniques such as exploratory testing and usability testing are inherently manual activities and are essential parts of a well-balanced test portfolio.

StoryTests and UserJourneyTests are two common forms of business-facing test. The term business-facing test comes from Brian Marick's test quadrant.

Published at DZone with permission of Martin Fowler, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)


Ian Mitchell replied on Sun, 2013/04/28 - 1:37am

A significant advantage of Business Facing Tests is their resistance to technical debt. Unit tests are more fine grained and can result in a complex test architecture which requires frequent refactoring. I've seen many cases of unit tests becoming "forgotten" and fossilised due to poor naming conventions and poor requirements traceability. They are redundant but no-one dares break or remove them. This is where technical debt can lurk...and outside of the codebase being tested itself. This risk can be reduced if Business Facing Tests are used instead of unit tests as a BroadStackTest.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.