{"id":10694,"date":"2026-01-09T03:21:25","date_gmt":"2026-01-09T03:21:25","guid":{"rendered":"https:\/\/www.besterpcba.com\/firmwareless-functional-testing\/"},"modified":"2026-01-09T03:22:52","modified_gmt":"2026-01-09T03:22:52","slug":"firmwareless-functional-testing","status":"publish","type":"post","link":"https:\/\/www.besterpcba.com\/it\/test-funzionale-senza-firmware\/","title":{"rendered":"Test funzionali senza firmware stabile: smetti di chiamarlo \u201cFunzionale,\u201d inizia a misurare ci\u00f2 che non pu\u00f2 mentire"},"content":{"rendered":"<p>Una volta, un team ha spedito schede con un timbro \u201ctest funzionale superato\u201d perch\u00e9 un bootloader stampava un banner UART amichevole. La stringa corrispondeva, il fixture si illuminava di verde, e il programma sembrava meno spaventoso. Poi, le prime unit\u00e0 sono iniziate a tornare con reset casuali\u2014circa 6% fallimenti precoci nelle prime migliaia\u2014proprio quando il prodotto aveva bisogno di credibilit\u00e0. Sulla panca, le schede sembravano a posto finch\u00e9 non si verificava un'attivit\u00e0 reale: un burst di trasmissione BLE tirava sul sistema di alimentazione e un sag di 1.8 V si mostrava chiaramente su un'onda di scope. La causa principale non era un comportamento firmware misterioso. Era una realt\u00e0 di assemblaggio: un induttore sostituito con un top-mark simile ma con comportamento di saturazione diverso, pi\u00f9 un test che non stressava mai la linea.<\/p>\n\n\n\n<p>Quella fuga non \u00e8 solo un errore tecnico; \u00e8 un fallimento sociale che indossa un costume tecnico. Una volta che un rapporto dice \u201cfunzionale PASS,\u201d gli altri sentono \u201ccaratteristiche validate,\u201d e l'organizzazione inizia a prendere decisioni di spedizione con una mappa falsa.<\/p>\n\n\n\n<p>Funzionale non \u00e8 sinonimo di \u201cstampa qualcosa.\u201d<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"scope-first-a-test-that-lies-by-accident-still-lies\">Scope First: Un test che si basa sull'errore pu\u00f2 comunque essere sbagliato<\/h2>\n\n\n<p>Quando il firmware \u00e8 in ritardo o instabile, i test iniziali devono comportarsi come ci\u00f2 che sono: rilevatori di difetti di assemblaggio e baseline hardware. Chiamarli \u201cfunzionali\u201d \u00e8 il modo in cui i team certificano accidentalmente comportamenti che non hanno mai esercitato.<\/p>\n\n\n\n<p>Ecco la trappola dell'etichetta \u201ctest funzionale\u201d. Qualcuno dice, \u201cabbiamo bisogno di un test funzionale senza firmware,\u201d e quello che intendono di solito \u00e8 \u201cabbiamo bisogno di un modo per mantenere la linea in movimento senza trasformare la produzione in un laboratorio di firmware.\u201d Sono obiettivi diversi. La prima formulazione invita a un timbro di PASS\/FAIL approssimativo. La seconda invita a un test con ambito e affermazioni esplicite e non-esplicite, che impedisce ai dibattiti di ripetersi nelle revisioni di build. Mantiene anche i cruscotti onesti quando la leadership chiede tassi di passaggio e qualcuno cerca di equiparare automazione e qualit\u00e0.<\/p>\n\n\n\n<p>Per prevenire la deriva dell'ambito, costringi ogni piano di test precoce a rispondere per iscritto a due domande: quali difetti cattura questo e quali comportamenti del prodotto questo <em>non<\/em> certifica. Alcuni team lo formalizzano come un artefatto di approvazione a due colonne durante il passaggio da DVT a PVT, perch\u00e9 la memoria non sopravvive alla pressione del programma.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Categoria<\/th><th>Il test pu\u00f2 rivendicare questo<\/th><th>Il test non deve rivendicare questo<\/th><\/tr><\/thead><tbody><tr><td>Screening precoce dell'assemblaggio<\/td><td>Rileva difetti di assemblaggio coerenti con misurazioni definite (binari\/clock\/reset\/continuit\u00e0\/una o due verit\u00e0 analogiche)<\/td><td>Certifica caratteristiche visibili al cliente, prestazioni in diverse condizioni, sicurezza\/conformit\u00e0, o \u201cfunziona\u201d in senso ampio<\/td><\/tr><tr><td>Assistito dal firmware successivamente<\/td><td>Convalida comportamenti specifici legati a un'immagine di test versionata e riproducibile e a un tracciamento dei requisiti<\/td><td>Implicano copertura al di fuori delle funzionalit\u00e0 abilitate o delle condizioni di test<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Un pubblico professionale non ha bisogno di una definizione di JTAG, SWD, UART, I2C o SPI qui. Il lavoro utile \u00e8 decidere cosa pu\u00f2 essere misurato in modo deterministico oggi, e come queste misurazioni vengono chiamate e portate avanti affinch\u00e9 nessuno usi a proprio vantaggio una luce verde.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"measurementfirst-baseline-rails-then-clocksresets-then-one-analog-truth\">Baseline Measurement-First: rotaie, poi orologi\/reset, poi una verit\u00e0 analogica<\/h2>\n\n\n<p>Una baseline non significa aggiungere \u201cpi\u00f9 test\u201d. Significa stabilire un piccolo insieme di invarianti\u20145 o 8 di solito sono sufficienti\u2014che una scheda deve soddisfare prima che qualsiasi sintomo del firmware valga la pena di discutere. I binari e gli orologi sono gli invarianti classici perch\u00e9 sono precondizioni per tutto il resto, e sono difficili da contestare quando vengono catturati sugli strumenti invece che nei log.<\/p>\n\n\n\n<p>Questo si presenta nel modello \u201cscusa del firmware tardivo che nascondeva un problema di clock\u201d. In un caso, le schede si avviavano a volte e si blocavano altre, e \u201cil firmware \u00e8 instabile\u201d divenne la spiegazione predefinita. La soluzione inizi\u00f2 eliminando la variabilit\u00e0: ripetere lo stesso esperimento in 50 cicli di alimentazione, misurare l\u2019avvio dell\u2019oscillatore e il reset, e smettere di considerare i log incoerenti come prova. La fonte del clock aveva un avvio marginale in condizioni di freddo a causa di una scelta di condensatore di carico che era \u201cabbastanza vicina\u201d sulla carta. Una volta misurato e corretto, il firmware ha smesso di sembrare instabile. La vittoria non era un formato di log migliore; era una forma d\u2019onda e una disciplina di ripetibilit\u00e0.<\/p>\n\n\n\n<p>La prima priorit\u00e0 della baseline sono i binari di alimentazione, perch\u00e9 se i binari sono sbagliati, ogni altro sintomo \u00e8 falso. Ci\u00f2 significa misurare pi\u00f9 di \u201csi avvia quindi l\u2019alimentazione \u00e8 a posto\u201d. Significa voltages nominali dei binari, sequenziamento rispetto agli abilitatori e al reset, ripple\/rumore con una banda passante nota e una tecnica di sonda decente, e uno stress deliberato che approssima un transiente in condizioni peggiori. Un oscilloscopio della serie Tektronix MDO3000 e una sorgente di alimentazione da banco come un Keysight E36313A possono fare molto di questo senza formalit\u00e0, e un multimetro calibrato come un Fluke 87V cattura le bugie noiose in fretta.<\/p>\n\n\n\n<p>La storia del \u201cmarchio di PASS che \u00e8 costato un quarto\u201d \u00e8 una buona ragione per trattare la risposta transitoria del carico come non opzionale. Un confronto di banner UART pu\u00f2 passare su un binario marginale perch\u00e9 l\u2019avvio \u00e8 un evento a basso stress rispetto a radio, motori o sensori che tirano corrente a raffiche. Un passo di carico scriptato di 10 secondi, o qualsiasi passo ripetibile che approssima un transiente di corrente reale, \u00e8 un modo economico per eliminare induttori sostituiti, condensatori di valore sbagliato o un regolatore appena stabile. Senza quello stress, il test verifica solo che la scheda sia silenziosa, non che sia sana.<\/p>\n\n\n\n<p>A questo punto, la trappola di scansione I2C tende a comparire: \u201cla nostra scansione i2c mostra dispositivi quindi l\u2019hardware \u00e8 buono.\u201d Una enumerazione pu\u00f2 ancora passare con il valore di pull-up sbagliato, un binario marginale che alimenta un level shifter, una saldatura fredda che si apre sotto vibrazione, o un clock che inizia lentamente abbastanza da confondere il timing una volta su dieci avvii. Pu\u00f2 anche passare mentre un riferimento analogico \u00e8 di qualit\u00e0 inferiore, perch\u00e9 le comunicazioni digitali rimangono perfette fino a quando le misurazioni non si spostano sul campo. Una scansione I2C \u00e8 un controllo di fumo utile, ma non \u00e8 prova di una base di alimentazione e timing stabile.<\/p>\n\n\n\n<p>Una baseline destinata a sopravvivere alle rotazioni del firmware ha bisogno almeno di un esempio di soglia concreta, perch\u00e9 l'ambiguit\u00e0 \u00e8 il modo in cui la \u201cmisurazione\u201d si trasforma in vibrazioni. Un esempio, non una regola universale: una linea da 1,8 V potrebbe essere richiesta per rimanere entro \u00b15% in stato stabile, e sotto un passo di carico definito (ad esempio, approssimando il burst radio previsto), il calo di tensione potrebbe essere limitato a &lt;100 mV con recupero entro una breve finestra. Quella finestra potrebbe essere inferiore a un millisecondo o diversi millisecondi a seconda del regolatore, del profilo di carico e di cosa gli IC downstream possono tollerare. \u00c8 qui che conta il limite di incertezza: le soglie di ripple e calo di tensione dipendono dalla compensazione specifica del regolatore, dalla banda di probing, dall&#039;area fisica del loop del probe e dalla forma transitoria effettiva. Il modo per rendere onesta la soglia \u00e8 validarla su un&#039;unit\u00e0 golden e poi su un&#039;unit\u00e0 nota cattiva (o un guasto indotto) per confermare che la misurazione discrimina tra \u201csano\u201d e \u201cquasi da creare una coda RMA\u201d.<\/p>\n\n\n\n<p>La baseline dovrebbe anche includere un piccolo set di sanity analogico su schede a segnale misto, perch\u00e9 saltare l'analogico \u00e8 il modo in cui i team consegnano disastri \u201cfunziona sul mio banco\u201d. Il fallimento classico \u00e8 sottile e costoso: l'interfaccia digitale \u00e8 perfetta, i valori sembrano ragionevoli a temperatura ambiente, e poi le letture sul campo si spostano con la temperatura o la variazione di alimentazione. In un programma di sensori, la causa era una sostituzione guidata dalla carenza: un riferimento da 2,048 V riempito con il grado di tolleranza sbagliato, un carattere diverso nel numero di parte. Il firmware cercava di coprire il drift con tabelle di compensazione finch\u00e9 qualcuno non misurava il pin di riferimento e osservava la distribuzione del codice ADC con un ingresso fisso. La soluzione era il controllo BOM e una singola misurazione di riferimento in fase di test precoce con una soglia abbastanza stretta da catturare le sostituzioni. La calibrazione non pu\u00f2 correggere una famiglia di componenti scambiata; pu\u00f2 solo decorare il fallimento finch\u00e9 non si verifica.<\/p>\n\n\n\n<p>Gli orologi e i reset meritano un punto di riferimento per lo stesso motivo per cui lo fanno le linee di alimentazione: creano bugie se sono marginali. Un'abitudine semplice\u2014catturare il tempo di deassertion del reset e l'avvio dell'oscillatore attraverso decine di cicli di alimentazione\u2014trasforma un \u201cimpedimento casuale\u201d in un sistema riproducibile. Mantiene anche i team di fuso orario diversi dal trasformare ogni intermittente in una discussione su Slack su chi ha rotto cosa durante la notte.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"prove-the-fixture-before-blaming-the-boards-goldenfirst-discipline\">Dimostra il fixture prima di incolpare le schede (Disciplina Golden-First)<\/h2>\n\n\n<p>I guasti intermittenti hanno spesso un'origine meccanica, e un supporto di produzione \u00e8 un sistema meccanico con effetti collaterali elettrici. Considerare i risultati del supporto come verit\u00e0 assoluta senza dimostrare che il supporto stesso lo sia \u00e8 il modo in cui le squadre sprecano giorni in rifacimenti che non avevano mai avuto la possibilit\u00e0 di aiutare.<\/p>\n\n\n\n<p>Un supporto a letto di chiodi ha iniziato a fallire schede che avevano precedentemente superato il collaudo di banco. I sintomi erano incoerenti, il che rendeva la \u201cinstabilit\u00e0 del firmware\u201d un facile capro espiatorio. La mossa pi\u00f9 rapida era far passare una scheda d\u2019oro nota buona attraverso il supporto e confrontare la resistenza di contatto tra i pogo pin. Anche quella d\u2019oro fall\u00ec. Ci\u00f2 spost\u00f2 immediatamente la colpa dall\u2019design all\u2019infrastruttura di test. Il colpevole non era sottile: un alloggiamento del connettore sul supporto era fuori tolleranza, spostando l\u2019allineamento in modo che due pogo pin toccassero appena. Sostituire il connettore e il pattern di fallimento scomparve. Dopo di ci\u00f2, un passo di auto-test del supporto divenne non negoziabile.<\/p>\n\n\n\n<p>Usa questo albero decisionale per prevenire il pi\u00f9 possibile il caos precoce:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Se l'unit\u00e0 d'oro fallisce sul supporto:<\/strong> Smetti di toccare i DUT. Controlla la resistenza di contatto dei pogo pin, l\u2019allineamento del connettore, lo stato della calibrazione dello strumento e il cablaggio del supporto prima di qualsiasi debug a livello di scheda.<\/li>\n\n\n\n<li><strong>Se l'unit\u00e0 d'oro supera ma un DUT fallisce:<\/strong> Procedi con la diagnosi della scheda utilizzando le misurazioni di baseline. Registra il numero di serie, la revisione della scheda, l\u2019ID del supporto e le condizioni ambientali in modo che il fallimento possa essere confrontato, non rievocato dalla memoria.<\/li>\n<\/ul>\n\n\n\n<p>La frase \u201cfailures casuali sul supporto\u201d dovrebbe essere trattata come una richiesta di dimostrare il supporto, non come una richiesta di pi\u00f9 log di firmware. Quel singolo abitudine cambia il tono del debug tra siti notturno perch\u00e9 restringe immediatamente lo spazio di ricerca.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"defectclass-coverage-a-small-faultmodel-ladder-beats-complete-test-suite-theater\">Copertura della classe di difetti: una piccola scala di modelli di fault supera il teatro del \u201cTest Suite completo\u201d<\/h2>\n\n\n<p>Una strategia di test precoce produttiva non \u00e8 quella con la lista di controllo pi\u00f9 lunga. \u00c8 quella che cattura le classi di difetti pi\u00f9 probabili con le misurazioni pi\u00f9 economiche e affidabili, rendendo espliciti i rinvii in modo che non possano essere nascosti in un timbro verde.<\/p>\n\n\n\n<p>Una scala di modelli di difetto inizia enumerando le classi di difetti che effettivamente si presentano nelle build contrattuali: aperture, cortocircuiti, pezzo sbagliato, orientamento sbagliato, pezzo mancante, ponti di saldatura e disallineamento meccanico. Poi mappa ogni classe a un metodo di rilevamento che non richiede firmware stabile: AOI per errori grossolani di posizionamento e polarit\u00e0, controlli di continuit\u00e0 dove l\u2019accesso esiste, firme di binari e risposta al carico per sostituzioni e passivi mancanti, e boundary-scan dove le catene e l\u2019accesso sono reali. Il valore della scala non \u00e8 la copertura teorica, ma la capacit\u00e0 di dire, ad alta voce e per iscritto, \u201cquesto test rileva aperture\/corti su queste reti, ma non convalida la funzione X.\u201d<\/p>\n\n\n\n<p>Questo affronta anche la pressione di \u201cautomatizzare completamente i test di produzione ora\u201d. L'automazione non \u00e8 progresso se automatizza il rumore. Dimostrare la ripetibilit\u00e0 del supporto, definire invarianti e scegliere test di classe difetti che avranno ancora lo stesso significato la prossima settimana \u00e8 progresso. Tutto il resto \u00e8 teatro nel cruscotto.<\/p>\n\n\n\n<p>Il rinvio necessita di una linea di difesa perch\u00e9 le persone equiparano \u201cnon testato\u201d a negligenza. La formulazione migliore \u00e8 che i rinvii sono decisioni di rischio intenzionali: rinviati perch\u00e9 manca l\u2019accesso, perch\u00e9 il firmware \u00e8 troppo volatile, o perch\u00e9 la classe di difetto \u00e8 rara rispetto al programma e al contesto di build attuali. Il punto \u00e8 impedire che quei rinvii si trasformino in affermazioni implicite.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"boundaryscan-deterministic-evidence-when-the-hardware-allows-it\">Boundary-Scan: Evidenza deterministica, quando l'hardware lo permette<\/h2>\n\n\n<p>Il boundary-scan \u00e8 lo strumento meno glamour e con il massimo impatto in questa situazione, perch\u00e9 pu\u00f2 fornire una copertura deterministica per aperture e cortocircuiti su componenti a pitch fine senza bisogno di firmware applicativo. Riduce anche i dibattiti. Se la catena pu\u00f2 eseguire test di interconnessione e una rete mostra un'apertura, non c'\u00e8 discussione sul fatto che una regolazione del timing del firmware possa risolverlo.<\/p>\n\n\n\n<p>In un caso con guasti intermittenti sul bus, un analizzatore logico economico ha fatto sembrare il bus \u201cquasi perfetto\u201d, mantenendo la colpa rivolta al timing del firmware. I test di interconnessione boundary-scan hanno isolato un'apertura su un pin di indirizzo BGA\u2014probabilmente una saldatura fredda\u2014senza aspettare altri log o altro codice. Ci\u00f2 ha evitato un costoso ciclo di rifacimento con raggi X e ha trasformato il rifacimento in un'azione mirata con verifica quantitativa. La coordinazione tra Everett e un team CM a Penang \u00e8 diventata pi\u00f9 semplice perch\u00e9 le prove erano deterministiche.<\/p>\n\n\n\n<p>La verifica della realt\u00e0 \u00e8 importante: il boundary-scan funziona solo se l'accesso \u00e8 reale. La continuit\u00e0 della catena deve essere progettata, i BSDL devono essere utilizzabili, le pull-up e le strap devono essere sensate, e le impostazioni di sicurezza non sono \u201cproblemi successivi\u201d\u2014l'accesso debug fuso \u00e8 una restrizione severa. La richiesta comune e irrealistica \u00e8 \u201cil boundary scan pu\u00f2 testare tutto,\u201d spesso abbinata a \u201csenza pad di test ma dovrebbe comunque essere possibile.\u201d La risposta onesta \u00e8 che la fattibilit\u00e0 dipende dall'accesso alla catena, dalla qualit\u00e0 dei BSDL e dallo stato di blocco; promettere una percentuale di copertura senza questi fatti trasforma i piani di test in finzione.<\/p>\n\n\n\n<p>Un compromesso pratico che impedisce alle squadre di perdere tempo \u00e8 pilotare il boundary-scan su una scheda con l'accesso previsto e la catena di strumenti (suite di livello Corelis\/Asset\/Keysight sono comuni nelle fabbriche). Se funziona, pu\u00f2 sostituire giorni di dibattito in ogni futura analisi di guasto. Se non funziona, il piano dovrebbe tornare immediatamente a rails, clock, reset e un piccolo set di firme analogiche\u2014cose ancora misurabili tramite connettori e pad disponibili.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"the-harness-that-survives-minimal-now-deeper-later\">Il cablaggio che sopravvive: minimo ora, pi\u00f9 profondo pi\u00f9 tardi<\/h2>\n\n\n<p>I test precoci tendono a fallire perch\u00e9 sono fragili, non documentati o legati alle preferenze di uno strumento di una sola persona. Un cablaggio minimo che sopravvive \u00e8 noioso per progettazione: un collegamento, una mappa dei pin specifica della scheda, un set di soglie e un logging che rende confrontabili le esecuzioni ripetute.<\/p>\n\n\n\n<p>Uno schema che \u00e8 durato attraverso molte riscritture del firmware \u00e8 un cablaggio a tre livelli: astrazione di stimolo\/misura (driver degli strumenti tramite qualcosa come pyvisa o uno strato DAQ), una mappa della scheda (spesso basta una mappa dei pin YAML) e casi di test che rimangono deterministici. La registrazione su CSV con chiave il numero di serie pu\u00f2 essere abbastanza precoce, purch\u00e9 i metadati siano disciplinati: revisione della scheda, ID del fixture, condizioni ambientali e versione dell'immagine di test quando \u00e8 coinvolto il firmware. La scelta del linguaggio (Python vs LabVIEW vs ambienti del fornitore) conta meno del limite modulare. Un VI monolitico di LabVIEW che pu\u00f2 essere modificato da una sola persona diventa un rischio di personale piuttosto che una strategia di test.<\/p>\n\n\n\n<p>C'\u00e8 anche una sottile incertezza che appartiene alla conversazione sul cablaggio: le firme del profilo di corrente. Sono potenti quando gli stati del firmware sono stabili. Quando il firmware cambia quotidianamente, le soglie di corrente dovrebbero essere trattate come rilevamento di tendenze\/anomalie, non come pass\/fail definitivo, a meno che il team non possa bloccare un'immagine di test versionata con flag di funzionalit\u00e0 controllati e riproducibilit\u00e0.<\/p>\n\n\n\n<p>Il punto di consegna \u00e8 semplice: i test precoci possono ampliare le loro affermazioni man mano che il firmware matura, ma solo se il cablaggio mantiene affidabile il livello di misurazione e i nomi rimangono onesti. Lo screening precoce riduce le fughe di assemblaggio. Non certifica il comportamento del prodotto.<\/p>","protected":false},"excerpt":{"rendered":"<p>Quando il firmware \u00e8 instabile, un timbro verde \u201cfunzionale\u201d pu\u00f2 nascondere difetti reali. Questo approccio riformula i test precoci attorno a misurazioni deterministiche\u2014binari, clock, reset, prova di fixture e copertura del modello di fault\u2014cos\u00ec che i tassi di passaggio riflettano la realt\u00e0, non l'ottimismo.<\/p>","protected":false},"author":1,"featured_media":10696,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"article_term":"","article_term_alternate":"","article_term_def":"","article_hook":"","auto_links":"","article_topic":"","article_fact_check":"","mt_social_share":"","mt_content_meta":"","mt_glossary_display":"","glossary_heading":"","glossary":"","glossary_alter":"","glossary_def":"","article_task":"Functional test development when firmware is late or unstable","footnotes":""},"categories":[12],"tags":[],"class_list":["post-10694","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/posts\/10694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/comments?post=10694"}],"version-history":[{"count":1,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/posts\/10694\/revisions"}],"predecessor-version":[{"id":10698,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/posts\/10694\/revisions\/10698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/media\/10696"}],"wp:attachment":[{"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/media?parent=10694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/categories?post=10694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.besterpcba.com\/it\/wp-json\/wp\/v2\/tags?post=10694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}