The first and most easy but important method is 'usage'. Alfa and Beta testers (intenral and external) will discover much of the bugs in the software including certain security problems.

Next extensive fuzz testing is a good idea, cause the fuzz is going to find errors a human tester does not. But still the human tester is essential.
http://en.wikipedia.org/wiki/Fuzz_testing
http://fuzz.sourceforge.net/

aptesting
http://www.aptest.com/resources.html