rust

3 posts

Le mutation testing en Rust fonctionne, mais vos temps de compilation vont le détester

cargo-mutants trouve les tests qui font semblant de vérifier votre code. Voici comment fonctionne le mutation testing pour Rust, ce qu'il détecte, et si le coût en temps de compilation en vaut la peine.

Vous avez 100 % de couverture de lignes. Chaque branche est exécutée. Chaque fonction est appelée. Puis quelqu'un change un en dans votre logique de…

Les tests basés sur les propriétés en Rust trouvent les bugs que vos tests unitaires ne détectent pas

Le test par exemple ne couvre que les entrées auxquelles vous avez pensé. Le test basé sur les propriétés génère des données aléatoires, vérifie les invariants et réduit les échecs à des contre-exemples minimaux.

Vous avez écrit une fonction . Vous l'avez testée avec et . Elle passe. Vous livrez. Un utilisateur passe un slice à un seul élément. Votre fonction l'ignore.…

Les Runtime Contracts en Rust peuvent être sans coût en release, mais le compilateur ne le fera pas à votre place

Rust élimine automatiquement les debug assertions, mais un vrai design-by-contract nécessite plus que debug_assert!. Voici comment construire des runtime contracts sans coût qui disparaissent de votre binaire release.

Rust peut appliquer des runtime contracts en développement et les effacer complètement des builds release. La mise en garde est que le langage ne traite pas…