An aggregate can represent a somewhat stable system boundary.
Does it make sense to write input and output test aggregates to do most testing? In theory we could use an aggregate as a data driven way to do testing. We can create data that is going into our system without a database layer and we get a processed aggregate out. We could potentially specify a lot of cases this way.
The risk here is that we are limiting our ability to modify the aggregates because we may need to rewrite all our test aggregates if an aggregate changes. Although we could migrate them.