Hi Chris,
I hope you don't mind me responding though you would like to stop participating. This message is meant for other readers in case they are interested.
> Alice tests her package A with some test data D_A. Now assume Betty
did not write any contracts for her package B. When Alice tests her
package, she is actually making an integration test. While she controls
the inputs to B from A, she can only observe the results from B, but not
whether they are correct by coincidence or B did its job correctly.
Let's denote D'_B the data that is given to B from her original test
data D_A during Alice's integration testing.
>
If you're regularly changing your function contracts, such that you
need to continually test in case something in the other package
changed, then yes, that's exactly what I'm talking about.
The user story I put above had nothing to do with change. I was telling how manually performing integration tests between A and B is tedious for us (since it involves some form or the other of manual recording of input/outputs to the module B and adapting unit tests of B) while contracts are much better (for us) since they incur little overhead (write them once for B, anybody runs them automatically).
I did not want to highlight the change in my user story, but the ease of integration tests with contracts. If it were not for contracts, we would have never performed them.
Cheers,
Marko