This document discusses testing REST web services at three levels: message level, resource level, and application level.
At the message level, tests check for correct HTTP syntax, semantics, and payload syntax and semantics. At the resource level, tests check if resources match link semantics, are available over time, have stable semantics over time, and maintain variants. At the application level, tests check if the service offers expected capabilities and if the user's goal is reachable.
The document provides guidance for both server and client developers, noting what each can rely on and what each must implement to ensure the service under test conforms to the constraints of REST.