Does it work better if you add a return(0);
before the end of the test function?
I would have thought that gcc would give you a compile error but I read that the C spec allows for no return values and the value actually returned is implementation specific.
You could also try my servo example here:
[EDIT] one other note: servos take a lot of power! Mine did not like USB power but worked great on a separate high-current supply.