Fault injection is something that could be really usefull in many ways for developpers and testers. It could be used in test suites context to assert that an application behave correctly on errors. By errors we don't necessarely mean that something went wrong, in fact an asynchroneous application may want to have some tests for the code path when getting an EAGAIN value on a read for example. Normally the tester have to setup a complex environment to create artificial errors or simply assert that the code works the way it should. strace would definetly get rid of that easily. On another hand if we considere the high proportion of bugs found by fuzzers nowadays it's pretty clear that tampering with the underneath of applications, that is with syscalls, looks promising.