There is no "best". There are many good tools, some of which may be better suited to your needs than others.
The tool that's your best fit for functional testing may not be the tool that's your best fit for security, which in turn may not be the best choice for you for load testing and so on. You may find your best choice is a big box commercial tool, or you might find your needs are best handled by using the many specialized open source web automation tools out there.
Just in terms of Functional Testing tool, you can judge by
* Easy to use
* Easy to integrate
* Price per developer
* Price per running instance
* Price of the hardware/VM needs needed to run
* Open Source vs. Non-Open
* Availability of Frameworks
* Community Support for the tool
* Commercial support for the tool
* Speed of object acquisition
* Speed of interactions
* Speed of startup/tear down
* Memory footprint
* Clarity / Usefulness of the Reporting
* Availability of practitioners of that tool in the market place
* Pricing structure of the updates
... list goes on and on...
Your requirements will vary according to the business need, staffing needs, and the risks you need to address in the software under test. The final truth is the best automation too is building automation into the app under test itself. Doing that, you can develop to your exact needs.