1. A method for testing impacts of soft errors on a software application program, comprising steps of: randomly injecting an error in at least one of (i) source operand of an instruction, (ii) destination operand of the instruction, (iii) opcode of the instruction and (iv) program counter, wherein the randomly injected error occurs in conjunction with executing the instruction; determining whether the injected error caused the software application program to produce a consequential erroneous result; modifying a derating factor of the software application program based on the consequential error determination; and wherein the program counter is injected with the error if the instruction is determined to be a branch instruction.