Final answer:
Fuzzing, mutation testing, and fault injection are software testing techniques that involve introducing invalid/random data, modifying code to test test-case effectiveness, and introducing errors to test system resilience, respectively.
Step-by-step explanation:
Fuzzing, mutation testing, and fault injection are all types of software testing techniques aimed at discovering coding errors and security loopholes within a program by inputting massive amounts of random data, called fuzz, to the system in an attempt to make it crash.
Fuzzing is a software testing technique that involves providing invalid, unexpected, or random data as input to a computer program. The program is then monitored for exceptions such as crashes, failing built-in code assertions, or potential memory leaks.
Mutation testing is another software testing method which involves modifying a program's source code or byte code and running tests to see if the test cases can detect the changes. It is a form of white-box testing where the changes are minor and often systematic, often revealing gaps in the test cases and checking the quality of the tests.
Finally, fault injection involves introducing errors into a system to test its resilience and error handling capabilities. This can involve changing the system's environment, using abnormal conditions, or deliberately introducing faults to see how well the system can handle different error conditions.