Un programmeur regarde la fonction max, qui renvoie le plus grand de deux nombres. Comment s'assurer qu'elle fonctionne ? On peut écrire des tests : max(2,3)=3, max(5,5)=5. Mais que se passe-t-il si une erreur se cache au fin fond du code et ne se manifeste qu'avec le nombre 65536 ? Au lieu de deviner, on peut formuler une règle : « le résultat n'est jamais inférieur à chacun des arguments ». C'est une propriété, elle doit être vraie pour toutes les entrées possibles.
La bibliothèque ScalaCheck génère automatiquement des centaines de nombres aléatoires, les injecte dans la propriété et signale si la règle est violée. Ainsi, les propriétés agissent comme une boussole : elles ne vérifient pas un itinéraire précis, mais indiquent une direction valable pour tout chemin. Par exemple, pour la fonction sum (addition d'une liste de nombres), la propriété « si on ajoute un nombre positif, la somme augmente » détecte une erreur de dépassement que les tests classiques ne remarquent pas.
La programmation précise, c'est quand le développeur pense au code à travers ses propriétés. Au lieu de se perdre dans le brouillard de la complexité, il tient en main une boussole faite de règles vérifiables automatiquement. Cela rend les programmes plus fiables et leur modification plus sûre.
Le nom de la bibliothèque ScalaCheck fait référence à l'idée de vérification automatique de propriétés, et non à une « vérification de Scala » : c'est un outil pour vérifier des propriétés en Scala.
Dans la série « Westworld », le comportement des robots est déterminé par des règles complexes, mais leur correction n'est pas garantie. La programmation précise pourrait aider à formuler et vérifier des propriétés de comportement, évitant ainsi des défaillances inattendues.