Generating complex and faulty test data through model-based mutation analysis