I test double (informalmente indicati anche con la denominazione impropria[1] di mock) sono uno strumento utilizzato in programmazione, specialmente orientata agli oggetti, come ausilio nello sviluppo di test unitari. Un test double è un oggetto che presenta la stessa interfaccia di un oggetto appartenente all'applicazione, ma ha un comportamento semplificato (o addirittura "vuoto"). Dato che l'interfaccia è la stessa, l'oggetto applicativo può essere "rimpiazzato" dal suo test double in quei test in cui il comportamento dell'oggetto reale non è rilevante o addirittura non è riproducibile. Le modalità con cui il test double viene sostituito all'oggetto reale sono in generale riconducibili alle tecniche di dependency injection. L'espressione "test double" è un calco da "stunt double", controfigura.[1]