Functional testing is a necessary part of application testing to ensure that the functional requirements of what you are building are satisfied. These can be assumed as passing by reading requirements or acceptance criteria, performing the said function, and validating that the result is as expected.
Historically, functional testing has been performed manually. There is a certain amount of automated testing that has existed, such as automating the browser function and running scripts to ensure system status. Arquillian adds some more powerful assertions to help you get the most out of this automated testing. They are exposed in Drone, Warp, and Graphene, which this chapter covers in depth. We'll also look at some specific Spring MVC examples that use Warp.