How to Break Web Software: Functional and Security Testing of Web Applications and Web Services