Un approccio, che in teoria è bello ma potrebbe non essere sempre pratico, è quello di rendere tutte le operazioni di scrittura nel sistema sotto test idempotente . Ciò significa che, supponendo che il tuo test test testa le cose in un ordine sequenziale fisso, puoi riprovare tutte le letture e tutte le scritture singolarmente fino a ottenere il risultato che ti aspetti, riprovando fino a qualche timeout che definisci nel il codice di prova viene superato. Cioè, fai la cosa A1, riprova se necessario fino a quando il risultato è B1, quindi fai la cosa A2, riprova se necessario fino a quando il risultato è B2, e così via.
Quindi non devi preoccuparti di controllare le precondizioni delle operazioni di scrittura, perché le operazioni di scrittura le controlleranno già per te, e le riprovi solo finché non ci riescono!
Utilizza gli stessi timeout "predefiniti" il più possibile, che possono essere aumentati se l'intero sistema diventa più lento e sostituisce i valori predefiniti singolarmente quando ritentano operazioni particolarmente lente.