Self-adaptive system are software systems capable of sensing their working environment (through sensors), reason and make decisions on how to adapt facing environmental changes (through a reasoning engine), and reconfigure their internal structure in order apply adaptations (through an adaptation mechanism). These systems can provide effective assistance in a large number of human activities. Yet, they will fully deliver their promises only if system engineers can ensure that decisions and adaptations are correct on all situations. This requires robust techniques for validating that the reasoning process and adaptation mechanisms implemented in such systems are correct. In this thesis I address the validation of reasoning engines and adapta...