{"id":16688,"date":"2026-08-13T11:26:40","date_gmt":"2026-08-13T09:26:40","guid":{"rendered":"https:\/\/ttc-testing.io\/?page_id=16688"},"modified":"2026-08-13T12:40:25","modified_gmt":"2026-08-13T10:40:25","slug":"accueil-2026","status":"publish","type":"page","link":"https:\/\/ttc-testing.io\/he\/","title":{"rendered":"TTC Testing \u2014 \u05de\u05d5\u05de\u05d7\u05d9\u05dd \u05d1\u05ea\u05d7\u05d5\u05dd \u05d0\u05d1\u05d8\u05d7\u05ea \u05d0\u05d9\u05db\u05d5\u05ea, \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4"},"content":{"rendered":"\n<style>\n  :root{--logo-blanc:url(https:\/\/ttc-testing.io\/wp-content\/uploads\/2024\/08\/Logo-TTC-1.png);--logo-couleur:url(https:\/\/ttc-testing.io\/wp-content\/uploads\/2024\/08\/Logo-TTC-1.png)}\n  :root{\n    \/* Palette officielle \u2014 Charte TTC Testing *\/\n    --nuit:#0F1E3C; --lime:#C6E643; --bleu:#1A67B8; --cyan:#00B8D4;\n    --gris-clair:#F5F7FA; --gris-2:#6B7280; --blanc:#FFFFFF;\n    --encre:#0F1E3C; --glace:var(--lime); --turq:var(--bleu); --creme:var(--gris-clair);\n    --bord:#DDE3EC; --ambre:#F5A623;\n    \/* Charte : Helvetica\/Arial, ou \u00e9quivalent sans-serif moderne (Inter, Manrope) *\/\n    --geo:\"Helvetica Neue\",Helvetica,Arial,Inter,Manrope,system-ui,sans-serif;\n    --texte:\"Helvetica Neue\",Helvetica,Arial,Inter,Manrope,system-ui,sans-serif;\n    --f:var(--creme); --t:var(--encre); --s:#5D7186; --b:var(--bord);\n  }\n  @media (prefers-color-scheme: dark){:root{--f:#0A1638;--t:#EEF5FA;--s:#93A9C4;--b:#243863;--blanc:#132449}}\n  :root[data-theme=\"dark\"]{--f:#0A1638;--t:#EEF5FA;--s:#93A9C4;--b:#243863;--blanc:#132449}\n  :root[data-theme=\"light\"]{--f:var(--creme);--t:var(--encre);--s:#5D7186;--b:var(--bord);--blanc:#FFFFFF}\n\n  *{box-sizing:border-box}\n  html{scroll-behavior:smooth}\n  body{margin:0;background:var(--nuit);color:#fff;font:17px\/1.62 var(--texte);\n       -webkit-font-smoothing:antialiased;transition:color .3s ease}\n  \/* La nappe de fond : une seule surface, dont la teinte se d\u00e9place au fil de la page.\n     Le contenu flotte au-dessus, les sections n'ont plus de fond propre. *\/\n  #nappe{position:fixed;inset:0;z-index:-1;background:var(--nuit);\n         transition:background-color .16s linear}\n  \/* Deux r\u00e9gimes de lisibilit\u00e9 : texte clair sur fonds profonds, texte navy sur fonds vifs. *\/\n  :root.sur-sombre body{color:#fff}\n  :root.sur-clair body{color:var(--nuit)}\n  :root.sur-sombre .s{color:rgba(255,255,255,.72)}\n  :root.sur-clair .s{color:rgba(15,30,60,.72)}\n  :root.sur-clair .oeil{color:var(--nuit)}\n  :root.sur-sombre .oeil{color:var(--lime)}\n  :root.sur-clair .kpi .n{color:var(--nuit)}\n  :root.sur-sombre .kpi .n{color:var(--lime)}\n  :root.sur-clair .kpi{border-top-color:var(--nuit)}\n  :root.sur-clair .exp article{border-top-color:rgba(15,30,60,.25)}\n  :root.sur-clair .pas{border-top-color:rgba(15,30,60,.25)}\n  :root.sur-clair .pas>div::before{background:var(--nuit)}\n  :root.sur-clair .pas .num{color:var(--nuit)}\n  :root.sur-clair .logos span{opacity:.85}\n  :root.sur-clair .cas{border-left-color:var(--nuit)}\n  .w{max-width:1180px;margin:0 auto;padding:0 clamp(20px,5vw,52px)}\n  section{padding:clamp(58px,9vw,120px) 0;position:relative;overflow:hidden}\n  .nuit,.clair{background:transparent}\n\n  \/* ---- titres g\u00e9om\u00e9triques, en capitales, tr\u00e8s grands : la signature TTC ---- *\/\n  .geo{font-family:var(--geo);font-weight:800;letter-spacing:-.02em}\n  h1{font-family:var(--geo);font-weight:800;font-size:clamp(40px,8.2vw,104px);line-height:.96;\n     margin:0 0 28px;text-transform:uppercase;text-wrap:balance;max-width:12ch}\n  \/* \u00ab G\u00e9n\u00e9ralistes \u00bb est un mot long : le titre du hero se r\u00e8gle sur lui pour ne jamais\n     empi\u00e9ter sur le logo, quelle que soit la largeur de la fen\u00eatre. *\/\n  .hero h1{font-size:clamp(28px,4.1vw,54px);max-width:26ch;text-wrap:nowrap}\n  @media(max-width:760px){.hero h1{text-wrap:balance;max-width:14ch}}\n  @media(min-width:1051px){.hero .sous-hero{max-width:46ch}}\n  .sous-hero{font-family:var(--texte);font-size:clamp(17px,1.85vw,21px);line-height:1.55;\n             max-width:50ch;margin:0 0 34px}\n  h2{font-family:var(--geo);font-weight:800;font-size:clamp(27px,4.4vw,50px);line-height:1.04;\n     margin:0 0 18px;text-transform:uppercase;text-wrap:balance;max-width:19ch}\n  h3{font-family:var(--geo);font-weight:700;margin:0;font-size:21px;letter-spacing:0}\n  .oeil{font:700 15px\/1.3 var(--texte);letter-spacing:.24em;text-transform:uppercase;margin:0 0 24px;\n        display:flex;align-items:center;gap:16px;color:var(--bleu)}\n  .oeil::before{content:\"\";flex:0 0 auto;width:40px;height:2px;background:currentColor}\n  .nuit .oeil{color:var(--lime)}\n  .lede{font-size:clamp(17px,1.9vw,20px);line-height:1.55;max-width:58ch;margin:0}\n  .intro{max-width:62ch;margin:0 0 44px}\n\n  .pill{display:inline-block;font:600 14px\/1 var(--texte);letter-spacing:.1em;text-transform:uppercase;\n        padding:16px 32px;border-radius:999px;border:1.6px solid currentColor;text-decoration:none;\n        color:inherit;transition:background .2s,color .2s}\n  .nuit .pill:hover{background:var(--lime);color:var(--nuit);border-color:var(--lime)}\n  .barre .pill:hover{background:var(--lime);color:var(--nuit);border-color:var(--lime)}\n  .clair .pill:hover{background:var(--nuit);color:#fff;border-color:var(--nuit)}\n\n  \/* ---- navigation ---- *\/\n  .barre{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--nuit) 92%,transparent);\n         color:#fff;backdrop-filter:blur(16px);transition:box-shadow .25s ease}\n  .barre.pose{box-shadow:0 6px 26px -18px rgba(16,31,77,.55)}\n  .marque-ttc{display:block;height:42px;width:86px;background:var(--logo-blanc) left center\/contain no-repeat}\n  \/* La barre porte huit liens, la bascule de langue et l'appel \u00e0 l'action : tout doit tenir\n     sur une ligne jusqu'aux \u00e9crans de portable, sinon le bouton de contact d\u00e9croche. *\/\n  nav{display:flex;flex-wrap:wrap;align-items:center;gap:10px 20px;padding:18px 0}\n\n  nav ul{display:flex;flex-wrap:wrap;gap:6px clamp(12px,1.5vw,22px);list-style:none;margin:0;padding:0;\n         font:600 12.5px\/1 var(--texte);letter-spacing:.1em;text-transform:uppercase}\n  nav a{color:inherit;text-decoration:none;opacity:.78}\n  nav a:hover{opacity:1;color:var(--lime)}\n  nav .pill{margin-left:auto;padding:11px 20px;font-size:12px;letter-spacing:.08em;white-space:nowrap}\n  @media(max-width:1180px){nav .pill{padding:10px 17px}}\n\n  \/* ---- bascule de langue ---- *\/\n  .langue{display:flex;align-items:center;gap:2px;border:1.4px solid rgba(255,255,255,.34);\n          border-radius:999px;padding:3px;flex:0 0 auto}\n  .langue button{background:none;border:0;cursor:pointer;color:inherit;opacity:.62;\n                 font:700 11.5px\/1 var(--texte);letter-spacing:.1em;padding:7px 11px;\n                 border-radius:999px;transition:background .18s,color .18s,opacity .18s}\n  .langue button:hover{opacity:1}\n  .langue button[aria-pressed=\"true\"]{background:var(--lime);color:var(--nuit);opacity:1}\n\n  \/* ---- hero ---- *\/\n  .hero{padding-top:clamp(54px,7vw,92px);padding-bottom:clamp(54px,7vw,96px);\n         min-height:min(78vh,760px);display:flex;align-items:center}\n  .hero::after{content:\"\";position:absolute;right:-16%;top:-30%;width:64vw;height:64vw;max-width:860px;\n    max-height:860px;border-radius:50%;border:1px solid rgba(198,230,67,.25);\n    background:radial-gradient(circle at 38% 36%,rgba(198,230,67,.07),transparent 62%);\n    pointer-events:none}\n  .hero .w{position:relative;z-index:1;width:100%}\n  \/* Le logo tient le c\u00f4t\u00e9 droit du hero, en grand, d\u00e9bordant l\u00e9g\u00e8rement du cadre. *\/\n  .logo-fixe{position:fixed;right:2%;top:50%;transform:translate(0,-50%) scale(1);z-index:0;\n             width:min(42vw,482px);height:min(30vh,244px);\n             pointer-events:none;filter:drop-shadow(0 24px 60px rgba(0,0,0,.3));\n             transition:right 1s cubic-bezier(.62,.02,.2,1), transform 1s cubic-bezier(.62,.02,.2,1)}\n  \/* \u00c0 l'ouverture, le logo se pose au centre de l'\u00e9cran nu, puis rejoint son bord. *\/\n  :root.logo-centre .logo-fixe{right:50%;transform:translate(50%,-50%) scale(1.14)}\n  .logo-fixe span{position:absolute;inset:0;display:block;\n                  background-repeat:no-repeat;background-position:right center;background-size:contain;\n                  transition:opacity .45s ease}\n  \/* Sur les fonds profonds c'est la version blanche qui tient, sans d\u00e9pendre du script. *\/\n  .logo-fixe .l-blanc{opacity:.88;background-image:var(--logo-blanc)}\n  .logo-fixe .l-couleur{opacity:0;background-image:var(--logo-couleur)}\n  \/* Deux versions du logo : la blanche sur les fonds profonds, la couleur sur les fonds vifs. *\/\n  :root.sur-sombre .logo-fixe .l-blanc{opacity:.88}\n  :root.sur-sombre .logo-fixe .l-couleur{opacity:0}\n  :root.sur-clair  .logo-fixe .l-blanc{opacity:0}\n  :root.sur-clair  .logo-fixe .l-couleur{opacity:.9}\n  \/* Sur les fen\u00eatres \u00e9troites le logo r\u00e9tr\u00e9cit, mais il ne s'efface jamais. *\/\n  @media(max-width:1150px){.logo-fixe{width:min(38vw,336px);height:min(21vh,170px)}}\n  @media(max-width:700px){.logo-fixe{display:none}}\n  \/* Le contenu passe au-dessus du filigrane. *\/\n  section{z-index:1}\n  \/* R\u00e9seau de connexions : le trait se dessine au chargement, puis reste. *\/\n  .reseau{position:absolute;right:-6%;top:50%;transform:translateY(-50%);\n          width:min(56%,660px);height:auto;pointer-events:none;opacity:.28}\n  @media(max-width:900px){.reseau{display:none}}\n  .reseau path{stroke-dasharray:600;stroke-dashoffset:600;animation:tirer 2.6s ease-out forwards}\n  .reseau path:nth-child(2){animation-delay:.25s}\n  .reseau path:nth-child(3){animation-delay:.5s}\n  .reseau path:nth-child(4){animation-delay:.75s}\n  .reseau circle{opacity:0;animation:poindre .5s ease-out forwards;animation-delay:1.6s}\n  @keyframes tirer{to{stroke-dashoffset:0}}\n  @keyframes poindre{to{opacity:1}}\n  @media (prefers-reduced-motion:reduce){\n    .reseau path{stroke-dashoffset:0;animation:none}\n    .reseau circle{opacity:1;animation:none}\n  }\n\n  \/* ---- bandes de chiffres ---- *\/\n  .bande{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:40px 26px}\n  \/* Le tiers droit reste au logo : les chiffres s'arr\u00eatent avant lui. *\/\n  @media(min-width:1051px){.bande{max-width:70%}}\n  .kpi .n{font-family:var(--geo);font-weight:900;font-size:clamp(44px,6.6vw,76px);line-height:.9;\n          letter-spacing:-.035em;font-variant-numeric:tabular-nums;color:var(--lime)}\n  .clair .kpi .n{color:var(--nuit)}\n  .kpi .u{font-size:.46em;font-weight:600}\n  .kpi{padding-top:16px;border-top:3px solid var(--lime)}\n  .kpi .l{margin-top:12px;font:700 12px\/1.4 var(--texte);letter-spacing:.16em;text-transform:uppercase}\n\n  \/* ---- grilles ---- *\/\n  .g3{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:22px;align-items:stretch}\n  .g2{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:22px;align-items:stretch}\n  .exp{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:24px 34px}\n  .exp article{padding-top:22px;border-top:1px solid rgba(255,255,255,.22)}\n  .exp p{margin:8px 0 0;font-size:15.5px;line-height:1.55}\n  .exp .out{margin-top:10px;font-size:13px;letter-spacing:.04em;opacity:.75}\n\n  .carte{background:rgba(255,255,255,.94);border:1px solid rgba(15,30,60,.10);color:var(--nuit);border-radius:10px;overflow:hidden;\n         display:flex;flex-direction:column;transition:transform .22s ease,box-shadow .22s ease}\n  .carte:hover{transform:translateY(-5px);box-shadow:0 18px 44px -22px rgba(16,31,77,.45)}\n  .carte .filet{height:5px;background:var(--lime)}\n  .carte .in{padding:28px 26px;display:flex;flex-direction:column;gap:14px;flex:1}\n  .carte .quoi{font:700 11.5px\/1 var(--texte);letter-spacing:.22em;text-transform:uppercase;color:var(--bleu)}\n  .carte p{margin:0;font-size:15.5px;line-height:1.55}\n  .carte .s,.cite .s{color:rgba(15,30,60,.72)!important}\n  .carte ul{margin:0;padding-left:19px;font-size:14.5px;display:grid;gap:6px}\n  .carte .pied{margin-top:auto;padding-top:16px;border-top:1px solid rgba(15,30,60,.12);font-size:13.5px}\n  .carte .pied b{color:var(--bleu)}\n\n  \/* ---- d\u00e9marche ---- *\/\n  .pas{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:0;\n       border-top:1px solid rgba(255,255,255,.25)}\n  .pas>div{padding:24px 24px 0 0;position:relative}\n  .pas>div::before{content:\"\";position:absolute;top:-1px;left:0;width:70%;height:3px;\n                   background:var(--lime)}\n  .pas .num{font-family:var(--geo);font-weight:800;font-size:34px;line-height:1;color:var(--lime)}\n  .pas b{display:block;font-family:var(--geo);font-weight:800;font-size:19px;margin:8px 0 6px}\n  .pas span{font-size:14.5px;line-height:1.5}\n\n  \/* ---- citations ---- *\/\n  .cites{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:22px}\n  .cite{background:rgba(255,255,255,.94);border:1px solid rgba(15,30,60,.10);border-radius:10px;\n        padding:26px;color:var(--nuit)}\n  .cite p{margin:0 0 16px;font-size:16.5px;line-height:1.5;font-style:italic}\n  .cite footer{font-size:14px;line-height:1.45}\n  .cite b{font-family:var(--geo);font-weight:700;font-style:normal}\n\n  .logos{display:flex;flex-wrap:wrap;gap:11px}\n  .logos span{border:1px solid currentColor;border-radius:999px;padding:10px 20px;font:600 14px\/1 var(--texte);\n              letter-spacing:.06em;opacity:.72;transition:opacity .18s}\n  .logos span:hover{opacity:1}\n  .logos span.nous{border-width:2px;opacity:1;font-weight:700}\n\n  \/* ---- actualit\u00e9s ---- *\/\n  .actus{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:22px}\n  .actu{background:rgba(255,255,255,.94);border:1px solid rgba(15,30,60,.10);border-radius:10px;\n        color:var(--nuit);display:flex;flex-direction:column;overflow:hidden;\n        transition:transform .22s ease,box-shadow .22s ease}\n  .actu:hover{transform:translateY(-5px);box-shadow:0 18px 44px -22px rgba(16,31,77,.45)}\n  .actu .filet{height:5px;background:var(--lime)}\n  .actu .in{padding:26px;display:flex;flex-direction:column;gap:12px;flex:1}\n  .actu .quand{font:700 11px\/1 var(--texte);letter-spacing:.19em;text-transform:uppercase;\n               color:var(--bleu)}\n  .actu h3{font-size:19px;line-height:1.25}\n  .actu h3 a{color:inherit;text-decoration:none}\n  .actu h3 a:hover{text-decoration:underline}\n  .actu p{margin:0;font-size:15px;line-height:1.55;color:rgba(15,30,60,.72)}\n  .actu .lire{margin-top:auto;padding-top:14px;font:700 12px\/1 var(--texte);letter-spacing:.13em;\n              text-transform:uppercase;color:var(--bleu);text-decoration:none}\n  .actu .lire:hover{text-decoration:underline}\n\n  \/* ---- profils disponibles : acc\u00e8s r\u00e9serv\u00e9 ---- *\/\n  .cadenas{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:30px}\n  .cadenas[hidden]{display:none}\n  .cadenas input{font:500 16px\/1 var(--texte);padding:15px 20px;border-radius:999px;\n                 border:1px solid rgba(255,255,255,.4);background:rgba(255,255,255,.07);\n                 color:inherit;min-width:230px}\n  .cadenas input::placeholder{color:currentColor;opacity:.5}\n  .cadenas input:focus{outline:2px solid var(--lime);outline-offset:2px}\n  .cadenas button{cursor:pointer}\n  .refus{flex-basis:100%;margin:2px 0 0;font-size:14.5px;color:#FFB4A8}\n  .indice{margin-top:14px;font-size:13.5px;opacity:.6}\n  .profils{display:grid;grid-template-columns:repeat(auto-fit,minmax(345px,1fr));gap:22px;margin-top:34px}\n  .profil .tete{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px}\n  .profil .code{font-family:var(--geo);font-weight:800;font-size:22px;letter-spacing:-.01em;\n                white-space:nowrap}\n  .profil .filiere{font:700 10.5px\/1 var(--texte);letter-spacing:.15em;text-transform:uppercase;\n                   background:var(--lime);color:var(--nuit);border-radius:999px;padding:7px 12px}\n  .profil .secteurs{margin-top:-6px;font-size:14.5px;color:rgba(15,30,60,.62)}\n  .profil .prix{display:flex;align-items:baseline;flex-wrap:wrap;gap:9px;padding:14px 0;\n                border-top:1px solid rgba(15,30,60,.12);border-bottom:1px solid rgba(15,30,60,.12)}\n  .profil .tjm{font-family:var(--geo);font-weight:800;font-size:27px;line-height:1;color:var(--nuit)}\n  .profil .tjm-l{font:700 10px\/1 var(--texte);letter-spacing:.14em;text-transform:uppercase;\n                 color:rgba(15,30,60,.45)}\n  .profil .dispo{margin-left:auto;font:700 10.5px\/1 var(--texte);letter-spacing:.13em;\n                 text-transform:uppercase;color:rgba(15,30,60,.5);white-space:nowrap;\n                 border:1px solid currentColor;border-radius:999px;padding:7px 11px}\n  .profil .dispo.libre{color:#1F7A4A;background:rgba(31,122,74,.09);border-color:rgba(31,122,74,.35)}\n  .profil .tags{display:flex;flex-wrap:wrap;gap:6px;margin:0}\n  .profil .tags span{border:1px solid rgba(15,30,60,.22);border-radius:999px;padding:6px 11px;\n                     font:600 12px\/1 var(--texte)}\n  .profil .tags span.cle{background:var(--lime);border-color:transparent;font-weight:700}\n  .profil .band{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px;margin:0}\n  .profil .band div{border-left:2px solid var(--lime);padding-left:11px}\n  .profil .band dt{font:700 9.5px\/1 var(--texte);letter-spacing:.14em;text-transform:uppercase;\n                   color:rgba(15,30,60,.45)}\n  .profil .band dd{margin:5px 0 0;font-size:13.5px;font-weight:600;line-height:1.35}\n  .profil .cv{display:inline-flex;align-items:center;gap:9px;align-self:flex-start;margin-top:auto;\n              border:1.5px solid var(--nuit);border-radius:999px;padding:11px 20px;\n              font:700 12.5px\/1 var(--texte);letter-spacing:.09em;text-transform:uppercase;\n              color:var(--nuit);text-decoration:none;transition:background .18s,color .18s}\n  .profil .cv:hover{background:var(--nuit);color:#fff}\n  .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}\n\n  .faq details{border-bottom:1px solid rgba(128,128,128,.35);padding:18px 0}\n  .faq summary{cursor:pointer;font-family:var(--geo);font-weight:700;font-size:18px;list-style:none}\n  .faq summary::-webkit-details-marker{display:none}\n  .faq summary::after{content:\"+\";float:right;font-weight:400;opacity:.5}\n  .faq details[open] summary::after{content:\"\u2013\"}\n  .faq p{margin:12px 0 0;font-size:15.5px;max-width:64ch}\n\n  .liste-defis{margin:0;padding:0;list-style:none;display:grid;gap:14px}\n  .liste-defis li{padding-left:20px;position:relative;font-size:16px;line-height:1.5}\n  .liste-defis li::before{content:\"\";position:absolute;left:0;top:.62em;width:9px;height:2px;\n                          background:var(--lime)}\n  .cas{border-left:4px solid var(--lime);padding:0 0 0 26px}\n  .cas ul{margin:18px 0 0;padding-left:19px;display:grid;gap:9px;font-size:16px}\n  .cas b{font-weight:650}\n\n  .final{text-align:center}\n  .final h2{margin-inline:auto;max-width:20ch}\n  .final .lede{margin-inline:auto}\n  .final .pill{margin-top:30px}\n  .coord{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 38px;margin:38px 0 0;\n         padding:0;list-style:none;font-size:15.5px}\n  .coord a{color:inherit;text-decoration:none;border-bottom:1px solid currentColor}\n  .coord a:hover{color:var(--lime);border-color:var(--lime)}\n  footer.pied{padding:44px 0;font-size:14px}\n  footer.pied a{color:inherit;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.3)}\n\n  \/* ---------- Rideau d'ouverture ----------\n     Une nu\u00e9e de T et de C arrive de tous les c\u00f4t\u00e9s, se colle en mosa\u00efque, et c'est cette mosa\u00efque\n     qui donne la couleur du fond. Pos\u00e9 par le script UNIQUEMENT : sans JavaScript il n'existe pas.\n     Deux minuteurs le retirent quoi qu'il arrive. *\/\n  #rideau{position:fixed;inset:0;z-index:100;overflow:hidden;background:var(--nuit);\n          transition:opacity .5s ease,visibility .5s}\n  #rideau.parti{opacity:0;visibility:hidden}\n  #rideau .tuile{position:absolute;display:grid;place-items:center;line-height:1;\n                 font-family:\"Arial Rounded MT Bold\",\"Varela Round\",Nunito,Quicksand,Verdana,\n                             \"Century Gothic\",\"Avenir Next\",Futura,sans-serif;\n                 font-weight:900;will-change:transform,opacity;\n                 animation:atterrir 1.05s cubic-bezier(.24,.86,.3,1) backwards}\n  @keyframes atterrir{\n    from{transform:translate(var(--dx),var(--dy)) rotate(var(--r)) scale(.2);opacity:0}\n    55%{opacity:1}\n    78%{transform:translate(calc(var(--dx) * .06),calc(var(--dy) * .06))\n                  rotate(calc(var(--r) * .08)) scale(1.06)}\n    to{transform:translate(0,0) rotate(0) scale(1);opacity:1}\n  }\n  \/* En vol, chaque tuile est un disque : la mosa\u00efque se lit comme une suspension de mol\u00e9cules.\n     \u00c0 la fusion, les disques se carrent et se soudent en un champ continu. *\/\n  #rideau .tuile{border-radius:50%;\n                 transition:background-color .9s ease,color .7s ease,border-radius .75s ease}\n  #rideau.fusion .tuile{background-color:var(--nuit)!important;color:transparent!important;\n                        border-radius:0!important}\n  \/* Chacune d\u00e9rive \u00e0 son propre rythme \u2014 le mouvement ne se synchronise jamais. *\/\n  #rideau .tuile i{display:block;font-style:normal;\n                   animation:flotter var(--d) ease-in-out var(--dd) infinite alternate}\n  @keyframes flotter{\n    from{transform:translate(0,0) rotate(0)}\n    to{transform:translate(var(--fx),var(--fy)) rotate(var(--fr))}\n  }\n  #rideau.fusion .tuile i{animation-play-state:paused}\n  \/* Le texte du hero n'entre qu'une fois le d\u00e9cor d\u00e9couvert. Classe pos\u00e9e par le script\n     uniquement : sans JavaScript, le texte est visible d'embl\u00e9e. *\/\n  :root.avant-texte .hero .w > *,\n  :root.avant-texte .hero + section .w > *{opacity:0}\n  .hero .w > *, .hero + section .w > *{transition:opacity .7s ease}\n  #rideau .passer{position:absolute;bottom:24px;right:24px;z-index:3;background:none;border:0;\n                  cursor:pointer;color:rgba(255,255,255,.6);font:600 11px\/1 var(--texte);\n                  letter-spacing:.2em;text-transform:uppercase;padding:10px}\n  #rideau .passer:hover{color:#fff}\n  \/* Mouvement r\u00e9duit : personne ne perd l'ouverture, elle se joue en fondu.\n     Ni lettres qui volent, ni glissement \u2014 l'\u00e9cran bleu, le logo, puis le texte. *\/\n  @media (prefers-reduced-motion:reduce){\n    #rideau .tuile, #rideau .tuile i{animation:none!important}\n    #rideau .passer{display:none}\n    .logo-fixe{transition:opacity .6s ease}\n    :root.logo-centre .logo-fixe{right:2%;transform:translate(0,-50%) scale(1);opacity:0}\n  }\n  :focus-visible{outline:2px solid var(--lime);outline-offset:3px}\n\n  \/* R\u00e9v\u00e9lation au d\u00e9filement. Le contenu est visible PAR D\u00c9FAUT : la classe \u00ab js \u00bb n'est pos\u00e9e\n     que si le script tourne, donc rien ne peut rester invisible. *\/\n  .js .rev{opacity:0;transform:translateY(26px);\n           transition:opacity .72s cubic-bezier(.22,1,.36,1),transform .72s cubic-bezier(.22,1,.36,1)}\n  .js .rev.vu{opacity:1;transform:none}\n  @media (prefers-reduced-motion:reduce){.js .rev{opacity:1;transform:none;transition:none}}\n\n  \/* barre de progression de lecture *\/\n  .bandeau-lime{height:6px;background:var(--lime)}\n  .jauge{position:fixed;top:6px;left:0;height:3px;width:0;z-index:40;\n         background:var(--lime);transition:width .12s linear}\n\n\/* ---- Acc\u00e8s au catalogue ---- *\/\n.coffre[hidden]{display:none}\n.coffre{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:22px 0 6px}\n.coffre input{font:inherit;font-size:15px;padding:11px 15px;min-width:230px;color:inherit;\n  background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.28);border-radius:999px}\n.coffre input::placeholder{color:rgba(255,255,255,.55)}\n.coffre input:focus-visible{outline:2px solid var(--lime);outline-offset:2px}\n#coffre-msg[hidden]{display:none}\n#coffre-msg{color:#FFC9C0}\n.fiches{display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));margin-top:20px}\n.fiche{background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);border-radius:14px;padding:18px}\n.fiche .ref{font-size:11.5px;letter-spacing:.09em;text-transform:uppercase;opacity:.72}\n.fiche h3{margin:6px 0 2px;font-size:18px;line-height:1.25}\n.fiche .spec{margin:0 0 12px;font-size:13.5px;opacity:.78}\n.fiche dl{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;margin:0 0 12px;font-size:13.5px}\n.fiche dl div{display:contents}\n.fiche dt{opacity:.62}\n.fiche dd{margin:0}\n.fiche .resume{font-size:13.5px;line-height:1.5;opacity:.9;margin:0 0 12px}\n.fiche .tags{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0;margin:0}\n.fiche .tags li{font-size:11.5px;padding:3px 9px;border-radius:999px;background:rgba(255,255,255,.1)}\n\n\n\/* ---- Repli quand la page est affich\u00e9e dans un cadre : mailto\/tel y sont bloqu\u00e9s ---- *\/\n.copie-faite{display:inline-block;margin-left:12px;font-size:13px;color:var(--lime);\n  opacity:0;transition:opacity .25s}\n.copie-faite.vue{opacity:1}\n\n\/* ---- H\u00e9breu : la page se retourne ---- *\/\n:root[dir=\"rtl\"] body{font-family:\"Varela Round\",\"Arial Hebrew\",\"Noto Sans Hebrew\",var(--texte)}\n:root[dir=\"rtl\"] .cas{border-left:0;border-right:4px solid var(--lime)}\n:root[dir=\"rtl\"].sur-clair .cas{border-left-color:transparent;border-right-color:var(--nuit)}\n:root[dir=\"rtl\"] nav .pill{margin-left:0;margin-right:auto}\n:root[dir=\"rtl\"] .carte ul,:root[dir=\"rtl\"] .cas ul{padding-left:0;padding-right:19px}\n:root[dir=\"rtl\"] .liste-defis li{padding-left:0;padding-right:20px}\n:root[dir=\"rtl\"] .liste-defis li::before,:root[dir=\"rtl\"] .pas>div::before{left:auto;right:0}\n:root[dir=\"rtl\"] .faq summary::after{float:left}\n:root[dir=\"rtl\"] #rideau .passer{right:auto;left:24px}\n:root[dir=\"rtl\"] .hero::after{right:auto;left:-16%}\n:root[dir=\"rtl\"] .reseau{right:auto;left:-6%}\n\/* les nombres et les noms de produits restent lus de gauche \u00e0 droite *\/\n:root[dir=\"rtl\"] .chiffre,:root[dir=\"rtl\"] .ref,:root[dir=\"rtl\"] .tags li{direction:ltr;unicode-bidi:isolate}\n\/* le contenu des fiches est r\u00e9dig\u00e9 en fran\u00e7ais : il se lit de gauche \u00e0 droite m\u00eame en h\u00e9breu.\n   Seuls les libell\u00e9s, eux traduits, restent align\u00e9s \u00e0 droite. *\/\n:root[dir=\"rtl\"] .fiche{direction:ltr;text-align:left}\n:root[dir=\"rtl\"] .fiche dt{direction:rtl;text-align:right}\n:root[dir=\"rtl\"] .fiche dl{grid-template-columns:1fr auto}\n:root[dir=\"rtl\"] .fiche dd{grid-column:1;text-align:left}\n:root[dir=\"rtl\"] .fiche dt{grid-column:2}\n\n\n.barre{position:fixed;top:0;left:0;right:0;z-index:30}\n.barre.pose{background:rgba(15,30,60,.86);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}\n:root.sur-clair .barre.pose{background:rgba(255,255,255,.88)}\n\/* la cible d'une ancre ne doit pas se loger sous la barre *\/\nsection[id]{scroll-margin-top:82px}\n\/* WordPress connect\u00e9 : sa propre barre occupe d\u00e9j\u00e0 les 32 premiers pixels *\/\nbody.admin-bar .barre{top:32px}\n\n\/* Le logo blanc est le logo couleur, d\u00e9color\u00e9 puis invers\u00e9 : une seule image pour les deux. *\/\n.marque-ttc,.logo-fixe .l-blanc{filter:brightness(0) invert(1)}\n\n\/* L'h\u00e9breu retir\u00e9 du s\u00e9lecteur flottant de TranslatePress. C'est un rideau, pas une\n   suppression : \/he\/ reste servi et d\u00e9clar\u00e9 en hreflang. Le retrait r\u00e9el est un r\u00e9glage du\n   plugin (R\u00e9glages \u2192 TranslatePress \u2192 langues), \u00e0 faire une fois. *\/\n\/* TranslatePress pose display:flex!important depuis une feuille charg\u00e9e apr\u00e8s la n\u00f4tre :\n   \u00e0 sp\u00e9cificit\u00e9 \u00e9gale, c'est la sienne qui gagne. On monte donc la sp\u00e9cificit\u00e9. *\/\nhtml body div#trp-floater-ls a[href*=\"\/he\/\"],\nhtml body div#trp-floater-ls div[id*=\"language-list\"] a[href*=\"\/he\/\"],\nhtml body .trp-language-switcher a[href*=\"\/he\/\"]{display:none!important}\n\n\/* les deux langues sont des liens, pas des boutons : chacune a sa propre adresse *\/\n.langue a{color:inherit;text-decoration:none;opacity:.62;font:700 11.5px\/1 var(--texte);\n  letter-spacing:.1em;padding:7px 11px;border-radius:999px;transition:background .18s,color .18s,opacity .18s}\n.langue a:hover{opacity:1}\n.langue a[aria-current=\"true\"]{background:var(--lime);color:var(--nuit);opacity:1}\n\nh1,h2,h3,h4,h5,h6{color:inherit!important;font-family:var(--geo)!important}\n\n.liens-services{list-style:none;padding:0;margin:26px 0 0;display:grid;gap:10px 26px;\n  grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}\n.liens-services a{color:inherit;text-decoration:none;display:block;padding:13px 0;\n  border-bottom:1px solid rgba(255,255,255,.16);font-weight:600;transition:color .18s}\n.liens-services a:hover{color:var(--lime)}\n<\/style>\n\n<div id=\"nappe\"><\/div>\n<div class=\"logo-fixe\" aria-hidden=\"true\"><span class=\"l-blanc\"><\/span><span class=\"l-couleur\"><\/span><\/div>\n<div class=\"bandeau-lime\"><\/div>\n<div class=\"jauge\" id=\"jauge\"><\/div>\n<div class=\"barre\"><div class=\"w\"><nav>\n  <a href=\"#\" aria-label=\"TTC \u2014 accueil\"><span class=\"marque-ttc\" role=\"img\" aria-label=\"TTC \u2014 Testing Training Consulting\"><\/span><\/a>\n  <ul>\n    <li><a href=\"#expertises\" data-en=\"Expertise\">Expertises<\/a><\/li>\n    <li><a href=\"#demarche\" data-en=\"Approach\">D\u00e9marche<\/a><\/li>\n    <li><a href=\"#solutions\" data-en=\"Solutions\">Solutions<\/a><\/li>\n    <li><a href=\"#secteurs\" data-en=\"Industries\">Secteurs<\/a><\/li>\n    <li><a href=\"https:\/\/claude.ai\/code\/artifact\/515cc0ec-2f96-4dd0-8fe3-014011357c9a\" target=\"_blank\" rel=\"noopener\" data-en=\"Consultants\">Profils<\/a><\/li>\n    <li><a href=\"#actualites\" data-en=\"News\">Actualit\u00e9s<\/a><\/li>\n    <li><a href=\"#faq\" data-en=\"FAQ\">FAQ<\/a><\/li>\n  <\/ul>\n  <div class=\"langue\" role=\"group\" aria-label=\"Langue \/ Language\">\n    <a href=\"\/\" hreflang=\"fr\" lang=\"fr\">FR<\/a>\n    <a href=\"\/en\/\" hreflang=\"en\" lang=\"en\">EN<\/a>\n  <\/div>\n  <a class=\"pill\" href=\"#contact\" data-en=\"Contact us\">Nous contacter<\/a>\n<\/nav><\/div><\/div>\n\n\n<!-- ============ HERO ============ -->\n<section class=\"nuit hero\" data-fond=\"#0F1E3C\" data-sur=\"sombre\">\n  <svg class=\"reseau\" viewBox=\"0 0 600 400\" preserveAspectRatio=\"xMaxYMid meet\" aria-hidden=\"true\">\n    <g stroke=\"#C6E643\" stroke-width=\"1.4\" fill=\"none\" opacity=\".55\">\n      <path d=\"M60 320 L180 190 L330 250 L470 120 L560 200\"\/>\n      <path d=\"M60 320 L210 330 L330 250\"\/>\n      <path d=\"M180 190 L250 70 L470 120\"\/>\n      <path d=\"M330 250 L420 350 L560 200\"\/>\n    <\/g>\n    <g fill=\"#C6E643\">\n      <circle cx=\"60\" cy=\"320\" r=\"4\"\/><circle cx=\"180\" cy=\"190\" r=\"4\"\/><circle cx=\"330\" cy=\"250\" r=\"5\"\/>\n      <circle cx=\"470\" cy=\"120\" r=\"4\"\/><circle cx=\"560\" cy=\"200\" r=\"4\"\/><circle cx=\"250\" cy=\"70\" r=\"3.5\"\/>\n      <circle cx=\"210\" cy=\"330\" r=\"3.5\"\/><circle cx=\"420\" cy=\"350\" r=\"3.5\"\/>\n    <\/g>\n  <\/svg>\n  <div class=\"w\">\n  <p class=\"oeil\" data-en=\"Software testing \u00b7 Automation \u00b7 Quality\">Test logiciel \u00b7 Automatisation \u00b7 Qualit\u00e9<\/p>\n  <h1 data-en=\"QA specialists.&lt;br&gt;Not generalists.\">Sp\u00e9cialistes QA.<br>Pas g\u00e9n\u00e9ralistes.<\/h1>\n  <p class=\"sous-hero s\" data-en=\"For 27 years we have been testing and automating the critical applications of major accounts. &lt;b style=&#39;color:#fff;font-weight:600&#39;&gt;65 consultants, 100% ISTQB-certified, 40 projects delivered.&lt;\/b&gt;\">\n    Depuis 27 ans, nous testons et automatisons les applications critiques des grands comptes.\n    <b style=\"color:#fff;font-weight:600\">65 consultants, 100 % certifi\u00e9s ISTQB, 40 projets\n    livr\u00e9s.<\/b>\n  <\/p>\n  <a class=\"pill\" href=\"#demarche\" data-en=\"See how we work\">D\u00e9couvrir notre d\u00e9marche<\/a>\n<\/div><\/section>\n\n<!-- ============ TTC EN BREF ============ -->\n<section class=\"clair\" data-fond=\"#112844\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"TTC at a glance\">TTC en bref<\/p>\n  <h2 data-en=\"2026, in figures.\">L&#8217;ann\u00e9e 2026, en chiffres.<\/h2>\n  <div class=\"bande\">\n    <div class=\"kpi\"><div class=\"n\">65<\/div><div class=\"l s\" data-en=\"consultants\">consultants<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">2<\/div><div class=\"l s\" data-en=\"locations\">implantations<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">4<\/div><div class=\"l s\" data-en=\"service centres\">centres de services<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">5<\/div><div class=\"l s\" data-en=\"partnerships\">partenariats<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">6<\/div><div class=\"l s\" data-en=\"new accounts\">ouvertures de comptes<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">10<\/div><div class=\"l s\" data-en=\"people hired\">recrutements<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">40<\/div><div class=\"l s\" data-en=\"projects delivered\">projets livr\u00e9s<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">100<span class=\"u\">%<\/span><\/div><div class=\"l s\" data-en=\"ISTQB-certified\">certifi\u00e9s ISTQB<\/div><\/div>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ CE QUI A CHANG\u00c9 ============ -->\n<section class=\"nuit\" data-fond=\"#123055\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"What has changed\">Ce qui a chang\u00e9<\/p>\n  <h2 data-en=\"AI did not replace our consultants. It multiplied what they produce.\">L&#8217;IA n&#8217;a pas remplac\u00e9 nos consultants. Elle a d\u00e9cupl\u00e9 ce qu&#8217;ils produisent.<\/h2>\n  <p class=\"lede s\" style=\"max-width:54ch\" data-en=\"Same team, same standards \u2014 but an output capacity nothing like that of two years ago. What we used to check by sampling, we now check in full.\">\n    M\u00eame \u00e9quipe, m\u00eame exigence \u2014 mais une capacit\u00e9 de production sans commune mesure avec celle\n    d&#8217;il y a deux ans. Ce que nous v\u00e9rifiions par \u00e9chantillon, nous le v\u00e9rifions d\u00e9sormais en\n    totalit\u00e9.\n  <\/p>\n  <div class=\"bande\" style=\"margin-top:44px\">\n    <div class=\"kpi\"><div class=\"n\">5<span class=\"u\">s<\/span><\/div>\n      <div class=\"l s\" data-en=\"to replay a customer journey, against 30 to 50 by hand\">pour rejouer un parcours client, contre 30 \u00e0 50 \u00e0 la main<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">756<\/div>\n      <div class=\"l s\" data-en=\"menu items read and compared, in one minute\">articles d&#8217;une carte relus et compar\u00e9s, en une minute<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">34<\/div>\n      <div class=\"l s\" data-en=\"points of sale compared with one another, in a single call\">points de vente confront\u00e9s les uns aux autres, d&#8217;un seul appel<\/div><\/div>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ EXPERTISES ============ -->\n<section class=\"nuit\" id=\"expertises\" data-fond=\"#1A67B8\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Areas of work\">Domaines d&#8217;intervention<\/p>\n  <h2 data-en=\"Nine areas of expertise, one promise: that it holds in production.\">Neuf expertises, une seule promesse : que \u00e7a tienne en production.<\/h2>\n  <p class=\"intro s lede\" data-en=\"Our consultants work across the whole software quality chain \u2014 on site, on a fixed-price basis, or from a managed service centre.\">\n    Nos consultants interviennent sur toute la cha\u00eene de la qualit\u00e9 logicielle, en r\u00e9gie, au forfait\n    ou en centre de service manag\u00e9.\n  <\/p>\n  <div class=\"exp s\">\n    <article><h3 data-en=\"Test infrastructure\">Infrastructure de test<\/h3><p data-en=\"Environments and test data, so that a test can actually be reproduced.\">Environnements et jeux de donn\u00e9es, pour que le test soit reproductible.<\/p><\/article>\n    <article><h3 data-en=\"Automation\">Automatisation<\/h3><p data-en=\"Industrialised execution, from web to mobile.\">Industrialisation de l&#8217;ex\u00e9cution, du web au mobile.<\/p><p class=\"out\">Selenium \u00b7 Cypress \u00b7 Playwright<\/p><\/article>\n    <article><h3 data-en=\"Performance\">Performance<\/h3><p data-en=\"Load testing and audits of how a system holds up in production.\">Tests de charge et audits de tenue en production.<\/p><p class=\"out\">JMeter \u00b7 Gatling<\/p><\/article>\n    <article><h3 data-en=\"Methodology\">M\u00e9thodologie<\/h3><p data-en=\"Framing, governance and steering of the acceptance phase.\">Cadrage, gouvernance et pilotage de la recette.<\/p><\/article>\n    <article><h3 data-en=\"Agility\">Agilit\u00e9<\/h3><p data-en=\"Coaching for teams and their rituals.\">Coaching des \u00e9quipes et des rituels.<\/p><p class=\"out\">Scrum \u00b7 SAFe<\/p><\/article>\n    <article><h3 data-en=\"Service centre\">Centre de service<\/h3><p data-en=\"Outsourced, managed acceptance testing, with a commitment on results.\">Recette externalis\u00e9e et manag\u00e9e, avec engagement de r\u00e9sultat.<\/p><\/article>\n    <article><h3 data-en=\"Third-party acceptance testing\">Tierce recette applicative<\/h3><p data-en=\"Acceptance testing handed over end to end.\">La recette confi\u00e9e de bout en bout.<\/p><\/article>\n    <article><h3 data-en=\"Resilience &amp; chaos testing\">R\u00e9silience &amp; chaos testing<\/h3><p data-en=\"Stressing the system on purpose to see where it gives.\">\u00c9prouver le syst\u00e8me en le mettant volontairement en difficult\u00e9.<\/p><\/article>\n    <article><h3 data-en=\"AI applied to testing\">IA appliqu\u00e9e au test<\/h3><p data-en=\"Assisted design, maintenance and analysis.\">Conception, maintenance et analyse assist\u00e9es.<\/p><p class=\"out\">Plateforme Saola<\/p><\/article>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ D\u00c9MARCHE ============ -->\n<section class=\"nuit\" id=\"demarche\" data-fond=\"#1580BE\" data-sur=\"sombre\" style=\"padding-top:0\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"How we work\">Notre d\u00e9marche<\/p>\n  <h2 data-en=\"Six phases, and an exit planned from day one.\">Six phases, et une sortie pr\u00e9vue d\u00e8s le premier jour.<\/h2>\n  <div class=\"pas s\">\n    <div><span class=\"num\">01<\/span><b data-en=\"Audit\">Audit<\/b><span data-en=\"Working inside your teams, we map your strengths and weaknesses through immersion workshops. Ten to fifteen days, depending on the case.\">Au sein de vos \u00e9quipes, nous d\u00e9cryptons vos points\n      forts et vos faiblesses par des ateliers d&#8217;immersion. Dix \u00e0 quinze jours selon les cas.<\/span><\/div>\n    <div><span class=\"num\">02<\/span><b data-en=\"Training\">Formation<\/b><span data-en=\"Materials tailored to your needs, and training for each person according to their role in industrialising the tests.\">Des supports adapt\u00e9s \u00e0 vos besoins, et une\n      formation de chaque ressource selon son r\u00f4le dans l&#8217;industrialisation des tests.<\/span><\/div>\n    <div><span class=\"num\">03<\/span><b data-en=\"Proof of concept\">POC et analyse<\/b><span data-en=\"Improvement areas are defined, then tried out on a narrow scope, to measure risk and benefit before committing.\">Les axes d&#8217;am\u00e9lioration sont d\u00e9finis puis\n      \u00e9prouv\u00e9s sur un p\u00e9rim\u00e8tre r\u00e9duit, pour mesurer risques et b\u00e9n\u00e9fices avant d&#8217;engager.<\/span><\/div>\n    <div><span class=\"num\">04<\/span><b data-en=\"Implementation\">Impl\u00e9mentation<\/b><span data-en=\"We support the end-to-end pilot, as observer or as participant, whichever you prefer.\">Nous vous assistons sur le pilote de bout\n      en bout, en observateur ou en acteur, selon ce que vous pr\u00e9f\u00e9rez.<\/span><\/div>\n    <div><span class=\"num\">05<\/span><b data-en=\"Adjustments\">Ajustements<\/b><span data-en=\"Final tuning after the proof of concept: deliverables, tasks and responsibilities.\">Derniers r\u00e9glages apr\u00e8s le POC : livrables,\n      t\u00e2ches et responsabilit\u00e9s.<\/span><\/div>\n    <div><span class=\"num\">06<\/span><b data-en=\"Follow-up\">Suivi<\/b><span data-en=\"The collaboration continues: we share what moves in the field and stay alongside you.\">La collaboration continue : nous partageons les\n      innovations du secteur et restons \u00e0 vos c\u00f4t\u00e9s.<\/span><\/div>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ D\u00c9FIS ============ -->\n<section class=\"nuit\" data-fond=\"#1470B9\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Your challenges, our answers\">Vos d\u00e9fis, nos r\u00e9ponses<\/p>\n  <h2 data-en=\"What we are asked to solve.\">Ce qu&#8217;on nous demande de r\u00e9soudre.<\/h2>\n  <div class=\"g2\" style=\"gap:0 44px\">\n    <div>\n      <p class=\"oeil\" style=\"color:inherit;opacity:.7\" data-en=\"The challenge\">Le d\u00e9fi<\/p>\n      <ul class=\"liste-defis s\">\n        <li data-en=\"Cutting costs, while deadlines keep tightening.\">R\u00e9duire les co\u00fbts, alors que les d\u00e9lais se resserrent.<\/li>\n        <li data-en=\"Application reliability that cannot be relied on.\">Une fiabilit\u00e9 applicative incertaine.<\/li>\n        <li data-en=\"Release dates that are hard to hold.\">Des dates de livraison difficiles \u00e0 tenir.<\/li>\n        <li data-en=\"Test productivity that falls short.\">Une productivit\u00e9 du test insuffisante.<\/li>\n        <li data-en=\"Risks poorly controlled, in development as in production.\">Des risques mal ma\u00eetris\u00e9s, en d\u00e9veloppement comme en production.<\/li>\n      <\/ul>\n    <\/div>\n    <div>\n      <p class=\"oeil\" style=\"color:var(--lime)\" data-en=\"Our answer\">Notre r\u00e9ponse<\/p>\n      <ul class=\"liste-defis s\">\n        <li data-en=\"Industrialise execution, to do more at constant cost.\">Industrialiser l&#8217;ex\u00e9cution pour faire plus, \u00e0 co\u00fbt constant.<\/li>\n        <li data-en=\"Make applications reliable through coverage that is measured, not declared.\">Fiabiliser les applications par une couverture mesur\u00e9e, pas d\u00e9clar\u00e9e.<\/li>\n        <li data-en=\"Hold deadlines by moving detection earlier.\">Ma\u00eetriser les d\u00e9lais en d\u00e9pla\u00e7ant la d\u00e9tection vers l&#8217;amont.<\/li>\n        <li data-en=\"Raise the productivity of the testing process itself.\">Accro\u00eetre la productivit\u00e9 du processus de test lui-m\u00eame.<\/li>\n        <li data-en=\"Manage risk proactively, and make the processes dependable.\">G\u00e9rer les risques de fa\u00e7on proactive, et fiabiliser les processus.<\/li>\n      <\/ul>\n    <\/div>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ ROI ============ -->\n<section class=\"clair\" data-fond=\"#00B8D4\" data-sur=\"clair\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Return on investment\">Retour sur investissement<\/p>\n  <h2 data-en=\"A journey tested in five seconds rather than fifty.\">Un parcours test\u00e9 en cinq secondes plut\u00f4t qu&#8217;en cinquante.<\/h2>\n  <p class=\"intro s lede\" data-en=\"Automation is only worth it if it pays for itself. We measure the gain from the first cycle: execution time, coverage, and above all defects found before go-live rather than after.\">\n    L&#8217;automatisation n&#8217;a d&#8217;int\u00e9r\u00eat que si elle se rembourse. Nous mesurons le gain d\u00e8s le premier\n    cycle : temps d&#8217;ex\u00e9cution, couverture, et surtout d\u00e9fauts trouv\u00e9s avant la mise en production\n    plut\u00f4t qu&#8217;apr\u00e8s.\n  <\/p>\n  <div class=\"bande\">\n    <div class=\"kpi\"><div class=\"n\">\u00d710<\/div><div class=\"l s\" data-en=\"faster than a journey played by hand\">plus rapide qu&#8217;un parcours jou\u00e9 \u00e0 la main<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">\u00d73<\/div><div class=\"l s\" data-en=\"as many checkpoints on every pass\">de points v\u00e9rifi\u00e9s \u00e0 chaque passage<\/div><\/div>\n    <div class=\"kpi\"><div class=\"n\">24<span class=\"u\">\/7<\/span><\/div><div class=\"l s\" data-en=\"execution possible, nights and weekends included\">ex\u00e9cution possible, nuits et week-ends compris<\/div><\/div>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ SOLUTIONS ============ -->\n<section class=\"nuit\" id=\"solutions\" data-fond=\"#4FCBB8\" data-sur=\"clair\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Our solutions\">Nos solutions<\/p>\n  <h2 data-en=\"Solutions shaped to your environments.\">Des solutions personnalisables selon vos environnements.<\/h2>\n  <p class=\"intro s lede\" data-en=\"Three proven solutions, configured around your tools, your journeys and your operating constraints \u2014 not off-the-shelf products.\">\n    Trois solutions \u00e9prouv\u00e9es, configur\u00e9es selon vos outils, vos parcours et vos contraintes\n    d&#8217;exploitation \u2014 pas des produits sur \u00e9tag\u00e8re.\n  <\/p>\n  <div class=\"g3\">\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quoi\" data-en=\"Retail &amp; quick service\">Retail &amp; restauration rapide<\/span>\n      <h3>Cornac<\/h3>\n      <p class=\"s\" data-en=\"The full chain of an order, checked automatically: what the customer sees on screen, what the till records, what reaches the kitchen.\">La cha\u00eene compl\u00e8te d&#8217;une commande, v\u00e9rifi\u00e9e automatiquement : ce que le client voit\n        \u00e0 l&#8217;\u00e9cran, ce que la caisse enregistre, ce qui part en cuisine.<\/p>\n      <ul class=\"s\">\n        <li data-en=\"Campaign acceptance testing across a whole estate\">Recette des campagnes sur tout un parc<\/li>\n        <li data-en=\"Menu and price consistency between points of sale\">Coh\u00e9rence des cartes et des prix entre points de vente<\/li>\n        <li data-en=\"Promo codes and loyalty, from kiosk to till\">Codes promo et fid\u00e9lit\u00e9, de la borne \u00e0 la caisse<\/li>\n        <li data-en=\"Order routing to the production screens\">Routage des commandes vers les \u00e9crans de production<\/li>\n      <\/ul>\n      <p class=\"pied s\" data-en=\"In service \u2014 &lt;b&gt;quick-service restaurant chain, 27 restaurants&lt;\/b&gt;\">En service \u2014 <b>enseigne de restauration rapide, 27 restaurants<\/b><\/p>\n    <\/div><\/article>\n\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quoi\" data-en=\"Mobile testing\">Test mobile<\/span>\n      <h3 data-en=\"The Mobile Farm\">La Ferme Mobile<\/h3>\n      <p class=\"s\" data-en=\"A fleet of real iOS and Android handsets, driven remotely, to test on the devices your customers actually hold.\">Un parc de terminaux iOS et Android r\u00e9els, pilot\u00e9s \u00e0 distance, pour tester sur les\n        appareils que vos clients ont vraiment dans les mains.<\/p>\n      <ul class=\"s\">\n        <li data-en=\"Parallel execution across models and versions\">Ex\u00e9cution parall\u00e8le sur plusieurs mod\u00e8les et versions<\/li>\n        <li data-en=\"Real devices rather than emulators\">Appareils r\u00e9els plut\u00f4t qu&#8217;\u00e9mulateurs<\/li>\n        <li data-en=\"Plugged into continuous integration pipelines\">Int\u00e9gration aux cha\u00eenes d&#8217;int\u00e9gration continue<\/li>\n        <li data-en=\"Timestamped evidence per device\">Preuves d&#8217;ex\u00e9cution horodat\u00e9es par appareil<\/li>\n      <\/ul>\n      <p class=\"pied s\" data-en=\"Industrialising mobile testing \u2014 &lt;b&gt;iOS &amp; Android&lt;\/b&gt;\">Industrialisation du test mobile \u2014 <b>iOS &amp; Android<\/b><\/p>\n    <\/div><\/article>\n\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quoi\">Hospitality<\/span>\n      <h3 data-en=\"Hospitality solutions\">Solutions h\u00f4tellerie<\/h3>\n      <p class=\"s\" data-en=\"The traveller journey, from booking to checkout: distribution, arrival, stay, billing.\">Le parcours du voyageur, de la r\u00e9servation au d\u00e9part : distribution, arriv\u00e9e,\n        s\u00e9jour, facturation.<\/p>\n      <ul class=\"s\">\n        <li data-en=\"Booking journeys and distribution channels\">Parcours de r\u00e9servation et canaux de distribution<\/li>\n        <li data-en=\"Rate consistency across properties\">Coh\u00e9rence tarifaire entre \u00e9tablissements<\/li>\n        <li data-en=\"Online and kiosk check-in\">Enregistrement en ligne et en borne<\/li>\n        <li data-en=\"Billing and payment\">Facturation et encaissement<\/li>\n      <\/ul>\n      <p class=\"pied s\" data-en=\"Offer in the making \u2014 &lt;b&gt;pilot reference wanted&lt;\/b&gt;\">Offre en construction \u2014 <b>r\u00e9f\u00e9rence pilote recherch\u00e9e<\/b><\/p>\n    <\/div><\/article>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ SECTEURS ============ -->\n<section class=\"clair\" id=\"secteurs\" data-fond=\"#9BDA8A\" data-sur=\"clair\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Our industries\">Nos secteurs<\/p>\n  <h2 data-en=\"Where a software defect shows up in the queue.\">L\u00e0 o\u00f9 une anomalie logicielle se voit dans la file d&#8217;attente.<\/h2>\n  <p class=\"intro s lede\" data-en=\"Generic testing stops at the software. Our clients sell in physical places, where a defect has an immediate and visible cost.\">\n    Le test g\u00e9n\u00e9rique s&#8217;arr\u00eate au logiciel. Nos clients vendent dans des lieux physiques, o\u00f9 le d\u00e9faut\n    a un co\u00fbt imm\u00e9diat et visible.\n  <\/p>\n  <div class=\"g3\">\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quoi\" data-en=\"Industry\">Secteur<\/span><h3 data-en=\"Retail &amp; quick service\">Retail &amp; restauration rapide<\/h3>\n      <p class=\"s\" data-en=\"Campaigns, kiosks, tills, production screens, delivery channels. The whole journey, checked before opening.\">Campagnes, bornes, caisses, \u00e9crans de production, canaux de livraison. Le parcours\n        entier, v\u00e9rifi\u00e9 avant l&#8217;ouverture.<\/p>\n    <\/div><\/article>\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quoi\" data-en=\"Industry\">Secteur<\/span><h3>Hospitality<\/h3>\n      <p class=\"s\" data-en=\"Booking, arrival, stay, billing. A longer chain, more intermediaries, the same breaking points.\">R\u00e9servation, arriv\u00e9e, s\u00e9jour, facturation. Une cha\u00eene plus longue, plus\n        d&#8217;interm\u00e9diaires, les m\u00eames ruptures.<\/p>\n    <\/div><\/article>\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quoi\" data-en=\"Industry\">Secteur<\/span><h3 data-en=\"Logistics\">Logistique<\/h3>\n      <p class=\"s\" data-en=\"Picking, traceability, transport. The error does not show on a screen but on the dock, several hours later.\">Pr\u00e9paration, tra\u00e7abilit\u00e9, transport. L&#8217;erreur ne se voit pas \u00e0 l&#8217;\u00e9cran mais sur le\n        quai, plusieurs heures plus tard.<\/p>\n    <\/div><\/article>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ CAS CLIENT ============ -->\n<section class=\"nuit\" data-fond=\"#C6E643\" data-sur=\"clair\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"What it changes\">Ce que \u00e7a change<\/p>\n  <h2 data-en=\"27 restaurants, a first automated read, one minute.\">27 restaurants, une premi\u00e8re lecture automatis\u00e9e, une minute.<\/h2>\n  <div class=\"cas s\">\n    <ul>\n      <li data-en=\"&lt;b&gt;Four items from the running campaign unsellable&lt;\/b&gt; on one kiosk \u2014 on the menu, with no price.\"><b>Quatre articles de la campagne en cours invendables<\/b> sur une borne \u2014 pr\u00e9sents \u00e0 la carte, sans prix.<\/li>\n      <li data-en=\"&lt;b&gt;One and the same discount printed under three different labels&lt;\/b&gt; depending on the restaurant, on the customer receipt.\"><b>Une m\u00eame remise imprim\u00e9e sous trois libell\u00e9s diff\u00e9rents<\/b> selon le restaurant, sur le ticket client.<\/li>\n      <li data-en=\"&lt;b&gt;Fifteen items priced wrong inside meal deals&lt;\/b&gt;, invisible if you only compare the \u00e0-la-carte price.\"><b>Quinze articles au mauvais prix en formule<\/b>, invisibles si l&#8217;on ne compare que le prix \u00e0 la carte.<\/li>\n      <li data-en=\"&lt;b&gt;Delivery orders left open for weeks&lt;\/b&gt;, never settled, across several sites.\"><b>Des commandes de livraison ouvertes depuis des semaines<\/b>, jamais sold\u00e9es, sur plusieurs sites.<\/li>\n    <\/ul>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ T\u00c9MOIGNAGE ============ -->\n<section class=\"clair\" data-fond=\"#7FA85E\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"What they say\">Ils en parlent<\/p>\n  <h2 data-en=\"The verdict of those who put us to work.\">Le jugement de ceux qui nous font travailler.<\/h2>\n  <div class=\"cites\">\n    <blockquote class=\"cite\">\n      <p data-en=\"&quot;The work you are doing is remarkable, and the findings you report are genuinely useful to us.&quot;\">\u00ab Le travail que vous menez est remarquable, et les constats remont\u00e9s sont vraiment utiles\n        pour nous. \u00bb<\/p>\n      <footer class=\"s\" data-en=\"&lt;b&gt;Chief Information Officer&lt;\/b&gt;&lt;br&gt;Quick-service restaurant chain \u2014 2026\"><b>Directeur des syst\u00e8mes d&#8217;information<\/b><br>Enseigne de restauration rapide \u2014 2026<\/footer>\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"ProfessionalService\", \"@id\": \"https:\/\/ttc-testing.io\/#organisation\", \"name\": \"TTC Testing\", \"alternateName\": \"TTC \u2014 Testing Training Consulting\", \"url\": \"https:\/\/ttc-testing.io\/\", \"logo\": \"https:\/\/ttc-testing.io\/wp-content\/uploads\/2024\/08\/Logo-TTC-1.png\", \"image\": \"https:\/\/ttc-testing.io\/wp-content\/uploads\/2024\/08\/Logo-TTC-1.png\", \"description\": \"Soci\u00e9t\u00e9 de test logiciel : recette fonctionnelle, automatisation des tests, tests de performance et centres de service. 65 consultants certifi\u00e9s ISTQB.\", \"foundingDate\": \"1999\", \"telephone\": \"+33173049197\", \"email\": \"Contact@ttc-testing.com\", \"address\": {\"@type\": \"PostalAddress\", \"streetAddress\": \"195 avenue Charles de Gaulle\", \"postalCode\": \"92200\", \"addressLocality\": \"Neuilly-sur-Seine\", \"addressCountry\": \"FR\"}, \"areaServed\": [{\"@type\": \"Country\", \"name\": \"France\"}, {\"@type\": \"Country\", \"name\": \"Canada\"}], \"knowsAbout\": [\"test logiciel\", \"assurance qualit\u00e9\", \"automatisation des tests\", \"test de performance\", \"recette fonctionnelle\", \"TNR\", \"ISTQB\", \"Selenium\", \"Cypress\", \"Playwright\", \"BDD\", \"Gherkin\"], \"sameAs\": [\"https:\/\/www.linkedin.com\/company\/ttc-testing\/\"]}<\/script>\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"WebSite\", \"@id\": \"https:\/\/ttc-testing.io\/#site\", \"url\": \"https:\/\/ttc-testing.io\/\", \"name\": \"TTC Testing\", \"inLanguage\": \"fr-FR\", \"publisher\": {\"@id\": \"https:\/\/ttc-testing.io\/#organisation\"}}<\/script>\n<script type=\"application\/ld+json\">{\"@context\": \"https:\/\/schema.org\", \"@type\": \"FAQPage\", \"mainEntity\": [{\"@type\": \"Question\", \"name\": \"L'IA va-t-elle remplacer les testeurs ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Non \u2014 et nous sommes bien plac\u00e9s pour le dire, puisque nous\\n    la faisons tourner en delivery depuis deux ans. L'IA r\u00e9dige un premier jet de cas, maintient les\\n    s\u00e9lecteurs, trie les \u00e9checs et compare en masse. Elle ne d\u00e9cide rien : ce qui m\u00e9rite d'\u00eatre test\u00e9,\\n    ce que co\u00fbte une anomalie et si une version part en production restent des jugements. Ce qui a\\n    chang\u00e9, c'est le volume qu'un consultant couvre dans une journ\u00e9e.\"}}, {\"@type\": \"Question\", \"name\": \"Concr\u00e8tement, l'IA sert \u00e0 quoi sur un projet ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Quatre endroits, par ordre de rentabilit\u00e9 : g\u00e9n\u00e9rer des cas\\n    \u00e0 partir des sp\u00e9cifications ou d'un brief ; r\u00e9parer les scripts quand l'interface bouge ; trier une\\n    ex\u00e9cution en \u00e9chec pour qu'un humain lise vingt r\u00e9sultats plut\u00f4t que six cents ; et comparer en\\n    masse \u2014 756 articles d'une carte relus et recoup\u00e9s sur 34 points de vente, en une minute. Le reste\\n    reste moins cher \u00e0 la main.\"}}, {\"@type\": \"Question\", \"name\": \"Faut-il tout automatiser ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Non, et c'est souvent la premi\u00e8re chose que nous disons.\\n    L'automatisation se justifie sur ce qui se r\u00e9p\u00e8te : parcours critiques, campagnes r\u00e9currentes,\\n    non-r\u00e9gression. Le reste co\u00fbte plus cher \u00e0 maintenir qu'il ne rapporte. Notre objectif est de\\n    d\u00e9lester vos experts fonctionnels des t\u00e2ches r\u00e9p\u00e9titives et peu valorisantes, pour qu'ils passent\\n    leur temps sur l'analyse et la d\u00e9cision.\"}}, {\"@type\": \"Question\", \"name\": \"Le BDD et le Gherkin, \u00e7a sert \u00e0 quoi exactement ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Le BDD n'est pas un outil de test, c'est un contrat de langage.\\n    \u00c9crire en \u00c9tant donn\u00e9 \/ Quand \/ Alors force le m\u00e9tier et la technique \u00e0 s'entendre sur le\\n    comportement attendu avant qu'une ligne soit \u00e9crite. \u00c7a paie quand le m\u00e9tier lit et conteste\\n    vraiment les sc\u00e9narios. Quand personne hors de l'\u00e9quipe de test ne les ouvre jamais, vous payez une\\n    couche de plus pour rien \u2014 et nous vous le dirons.\"}}, {\"@type\": \"Question\", \"name\": \"La performance, on s'en occupe quand ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Pas la semaine avant la mise en production, qui est pourtant le\\n    moment o\u00f9 on nous appelle. Un tir de charge lanc\u00e9 trop tard vous apprend que \u00e7a casse, pas quoi\\n    changer \u2014 l'architecture est d\u00e9j\u00e0 fig\u00e9e. Il faut un premier tir t\u00f4t sur les deux ou trois parcours\\n    qui portent le trafic, puis le garder dans la cha\u00eene. JMeter, Gatling, Neoload : l'outil compte\\n    beaucoup moins que le moment o\u00f9 vous le lancez.\"}}, {\"@type\": \"Question\", \"name\": \"Les certifications, \u00e7a vaut quoi vraiment ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"L'ISTQB donne un vocabulaire commun \u2014 quand un client dit\\n    s\u00e9v\u00e9rit\u00e9, criticit\u00e9 ou non-r\u00e9gression, tout le monde entend la m\u00eame chose. Sur un projet \u00e0\\n    plusieurs, \u00e7a vaut cher, et c'est pour \u00e7a que 100 % de nos consultants l'ont. \u00c7a ne dit pas si\\n    quelqu'un sait automatiser un parcours de borne ou lire une base de donn\u00e9es. \u00c7a, on le v\u00e9rifie\\n    autrement, et vous pouvez le constater vous-m\u00eame dans les dossiers de comp\u00e9tences.\"}}, {\"@type\": \"Question\", \"name\": \"Agile, SAFe, cycle en V : vous vous adaptez comment ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"On prend votre fa\u00e7on de travailler. En squad agile, la QA est\\n    dans l'\u00e9quipe et la definition of done inclut les tests \u2014 pas de phase de recette rapport\u00e9e \u00e0 la\\n    fin. En SAFe, on se branche sur le PI planning et sur la non-r\u00e9gression partag\u00e9e. En cycle en V, on\\n    revient \u00e0 un plan de test classique. Le vrai changement de ces derni\u00e8res ann\u00e9es n'est pas le cadre,\\n    c'est que le test est remont\u00e9 vers l'amont : plus un d\u00e9faut est trouv\u00e9 t\u00f4t, moins il co\u00fbte.\"}}, {\"@type\": \"Question\", \"name\": \"Combien de temps avant de voir un retour ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Le premier cycle automatis\u00e9 donne d\u00e9j\u00e0 une mesure : temps\\n    d'ex\u00e9cution compar\u00e9 au manuel, et d\u00e9fauts trouv\u00e9s avant la mise en production plut\u00f4t qu'apr\u00e8s. Sur\\n    un parc en exploitation, la premi\u00e8re lecture automatis\u00e9e de 27 restaurants a pris une minute et\\n    remont\u00e9 quatre articles invendables, une remise imprim\u00e9e sous trois libell\u00e9s et quinze articles au\\n    mauvais prix en formule.\"}}, {\"@type\": \"Question\", \"name\": \"Pourquoi TTC plut\u00f4t qu'une ESN g\u00e9ante ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Parce que depuis 27 ans, TTC fait une seule chose :\\n    la qualit\u00e9 logicielle. Nous ne sommes pas des g\u00e9n\u00e9ralistes qui placent aussi des testeurs \u2014 la QA\\n    est tout le m\u00e9tier. Concr\u00e8tement, celui qui vous vend la mission en a fait une, et vous n'\u00eates pas\\n    le terrain d'apprentissage d'un junior pos\u00e9 sur une grille tarifaire.\"}}, {\"@type\": \"Question\", \"name\": \"Ressource interne, prestataire ou ind\u00e9pendant ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Les trois peuvent marcher. Mais sans une ressource r\u00e9ellement\\n    qualifi\u00e9e d\u00e8s le d\u00e9part, vous passerez \u00e0 c\u00f4t\u00e9 des b\u00e9n\u00e9fices attendus \u2014 un framework d'automatisation\\n    mal pos\u00e9 au premier mois se jette au sixi\u00e8me. Une ESN s\u00e9rieuse, c'est un accompagnement dans la\\n    dur\u00e9e et l'acc\u00e8s \u00e0 des solutions plus compl\u00e8tes qu'un intervenant isol\u00e9 ne peut porter seul.\"}}, {\"@type\": \"Question\", \"name\": \"Outils open source ou licences ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"L'open source a l'avantage dans les environnements standards,\\n    m\u00eame s'il demande plus d'efforts \u00e0 l'impl\u00e9mentation. L'id\u00e9al se trouve souvent \u00e0 mi-chemin \u2014\\n    Playwright, d\u00e9velopp\u00e9 par Microsoft, gratuit et r\u00e9ellement solide. Nous travaillons d'abord avec vos\\n    outils, et n'amenons les n\u00f4tres que lorsqu'ils couvrent ce que les v\u00f4tres ne couvrent pas.\"}}, {\"@type\": \"Question\", \"name\": \"Que se passe-t-il quand vos consultants partent ?\", \"acceptedAnswer\": {\"@type\": \"Answer\", \"text\": \"Le transfert fait partie de la d\u00e9marche, pas de la derni\u00e8re\\n    semaine. Vos \u00e9quipes sont form\u00e9es \u00e0 mesure, les solutions mises en place vous restent, et la sortie\\n    est pr\u00e9vue d\u00e8s la premi\u00e8re phase. Une mission qu'on ne peut pas rendre est une mission mal men\u00e9e.\"}}]}<\/script>\n    <\/blockquote>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ R\u00c9F\u00c9RENCES ============ -->\n<section class=\"nuit\" data-fond=\"#3F6A55\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Our references\">Nos r\u00e9f\u00e9rences<\/p>\n  <h2 data-en=\"We work alongside organisations that cannot afford to go down.\">Nous travaillons aux c\u00f4t\u00e9s des acteurs qui ne peuvent pas tomber.<\/h2>\n  <div class=\"logos s\">\n    <span class=\"nous\">Popeyes<\/span><span class=\"nous\">Priority<\/span><span>Amer Sports<\/span><span>CFDT<\/span><span>Synchrotron<\/span>\n    <span>SAP<\/span><span>FDJ<\/span><span>SFR<\/span><span>Accenture<\/span><span>Sanofi<\/span>\n    <span>Caisse des D\u00e9p\u00f4ts<\/span><span>Engie<\/span><span>ERDF<\/span><span>Kering<\/span><span>Disney<\/span>\n    <span>FLIR Systems<\/span><span>CNP<\/span><span>Veepee<\/span><span>Sacem<\/span><span>Fnac Darty<\/span>\n    <span>Amdocs<\/span><span>Edenred<\/span>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ ENGAGEMENT ============ -->\n<section class=\"clair\" data-fond=\"#22456B\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Engagement models\">Mod\u00e8les d&#8217;engagement<\/p>\n  <h2 data-en=\"Three ways of working with us.\">Trois fa\u00e7ons de travailler avec nous.<\/h2>\n  <div class=\"g3\">\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <h3 data-en=\"Expert staffing\">R\u00e9gie experte<\/h3>\n      <p class=\"s\" data-en=\"One or several consultants embedded in your teams, on your tools and your rituals.\">Un ou plusieurs consultants int\u00e9gr\u00e9s \u00e0 vos \u00e9quipes, sur vos outils et vos rituels.<\/p>\n    <\/div><\/article>\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <h3 data-en=\"Fixed price on results\">Forfait au r\u00e9sultat<\/h3>\n      <p class=\"s\" data-en=\"A scope, a deadline, a commitment \u2014 on an automation project or an acceptance campaign.\">Un p\u00e9rim\u00e8tre, un d\u00e9lai, un engagement \u2014 sur un projet d&#8217;automatisation ou une campagne de recette.<\/p>\n    <\/div><\/article>\n    <article class=\"carte\"><div class=\"filet\"><\/div><div class=\"in\">\n      <h3 data-en=\"Managed service centre\">Centre de service manag\u00e9<\/h3>\n      <p class=\"s\" data-en=\"Acceptance testing outsourced, run by us from one of our four centres.\">La recette externalis\u00e9e, pilot\u00e9e par nos soins depuis l&#8217;un de nos quatre centres.<\/p>\n    <\/div><\/article>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ PROFILS DISPONIBLES ============ -->\n\n\n<!-- ============ GROUPE ============ -->\n<section class=\"nuit\" id=\"groupe\" data-fond=\"#16304F\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"The group\">Le groupe<\/p>\n  <h2 data-en=\"A service business, across two locations.\">Une structure de service, sur deux implantations.<\/h2>\n  <div class=\"g2\">\n    <div>\n      <p class=\"lede s\" data-en=\"Founded by testing practitioners, TTC has supported major accounts on their critical applications for 27 years. Our consultants are all ISTQB-certified and spread across four service centres.\">Fond\u00e9e par des praticiens du test, TTC accompagne depuis 27 ans\n      des grands comptes sur leurs applications critiques. Nos consultants sont tous certifi\u00e9s ISTQB\n      et r\u00e9partis sur quatre centres de service.<\/p>\n    <\/div>\n    <div>\n      <!-- Deux implantations, pas une s\u00e9quence : aucun num\u00e9ro d'ordre ici. -->\n      <div class=\"pas s\" style=\"border-color:rgba(255,255,255,.25)\">\n        <div><b data-en=\"Europe\">Europe<\/b><span data-en=\"France \u2014 head office, Neuilly-sur-Seine\">France \u2014 si\u00e8ge, Neuilly-sur-Seine<\/span><\/div>\n        <div><b data-en=\"North America\">Am\u00e9rique du Nord<\/b><span data-en=\"Canada\">Canada<\/span><\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ ACTUALIT\u00c9S ============ -->\n<section class=\"clair\" id=\"actualites\" data-fond=\"#154A72\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Blog &amp; events\">Blog &amp; actualit\u00e9s<\/p>\n  <h2 data-en=\"What we write, what we go and see.\">Ce qu&#8217;on \u00e9crit, ce qu&#8217;on va voir.<\/h2>\n  <p class=\"intro s lede\" data-en=\"Field notes, conference feedback and method write-ups \u2014 published as the work happens, not as a content plan.\">\n    Retours de terrain, comptes rendus de conf\u00e9rences et notes de m\u00e9thode \u2014 publi\u00e9s au fil du\n    travail, pas au fil d&#8217;un plan de contenu.\n  <\/p>\n  <div class=\"actus\">\n    <article class=\"actu\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quand\" data-en=\"17 May 2026\">17 mai 2026<\/span>\n      <h3><a href=\"https:\/\/ttc-testing.io\/2026\/05\/17\/jftl-2026-tout-le-monde-parle-dia-nous-on-la-met-en-delivery-depuis-2-ans\/\" target=\"_blank\" rel=\"noopener\" data-en=\"JFTL 2026 \u2014 everyone talks about AI. We have had it in delivery for two years.\">JFTL 2026 \u2014 Tout le monde parle d&#8217;IA. Nous, on la met en delivery depuis 2 ans.<\/a><\/h3>\n      <p data-en=\"9 June, stand 33. What an AI-assisted test chain actually produces once it runs on real client projects.\">9 juin, stand 33. Ce qu&#8217;une cha\u00eene de test assist\u00e9e par IA produit r\u00e9ellement une fois\n        pos\u00e9e sur des projets clients.<\/p>\n      <a class=\"lire\" href=\"https:\/\/ttc-testing.io\/2026\/05\/17\/jftl-2026-tout-le-monde-parle-dia-nous-on-la-met-en-delivery-depuis-2-ans\/\" target=\"_blank\" rel=\"noopener\" data-en=\"Read the article\">Lire l&#8217;article<\/a>\n    <\/div><\/article>\n\n    <article class=\"actu\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quand\" data-en=\"18 March 2026\">18 mars 2026<\/span>\n      <h3><a href=\"https:\/\/ttc-testing.io\/2026\/03\/18\/reprendre-une-activite-externalisee-avec-un-niveau-de-service-superieur\/\" target=\"_blank\" rel=\"noopener\" data-en=\"Taking over an outsourced activity with a higher level of service\">Reprendre une activit\u00e9 externalis\u00e9e avec un niveau de service sup\u00e9rieur<\/a><\/h3>\n      <p data-en=\"Outsourcing and quality of service: how a handover is prepared, and what has to be measured before signing.\">Externalisation et qualit\u00e9 de service : comment se pr\u00e9pare une reprise, et ce qu&#8217;il faut\n        mesurer avant de signer.<\/p>\n      <a class=\"lire\" href=\"https:\/\/ttc-testing.io\/2026\/03\/18\/reprendre-une-activite-externalisee-avec-un-niveau-de-service-superieur\/\" target=\"_blank\" rel=\"noopener\" data-en=\"Read the article\">Lire l&#8217;article<\/a>\n    <\/div><\/article>\n\n    <article class=\"actu\"><div class=\"filet\"><\/div><div class=\"in\">\n      <span class=\"quand\" data-en=\"18 March 2026\">18 mars 2026<\/span>\n      <h3><a href=\"https:\/\/ttc-testing.io\/2026\/03\/18\/fermes-mobiles-ios-et-android-industrialiser-vraiment-le-test-mobile\/\" target=\"_blank\" rel=\"noopener\" data-en=\"iOS and Android device farms: actually industrialising mobile testing\">Fermes mobiles iOS et Android : industrialiser vraiment le test mobile<\/a><\/h3>\n      <p data-en=\"Device fleet, parallel execution, evidence per handset \u2014 what separates a real farm from a shelf of phones.\">Parc d&#8217;appareils, ex\u00e9cution parall\u00e8le, preuves par terminal \u2014 ce qui s\u00e9pare une vraie\n        ferme d&#8217;une \u00e9tag\u00e8re de t\u00e9l\u00e9phones.<\/p>\n      <a class=\"lire\" href=\"https:\/\/ttc-testing.io\/2026\/03\/18\/fermes-mobiles-ios-et-android-industrialiser-vraiment-le-test-mobile\/\" target=\"_blank\" rel=\"noopener\" data-en=\"Read the article\">Lire l&#8217;article<\/a>\n    <\/div><\/article>\n  <\/div>\n<\/div><\/section>\n\n<!-- ============ FAQ ============ -->\n<section class=\"clair faq\" id=\"faq\" data-fond=\"#122744\" data-sur=\"sombre\"><div class=\"w\">\n  <p class=\"oeil\" data-en=\"Straight questions\">Questions franches<\/p>\n  <h2 data-en=\"What people ask us before starting.\">Ce qu&#8217;on nous demande avant de commencer.<\/h2>\n\n  <details><summary data-en=\"Is AI going to replace testers?\">L&#8217;IA va-t-elle remplacer les testeurs ?<\/summary>\n    <p class=\"s\" data-en=\"No \u2014 and we are placed to say so, since we have been running it in delivery for two years. AI writes a first draft of a case, keeps selectors alive, sorts failures and compares in bulk. It decides nothing: what is worth testing, what an anomaly costs, and whether a build ships remain judgement calls. What changed is the volume one consultant covers in a day.\">Non \u2014 et nous sommes bien plac\u00e9s pour le dire, puisque nous\n    la faisons tourner en delivery depuis deux ans. L&#8217;IA r\u00e9dige un premier jet de cas, maintient les\n    s\u00e9lecteurs, trie les \u00e9checs et compare en masse. Elle ne d\u00e9cide rien : ce qui m\u00e9rite d&#8217;\u00eatre test\u00e9,\n    ce que co\u00fbte une anomalie et si une version part en production restent des jugements. Ce qui a\n    chang\u00e9, c&#8217;est le volume qu&#8217;un consultant couvre dans une journ\u00e9e.<\/p><\/details>\n\n  <details><summary data-en=\"Concretely, where does AI earn its keep on a project?\">Concr\u00e8tement, l&#8217;IA sert \u00e0 quoi sur un projet ?<\/summary>\n    <p class=\"s\" data-en=\"Four places, in order of payback: generating test cases from specifications or a brief; repairing scripts when the interface moves; triaging a failed run so a human reads twenty results rather than six hundred; and mass comparison \u2014 756 menu items read and cross-checked across 34 points of sale, in a minute. Everything else is still cheaper done by hand.\">Quatre endroits, par ordre de rentabilit\u00e9 : g\u00e9n\u00e9rer des cas\n    \u00e0 partir des sp\u00e9cifications ou d&#8217;un brief ; r\u00e9parer les scripts quand l&#8217;interface bouge ; trier une\n    ex\u00e9cution en \u00e9chec pour qu&#8217;un humain lise vingt r\u00e9sultats plut\u00f4t que six cents ; et comparer en\n    masse \u2014 756 articles d&#8217;une carte relus et recoup\u00e9s sur 34 points de vente, en une minute. Le reste\n    reste moins cher \u00e0 la main.<\/p><\/details>\n\n  <details><summary data-en=\"Do you have to automate everything?\">Faut-il tout automatiser ?<\/summary>\n    <p class=\"s\" data-en=\"No, and it is often the first thing we say. Automation pays on what repeats: critical journeys, recurring campaigns, regression suites. The rest costs more to maintain than it returns. Our aim is to take the repetitive, low-value work off your functional experts so they can spend their time on analysis and decisions.\">Non, et c&#8217;est souvent la premi\u00e8re chose que nous disons.\n    L&#8217;automatisation se justifie sur ce qui se r\u00e9p\u00e8te : parcours critiques, campagnes r\u00e9currentes,\n    non-r\u00e9gression. Le reste co\u00fbte plus cher \u00e0 maintenir qu&#8217;il ne rapporte. Notre objectif est de\n    d\u00e9lester vos experts fonctionnels des t\u00e2ches r\u00e9p\u00e9titives et peu valorisantes, pour qu&#8217;ils passent\n    leur temps sur l&#8217;analyse et la d\u00e9cision.<\/p><\/details>\n\n  <details><summary data-en=\"BDD and Gherkin \u2014 what are they actually for?\">Le BDD et le Gherkin, \u00e7a sert \u00e0 quoi exactement ?<\/summary>\n    <p class=\"s\" data-en=\"BDD is not a test tool, it is a language contract. Writing Given \/ When \/ Then forces business and engineering to agree on the expected behaviour before a line is written. It pays off when the business side genuinely reads and challenges the scenarios. When nobody outside the test team ever opens them, you are paying for an extra layer for nothing \u2014 and we will say so.\">Le BDD n&#8217;est pas un outil de test, c&#8217;est un contrat de langage.\n    \u00c9crire en \u00c9tant donn\u00e9 \/ Quand \/ Alors force le m\u00e9tier et la technique \u00e0 s&#8217;entendre sur le\n    comportement attendu avant qu&#8217;une ligne soit \u00e9crite. \u00c7a paie quand le m\u00e9tier lit et conteste\n    vraiment les sc\u00e9narios. Quand personne hors de l&#8217;\u00e9quipe de test ne les ouvre jamais, vous payez une\n    couche de plus pour rien \u2014 et nous vous le dirons.<\/p><\/details>\n\n  <details><summary data-en=\"When should performance testing happen?\">La performance, on s&#8217;en occupe quand ?<\/summary>\n    <p class=\"s\" data-en=\"Not the week before go-live, which is when we are usually called. A load test run late tells you that it breaks, not what to change \u2014 by then the architecture is frozen. Run one early on the two or three journeys that carry the traffic, then keep it in the pipeline. JMeter, Gatling, Neoload: the tool matters far less than the moment you run it.\">Pas la semaine avant la mise en production, qui est pourtant le\n    moment o\u00f9 on nous appelle. Un tir de charge lanc\u00e9 trop tard vous apprend que \u00e7a casse, pas quoi\n    changer \u2014 l&#8217;architecture est d\u00e9j\u00e0 fig\u00e9e. Il faut un premier tir t\u00f4t sur les deux ou trois parcours\n    qui portent le trafic, puis le garder dans la cha\u00eene. JMeter, Gatling, Neoload : l&#8217;outil compte\n    beaucoup moins que le moment o\u00f9 vous le lancez.<\/p><\/details>\n\n  <details><summary data-en=\"Certifications \u2014 what are they really worth?\">Les certifications, \u00e7a vaut quoi vraiment ?<\/summary>\n    <p class=\"s\" data-en=\"ISTQB gives a shared vocabulary \u2014 when a client says severity, criticality or regression, everyone means the same thing. That is worth a lot on a joint project, and it is why 100% of our consultants hold it. It does not tell you whether someone can automate a kiosk journey or read a database. We check that separately, and you can see it for yourself in the skills files.\">L&#8217;ISTQB donne un vocabulaire commun \u2014 quand un client dit\n    s\u00e9v\u00e9rit\u00e9, criticit\u00e9 ou non-r\u00e9gression, tout le monde entend la m\u00eame chose. Sur un projet \u00e0\n    plusieurs, \u00e7a vaut cher, et c&#8217;est pour \u00e7a que 100 % de nos consultants l&#8217;ont. \u00c7a ne dit pas si\n    quelqu&#8217;un sait automatiser un parcours de borne ou lire une base de donn\u00e9es. \u00c7a, on le v\u00e9rifie\n    autrement, et vous pouvez le constater vous-m\u00eame dans les dossiers de comp\u00e9tences.<\/p><\/details>\n\n  <details><summary data-en=\"Agile, SAFe, V-model \u2014 how do you fit in?\">Agile, SAFe, cycle en V : vous vous adaptez comment ?<\/summary>\n    <p class=\"s\" data-en=\"We take the way you already work. In an agile squad, QA sits inside the team and the definition of done includes the tests \u2014 no acceptance phase bolted on at the end. In SAFe, we plug into the PI planning and the shared regression suite. On a V-model, we come back to a classic test plan. The real shift of the last few years is not the framework, it is that testing has moved upstream: the earlier a defect is found, the less it costs.\">On prend votre fa\u00e7on de travailler. En squad agile, la QA est\n    dans l&#8217;\u00e9quipe et la definition of done inclut les tests \u2014 pas de phase de recette rapport\u00e9e \u00e0 la\n    fin. En SAFe, on se branche sur le PI planning et sur la non-r\u00e9gression partag\u00e9e. En cycle en V, on\n    revient \u00e0 un plan de test classique. Le vrai changement de ces derni\u00e8res ann\u00e9es n&#8217;est pas le cadre,\n    c&#8217;est que le test est remont\u00e9 vers l&#8217;amont : plus un d\u00e9faut est trouv\u00e9 t\u00f4t, moins il co\u00fbte.<\/p><\/details>\n\n  <details><summary data-en=\"How long before we see a return?\">Combien de temps avant de voir un retour ?<\/summary>\n    <p class=\"s\" data-en=\"The first automated cycle already gives a measurement: execution time against the manual run, and defects caught before go-live rather than after. On a live estate, the first automated read of 27 restaurants took one minute and surfaced four unsellable items, a discount printed under three different labels, and fifteen items priced wrong inside meal deals.\">Le premier cycle automatis\u00e9 donne d\u00e9j\u00e0 une mesure : temps\n    d&#8217;ex\u00e9cution compar\u00e9 au manuel, et d\u00e9fauts trouv\u00e9s avant la mise en production plut\u00f4t qu&#8217;apr\u00e8s. Sur\n    un parc en exploitation, la premi\u00e8re lecture automatis\u00e9e de 27 restaurants a pris une minute et\n    remont\u00e9 quatre articles invendables, une remise imprim\u00e9e sous trois libell\u00e9s et quinze articles au\n    mauvais prix en formule.<\/p><\/details>\n\n  <details><summary data-en=\"Why TTC rather than a giant consultancy?\">Pourquoi TTC plut\u00f4t qu&#8217;une ESN g\u00e9ante ?<\/summary>\n    <p class=\"s\" data-en=\"Because for 27 years TTC has done one thing: software quality. We are not generalists who also happen to staff testers \u2014 QA is the whole business. In practice that means the person who sells you the engagement has run one, and you are not the training ground for a junior placed on a rate card.\">Parce que depuis 27 ans, TTC fait une seule chose :\n    la qualit\u00e9 logicielle. Nous ne sommes pas des g\u00e9n\u00e9ralistes qui placent aussi des testeurs \u2014 la QA\n    est tout le m\u00e9tier. Concr\u00e8tement, celui qui vous vend la mission en a fait une, et vous n&#8217;\u00eates pas\n    le terrain d&#8217;apprentissage d&#8217;un junior pos\u00e9 sur une grille tarifaire.<\/p><\/details>\n\n  <details><summary data-en=\"Internal hire, consultancy or freelance?\">Ressource interne, prestataire ou ind\u00e9pendant ?<\/summary>\n    <p class=\"s\" data-en=\"All three can work. But without a genuinely qualified person from day one, you will miss the benefits you were after \u2014 an automation framework built wrong in month one is thrown away in month six. A serious consultancy means support over time and access to more complete solutions than a single freelance can carry alone.\">Les trois peuvent marcher. Mais sans une ressource r\u00e9ellement\n    qualifi\u00e9e d\u00e8s le d\u00e9part, vous passerez \u00e0 c\u00f4t\u00e9 des b\u00e9n\u00e9fices attendus \u2014 un framework d&#8217;automatisation\n    mal pos\u00e9 au premier mois se jette au sixi\u00e8me. Une ESN s\u00e9rieuse, c&#8217;est un accompagnement dans la\n    dur\u00e9e et l&#8217;acc\u00e8s \u00e0 des solutions plus compl\u00e8tes qu&#8217;un intervenant isol\u00e9 ne peut porter seul.<\/p><\/details>\n\n  <details><summary data-en=\"Open source tools or paid licences?\">Outils open source ou licences ?<\/summary>\n    <p class=\"s\" data-en=\"Open source has the upper hand in standard environments, though it usually asks more effort at implementation. The sweet spot is often in between \u2014 Playwright, built by Microsoft, free and genuinely solid. We use your tools first, and only bring ours in when they cover something yours do not.\">L&#8217;open source a l&#8217;avantage dans les environnements standards,\n    m\u00eame s&#8217;il demande plus d&#8217;efforts \u00e0 l&#8217;impl\u00e9mentation. L&#8217;id\u00e9al se trouve souvent \u00e0 mi-chemin \u2014\n    Playwright, d\u00e9velopp\u00e9 par Microsoft, gratuit et r\u00e9ellement solide. Nous travaillons d&#8217;abord avec vos\n    outils, et n&#8217;amenons les n\u00f4tres que lorsqu&#8217;ils couvrent ce que les v\u00f4tres ne couvrent pas.<\/p><\/details>\n\n  <details><summary data-en=\"What happens when your consultants leave?\">Que se passe-t-il quand vos consultants partent ?<\/summary>\n    <p class=\"s\" data-en=\"Handover is part of the approach, not of the last week. Your teams are trained as we go, the solutions we put in place stay with you, and the exit is planned from the first phase. A mission that cannot be handed back is a mission badly run.\">Le transfert fait partie de la d\u00e9marche, pas de la derni\u00e8re\n    semaine. Vos \u00e9quipes sont form\u00e9es \u00e0 mesure, les solutions mises en place vous restent, et la sortie\n    est pr\u00e9vue d\u00e8s la premi\u00e8re phase. Une mission qu&#8217;on ne peut pas rendre est une mission mal men\u00e9e.<\/p><\/details>\n<\/div><\/section>\n\n<!-- ============ CONTACT ============ -->\n<section class=\"nuit\" id=\"services\" data-fond=\"#16304F\" data-sur=\"sombre\"><div class=\"w\"><p class=\"oeil\" data-en=\"Our services in detail\">Nos expertises en d\u00e9tail<\/p><h2 data-en=\"One page per question you may have.\">Une page par question que vous vous posez.<\/h2><ul class=\"liens-services\"><li><a href=\"\/test-bornes-commande-ecrans-cuisine\/\">Bornes, kiosques et \u00e9crans cuisine<\/a><\/li><li><a href=\"\/suivi-exploitation-restauration-rapide-simphony\/\">Suivi d&#8217;exploitation et Oracle Simphony<\/a><\/li><li><a href=\"\/test-logiciels-restauration-rapide\/\">Logiciels de restauration rapide<\/a><\/li><li><a href=\"\/test-retail-caisse-encaissement\/\">Retail, caisse et encaissement<\/a><\/li><li><a href=\"\/automatisation-des-tests\/\">Automatisation des tests<\/a><\/li><li><a href=\"\/developpement-outils-automatisation-sur-mesure\/\">D\u00e9veloppement d&#8217;automatisation sur mesure<\/a><\/li><li><a href=\"\/tests-de-performance-et-de-charge\/\">Tests de performance et de charge<\/a><\/li><li><a href=\"\/tests-de-performance-automatises-ci-cd\/\">Performance en int\u00e9gration continue<\/a><\/li><li><a href=\"\/ferme-de-mobiles-tests-multi-appareils\/\">Ferme de mobiles et multi-appareils<\/a><\/li><li><a href=\"\/ia-appliquee-au-test-logiciel\/\">IA appliqu\u00e9e au test<\/a><\/li><li><a href=\"\/bdd-gherkin-cucumber-page-object-model\/\">BDD, Gherkin et Cucumber<\/a><\/li><\/ul><\/div><\/section><section class=\"nuit final\" id=\"contact\" data-fond=\"#0F1E3C\" data-sur=\"sombre\"><div class=\"w\">\n  <h2 data-en=\"Let us talk about what you cannot test yet.\">Parlons de ce que vous n&#8217;arrivez pas encore \u00e0 tester.<\/h2>\n  <p class=\"lede s\" data-en=\"An audit of your testing practice, with no commitment, to find out where you actually stand.\">Un audit de votre d\u00e9marche de test, sans engagement, pour savoir o\u00f9 vous en \u00eates\n    vraiment.<\/p>\n  <a class=\"pill\" href=\"https:\/\/outlook.office.com\/bookwithme\/user\/176ca71218304b0094d4799dc009d7dc@ttc-testing.io\/meetingtype\/hfvBA8ifokaSYaNxIMUbzg2?anonymous\" target=\"_blank\" rel=\"noopener\" data-en=\"Book a meeting\">Prendre rendez-vous<\/a>\n  <ul class=\"coord s\">\n    <li><a href=\"tel:+33173049197\">+33 1 73 04 91 97<\/a><\/li>\n    <li><a href=\"mailto:Contact@ttc-testing.com\">Contact@ttc-testing.com<\/a><\/li>\n    <li>195 avenue Charles de Gaulle, 92200 Neuilly-sur-Seine<\/li>\n  <\/ul>\n<\/div><\/section>\n\n<footer class=\"pied nuit\"><div class=\"w s\">\n  TTC \u2014 Testing \u00b7 Training \u00b7 Consulting \u00b7 195 avenue Charles de Gaulle, 92200 Neuilly-sur-Seine \u00b7\n  <a href=\"tel:+33173049197\">+33 1 73 04 91 97<\/a> \u00b7\n  <a href=\"mailto:Contact@ttc-testing.com\">Contact@ttc-testing.com<\/a>\n<\/div><\/footer>\n\n<script>\n\n  \/\/ ---- Bascule FR \/ EN ----\n  \/\/ Le fran\u00e7ais est dans le document, l'anglais dans data-en. On m\u00e9morise le fran\u00e7ais au premier\n  \/\/ passage, puis on \u00e9change le contenu des deux c\u00f4t\u00e9s autant de fois qu'on veut.\n  (() => {\n    const boutons = document.querySelectorAll('.langue button');\n    if (!boutons.length) return;\n\n    const poser = (lang) => {\n      for (const el of document.querySelectorAll('[data-en]')) {\n        if (el.dataset.fr === undefined) el.dataset.fr = el.innerHTML;\n        el.innerHTML = lang === 'en' ? el.dataset.en : (lang === 'he' && el.dataset.he) ? el.dataset.he : el.dataset.fr;\n      }\n      \/\/ Les libell\u00e9s qui ne sont pas du contenu : marque-page des champs de saisie.\n      for (const el of document.querySelectorAll('[data-ph-en]')) {\n        if (el.dataset.phFr === undefined) el.dataset.phFr = el.placeholder;\n        el.placeholder = lang === 'en' ? el.dataset.phEn : (lang === 'he' && el.dataset.phHe) ? el.dataset.phHe : el.dataset.phFr;\n      }\n      document.documentElement.lang = lang;\n      \/\/ l'h\u00e9breu s'\u00e9crit de droite \u00e0 gauche : tout le document se retourne\n      document.documentElement.setAttribute('dir', lang === 'he' ? 'rtl' : 'ltr');\n      for (const b of boutons) b.setAttribute('aria-pressed', String(b.dataset.lang === lang));\n      try { localStorage.setItem('ttc-langue', lang); } catch (e) { \/* navigation priv\u00e9e *\/ }\n    };\n\n    for (const b of boutons) b.addEventListener('click', () => poser(b.dataset.lang));\n\n    \/\/ Choix m\u00e9moris\u00e9 s'il existe, sinon la langue du navigateur, sinon le fran\u00e7ais.\n    let choix = null;\n    try { choix = localStorage.getItem('ttc-langue'); } catch (e) { \/* ignor\u00e9 *\/ }\n    if (choix !== 'fr' && choix !== 'en') {\n      choix = (navigator.language || 'fr').toLowerCase().startsWith('fr') ? 'fr' : 'en';\n    }\n    poser(choix);\n  })();\n\n  \/\/ ---- Rideau d'ouverture : une nu\u00e9e de T et de C forme le fond ----\n  (() => {\n    const sobre = matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n    const r = document.createElement('div');\n    r.id = 'rideau'; r.setAttribute('aria-hidden', 'true');\n    document.body.appendChild(r);\n    document.body.style.overflow = 'hidden';\n    document.documentElement.classList.add('avant-texte', 'logo-centre');\n\n    \/\/ Une mosa\u00efque qui couvre l'\u00e9cran : chaque tuile porte une lettre et sa couleur.\n    \/\/ C'est l'accumulation des tuiles qui \u00ab donne la couleur du fond \u00bb.\n    const COTE = Math.max(210, Math.round(Math.min(innerWidth, innerHeight) \/ 3.4));\n    const cols = Math.ceil(innerWidth \/ COTE), lignes = Math.ceil(innerHeight \/ COTE);\n    \/\/ Toutes les lettres partagent la m\u00eame teinte bleu-gris : aucune ne se distingue.\n    const NAVY = '#0F1E3C', TUILE = NAVY, LETTRE = 'rgba(255,255,255,.17)';\n    let i = 0;\n\n    for (let y = 0; sobre ? false : y < lignes; y++) {\n      for (let x = 0; x < cols; x++, i++) {\n        const t = document.createElement('span');\n        t.className = 'tuile';\n        t.innerHTML = '<i>' + ((x + y) % 3 === 0 ? 'C' : 'T') + '<\/i>';\n        t.style.cssText =\n          `left:${x * COTE}px;top:${y * COTE}px;width:${COTE + 1}px;height:${COTE + 1}px;` +\n          `background:${TUILE};color:${LETTRE};font-size:${Math.round(COTE * .78)}px;`;\n        \/\/ Chaque tuile vient de l'ext\u00e9rieur, dans une direction qui lui est propre.\n        const angle = Math.atan2(y - lignes \/ 2, x - cols \/ 2) + (Math.random() - .5);\n        const loin = Math.max(innerWidth, innerHeight) * (1.1 + Math.random() * .5);\n        t.style.setProperty('--dx', Math.round(Math.cos(angle) * loin) + 'px');\n        t.style.setProperty('--dy', Math.round(Math.sin(angle) * loin) + 'px');\n        t.style.setProperty('--r', Math.round((Math.random() - .5) * 300) + 'deg');\n        \/\/ D\u00e9rive propre \u00e0 la tuile : faible amplitude, p\u00e9riode irr\u00e9guli\u00e8re.\n        t.style.setProperty('--fx', ((Math.random() - .5) * 9).toFixed(1) + 'px');\n        t.style.setProperty('--fy', ((Math.random() - .5) * 9).toFixed(1) + 'px');\n        t.style.setProperty('--fr', ((Math.random() - .5) * 14).toFixed(1) + 'deg');\n        t.style.setProperty('--d', (2.2 + Math.random() * 2.4).toFixed(2) + 's');\n        t.style.setProperty('--dd', (Math.random() * 1.6).toFixed(2) + 's');\n        \/\/ Arriv\u00e9e du centre vers les bords : la mosa\u00efque se remplit en s'\u00e9talant.\n        const d = Math.hypot(x - cols \/ 2, y - lignes \/ 2) \/ Math.hypot(cols \/ 2, lignes \/ 2);\n        t.style.animationDelay = (d * 620 + Math.random() * 120) + 'ms';\n        r.appendChild(t);\n      }\n    }\n\n    \/\/ Une fois la mosa\u00efque compl\u00e8te, elle s'absorbe : plus de lettres, plus de tuiles, le fond.\n    if (!sobre) setTimeout(() => r.classList.add('fusion'), 1250);\n\n    const bouton = document.createElement('button');\n    bouton.type = 'button'; bouton.className = 'passer';\n    bouton.textContent = (document.documentElement.lang === 'en') ? 'Skip' : 'Passer';\n    r.appendChild(bouton);\n\n    let leve = false;\n    const lever = () => {\n      if (leve) return;\n      leve = true;\n      r.classList.add('parti');\n      document.body.style.overflow = '';\n      setTimeout(() => r.remove(), 600);\n      \/\/ Le logo tient le centre le temps que l'\u00e9cran se d\u00e9nude, puis glisse vers son bord.\n      setTimeout(() => document.documentElement.classList.remove('logo-centre'), sobre ? 0 : 650);\n      \/\/ Le logo arrive \u00e0 1650 ms ; on marque un temps d'arr\u00eat avant que le texte n'entre.\n      setTimeout(() => document.documentElement.classList.remove('avant-texte'), sobre ? 1100 : 2600);\n    };\n    bouton.addEventListener('click', lever);\n    addEventListener('keydown', (e) => { if (e.key === 'Escape') lever(); }, { once: true });\n    setTimeout(lever, sobre ? 550 : 1800);   \/\/ d\u00e9roul\u00e9 normal\n    setTimeout(lever, 5000);   \/\/ filet de s\u00e9curit\u00e9\n  })();\n\n  \/\/ Le contenu reste visible sans script : on ne passe en mode anim\u00e9 qu'une fois le script en vie.\n  document.documentElement.classList.add('js', 'sur-sombre');\n\n  const cibles = [];\n  for (const sec of document.querySelectorAll('section')) {\n    const enfants = sec.querySelectorAll(':scope > .w > *, :scope > .w > .g3 > *, :scope > .w > .g2 > *, :scope > .w > .bande > *, :scope > .w > .exp > *, :scope > .w > .cites > *, :scope > .w > .actus > *');\n    let i = 0;\n    for (const el of enfants) { el.classList.add('rev'); el.style.transitionDelay = (i++ % 6) * 70 + 'ms'; cibles.push(el); }\n  }\n\n  const obs = new IntersectionObserver((entrees) => {\n    for (const e of entrees) if (e.isIntersecting) { e.target.classList.add('vu'); obs.unobserve(e.target); }\n  }, { rootMargin: '0px 0px -8% 0px', threshold: 0.08 });\n  cibles.forEach((c) => obs.observe(c));\n\n  \/\/ Filet de s\u00e9curit\u00e9 : si l'observateur n'a rien d\u00e9clench\u00e9, on montre tout.\n  setTimeout(() => cibles.forEach((c) => c.classList.add('vu')), 2500);\n\n  \/\/ ---- Nappe de fond : la page change de couleur au fil du d\u00e9filement ----\n  const nappe = document.getElementById('nappe');\n  const zones = [...document.querySelectorAll('section[data-fond]')];\n  const hex = (h) => [1,3,5].map(i => parseInt(h.slice(i, i+2), 16));\n  const melange = (a, b, t) => 'rgb(' + a.map((v,i) => Math.round(v + (b[i]-v)*t)).join(',') + ')';\n\n  function teinter() {\n    if (!zones.length) return;\n    const milieu = scrollY + innerHeight * 0.42;\n    let i = 0;\n    for (let k = 0; k < zones.length; k++) if (zones[k].offsetTop <= milieu) i = k;\n    const a = zones[i], b = zones[Math.min(i+1, zones.length-1)];\n    const haut = a.offsetTop, bas = b === a ? haut + a.offsetHeight : b.offsetTop;\n    const t = bas > haut ? Math.min(1, Math.max(0, (milieu - haut) \/ (bas - haut))) : 0;\n    nappe.style.backgroundColor = melange(hex(a.dataset.fond), hex(b.dataset.fond), t);\n    \/\/ Le r\u00e9gime de lisibilit\u00e9 bascule \u00e0 mi-chemin, jamais au milieu d'un bloc de texte.\n    const sur = (t > .5 ? b : a).dataset.sur;\n    document.documentElement.classList.toggle('sur-clair', sur === 'clair');\n    document.documentElement.classList.toggle('sur-sombre', sur !== 'clair');\n  }\n  teinter();\n  addEventListener('resize', teinter, { passive: true });\n\n  const jauge = document.getElementById('jauge');\n  const barre = document.querySelector('.barre');\n  addEventListener('scroll', () => {\n    const h = document.documentElement;\n    jauge.style.width = (h.scrollTop \/ (h.scrollHeight - h.clientHeight) * 100) + '%';\n    barre.classList.toggle('pose', h.scrollTop > 8);\n    teinter();\n  }, { passive: true });\n\n  \/\/ ---- Acc\u00e8s au catalogue des consultants disponibles ----\n  \/\/ Le catalogue n'est pas dans la page : il y est chiffr\u00e9 (AES-GCM, cl\u00e9 d\u00e9riv\u00e9e du mot de passe\n  \/\/ par PBKDF2). Un mauvais mot de passe ne donne pas un refus poli, il donne un \u00e9chec de\n  \/\/ d\u00e9chiffrement \u2014 il n'y a donc rien \u00e0 lire sans lui, code source compris.\n  (() => {\n    const f = document.getElementById('coffre');\n    if (!f) return;\n    const champ = document.getElementById('coffre-mdp'),\n          msg   = document.getElementById('coffre-msg'),\n          cat   = document.getElementById('catalogue'),\n          bouton = f.querySelector('button');\n    const b64 = document.getElementById('coffre-donnees').textContent.trim();\n    const octets = Uint8Array.from(atob(b64), c => c.charCodeAt(0));\n    const sel = octets.slice(0, 16), iv = octets.slice(16, 28), blob = octets.slice(28);\n\n    const ouvrir = async (mdp) => {\n      const base = await crypto.subtle.importKey('raw', new TextEncoder().encode(mdp),\n                                                 'PBKDF2', false, ['deriveKey']);\n      const cle = await crypto.subtle.deriveKey(\n        { name: 'PBKDF2', salt: sel, iterations: 1200000, hash: 'SHA-256' },\n        base, { name: 'AES-GCM', length: 256 }, false, ['decrypt']);\n      const clair = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, cle, blob);\n      cat.querySelector('.fiches').innerHTML = new TextDecoder().decode(clair);\n      cat.hidden = false; f.hidden = true; msg.hidden = true;\n      \/\/ les fiches viennent d'arriver : on leur applique la langue courante\n      const actif = document.querySelector('.langue button[aria-pressed=\"true\"]');\n      if (actif) actif.click();\n      try { sessionStorage.setItem('ttc-catalogue', mdp); } catch (e) { \/* navigation priv\u00e9e *\/ }\n    };\n\n    f.addEventListener('submit', async (e) => {\n      e.preventDefault();\n      const mdp = champ.value.trim();\n      if (!mdp) return;\n      bouton.disabled = true;\n      const avant = bouton.textContent;\n      bouton.textContent = '\u2026';\n      try { await ouvrir(mdp); }\n      catch (err) { msg.hidden = false; champ.select(); }\n      finally { bouton.disabled = false; bouton.textContent = avant; }\n    });\n\n    \/\/ rouvert sans ressaisie le temps de la visite\n    try {\n      const garde = sessionStorage.getItem('ttc-catalogue');\n      if (garde) ouvrir(garde).catch(() => sessionStorage.removeItem('ttc-catalogue'));\n    } catch (e) { \/* ignor\u00e9 *\/ }\n  })();\n\n  \/\/ ---- \u00ab Prendre rendez-vous \u00bb, le t\u00e9l\u00e9phone, l'adresse ----\n  \/\/ Affich\u00e9e dans un cadre (l'aper\u00e7u d'un artefact), la page n'a pas le droit d'ouvrir un\n  \/\/ mailto: ni un tel: \u2014 le clic ne fait alors rien du tout. Dans ce cas seulement, on copie\n  \/\/ l'adresse et on le dit. Sur le site, le comportement normal est conserv\u00e9.\n  (() => {\n    const dansUnCadre = window.self !== window.top;\n    if (!dansUnCadre) return;\n    for (const a of document.querySelectorAll('a[href^=\"mailto:\"], a[href^=\"tel:\"]')) {\n      a.addEventListener('click', async (e) => {\n        e.preventDefault();\n        const valeur = decodeURIComponent(a.getAttribute('href').replace(\/^(mailto|tel):\/, '').split('?')[0]);\n        let ok = true;\n        try { await navigator.clipboard.writeText(valeur); } catch (err) { ok = false; }\n        let mot = a.parentNode.querySelector('.copie-faite');\n        if (!mot) {\n          mot = document.createElement('span');\n          mot.className = 'copie-faite';\n          mot.setAttribute('role', 'status');\n          a.after(mot);\n        }\n        const en = document.documentElement.lang === 'en';\n        mot.textContent = ok ? (en ? 'Copied \u2014 ' : 'Copi\u00e9 \u2014 ') + valeur : valeur;\n        requestAnimationFrame(() => mot.classList.add('vue'));\n        setTimeout(() => mot.classList.remove('vue'), 6000);\n      });\n    }\n  })();\n\n  \/\/ ---- Les ancres du menu ----\n  \/\/ Le saut natif vers une ancre ne fonctionne plus une fois la page dans WordPress : le th\u00e8me\n  \/\/ pose overflow sur html et body, ce qui d\u00e9place l'\u00e9l\u00e9ment d\u00e9filant. On fait donc le\n  \/\/ d\u00e9filement nous-m\u00eames, en retranchant la hauteur de la barre pour ne pas cacher le titre\n  \/\/ vis\u00e9 dessous.\n  document.addEventListener('click', (e) => {\n    const a = e.target.closest('a[href^=\"#\"]');\n    if (!a) return;\n    const id = a.getAttribute('href').slice(1);\n    const cible = id ? document.getElementById(id) : null;\n    if (id && !cible) return;              \/\/ ancre inconnue : on laisse le navigateur d\u00e9cider\n    e.preventDefault();\n    const barre = document.querySelector('.barre');\n    const marge = (barre ? barre.getBoundingClientRect().height : 0) + 14;\n    const y = id ? window.scrollY + cible.getBoundingClientRect().top - marge : 0;\n    window.scrollTo({ top: Math.max(0, y), behavior: 'smooth' });\n    history.replaceState(null, '', id ? '#' + id : location.pathname);\n  });\n\n\n  \/\/ L'h\u00e9breu quitte le s\u00e9lecteur flottant de TranslatePress. Le CSS n'y suffit pas : la feuille\n  \/\/ du plugin, charg\u00e9e apr\u00e8s la n\u00f4tre, impose display:flex!important \u00e0 sp\u00e9cificit\u00e9 comparable.\n  \/\/ On retire donc l'\u00e9l\u00e9ment. C'est un rideau, pas une suppression : \/he\/ reste servi et d\u00e9clar\u00e9\n  \/\/ en hreflang \u2014 le retrait r\u00e9el est un r\u00e9glage du plugin, \u00e0 faire une fois dans son \u00e9cran.\n  (() => {\n    const oter = () => document.querySelectorAll('a[href*=\"\/he\/\"]').forEach((a) => {\n      if (a.closest('.trp-language-switcher, [id*=\"trp-floater\"]')) a.remove();\n    });\n    oter();\n    setTimeout(oter, 1500);\n  })();\n\n  \/\/ La langue courante se d\u00e9duit de l'adresse : \/en\/ pour l'anglais, la racine pour le fran\u00e7ais.\n  (() => {\n    const anglais = location.pathname.startsWith('\/en');\n    const a = document.querySelector('.langue a[hreflang=\"' + (anglais ? 'en' : 'fr') + '\"]');\n    if (a) a.setAttribute('aria-current', 'true');\n  })();\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Expertises D\u00e9marche Solutions Secteurs Profils Actualit\u00e9s FAQ FR EN Nous contacter Test logiciel \u00b7 Automatisation \u00b7 Qualit\u00e9 Sp\u00e9cialistes QA.Pas g\u00e9n\u00e9ralistes. Depuis 27 ans, nous testons et automatisons les applications critiques des grands comptes. 65 consultants, 100 % certifi\u00e9s ISTQB, 40 projets livr\u00e9s. D\u00e9couvrir notre d\u00e9marche TTC en bref L&#8217;ann\u00e9e 2026, en chiffres. 65 consultants 2 [&hellip;]<\/p>\n","protected":false},"author":254301877,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"_wpcom_ai_launchpad_about_page":false,"_wpcom_ai_launchpad_gallery_page":false,"_wpcom_ai_launchpad_contact_page":false,"_wpcom_ai_launchpad_events_page":false,"_wpcom_ai_launchpad_video_page":false,"_wpcom_ai_launchpad_portfolio_piece":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"footnotes":"","big_sky_generated":false},"class_list":["post-16688","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TTC Testing \u2014 Sp\u00e9cialistes QA, test logiciel et automatisation - TTC<\/title>\n<meta name=\"description\" content=\"Soci\u00e9t\u00e9 de test logiciel depuis 27 ans : recette fonctionnelle, automatisation des tests, performance et centres de service. 65 consultants certifi\u00e9s ISTQB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ttc-testing.io\/he\/\" \/>\n<meta property=\"og:locale\" content=\"he_IL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TTC Testing \u2014 Sp\u00e9cialistes QA, test logiciel et automatisation - TTC\" \/>\n<meta property=\"og:description\" content=\"Soci\u00e9t\u00e9 de test logiciel depuis 27 ans : recette fonctionnelle, automatisation des tests, performance et centres de service. 65 consultants certifi\u00e9s ISTQB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ttc-testing.io\/he\/\" \/>\n<meta property=\"og:site_name\" content=\"TTC\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-13T10:40:25+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da\" \/>\n\t<meta name=\"twitter:data1\" content=\"12 \u05d3\u05e7\u05d5\u05ea\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/\",\"url\":\"https:\\\/\\\/ttc-testing.io\\\/\",\"name\":\"TTC Testing \u2014 Sp\u00e9cialistes QA, test logiciel et automatisation - TTC\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#website\"},\"datePublished\":\"2026-08-13T09:26:40+00:00\",\"dateModified\":\"2026-08-13T10:40:25+00:00\",\"description\":\"Soci\u00e9t\u00e9 de test logiciel depuis 27 ans : recette fonctionnelle, automatisation des tests, performance et centres de service. 65 consultants certifi\u00e9s ISTQB.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#breadcrumb\"},\"inLanguage\":\"he-IL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ttc-testing.io\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/ttc-testing.io\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"TTC Testing \u2014 Sp\u00e9cialistes QA, test logiciel et automatisation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#website\",\"url\":\"https:\\\/\\\/ttc-testing.io\\\/\",\"name\":\"TTC\",\"description\":\"Soci\u00e9t\u00e9 de test logiciel \u2013 Testeur, Automaticien &amp; Expert Performance QA\",\"publisher\":{\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ttc-testing.io\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"he-IL\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#organization\",\"name\":\"TTC \u2013 Testing Training Consulting\",\"alternateName\":\"TTC Testing\",\"url\":\"https:\\\/\\\/ttc-testing.io\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"he-IL\",\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/ttc-testing.io\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Logo-TTC-1.png?fit=709%2C348&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/ttc-testing.io\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/Logo-TTC-1.png?fit=709%2C348&ssl=1\",\"width\":709,\"height\":348,\"caption\":\"TTC \u2013 Testing Training Consulting\"},\"image\":{\"@id\":\"https:\\\/\\\/ttc-testing.io\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TTC Testing \u2014 \u05de\u05d5\u05de\u05d7\u05d9\u05dd \u05d1\u05ea\u05d7\u05d5\u05dd \u05d0\u05d1\u05d8\u05d7\u05ea \u05d0\u05d9\u05db\u05d5\u05ea, \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 - TTC","description":"\u05d7\u05d1\u05e8\u05d4 \u05d4\u05de\u05ea\u05de\u05d7\u05d4 \u05d1\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05de\u05d6\u05d4 27 \u05e9\u05e0\u05d9\u05dd: \u05e7\u05d1\u05dc\u05d4 \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05ea, \u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05e9\u05dc \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea, \u05d1\u05d9\u05e6\u05d5\u05e2\u05d9\u05dd \u05d5\u05de\u05e8\u05db\u05d6\u05d9 \u05e9\u05d9\u05e8\u05d5\u05ea. 65 \u05d9\u05d5\u05e2\u05e6\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05d4\u05e1\u05de\u05db\u05ea ISTQB.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ttc-testing.io\/he\/","og_locale":"he_IL","og_type":"article","og_title":"TTC Testing \u2014 Sp\u00e9cialistes QA, test logiciel et automatisation - TTC","og_description":"Soci\u00e9t\u00e9 de test logiciel depuis 27 ans : recette fonctionnelle, automatisation des tests, performance et centres de service. 65 consultants certifi\u00e9s ISTQB.","og_url":"https:\/\/ttc-testing.io\/he\/","og_site_name":"TTC","article_modified_time":"2026-08-13T10:40:25+00:00","twitter_card":"summary_large_image","twitter_misc":{"\u05d6\u05de\u05df \u05e7\u05e8\u05d9\u05d0\u05d4 \u05de\u05d5\u05e2\u05e8\u05da":"12 \u05d3\u05e7\u05d5\u05ea"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/ttc-testing.io\/","url":"https:\/\/ttc-testing.io\/","name":"TTC Testing \u2014 \u05de\u05d5\u05de\u05d7\u05d9\u05dd \u05d1\u05ea\u05d7\u05d5\u05dd \u05d0\u05d1\u05d8\u05d7\u05ea \u05d0\u05d9\u05db\u05d5\u05ea, \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05d5\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 - TTC","isPartOf":{"@id":"https:\/\/ttc-testing.io\/#website"},"datePublished":"2026-08-13T09:26:40+00:00","dateModified":"2026-08-13T10:40:25+00:00","description":"\u05d7\u05d1\u05e8\u05d4 \u05d4\u05de\u05ea\u05de\u05d7\u05d4 \u05d1\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u05de\u05d6\u05d4 27 \u05e9\u05e0\u05d9\u05dd: \u05e7\u05d1\u05dc\u05d4 \u05e4\u05d5\u05e0\u05e7\u05e6\u05d9\u05d5\u05e0\u05dc\u05d9\u05ea, \u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05e9\u05dc \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea, \u05d1\u05d9\u05e6\u05d5\u05e2\u05d9\u05dd \u05d5\u05de\u05e8\u05db\u05d6\u05d9 \u05e9\u05d9\u05e8\u05d5\u05ea. 65 \u05d9\u05d5\u05e2\u05e6\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05d4\u05e1\u05de\u05db\u05ea ISTQB.","breadcrumb":{"@id":"https:\/\/ttc-testing.io\/#breadcrumb"},"inLanguage":"he-IL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ttc-testing.io\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/ttc-testing.io\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/ttc-testing.io\/"},{"@type":"ListItem","position":2,"name":"TTC Testing \u2014 Sp\u00e9cialistes QA, test logiciel et automatisation"}]},{"@type":"WebSite","@id":"https:\/\/ttc-testing.io\/#website","url":"https:\/\/ttc-testing.io\/","name":"\u05db\u05d5\u05dc\u05dc \u05de\u05e2&quot;\u05de","description":"\u05d7\u05d1\u05e8\u05ea \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05ea\u05d5\u05db\u05e0\u05d4 \u2013 \u05d1\u05d5\u05d3\u05e7, \u05de\u05d4\u05e0\u05d3\u05e1 \u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05d5\u05de\u05d5\u05de\u05d7\u05d4 \u05dc\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05d1\u05d9\u05e6\u05d5\u05e2\u05d9\u05dd","publisher":{"@id":"https:\/\/ttc-testing.io\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ttc-testing.io\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"he-IL"},{"@type":"Organization","@id":"https:\/\/ttc-testing.io\/#organization","name":"TTC \u2013 \u05d9\u05d9\u05e2\u05d5\u05e5, \u05d4\u05d3\u05e8\u05db\u05d4 \u05d5\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea","alternateName":"TTC Testing","url":"https:\/\/ttc-testing.io\/","logo":{"@type":"ImageObject","inLanguage":"he-IL","@id":"https:\/\/ttc-testing.io\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/ttc-testing.io\/wp-content\/uploads\/2024\/08\/Logo-TTC-1.png?fit=709%2C348&ssl=1","contentUrl":"https:\/\/i0.wp.com\/ttc-testing.io\/wp-content\/uploads\/2024\/08\/Logo-TTC-1.png?fit=709%2C348&ssl=1","width":709,"height":348,"caption":"TTC \u2013 Testing Training Consulting"},"image":{"@id":"https:\/\/ttc-testing.io\/#\/schema\/logo\/image\/"}}]}},"jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PfY5O8-4la","jetpack-related-posts":[{"id":16706,"url":"https:\/\/ttc-testing.io\/he\/developpement-outils-automatisation-sur-mesure\/","url_meta":{"origin":16688,"position":0},"title":"\u05e4\u05d9\u05ea\u05d5\u05d7 \u05db\u05dc\u05d9\u05dd \u05de\u05d5\u05ea\u05d0\u05de\u05d9\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea \u05dc\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05e9\u05dc \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea","author":"laurent Abid","date":"13 \u05d0\u05d5\u05d2\u05d5\u05e1\u05d8 2026","format":false,"excerpt":"\u05de\u05d5\u05de\u05d7\u05d9\u05d5\u05ea, \u05ea\u05d4\u05dc\u05d9\u05da, \u05e4\u05ea\u05e8\u05d5\u05e0\u05d5\u05ea, \u05de\u05d2\u05d6\u05e8\u05d9\u05dd, \u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd, \u05d7\u05d3\u05e9\u05d5\u05ea, \u05e9\u05d0\u05dc\u05d5\u05ea \u05e0\u05e4\u05d5\u05e6\u05d5\u05ea, FR, EN, \u05e6\u05e8\u05d5 \u05e7\u05e9\u05e8, \u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05de\u05d5\u05ea\u05d0\u05de\u05ea \u05d0\u05d9\u05e9\u05d9\u05ea \u2013 \u05db\u05d0\u05e9\u05e8 \u05d0\u05e3 \u05db\u05dc\u05d9 \u05d1\u05e9\u05d5\u05e7 \u05d0\u05d9\u05e0\u05d5 \u05de\u05e1\u05d5\u05d2\u05dc \u05dc\u05d1\u05d3\u05d5\u05e7 \u05d0\u05ea \u05d4\u05de\u05e2\u05e8\u05db\u05ea \u05e9\u05dc\u05db\u05dd. Selenium, Cypress \u05d5-Playwright \u05de\u05db\u05e1\u05d9\u05dd \u05d0\u05ea \u05ea\u05d7\u05d5\u05dd \u05d4\u05d0\u05d9\u05e0\u05d8\u05e8\u05e0\u05d8. \u05de\u05e2\u05d1\u05e8 \u05dc\u05db\u05da \u2014 \u05d9\u05d9\u05e9\u05d5\u05de\u05d9\u05dd \u05db\u05d1\u05d3\u05d9\u05dd, PowerBuilder, \u05de\u05e1\u05d5\u05e3 \u05d4\u05d6\u05de\u05e0\u05d5\u05ea, \u05de\u05e1\u05da \u05d9\u05d9\u05e6\u05d5\u05e8, \u05de\u05e1\u05d5\u05e3 \u05e2\u05e1\u05e7\u05d9 \u2014 \u05e8\u05d5\u05d1 \u05d4\u05e1\u05e4\u05e7\u05d9\u05dd \u05e0\u05e2\u05e6\u05e8\u05d9\u05dd \u05d1\u05de\u05e7\u05d5\u05dd \u05e9\u05d1\u05d5\u2026","rel":"","context":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","block_context":{"text":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16703,"url":"https:\/\/ttc-testing.io\/he\/ferme-de-mobiles-tests-multi-appareils\/","url_meta":{"origin":16688,"position":1},"title":"\u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05e8\u05d1-\u05de\u05db\u05e9\u05d9\u05e8\u05d9\u05dd \u05d1\u05e8\u05e9\u05ea \u05e1\u05dc\u05d5\u05dc\u05e8\u05d9\u05ea","author":"laurent Abid","date":"13 \u05d0\u05d5\u05d2\u05d5\u05e1\u05d8 2026","format":false,"excerpt":"\u05de\u05d5\u05de\u05d7\u05d9\u05d5\u05ea, \u05ea\u05d4\u05dc\u05d9\u05da, \u05e4\u05ea\u05e8\u05d5\u05e0\u05d5\u05ea, \u05ea\u05d7\u05d5\u05de\u05d9 \u05e4\u05e2\u05d9\u05dc\u05d5\u05ea, \u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd, \u05d7\u05d3\u05e9\u05d5\u05ea, \u05e9\u05d0\u05dc\u05d5\u05ea \u05e0\u05e4\u05d5\u05e6\u05d5\u05ea, FR, EN, \u05e6\u05d5\u05e8 \u05e7\u05e9\u05e8, &quot;\u05d7\u05d5\u05d5\u05d4 \u05e1\u05dc\u05d5\u05dc\u05e8\u05d9\u05ea&quot;: \u05d4\u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4 \u05e9\u05dc\u05db\u05dd \u05dc\u05e2\u05d5\u05dc\u05dd \u05dc\u05d0 \u05de\u05ea\u05e7\u05dc\u05e7\u05dc\u05ea \u05d1\u05d8\u05dc\u05e4\u05d5\u05df \u05e9\u05dc\u05db\u05dd. \u05d6\u05d5 \u05d1\u05d3\u05d9\u05d5\u05e7 \u05d4\u05d1\u05e2\u05d9\u05d4. \u05d0\u05e4\u05dc\u05d9\u05e7\u05e6\u05d9\u05d4 \u05e1\u05dc\u05d5\u05dc\u05e8\u05d9\u05ea \u05dc\u05d0 \u05e0\u05d1\u05d3\u05e7\u05ea \u05e2\u05dc \u05de\u05db\u05e9\u05d9\u05e8 \u05d1\u05d5\u05d3\u05d3, \u05d0\u05dc\u05d0 \u05e2\u05dc \u05db\u05dc\u05dc \u05d4\u05de\u05db\u05e9\u05d9\u05e8\u05d9\u05dd \u05e9\u05d1\u05d4\u05dd \u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd \u05d4\u05de\u05e9\u05ea\u05de\u05e9\u05d9\u05dd: \u05de\u05d0\u05d5\u05ea \u05d3\u05d2\u05de\u05d9\u05dd, \u05d2\u05d3\u05dc\u05d9\u05dd\u2026","rel":"","context":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","block_context":{"text":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16710,"url":"https:\/\/ttc-testing.io\/he\/suivi-exploitation-restauration-rapide-simphony\/","url_meta":{"origin":16688,"position":2},"title":"\u05de\u05e2\u05e7\u05d1 \u05ea\u05e4\u05e2\u05d5\u05dc\u05d9 \u05d1\u05ea\u05d7\u05d5\u05dd \u05d4\u05de\u05d6\u05d5\u05df \u05d4\u05de\u05d4\u05d9\u05e8 \u05d5\u05de\u05d5\u05de\u05d7\u05d9\u05d5\u05ea \u05d1-Oracle Simphony","author":"laurent Abid","date":"13 \u05d0\u05d5\u05d2\u05d5\u05e1\u05d8 2026","format":false,"excerpt":"\u05ea\u05d7\u05d5\u05de\u05d9 \u05d4\u05ea\u05de\u05d7\u05d5\u05ea, \u05ea\u05d4\u05dc\u05d9\u05da \u05e2\u05d1\u05d5\u05d3\u05d4, \u05e4\u05ea\u05e8\u05d5\u05e0\u05d5\u05ea, \u05de\u05d2\u05d6\u05e8\u05d9\u05dd, \u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd, \u05d7\u05d3\u05e9\u05d5\u05ea, \u05e9\u05d0\u05dc\u05d5\u05ea \u05e0\u05e4\u05d5\u05e6\u05d5\u05ea, FR, EN, \u05e6\u05e8\u05d5 \u05e7\u05e9\u05e8, \u05de\u05e2\u05e7\u05d1 \u05ea\u05e4\u05e2\u05d5\u05dc\u05d9: \u05d4\u05d6\u05de\u05e0\u05d4 \u05e9\u05e0\u05e2\u05dc\u05de\u05ea \u05d1\u05d9\u05df \u05d4\u05e7\u05d5\u05e4\u05d4 \u05dc\u05de\u05d8\u05d1\u05d7 \u05d0\u05d9\u05e0\u05d4 \u05de\u05e4\u05e2\u05d9\u05dc\u05d4 \u05e9\u05d5\u05dd \u05d4\u05ea\u05e8\u05d0\u05d4. \u05d4\u05d9\u05d0 \u05e2\u05d5\u05d1\u05e8\u05ea \u05d3\u05e8\u05da \u05d7\u05de\u05e9 \u05de\u05e2\u05e8\u05db\u05d5\u05ea \u05dc\u05e4\u05e0\u05d9 \u05e9\u05d4\u05d9\u05d0 \u05de\u05d2\u05d9\u05e2\u05d4 \u05dc\u05d9\u05d3\u05d9\u05d9\u05dd \u05d4\u05e0\u05db\u05d5\u05e0\u05d5\u05ea. \u05db\u05dc \u05e0\u05e7\u05d5\u05d3\u05ea \u05de\u05e2\u05d1\u05e8 \u05d4\u05d9\u05d0 \u05de\u05e7\u05d5\u05dd \u05e9\u05d1\u05d5 \u05d4\u05d9\u05d0 \u05e2\u05dc\u05d5\u05dc\u05d4 \u05dc\u05d4\u05e9\u05ea\u05d1\u05e9, \u05dc\u05d4\u05d9\u05e2\u05e6\u05e8 \u05d0\u05d5 \u05dc\u05d4\u05d9\u05e9\u05d0\u05e8 \u05e4\u05ea\u05d5\u05d7\u05d4 \u05d1\u05de\u05e9\u05da \u05e9\u05d1\u05d5\u05e2\u05d5\u05ea\u2026","rel":"","context":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","block_context":{"text":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16705,"url":"https:\/\/ttc-testing.io\/he\/test-bornes-commande-ecrans-cuisine\/","url_meta":{"origin":16688,"position":3},"title":"\u05d1\u05d3\u05d9\u05e7\u05ea \u05dc\u05d5\u05d7\u05d5\u05ea \u05d4\u05d1\u05e7\u05e8\u05d4 \u05d5\u05de\u05e1\u05db\u05d9 \u05d4\u05de\u05d8\u05d1\u05d7","author":"laurent Abid","date":"13 \u05d0\u05d5\u05d2\u05d5\u05e1\u05d8 2026","format":false,"excerpt":"\u05de\u05d5\u05de\u05d7\u05d9\u05d5\u05ea, \u05ea\u05d4\u05dc\u05d9\u05da, \u05e4\u05ea\u05e8\u05d5\u05e0\u05d5\u05ea, \u05de\u05d2\u05d6\u05e8\u05d9\u05dd, \u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd, \u05d7\u05d3\u05e9\u05d5\u05ea, \u05e9\u05d0\u05dc\u05d5\u05ea \u05e0\u05e4\u05d5\u05e6\u05d5\u05ea, \u05e6\u05e8\u05e4\u05ea\u05d9\u05ea, \u05d0\u05e0\u05d2\u05dc\u05d9\u05ea, \u05e6\u05e8\u05d5 \u05e7\u05e9\u05e8, \u05e2\u05de\u05d3\u05d5\u05ea \u05e9\u05d9\u05e8\u05d5\u05ea, \u05e7\u05d9\u05d5\u05e1\u05e7\u05d9\u05dd \u05d5\u05de\u05e1\u05db\u05d9 \u05ea\u05e6\u05d5\u05d2\u05d4: \u05d4\u05d0\u05dd \u05d4\u05e2\u05de\u05d3\u05d5\u05ea \u05e9\u05dc\u05db\u05dd \u05de\u05e6\u05d9\u05d2\u05d5\u05ea \u05d0\u05ea \u05d4\u05e7\u05de\u05e4\u05d9\u05d9\u05df \u05e9\u05d0\u05d9\u05e9\u05e8\u05ea\u05dd? \u05d1\u05d9\u05df \u05ea\u05d3\u05e8\u05d9\u05da \u05d4\u05e9\u05d9\u05d5\u05d5\u05e7 \u05dc\u05de\u05e1\u05da \u05e9\u05d4\u05dc\u05e7\u05d5\u05d7 \u05e8\u05d5\u05d0\u05d4, \u05d9\u05e9 \u05d4\u05d6\u05e0\u05d4 \u05d9\u05d3\u05e0\u05d9\u05ea, \u05e8\u05e9\u05ea \u05de\u05e1\u05e2\u05d3\u05d5\u05ea \u05d5\u05d0\u05e3 \u05d0\u05d7\u05d3 \u05e9\u05dc\u05d0 \u05d1\u05d5\u05d3\u05e7. \u05d0\u05e0\u05d7\u05e0\u05d5\u2026","rel":"","context":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","block_context":{"text":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16727,"url":"https:\/\/ttc-testing.io\/he\/test-logiciels-restauration-rapide\/","url_meta":{"origin":16688,"position":4},"title":"\u05d1\u05d3\u05d9\u05e7\u05ea \u05ea\u05d5\u05db\u05e0\u05d5\u05ea \u05dc\u05de\u05d6\u05d5\u05df \u05de\u05d4\u05d9\u05e8","author":"laurent Abid","date":"13 \u05d0\u05d5\u05d2\u05d5\u05e1\u05d8 2026","format":false,"excerpt":"\u05de\u05d5\u05de\u05d7\u05d9\u05d5\u05ea, \u05d2\u05d9\u05e9\u05d4, \u05e4\u05ea\u05e8\u05d5\u05e0\u05d5\u05ea, \u05de\u05d2\u05d6\u05e8\u05d9\u05dd, \u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd, \u05d7\u05d3\u05e9\u05d5\u05ea, \u05e9\u05d0\u05dc\u05d5\u05ea \u05e0\u05e4\u05d5\u05e6\u05d5\u05ea, FR, EN, \u05e6\u05e8\u05d5 \u05e7\u05e9\u05e8, \u05de\u05d6\u05d5\u05df \u05de\u05d4\u05d9\u05e8: \u05e9\u05ea\u05d9 \u05e7\u05de\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd \u05d1\u05d7\u05d5\u05d3\u05e9, \u05d5\u05d4\u05d4\u05db\u05e0\u05e1\u05d5\u05ea \u05db\u05d1\u05e8 \u05dc\u05d0 \u05e2\u05d5\u05de\u05d3\u05d5\u05ea \u05d1\u05e7\u05e6\u05d1. \u05e7\u05e6\u05d1 \u05d4\u05e7\u05de\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd \u05d4\u05d5\u05db\u05e4\u05dc. \u05d6\u05de\u05df \u05d4\u05db\u05e0\u05ea \u05d4\u05de\u05ea\u05db\u05d5\u05df, \u05dc\u05e2\u05d5\u05de\u05ea \u05d6\u05d0\u05ea, \u05dc\u05d0 \u05d4\u05e9\u05ea\u05e0\u05d4 \u2014 \u05d5\u05d4\u05d5\u05d0 \u05ea\u05de\u05d9\u05d3 \u05e0\u05e7\u05d1\u05e2 \u05d9\u05d5\u05dd \u05dc\u05e4\u05e0\u05d9 \u05d4\u05e4\u05ea\u05d9\u05d7\u05d4, \u05d1\u05de\u05e1\u05e2\u05d3\u05d4 \u05d0\u05d7\u05ea \u05d1\u05dc\u05d1\u05d3,\u2026","rel":"","context":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","block_context":{"text":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":16729,"url":"https:\/\/ttc-testing.io\/he\/tests-de-performance-automatises-ci-cd\/","url_meta":{"origin":16688,"position":5},"title":"\u05d0\u05d5\u05d8\u05d5\u05de\u05e6\u05d9\u05d4 \u05e9\u05dc \u05d1\u05d3\u05d9\u05e7\u05d5\u05ea \u05d1\u05d9\u05e6\u05d5\u05e2\u05d9\u05dd \u05d1\u05de\u05e1\u05d2\u05e8\u05ea \u05d0\u05d9\u05e0\u05d8\u05d2\u05e8\u05e6\u05d9\u05d4 \u05e8\u05e6\u05d9\u05e4\u05d4","author":"laurent Abid","date":"13 \u05d0\u05d5\u05d2\u05d5\u05e1\u05d8 2026","format":false,"excerpt":"\u05de\u05d5\u05de\u05d7\u05d9\u05d5\u05ea, \u05d2\u05d9\u05e9\u05d4, \u05e4\u05ea\u05e8\u05d5\u05e0\u05d5\u05ea, \u05de\u05d2\u05d6\u05e8\u05d9\u05dd, \u05e4\u05e8\u05d5\u05e4\u05d9\u05dc\u05d9\u05dd, \u05d7\u05d3\u05e9\u05d5\u05ea, \u05e9\u05d0\u05dc\u05d5\u05ea \u05e0\u05e4\u05d5\u05e6\u05d5\u05ea, FR, EN, \u05e6\u05e8\u05d5 \u05e7\u05e9\u05e8 \u05d1\u05d9\u05e6\u05d5\u05e2\u05d9\u05dd \u05e8\u05e6\u05d9\u05e4\u05d9\u05dd: \u05d1\u05d3\u05d9\u05e7\u05ea \u05e2\u05d5\u05de\u05e1 \u05d0\u05d7\u05ea \u05dc\u05e9\u05e0\u05d4 \u05d0\u05d9\u05e0\u05d4 \u05de\u05e1\u05e4\u05e7\u05ea \u05d4\u05d2\u05e0\u05d4 \u05db\u05dc\u05e9\u05d4\u05d9.\u05d4\u05d1\u05dc\u05d0\u05d9 \u05d0\u05d9\u05e0\u05d5 \u05de\u05ea\u05e8\u05d7\u05e9 \u05d1\u05d9\u05d5\u05dd \u05d4\u05d1\u05d3\u05d9\u05e7\u05d4 \u05d4\u05e9\u05e0\u05ea\u05d9\u05ea. \u05d4\u05d5\u05d0 \u05de\u05e6\u05d8\u05d1\u05e8 \u05de\u05e9\u05dc\u05d5\u05d7 \u05d0\u05d7\u05e8 \u05de\u05e9\u05dc\u05d5\u05d7, \u05e2\u05e9\u05e8 \u05de\u05d9\u05dc\u05d9-\u05e9\u05e0\u05d9\u05d5\u05ea \u05d1\u05db\u05dc \u05e4\u05e2\u05dd, \u05e2\u05d3 \u05dc\u05d9\u05d5\u05dd \u05e9\u05d1\u05d5 \u05d4\u05ea\u05e2\u05d1\u05d5\u05e8\u05d4 \u05e2\u05d5\u05dc\u05d4\u2026","rel":"","context":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","block_context":{"text":"\u05e8\u05e9\u05d5\u05de\u05d4 \u05d3\u05d5\u05de\u05d4","link":""},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/pages\/16688","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/users\/254301877"}],"replies":[{"embeddable":true,"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/comments?post=16688"}],"version-history":[{"count":14,"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/pages\/16688\/revisions"}],"predecessor-version":[{"id":16731,"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/pages\/16688\/revisions\/16731"}],"wp:attachment":[{"href":"https:\/\/ttc-testing.io\/he\/wp-json\/wp\/v2\/media?parent=16688"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}