The objective of fault injection is to mimic the existence of faults and to
force the exercise of the fault tolerance mechanisms of the target system.
To maximize the efficacy of each injection, the locations, timing, and con
ditions for faults being injected must be carefully chosen. Faults should b
e injected with a high probability of being accessed. This paper presents t
wo fault injection methodologies-stress-based injection and path-based inje
ction; both are based on resource activity analysis to ensure that injectio
ns cause fault tolerance activity and, thus, the resulting exercise of faul
t tolerance mechanisms. The difference between these two methods is that st
ress-based injection validates the system dependability by monitoring the r
un-time workload activity at the system level to select faults that coincid
e with the locations and times of greatest workload activity, while path-ba
sed injection validates the system from the application perspective by usin
g an analysis of the program flow and resource usage at the application pro
gram level to select faults during the program execution. These two injecti
on methodologies focus separately on the system and process viewpoints to f
acilitate the testing of system dependability. Details of these two injecti
on methodologies are discussed in this paper, along with their implementati
ons, experimental results, and advantages and disadvantages.