Plan de test de pré-production pour une API de comptabilité
Un guide de fiabilité pour les équipes d’ingénierie : écritures en double, réutilisation de clés d’idempotence, signatures de webhooks, événements hors séquence, montants décimaux, périmètres (scopes), verrouillage de périodes et reprise sur erreur.
Un code 201 Created renvoyé par une API de comptabilité ne prouve pratiquement rien. Il confirme simplement que le serveur a répondu. Il ne garantit pas qu'exactement une seule facture existe, que les débits égalent les crédits, que le numéro de document a été attribué une seule fois ou qu'une nouvelle tentative après une connexion interrompue ne créera pas un second exemplaire. La plupart des doublons de production en comptabilité proviennent de cet écart : une modification validée sur le serveur alors que le client, ignorant l'issue, a relancé l'appel en toute discrétion avec une nouvelle clé.
Ce plan s'adresse aux équipes qui évaluent une API de comptabilité avant de la connecter à de vrais livres comptables. Il se concentre sur le comportement en cas d'erreur, et non sur les cas nominaux (happy paths). Chaque section ci-dessous détaille ce qu'il faut tester, ce qu'il faut vérifier et ce qui constitue un succès. Le contexte d'implémentation est ici celui de Nordlet, dont l'API utilise des clés du porteur (bearer keys) délimitées par des périmètres (scopes), des montants sous forme de chaînes décimales, des clés d'idempotence et des webhooks signés. Pour connaître la syntaxe exacte des points de terminaison et les contrats de réponse, consultez les pages Conventions de l'API et Premiers pas plutôt que de vous fier à des suppositions.
Ce que signifie réellement « réussir » un test
Un test prouve qu'une intégration comptable est sûre uniquement s'il vérifie la sémantique et non les codes de statut. Pour chaque scénario, la suite de tests doit confirmer :
- L'effet métier : il existe exactement un client, une facture, une écriture de journal, une attribution de numéro ou une transition de paiement.
- L'intégrité comptable : les débits égalent les crédits et la précision monétaire survit à la sérialisation.
- Le comportement en cas de rejeu (replay) : une nouvelle tentative renvoie le résultat initial au lieu de créer un nouvel enregistrement.
- La durabilité : les enregistrements d'audit et les événements de webhook existent dès que l'opération est validée.
- L'absence d'effets secondaires en cas d'échec : les requêtes rejetées ne consomment aucun numéro de document et n'écrivent aucune ligne de grand livre partielle.
- La récupération : une erreur transitoire peut être relancée sans duplication ni perte définitive.
Les recommandations de Google en matière d'API établissent une limite claire : seules les opérations dont l'exécution répétée laisse le même état final peuvent être relancées en toute sécurité, et une API doit identifier les opérations qui sont idempotentes plutôt que de relancer aveuglément chaque échec.
Configurer un environnement jetable et observable
Utilisez une entreprise bac à sable (sandbox) et non des livres comptables de production. Une entreprise bac à sable Nordlet utilise les mêmes modules et le même comportement d'API qu'une vraie entreprise, mais elle est étiquetée comme donnée de test, ce qui la rend sûre pour les tests de volume, de doublons et d'erreurs. Cet indicateur est immuable après la création, de sorte qu'aucun livre de production ne peut être reclassé par la suite comme donnée de test. Notez que l'utilisation du bac à sable est mesurée et facturée exactement de la même manière que pour une vraie entreprise, alors dimensionnez vos tests de volume en fonction de la grille tarifaire qui vous est applicable.
Avant d'écrire le moindre test, préparez :
- Une entreprise bac à sable dédiée avec
isSandbox: true. - Une clé d'API de test limitée aux seuls modules testés.
- Un point de terminaison de webhook ou un tunnel local qui préserve le corps brut de la requête.
- Des clients, des fournisseurs et un plan comptable connus préalablement initialisés (seeded).
- Au moins deux périodes comptables : l'une ouverte, l'autre verrouillée.
- Une horloge de test ou une fixture de date si l'implémentation le permet.
- Un stockage local enregistrant chaque tentative de requête, clé d'idempotence, hachage de réponse, livraison de webhook et résultat de rapprochement.
N'exécutez pas de tests de doublons sur des données de staging partagées. Un client ou une facture parasite provenant d'un test précédent rendrait les vérifications ultérieures ambiguës.
Votre fixture pour chaque modification doit capturer la méthode, le point de terminaison, le corps complet, la clé d'idempotence, la portée de la clé, un ID de corrélation client, les horodatages de début et de fin, le statut de la réponse, les en-têtes, le corps, l'ID de la requête, et indiquer si la connexion a été interrompue avant l'arrivée de la réponse. Utilisez des chaînes décimales fixes telles que "75.0000" pour les montants monétaires. Nordlet représente les valeurs monétaires sous forme de chaînes décimales comportant jusqu'à quatre décimales, et son exemple de facture utilise ce format.
La seconde composante de la configuration est l'injection d'erreurs. Votre environnement de test doit être capable de retarder une réponse, de couper une connexion TCP après réception de la requête par le serveur, de renvoyer des réponses synthétiques 429/500/502/503/504, de renvoyer un code d'erreur non-2xx depuis le récepteur de webhook, de livrer deux fois le même webhook, de modifier l'ordre des événements, de corrompre un octet du corps d'un webhook, de modifier la charge utile d'une clé d'idempotence tout en conservant la même clé, d'exécuter simultanément deux requêtes identiques, et de verrouiller une période entre la configuration et la validation (posting). Ces scénarios ont bien plus de valeur que cent exemples de cas nominaux.
Verrouiller le contrat avant d'écrire la logique de nouvelle tentative
Générez ou récupérez le schéma OpenAPI et comparez-le avec votre client. Nordlet publie ses spécifications OpenAPI dans la documentation de l'API et génère ses SDKs typés à partir de cette même spécification, si bien que les tests pilotés par le schéma surpassent les suppositions écrites à la main.
Vérifiez les champs et types obligatoires, les champs de type chaîne décimale, les formats de date et d'horodatage, les actions et périmètres autorisés, la structure de l'enveloppe d'erreur, les schémas d'événements de webhook, les modifications qui acceptent une clé d'idempotence et les champs de réponse qui identifient l'objet créé.
Critères de succès. Le client rejette localement les charges utiles invalides lorsque le schéma le permet. Les réponses du serveur correspondent au schéma documenté. Les décimales incorrectes, les dates erronées et les champs obligatoires manquants génèrent des erreurs de validation structurées. Aucune nouvelle tentative n'est effectuée en cas d'échec de validation déterministe.
Mode de défaillance à éviter. Un client convertit "121.0000" en nombre à virgule flottante binaire (float) et sérialise ensuite un montant légèrement différent. Les nombres entiers passent, mais les lignes de TVA et les quantités fractionnaires échouent. Testez les montants monétaires sous forme de chaînes de caractères de bout en bout.
Autorisation et isolation des tenants
Utilisez des clés distinctes pour la lecture et l'écriture. Testez ensuite toute la matrice : clé manquante, clé invalide, clé valide mais avec un périmètre de module insuffisant, clé valide avec le bon périmètre, clé appartenant à une autre entreprise, et tentative de lecture d'un objet provenant d'une entreprise différente.
Vérifications :
- Des identifiants manquants ou invalides renvoient un code
401. - Une clé valide sans l'autorisation requise renvoie un code
403. - Aucun effet comptable n'est créé en cas d'échec.
- Une requête réussie ne peut ni lire ni modifier les enregistrements d'une autre entreprise.
- Les échecs de sécurité ne font jamais l'objet de nouvelles tentatives automatiques.
Critère de succès. Vous pouvez prouver à la fois l'exactitude des autorisations et l'isolation des tenants au moyen de lectures post-test, et pas seulement grâce aux codes de statut.
Prouver une transaction propre
Exécutez un flux simple et déterministe : créez ou recherchez un client de test, créez une facture avec des montants sous forme de chaînes décimales, émettez-la, lisez la facture ainsi que son impact comptable, lisez l'enregistrement d'audit et recevez le webhook. L'exemple de prise en main (Getting Started) de Nordlet montre que l'émission d'une facture attribue un numéro séquentiel sans rupture, vérifie que la période est ouverte et comptabilise une écriture de journal équilibrée au cours de la même transaction.
Vérifiez que la facture atteint l'état attendu, que le numéro de document est attribué exactement une fois, que les débits égalent les crédits, que la TVA et les totaux de lignes correspondent au calcul d'arrondi arithmétique standard (half-up) attendu, que l'enregistrement d'audit mentionne l'acteur et la modification, que le webhook finit par être livré, et que la réponse de l'API et une lecture ultérieure s'accordent sur l'ID de la facture et son état.
Une distinction importante à garder à l'esprit : l'arrivée d'un webhook ne prouve pas que la modification a été validée. La réponse de l'API combinée à une relecture constituent vos principales assertions de transaction. Le webhook prouve la notification en aval, et il est testé séparément.
Idempotence : même clé, même corps
Générez une seule clé par opération métier logique, et non une par tentative réseau. Envoyez la modification avec la clé K et le corps B, enregistrez l'ID créé, puis envoyez à nouveau exactement la même requête.
Vérifiez que la seconde réponse représente la même opération, que l'ID de l'objet est identique et qu'il n'existe qu'un seul objet métier, qu'une seule écriture comptable, qu'un seul numéro de document et qu'un seul effet financier. La réponse rejouée doit comporter l'en-tête de rejeu documenté - x-idempotent-replay: true dans le cas de Nordlet - et la piste d'audit ne doit montrer aucune seconde modification.
Deux règles de stockage modifient ce à quoi votre boucle de nouvelle tentative doit s'attendre, testez-les donc directement : une réponse 4xx stockée est rejouée comme n'importe quelle autre réponse, tandis qu'une erreur 5xx n'est pas stockée du tout, de sorte qu'une nouvelle tentative après une erreur serveur réexécute l'opération au lieu de la rejouer. Les clés expirent également (après 24 heures chez Nordlet), ce qui limite la durée pendant laquelle un rejeu est possible.
La documentation de Nordlet promet que l'ajout d'un en-tête Idempotency-Key empêche une requête relancée de créer un doublon, et ses conventions d'API définissent l'en-tête de rejeu exact ainsi que l'exigence d'une réponse identique octet par octet. Ce principe correspond au modèle publié par Stripe : une clé identifie l'opération logique, les répétitions renvoient le résultat stocké, et une clé réutilisée avec des paramètres différents est rejetée au lieu d'être modifiée silencieusement.
Critère de succès. Il n'existe qu'une seule transition d'état financier, peu importe le nombre de fois que le client envoie la même requête pendant la fenêtre de rejeu.
Idempotence : même clé, corps modifié
Envoyez la requête initiale avec la clé K et le corps B1, puis une seconde requête avec la clé K et le corps B2 dans lequel au moins un montant, un client, une date ou une ligne diffère.
Résultat attendu : la requête est rejetée avec l'erreur de réutilisation de clé documentée (Nordlet renvoie 422 idempotency_key_reuse), l'enregistrement initial reste inchangé, aucun second enregistrement, numéro ou modification d'audit n'apparaît, et le client ne « corrige » pas l'erreur en générant une nouvelle clé. Accepter silencieusement B2 rendrait les clés de nouvelle tentative dangereuses.
Requêtes en double simultanées
Envoyez deux requêtes identiques avec la même clé au même instant. Selon le comportement documenté, l'une s'exécute tandis que l'autre reçoit un conflit indiquant que l'opération est en cours (Nordlet renvoie 409 idempotency_in_progress), ou les deux finissent par observer le même résultat.
Vérifiez que les deux appels ne peuvent pas créer d'effets financiers indépendants, qu'au maximum un numéro de document est attribué, qu'un conflit temporaire fait l'objet d'une nouvelle tentative avec la même clé et non avec une nouvelle, que la ressource finale est complète et lisible, et que l'enregistrement d'idempotence ne reste pas bloqué de manière permanente.
Mode de défaillance. Une bibliothèque de nouvelles tentatives qui génère un nouvel UUID à chaque essai transforme une opération logique en plusieurs écritures indépendantes et réduit complètement à néant l'idempotence.
L'incertitude du résultat après une connexion interrompue
C'est la simulation de production la plus importante de toutes. Envoyez une modification avec la clé K, laissez le serveur la valider, coupez la connexion avant l'arrivée de la réponse, enregistrez le résultat comme étant inconnu, puis relancez l'opération avec la même clé K et effectuez un rapprochement en lisant la ressource et les données d'audit.
Vérifiez que la nouvelle tentative renvoie la réponse initiale ou la réponse de rejeu documentée, qu'il existe exactement un effet secondaire financier, que le client marque l'opération comme terminée uniquement après un rejeu réussi ou une lecture de rapprochement, et qu'aucune nouvelle clé n'est générée. Un dépassement de délai (timeout) ne signifie pas que « rien ne s'est produit ». Stripe décrit précisément l'idempotence comme une protection contre les erreurs de connexion où le serveur peut avoir traité une modification avant que le client ne puisse recevoir la réponse.
Une politique de nouvelle tentative conservatrice
Les décisions de nouvelle tentative dépendent à la fois de l'erreur et de la nature idempotente ou non de l'opération, et non pas uniquement de la méthode HTTP.
Généralement éligible à une nouvelle tentative, même clé conservée : réinitialisation de connexion ou dépassement de délai après une mutation idempotente, code 408, code 429 après avoir respecté l'en-tête retry-after, et codes 502/503/504. Une réponse d'idempotence documentée comme étant en cours peut être relancée après un court délai.
Non éligible à une nouvelle tentative sans rapprochement : erreurs de validation 400/422, échecs d'authentification 401/403, code 404 pour une ressource manquante, conflits métier 409 sans rapport avec une clé en cours, modification de la charge utile pour une clé existante, et rejet lié au verrouillage de période.
Vérifiez la mise en œuvre d'un recul exponentiel borné avec asymétrie (jitter), de limites explicites sur le nombre de tentatives et le temps écoulé, du respect de l'en-tête retry-after en cas de limitation de débit (rate limit), du maintien de la même clé lors des nouvelles tentatives d'une même opération, de l'utilisation d'une nouvelle clé pour chaque nouvelle opération, et de journaux séparant la tentative initiale des nouvelles tentatives.
Testez la limitation de débit de manière isolée. Franchissez le seuil documenté (Nordlet autorise par défaut 300 requêtes par minute et par clé d'API, et certains points de terminaison non authentifiés appliquent des limites par adresse plus strictes), puis confirmez que le serveur renvoie la réponse de limitation de débit, que le client analyse l'en-tête retry-after comme un délai plutôt que comme une erreur, qu'il marque une pause au lieu d'assommer l'API de requêtes, et qu'une nouvelle tentative de modification bridée réutilise la clé initiale. Les en-têtes x-ratelimit-* indiquent le solde restant, ce qui constitue une bonne vérification préalable. Éloignez les tests de limitation de débit des assertions financières, à moins que votre fixture ne puisse distinguer une tentative bridée d'une tentative validée.
Vérification de la signature des webhooks
Développez un récepteur qui préserve les octets bruts. Pour chaque événement : capturez le corps brut, lisez l'en-tête x-nordlet-signature, calculez le HMAC-SHA256 attendu à l'aide du secret d'abonnement, effectuez la comparaison via une fonction à temps constant (constant-time), analysez le JSON uniquement après vérification, enregistrez la livraison et renvoyez rapidement un code 2xx après une acceptation durable. Nordlet signe un code HMAC sur le corps brut, l'envoie sous la forme sha256=<hex> et réessaie les livraisons avec un recul exponentiel. Les recommandations de webhooks de Stripe renforcent la nécessité de vérifier le corps brut non modifié au moyen d'une comparaison à temps constant.
Effectuez des tests négatifs : corps et secret corrects, corps correct avec un mauvais secret, modification d'un octet dans le corps, JSON resérialisé avec des espaces modifiés, en-tête manquant, signature malformée, rejeu d'une ancienne livraison si le mécanisme inclut un horodatage, et signature valide livrée au mauvais abonnement.
Critères de succès. Seuls le corps brut et le secret corrects sont acceptés. Les signatures invalides reçoivent un code non-2xx. Les charges utiles invalides n'entrent jamais dans la file d'attente comptable. Les secrets sont tenus à l'écart des journaux ordinaires. Le gestionnaire accuse réception uniquement une fois que l'événement est enregistré de manière durable.
Webhooks en double et hors séquence
La fiabilité de la livraison est un problème distinct de l'idempotence de l'API, et le récepteur doit lui aussi être idempotent. Livrez le même événement deux fois, livrez un événement sale_invoice.paid avant un événement sale_invoice.issued, renvoyez un code 500 après la persistance mais avant de répondre, et rejouez un événement que le consommateur a déjà traité.
Vérifiez que les livraisons en double ne dupliquent pas les paiements, les changements de statut ou les actions de journal, que la clé de déduplication utilise l'ID de livraison ou d'événement du fournisseur lorsqu'il existe (ou une clé composite documentée, jamais un horodatage arbitraire), que les événements hors séquence ne écrasent jamais un état récent par un état plus ancien, que le consommateur peut récupérer l'état actuel depuis l'API lorsque l'ordre ne suffit pas, et que les tentatives de consommation échouées sont acheminées via une file d'attente ou un dossier de rebut (dead-letter path). Stripe prévient explicitement que l'ordre de livraison n'est pas garanti et recommande de stocker les ID d'événements traités.
Maintenez la légèreté du point de terminaison : validez la structure, vérifiez la signature, persistez ou mettez en file d'attente, accusez réception, renvoyez le code 2xx. Le rapprochement et les notifications relèvent du traitement asynchrone. Testez cette robustesse en faisant en sorte que le traitement en aval dépasse par le sommeil le délai de livraison (timeout) ; un récepteur correct accuse tout de même réception après la mise en file d'attente durable.
Périodes comptables ouvertes et verrouillées
Nordlet applique les verrouillages de période au moment de la validation (posting) pour les journaux manuels, les flux de documents et les imports ; testez donc ce contrôle à plusieurs endroits. Créez des documents équivalents datés d'une période ouverte, d'une période verrouillée, à la limite juste avant le verrouillage, le premier jour de la période ouverte suivante, et avec une date de document valide mais une date de validation invalide si l'API sépare les deux.
Dans le cas d'une période verrouillée, vérifiez que la requête est rejetée avec l'erreur de verrouillage de période documentée (un conflit 409 conflict chez Nordlet), qu'aucune ligne de journal n'est écrite, qu'aucun numéro de document n'est consommé, qu'aucun document ne passe à l'état validé et qu'aucun webhook de succès n'est déclenché. La version en période ouverte doit réussir avec les mêmes valeurs financières.
Test de concurrence (race test). Lancez une validation sur une période ouverte, verrouillez la période au milieu de la requête, et confirmez que la validation ne peut pas contourner le verrou. Condition critique de succès : une écriture validée ne doit jamais atterrir dans une période qui a été verrouillée avant que la transaction ne soit validée.
Auditabilité et rapprochement
Pour chaque modification réussie, confirmez que l'objet métier existe, que l'écriture comptable existe avec des débits égaux aux crédits, que l'enregistrement d'audit existe, que l'événement de webhook existe ou peut être récupéré, et que votre enregistrement d'opération pointe vers l'ID d'objet du fournisseur, les nouvelles tentatives faisant référence à la même opération logique.
Pour chaque modification rejetée, confirmez qu'aucun document partiel n'existe, qu'aucun numéro n'a été consommé (sauf si le contrat autorise la réservation), qu'aucune écriture au grand livre n'existe, qu'aucun webhook de succès n'existe, et que l'erreur comporte un ID de requête à des fins de diagnostic. Les conventions de Nordlet décrivent l'auditabilité des modifications et les écritures équilibrées comme des garanties de la plateforme, l'équilibre étant appliqué par un déclencheur de base de données différé (deferred database trigger) au moment de la validation plutôt que par le seul code applicatif. Transformez ces garanties en requêtes de rapprochement post-test au lieu de faire aveuglément confiance à la réponse HTTP.
Matrice de test principale
| Domaine | Action de test | Assertion attendue | Critère de succès |
|---|---|---|---|
| Authentification | Pas de clé, clé invalide, périmètre insuffisant | Erreurs 401/403 structurées ; aucun effet secondaire |
Toutes les tentatives rejetées ne créent aucun enregistrement comptable |
| Schéma et montants | Décimale invalide, date, champ obligatoire | Erreur de validation au niveau du champ | Aucune nouvelle tentative ni écriture partielle ne se produit |
| Validation normale | Créer et émettre une facture dans une période ouverte | Un document, un journal équilibré, un enregistrement d'audit | L'état de relecture et le grand livre concordent |
| Rejeu avec la même clé | Répéter une modification identique, même clé et corps | Résultat initial rejoué ; aucun doublon | L'ID d'objet, le numéro, l'effet de journal et l'audit restent uniques |
| Corps modifié, même clé | Réutiliser la clé avec un montant différent | Rejet documenté pour réutilisation de clé | Enregistrement initial inchangé ; rien de nouveau écrit |
| Connexion interrompue | Valider, couper, relancer avec la même clé | Résultat rejoué | Exactement un effet secondaire financier |
| Période verrouillée | Valider un document daté d'une période verrouillée | Rejet pour période verrouillée | Aucun journal, aucun numéro, aucun webhook de succès |
| Signature de webhook | Mauvais secret, corps modifié | Code non-2xx du récepteur | Seuls le corps brut et le secret corrects sont acceptés |
Par quoi commencer en premier lieu
Si le temps est compté, exécutez les tests dans l'ordre qui permet de détecter les bogues les plus coûteux. Commencez par la nouvelle tentative en cas de connexion interrompue, car ce scénario unique génère la majorité des doublons en production. Poursuivez ensuite par la paire d'idempotence (même clé et corps modifié). Attaquez ensuite les périodes verrouillées, dans la mesure où une écriture dans un mois clôturé pose un problème d'audit qui refait surface tardivement. La vérification des signatures et les webhooks hors séquence viennent ensuite, et la matrice complète des schémas et des autorisations pourra s'exécuter en continu dans votre pipeline d'intégration continue (CI) une fois que le client sera stabilisé.
Tout le reste de ce plan vient en appui de ces cinq points. Validez-les sur une entreprise bac à sable, avec des lectures de rapprochement confirmant les effets secondaires, et vous saurez que votre intégration est sûre avant même qu'elle ne touche le moindre vrai grand livre. Vous pouvez créer une entreprise bac à sable et une clé de test délimitée en quelques minutes depuis Premiers pas, et vérifier les modules dont vous avez besoin via la liste des fonctionnalités.
FAQ
Un code de réponse 2xx suffit-il à confirmer qu'une écriture comptable a réussi ?
Non. Un code de statut confirme que le serveur a répondu, et non qu'il existe exactement un document, une attribution de numéro et une écriture de journal équilibrée. Chaque test de modification doit faire suivre la réponse d'une relecture (read-back) de l'objet, de son impact comptable et de son enregistrement d'audit. Le cas le plus dangereux est inverse : une opération validée alors que le client n'a jamais reçu la réponse.
Dois-je générer une nouvelle clé d'idempotence lorsqu'une requête dépasse le délai d'attente (timeout) ?
Non, et c'est l'erreur qui provoque la plupart des doublons en production. La clé identifie l'opération métier logique, et non la tentative réseau. Relancez la même requête avec la même clé, puis procédez à un rapprochement en lisant la ressource. Une bibliothèque de nouvelles tentatives qui génère un nouvel UUID à chaque essai transforme une facture voulue en plusieurs écritures indépendantes.
Que se passe-t-il si je réutilise une clé d'idempotence avec une charge utile différente ?
Une API correcte la rejette au lieu d'appliquer silencieusement le nouveau corps. Nordlet renvoie 422 idempotency_key_reuse et laisse l'enregistrement initial intact. Votre client doit considérer cela comme une erreur de programmation à corriger, et non comme une condition à contourner en générant une nouvelle clé.
Les webhooks remplacent-ils la relecture de l'objet créé ?
Non. La livraison d'un webhook prouve la notification en aval, mais pas que la transaction a été validée de la manière attendue, et l'ordre de livraison n'est pas garanti. Vérifiez la signature sur le corps brut, dédupliquez sur l'ID de livraison ou d'événement, et récupérez l'état actuel depuis l'API chaque fois que l'ordre des événements ne suffit pas à lui seul pour déterminer ce qui a changé.
Comment tester la validation (posting) dans une période comptable verrouillée ?
Créez des documents équivalents dans une période ouverte et dans une période verrouillée, et vérifiez que le cas verrouillé est rejeté sans aucune ligne de journal, sans numéro de document consommé, sans transition d'état et sans webhook de succès. Exécutez ensuite la version concurrente : lancez une validation sur une période ouverte et verrouillez la période au milieu de la requête. Une écriture validée ne doit jamais atterrir dans une période qui a été verrouillée avant la validation de la transaction.
Puis-je exécuter des tests de doublons à fort volume dans une entreprise bac à sable ?
Oui. Une entreprise bac à sable se comporte comme une vraie entreprise, est étiquetée comme donnée de test et est supprimée immédiatement au lieu de l'être après la période de rétention ; c'est donc l'endroit idéal pour les tests destructifs et de doublons. L'utilisation du bac à sable reste mesurée et facturée comme une utilisation réelle, planifiez donc le volume plutôt que de lancer des boucles indéfinies.