[null, {"document_url": "http://agileinaflash.blogspot.com/2011/11/test-abstraction-smells.html?showComment=1323450058714", "unformatted_src": "http://langrsoft.com/ftp/testAbstractionSmells.png", "src": "http://langrsoft.com/ftp/testAbstractionSmells.png", "formatted_filename": "testAbstractionSmells", "rendered_width": 400, "rendered_height": 300}, null, null, null, null, null, null, null, null, null, null, null, null]
Test Abstraction Smells In our article Test Abstraction: Eight Techniques to Improve Your Tests (published by PragPub), we whittled down a convoluted, messy test into a few concise and expressive test methods, using this set of smells as a guide. We improved the abstraction of this messy test by emphasizing its key parts and de-emphasizing its irrelevant details.

Stripped down, the "goodness" of a test is largely a matter of how quickly these questions can be answered:
That's a nice short-form summary, but it is descriptive rather than prescriptive. In the Pragmatic Bookshelf article, a real-world code example was used to painstakingly demonstrate the techniques used to improve the clarity of tests by increasing their level of abstraction. Here we provide the "cheat sheet" version:
You could easily survive without our list of test abstraction smells--and figure out on your own what to do about your tests--as long as you keep one thought in your head: "My goal is to ensure that each unit test clearly expresses its intent, and nothing else, to the next person who must understand this system behavior."