Memory read faults: taxonomy and automatic test generation