Resilient systems are designed to operate at acceptable levels even in the presence of faults and other adverse events. Assessing the resilience of a given system therefore requires that the effects of such events can be measured and examined in detail, which in turn requires the ability to introduce faults and observe the subsequent behaviour of the system. Fault injection is therefore a fundamental method for resilience assessment. It allows us to study the effect of faults on a system, and can thus be used to identify weaknesses in fault handling, to assess the effectiveness of error detectors and fault tolerance mechanisms, and to quantify the effect of faults on the quality of service achieved by the system. This chapter provides an introduction to fault injection for resilience assessment. We start with a brief overview of the area of fault injection, including the necessary terminology. We then discuss common techniques for the injection of hardware, software, and security faults, aiming to cover the wide spectrum of techniques proposed in the literature.