È la loro unica somiglianza il fatto che siano not xUnit (o più precisamente, non basati sull'enumerazione di casi di test specifici), o è più profondo di così?
I test basati su proprietà (usando QuickCheck, ScalaCheck, ecc.) sembrano adatti per uno stile di programmazione funzionale in cui vengono evitati gli effetti collaterali. D'altra parte, Design by Contract (come implementato in Eiffel) è più adatto ai linguaggi OOP: puoi esprimere post-condizioni sugli effetti dei metodi, non solo sui loro valori di ritorno.
Ma entrambi implicano test affermazioni che sono vere in generale (piuttosto che asserzioni che dovrebbero essere vere per un caso di test specifico). Entrambi possono essere testati utilizzando input generati casualmente (con QuickCheck questo è il modo solo , mentre con Eiffel credo che sia una funzionalità opzionale dello strumento AutoTest).
Esiste un termine generico per comprendere entrambi gli approcci? O sto immaginando una relazione che in realtà non esiste.