Web services are changing software development thanks to their loosely coupled nature and simple adoption. They can be easily composed to create new more powerful services, allowing for large programming systems. Verification and validation techniques try to find defects in a program to minimize losses that its malfunction could cause. Although many different approaches have been developed for "traditional" program testing, none of them have proven definitive. The problem is even more challenging for new paradigms like web services and web service compositions, because of their dynamic nature and uncommon web service-specific instructions. This chapter surveys the different approaches to web service and web service composition verification and validation, paying special attention to automation. When no tools are available for a given technique, academic efforts are discussed, and challenges are presented.