The importance of systems dependability is the main motivation for developing fault injection methods (because fault injection is one of the most important ways to assess system dependability). Dependability assessment automatically generates mathematical models of reliability based on simple representations of the parameters of the functions of the system components, service and logistics functions, subsystem order structures, and critical functions. If necessary, it is also possible to develop a detailed mathematical model for various aspects of the stability system behavior. Package evaluation functions include accurate and approximate solution methods that can be used to quantify the reliability of components, subsystems and operations, maintenance functions, and availability with respect to potential project design. In this research, several fault injection tools and software system dependability assessment are rewired. The general method of dependability assessment for software systems under testing is a fault injection tool. Dependability assessment based on the fault injection tool can be done by inserting the faults into a system and monitoring that system for determining its behavior and response. Practically, experimented fault injection techniques can be grouped into fault injection implementation by hardware, software, simulation, emulation, and hybrid fault injection techniques. This study aims to measure the weakness that affects dependability attributes by presenting a survey on the implementation of software fault injection approaches for three major levels (interface, distributed systems, and operating systems levels) with dependability applications and an overview of the different injection tools.