4 ms·
End-to-end testing is super important, but still hard for a lot of people/companies/startups. Using stubbed or mocking based approach can only go so far, despi
by marknadal 10y ago
End-to-end testing is super important, but still hard for a lot of people/companies/startups.
Using stubbed or mocking based approach can only go so far, despite it being less "brittle" than end-to-end tests. That is why our team built PANIC, which is a distributed testing framework for the every-programmer ( https://github.com/gundb/panic-server https://github.com/gundb/panic-server ). Everybody should be able to do tests like this, not just the Googles.
- gertef 10y agoend-to-end tests are only brittle if your end-to-end-system is brittle. That's not a problem with the tests.
- 0xCMP 10y agoIt's the natural thing for services to be brittle. We're all human after all: a mistake in recruitment, hiring, training, scoping, managing, documenting, or etc. can cause an engineer to make the mistakes needed to make a brittle service you might rely on and that's something I think we can all agree is something you just need to accept as "going to happen." In that case it's worth dealing with it as it is not how it should be.
- discodave 10y agoNot quite, the tests themselves are another layer in the call stack. All things being equal, A depends on B depends on C is more brittle than A depends on B So if you have Tests depends on A depends on B It's the same as if you added a layer of complexity :)
- valarauca1 10y agoThis is my first exposure to GunDB. Do you really do conflict resolution via alphabetic sorting?
- marknadal 10y agoLexical sort is the last resort of the CRDT, not the first. It is necessary as a worst case scenario though because it is purely deterministic and guarantees convergences. Also, you can have an append-only log where you can run your own conflict resolution algorithm or let manual/human resolution occur on top of it. So all in all it provides the most flexible foundation to build other things from, while still guaranteeing strong eventual consistency. Testing all edge cases is important to us, which is why we built PANIC to verify our algorithms. Hopefully we'll be posting more results soon!