C'est une question difficile, car les deux options offrent différents niveaux de testabilité et de flexibilité lors des tests. Il y a aussi beaucoup de problèmes associés à chacun. Donc, ma réponse sera à nouveau: "Cela dépend de vos besoins!".
Exécuter des tests sur un appareil est toujours, à mon avis, la meilleure solution car il offre un environnement de test totalement aligné sur l'environnement d'exécution: les tests s'exécutent sur les appareils sur lesquels vos applications seront utilisées une fois publiées sur des magasins. Cependant, les appareils doivent être connectés au Serveur Appium via USB au moins, et ce n’est pas toujours une très bonne chose. ADB a un problème connu pour lequel un périphérique se déconnecte après un certain temps (même s'il est resté branché en permanence): de ce fait, vos tests risquent d'échouer au bout d'un moment et Appium signalera qu'un périphérique n'a pas pu être trouvé! J'ai dû écrire un composant qui réinitialise ADB après un certain temps afin que les périphériques ne se déconnectent pas.