git bisect start
./test (should exit with a failure)
git bisect bad
git checkout (some old working commit)
./test (should exit with a success)
git bisect good
git bisect run ./test
Or instead of run
you can of course follow the instructions to check each
stage manually.