I came across the ApprovalTests.com framework today and am curious how it would be classified. I am familiar with concepts of Unit Tests, functional tests, and user acceptance testing, but this seems to be a different kind of testing as it is based on matching test outputs against pre-approved outputs that have been verified or generated by a human. I want to call it verification or validation testing or maybe automated User Acceptance Testing, but I am curious if there is an official term for a framework that uses previously approved output values instead of just assertions on primitive types.

Also are there any other frameworks that use a similar approach? It appears that ApprovalTests has integrated well with Eclipse/Visual Studio, data serializers/viewers, and various Diff tools, but I would be interested in seeing if and how anyone else has done this type of testing.

  • Something inside me says {automated} and {user} are mutually exclusive. It might be automated acceptance testing, but not automated user acceptance testing. Still seems appealing though.
    – corsiKa
    Commented Jul 25, 2011 at 18:05
  • @glowcoder Hmm... that is a good point. I like sound of Automated acceptance testing. Looks like there may not be a formal definition for this, but I'll keep my eye out for anything else that looks similar.
    – Greg Bray
    Commented Jul 26, 2011 at 0:15
  • There's a lack of formal definitions for most of the SQA field, unfortunately.
    – corsiKa
    Commented Jul 26, 2011 at 16:18
  • Most definitions are localized versions, depending on the company, country and people's experiences. Most of what is in the Approval Tests framework looks to me just like validation, it could be in any kind of test type/phase though. You could code these things, or automate input/outputs in almost any framework.
    – MichaelF
    Commented Jul 27, 2011 at 9:03

3 Answers 3


There is a concept called the 'Golden Master' testing which is what approval tests uses, and tries to automate.

The reason that the concept is orthogonal to Unit Tests, functional tests, and user acceptance is that all of these are still doing verification by asserting against primitive values.

All tests have 2 parts:

1) do

2) verify

The real difference between those tests is the scope of the 'do' part. Unit tests are small, usually 1 or 2 methods. Functional tests run end to end, usually through a dependency border (server, database, etc...) and user tests always go through the 'front door' of a GUI (or the like) to do things.

Approval tests are all about the 'Verify' side of things. As such can be used for all 3 types of testing, and more (like system characterization testing). Approvals allow for you to easily verify at bigger levels, but that does not mean that scope is not important, it just means that you can now choose without the paying a higher cost in verification if the scope is bigger.

Hope this helps

  • Thanks. Looks like a great testing framework. I'll have to give it a try on my next project. Keep up the great work!
    – Greg Bray
    Commented Jul 31, 2011 at 18:10

Approvaltests.com calls them unit tests, so I'm not going to argue :) Although I'm not sure why you are looking for a hard definition. It's taking the value from unit tests, adding readable output and screenshoting them. Kinda a neat process that could be used for UAT and forces dev's to use TDD. Tools that I would consider similar are Cucumber, jBehave, and Concordion (each has thier own specific flavor though).


I would call Approvaltest as Regression_tests: it verifies that the result of a test is the same as the last execution of the test.

In other words it verifies that the result hasnot changed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.