1) Event sourcing stores the history of an application as a sequence of events, rather than storing the current application state. This allows testing by replaying events and integrating systems by subscribing to the stream of events. 2) In event sourcing, an event represents something that happened in the past, such as a customer moving or an order being placed. Applications can be tested by replaying events to ensure the correct outcome occurs. 3) Event sourcing avoids the impedance mismatch between objects and databases since events are part of the domain model. Applications can be rebuilt by replaying all events to reconstruct the state.