{"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\/pl\/testowanie-funkcjonalne-bez-firmwareu\/","title":{"rendered":"Testowanie funkcjonalne bez stabilnego firmware: Przesta\u0144 nazywa\u0107 to \u201efunkcjonalnym\u201d, zacznij mierzy\u0107 to, czego nie mo\u017cna oszuka\u0107"},"content":{"rendered":"<p>Zesp\u00f3\u0142 raz wys\u0142a\u0142 p\u0142ytki z piecz\u0105tk\u0105 \u201etest funkcjonalny zaliczony\u201d, poniewa\u017c bootloader wy\u015bwietli\u0142 przyjazny baner UART. Tekst si\u0119 zgadza\u0142, mocowanie za\u015bwieci\u0142o na zielono, a harmonogram wygl\u0105da\u0142 mniej przera\u017caj\u0105co. Potem pierwsze jednostki zacz\u0119\u0142y wraca\u0107 z losowymi resetami \u2014 oko\u0142o 6% wczesnych awarii na pocz\u0105tku kilku tysi\u0119cy \u2014 dok\u0142adnie wtedy, gdy produkt potrzebowa\u0142 wiarygodno\u015bci. Na stanowisku p\u0142ytki wygl\u0105da\u0142y na w porz\u0105dku, a\u017c do momentu, gdy pojawi\u0142a si\u0119 prawdziwa aktywno\u015b\u0107: wybuch transmisji BLE poci\u0105gn\u0105\u0142 system zasilania, a spadek napi\u0119cia na szynie 1.8 V wyra\u017anie pokaza\u0142 oscyloskop. Przyczyn\u0105 nie by\u0142o tajemnicze zachowanie firmware\u2019u. To by\u0142a rzeczywisto\u015b\u0107 monta\u017cu: podstawiony inductor z podobnym oznaczeniem na g\u00f3rze, ale innym zachowaniem nasycenia, plus test, kt\u00f3ry nigdy nie wywo\u0142a\u0142 stresu na szynie.<\/p>\n\n\n\n<p>Ta ucieczka to nie tylko techniczny b\u0142\u0105d; to spo\u0142eczne niepowodzenie w przebraniu technicznym. Gdy raport m\u00f3wi \u201efunkcjonalne ZALICZONE\u201d, inni s\u0142ysz\u0105 \u201ecechy zatwierdzone\u201d, a organizacja zaczyna podejmowa\u0107 decyzje o wysy\u0142ce z fa\u0142szyw\u0105 map\u0105.<\/p>\n\n\n\n<p>Funkcjonalne nie jest synonimem \u201eco\u015b drukuje\u201d.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"scope-first-a-test-that-lies-by-accident-still-lies\">Zakres pierwszy: test, kt\u00f3ry przypadkowo si\u0119 pomyli\u0142, nadal si\u0119 myli<\/h2>\n\n\n<p>Gdy firmware jest op\u00f3\u017anione lub niestabilne, wczesne testy musz\u0105 zachowywa\u0107 si\u0119 jak to, czym s\u0105: wykrywacze defekt\u00f3w monta\u017cowych i podstawy sprz\u0119towe. Nazywanie ich \u201efunkcjonalnymi\u201d to spos\u00f3b, w jaki zespo\u0142y przypadkowo zatwierdzaj\u0105 zachowanie, kt\u00f3rego nigdy nie testowa\u0142y.<\/p>\n\n\n\n<p>Oto pu\u0142apka etykiety \u201etest funkcjonalny\u201d. Kto\u015b m\u00f3wi: \u201epotrzebujemy testu funkcjonalnego bez firmware\u2019u\u201d, a co zwykle maj\u0105 na my\u015bli, to \u201epotrzebujemy sposobu na utrzymanie linii w ruchu bez zamiany produkcji w laboratorium firmware\u2019u\u201d. To s\u0105 r\u00f3\u017cne cele. Pierwsza fraza zach\u0119ca do niechlujnego piecz\u0105tki ZALICZONE\/NIEZALICZONE. Druga zach\u0119ca do testu z zakresem i wyra\u017anymi roszczeniami i brakiem roszcze\u0144, co zapobiega powtarzaniu si\u0119 spor\u00f3w podczas przegl\u0105d\u00f3w produkcji. Utrzymuje te\u017c uczciwo\u015b\u0107 dashboard\u00f3w, gdy kierownictwo pyta o wska\u017aniki zalicze\u0144, a kto\u015b pr\u00f3buje por\u00f3wna\u0107 automatyzacj\u0119 z jako\u015bci\u0105.<\/p>\n\n\n\n<p>Aby zapobiec odchyleniom zakresu, wymu\u015b, aby ka\u017cdy wczesny plan test\u00f3w odpowiedzia\u0142 na dwa pytania na pi\u015bmie: jakie defekty to wykrywa, oraz jakie zachowania produktu to <em>nie<\/em> certyfikuje. Niekt\u00f3re zespo\u0142y formalizuj\u0105 to jako dwukolumnowy artefakt zatwierdzaj\u0105cy podczas przekazania DVT do PVT, poniewa\u017c pami\u0119\u0107 nie wytrzymuje presji harmonogramu.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Kategoria<\/th><th>Test mo\u017ce to stwierdzi\u0107<\/th><th>Test nie musi tego twierdzi\u0107<\/th><\/tr><\/thead><tbody><tr><td>Wczesny screening monta\u017cu<\/td><td>Wykrywa defekty monta\u017cu zgodne z okre\u015blonymi pomiarami (szyny\/clock\/reset\/ci\u0105g\u0142o\u015b\u0107\/jedna lub dwie analogowe prawdy)<\/td><td>Certyfikuje funkcje widoczne dla klienta, wydajno\u015b\u0107 w r\u00f3\u017cnych warunkach, bezpiecze\u0144stwo\/zgodno\u015b\u0107 lub \u201edzia\u0142a\u201d w szerokim sensie<\/td><\/tr><tr><td>Wsparcie firmware p\u00f3\u017aniej<\/td><td>Weryfikuje okre\u015blone zachowania powi\u0105zane z wersjonowanym, powtarzalnym obrazem testowym i \u015bledzeniem wymaga\u0144<\/td><td>Oznacza pokrycie poza w\u0142\u0105czonymi flagami funkcji lub poza warunkami testowymi<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Profesjonalna publiczno\u015b\u0107 nie potrzebuje definicji JTAG, SWD, UART, I2C ani SPI tutaj. Przydatn\u0105 prac\u0105 jest zdecydowanie, co mo\u017cna zmierzy\u0107 deterministycznie dzisiaj, i jak te pomiary s\u0105 nazywane i przekazywane dalej, aby nikt nie wykorzysta\u0142 zielonego \u015bwiat\u0142a<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"measurementfirst-baseline-rails-then-clocksresets-then-one-analog-truth\">Podstawa pomiarowa: szyny, potem zegary\/resetowania, potem jedna analogowa prawda<\/h2>\n\n\n<p>Podstawa nie oznacza dodawania \u201ewi\u0119cej test\u00f3w\u201d. Oznacza ustanowienie ma\u0142ego zestawu invariant\u00f3w \u2014 zwykle 5 do 8 \u2014 kt\u00f3re p\u0142yta musi spe\u0142nia\u0107, zanim jakikolwiek symptom firmware b\u0119dzie wart dyskusji. Szyny i zegary to klasyczne invariaty, poniewa\u017c s\u0105 warunkami wst\u0119pnymi dla wszystkiego innego, i trudno si\u0119 z nimi spiera\u0107, gdy s\u0105 uchwycone na instrumentach zamiast w logach.<\/p>\n\n\n\n<p>To pojawia si\u0119 w schemacie \u201ep\u00f3\u017anego firmware, kt\u00f3ry ukrywa\u0142 problem z zegarem\u201d. W jednym przypadku p\u0142yty uruchamia\u0142y si\u0119 czasami i zawiesza\u0142y innym razem, a \u201eniestabilne firmware\u201d sta\u0142o si\u0119 domy\u015blnym wyja\u015bnieniem. Naprawa zacz\u0119\u0142a si\u0119 od usuni\u0119cia zmienno\u015bci: powt\u00f3rz ten sam eksperyment na 50 cyklach zasilania, zmierz czas uruchomienia oscylatora i resetu, i przesta\u0144 traktowa\u0107 niesp\u00f3jne logi jako dow\u00f3d. \u0179r\u00f3d\u0142o zegara mia\u0142o marginalne uruchomienie w zimnych warunkach z powodu doboru kondensatora obci\u0105\u017ceniowego, kt\u00f3ry by\u0142 \u201ewystarczaj\u0105co bliski\u201d na papierze. Po zmierzeniu i poprawieniu, firmware przesta\u0142o wygl\u0105da\u0107 na niestabilne. Wygrana nie polega\u0142a na lepszym formacie log\u00f3w; to by\u0142a fala i dyscyplina powtarzalno\u015bci.<\/p>\n\n\n\n<p>Pierwszym priorytetem podstawy s\u0105 zasilacze, poniewa\u017c je\u015bli s\u0105 b\u0142\u0119dne, wszystkie inne symptomy s\u0105 fa\u0142szywe. Oznacza to pomiar wi\u0119cej ni\u017c \u201euruchamia si\u0119, wi\u0119c zasilanie jest w porz\u0105dku\u201d. Oznacza to nominalne napi\u0119cia szyn, sekwencj\u0119 wzgl\u0119dem w\u0142\u0105cznik\u00f3w i resetu, ripplowanie\/zak\u0142\u00f3cenia z znan\u0105 szeroko\u015bci\u0105 pasma i dobr\u0105 technik\u0105 sondowania, oraz celowe obci\u0105\u017cenie, kt\u00f3re przypomina najgorszy przypadek transientu. Oscyloskop Tektronix MDO3000 i zasilacz sto\u0142owy, taki jak Keysight E36313A, mog\u0105 wykona\u0107 wiele z tego bez ceremonii, a skalibrowany multimetr cyfrowy, jak Fluke 87V, szybko wychwytuje nudne k\u0142amstwa.<\/p>\n\n\n\n<p>Historia z \u201epiecz\u0119ci\u0105 PASS, kt\u00f3ra kosztowa\u0142a \u0107wier\u0107\u201d jest dobrym powodem, aby traktowa\u0107 reakcj\u0119 na transient obci\u0105\u017cenia jako nieopcjonaln\u0105. Por\u00f3wnanie banner\u00f3w UART mo\u017ce przej\u015b\u0107 na marginesowym szynie, poniewa\u017c uruchomienie jest niskostresowym zdarzeniem w por\u00f3wnaniu do radi\u00f3w, silnik\u00f3w lub czujnik\u00f3w pobieraj\u0105cych pr\u0105d w impulsach. 10-sekundowy zaprogramowany krok obci\u0105\u017cenia lub dowolny powtarzalny krok, kt\u00f3ry przybli\u017ca rzeczywisty transient pr\u0105du, to tani spos\u00f3b na wykrycie podstawionych induktor\u00f3w, niew\u0142a\u015bciwych warto\u015bci kondensator\u00f3w lub regulatora, kt\u00f3ry jest ledwo stabilny. Bez tego stresu, test sprawdza tylko, czy p\u0142yta jest cicha, a nie czy jest zdrowa.<\/p>\n\n\n\n<p>Na tym etapie pojawia si\u0119 pu\u0142apka skanowania I2C: \u201enasze skanowanie i2c pokazuje urz\u0105dzenia, wi\u0119c sprz\u0119t jest dobry\u201d. Enumeracja mo\u017ce nadal przej\u015b\u0107 przy niew\u0142a\u015bciwej warto\u015bci pull-up, marginalnej szynie zasilaj\u0105cej poziomowy konwerter, zimnym po\u0142\u0105czeniu, kt\u00f3re otwiera si\u0119 pod wibracj\u0105, lub zegarze, kt\u00f3ry startuje wolno na tyle, \u017ce zak\u0142\u00f3ca czasowanie raz na dziesi\u0119\u0107 uruchomie\u0144. Mo\u017ce te\u017c przej\u015b\u0107, gdy odniesienie analogowe jest niskiej jako\u015bci, poniewa\u017c komunikacja cyfrowa pozostaje idealna a\u017c do momentu, gdy pomiary odchylaj\u0105 si\u0119 w terenie. Skanowanie I2C to przydatny test dymny, ale nie jest dowodem na stabiln\u0105 podstaw\u0119 zasilania i czasowania.<\/p>\n\n\n\n<p>Podstawa, kt\u00f3ra ma przetrwa\u0107 churn firmware, wymaga co najmniej jednego konkretnego przyk\u0142adu progu, poniewa\u017c niejasno\u015b\u0107 to spos\u00f3b, w jaki \u201epomiar\u201d zamienia si\u0119 w odczucia. Przyk\u0142ad, a nie uniwersalna zasada: szyna 1.8 V mo\u017ce wymaga\u0107 utrzymania w granicach \u00b15% w stanie ustalonym, a pod okre\u015blonym krokiem obci\u0105\u017cenia (np. przybli\u017caj\u0105c oczekiwany wybuch radiowy), spadek napi\u0119cia mo\u017ce by\u0107 ograniczony do &lt;100 mV z odzyskiem w kr\u00f3tkim oknie. To okno mo\u017ce mie\u0107 podmilisekund\u0119 lub kilka milisekund, w zale\u017cno\u015bci od regulatora, profilu obci\u0105\u017cenia i tolerancji downstream IC. To tutaj wa\u017cna jest granica niepewno\u015bci: progi ripplowania i spadk\u00f3w zale\u017c\u0105 od konkretnej kompensacji regulatora, szeroko\u015bci pasma sondowania, fizycznego obszaru p\u0119tli sondy i rzeczywistego kszta\u0142tu transientu. Sposobem na uczciwe ustalenie progu jest jego walidacja na z\u0142otej jednostce, a nast\u0119pnie na znanej z\u0142ej jednostce (lub wywo\u0142anym b\u0142\u0119dzie), aby potwierdzi\u0107, \u017ce pomiar rozr\u00f3\u017cnia \u201ezdrowe\u201d od \u201ezaraz tworz\u0105cego kolejk\u0119 RMA\u201d.<\/p>\n\n\n\n<p>Podstawa powinna r\u00f3wnie\u017c obejmowa\u0107 ma\u0142y zestaw analogowych test\u00f3w sanity na p\u0142ytach mieszanych sygna\u0142\u00f3w, poniewa\u017c pomijanie analog\u00f3w to spos\u00f3b, w jaki zespo\u0142y wypuszczaj\u0105 katastrofy typu \u201edzia\u0142a na moim stole\u201d. Klasyczna awaria jest subtelna i kosztowna: interfejs cyfrowy jest idealny, warto\u015bci wygl\u0105daj\u0105 rozs\u0105dnie w temperaturze pokojowej, a nast\u0119pnie odczyty z pola driftuj\u0105 wraz z temperatur\u0105 lub zmianami zasilania. W jednym programie czujnika przyczyn\u0105 by\u0142a substytucja spowodowana brakiem: odniesienie 2.048 V wype\u0142nione z\u0142ym stopniem tolerancji, jeden znak r\u00f3\u017cni\u0105cy si\u0119 w numerze cz\u0119\u015bci. Oprogramowanie pr\u00f3bowa\u0142o zamaskowa\u0107 drift za pomoc\u0105 tabel kompensacji, a\u017c kto\u015b zmierzy\u0142 pin odniesienia i spojrza\u0142 na rozk\u0142ad kodu ADC przy sta\u0142ym wej\u015bciu. Naprawa polega\u0142a na kontroli BOM i pojedynczym pomiarze odniesienia we wczesnym te\u015bcie z wystarczaj\u0105co \u015bcis\u0142ym progiem, aby wykry\u0107 substytucje. Kalibracja nie mo\u017ce naprawi\u0107 zamienionej rodziny komponent\u00f3w; mo\u017ce tylko ukrywa\u0107 awari\u0119, a\u017c si\u0119 wydostanie.<\/p>\n\n\n\n<p>Zegar i reset zas\u0142uguj\u0105 na podstawowe miejsce z tego samego powodu, co szyny: tworz\u0105 k\u0142amstwa, je\u015bli s\u0105 marginalne. Prosta nawyk \u2014 rejestrowanie czasu deassertion resetu i uruchomienia oscylatora podczas dziesi\u0105tek cykli zasilania \u2014 zamienia \u201elosowe zawieszenie\u201d w powtarzalny system. Utrzymuje te\u017c zespo\u0142y z r\u00f3\u017cnych stref czasowych od zamieniania ka\u017cdego przerywanego problemu w argument na Slacku o tym, kto co zepsu\u0142 w nocy.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"prove-the-fixture-before-blaming-the-boards-goldenfirst-discipline\">Udowodnij mocowanie przed obwinianiem p\u0142ytek (Z\u0142ota dyscyplina pierwsza)<\/h2>\n\n\n<p>Przerywane awarie cz\u0119sto maj\u0105 mechaniczne pochodzenie, a urz\u0105dzenie testowe jest systemem mechanicznym z efektami elektrycznymi. Traktowanie wynik\u00f3w urz\u0105dzenia jako prawdy podstawowej bez udowodnienia, \u017ce urz\u0105dzenie jest poprawne, to spos\u00f3b, w jaki zespo\u0142y trac\u0105 dni na poprawki, kt\u00f3re nigdy nie mia\u0142y szans pom\u00f3c.<\/p>\n\n\n\n<p>Urz\u0105dzenie typu \u201ebed-of-nails\u201d zacz\u0119\u0142o kiedy\u015b zawodzi\u0107 na p\u0142ytkach, kt\u00f3re wcze\u015bniej przesz\u0142y testy na stole. Objawy by\u0142y niesp\u00f3jne, co czyni\u0142o \u201eniestabilno\u015b\u0107 firmware\u201d \u0142atwym koz\u0142em ofiarnym. Szybszym rozwi\u0105zaniem by\u0142o przeprowadzenie testu na znanej dobrej z\u0142otej p\u0142ytce i por\u00f3wnanie rezystancji kontaktu przez pogo pin. Z\u0142ota te\u017c zawiod\u0142a. To od razu odwr\u00f3ci\u0142o win\u0119 od projektu i skierowa\u0142o j\u0105 na infrastruktur\u0119 testow\u0105. Winowajc\u0105 nie by\u0142 subtelny: obudowa z\u0142\u0105cza na urz\u0105dzeniu testowym by\u0142a poza tolerancj\u0105, przesuwaj\u0105c wyr\u00f3wnanie tak, \u017ce dwa pogo piny ledwo styka\u0142y. Wymie\u0144 z\u0142\u0105cze, a wzorzec awarii zniknie. Po tym kroku testu w\u0142asnego urz\u0105dzenia sta\u0142 si\u0119 nie do negocjacji.<\/p>\n\n\n\n<p>U\u017cyj tego drzewa decyzyjnego, aby zapobiec wi\u0119kszo\u015bci wczesnego chaosu:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Je\u015bli jednostka z\u0142ota zawiedzie na urz\u0105dzeniu testowym:<\/strong> Przesta\u0144 dotyka\u0107 DUT-\u00f3w. Sprawd\u017a rezystancj\u0119 kontaktu pogo pinu, wyr\u00f3wnanie z\u0142\u0105cza, stan kalibracji instrumentu i okablowanie urz\u0105dzenia testowego przed jakimkolwiek debugowaniem na poziomie p\u0142ytki.<\/li>\n\n\n\n<li><strong>Je\u015bli jednostka z\u0142ota przejdzie, ale DUT zawiedzie:<\/strong> Kontynuuj diagnoz\u0119 p\u0142ytki, korzystaj\u0105c z podstawowych pomiar\u00f3w. Zapisz numer seryjny, rewizj\u0119 p\u0142ytki, ID urz\u0105dzenia testowego i warunki otoczenia, aby mo\u017cna by\u0142o por\u00f3wna\u0107 awari\u0119, a nie odtwarza\u0107 j\u0105 z pami\u0119ci.<\/li>\n<\/ul>\n\n\n\n<p>Fraz\u0119 \u201elosowe awarie na urz\u0105dzeniu testowym\u201d nale\u017cy traktowa\u0107 jako pro\u015bb\u0119 o sprawdzenie urz\u0105dzenia testowego, a nie jako pro\u015bb\u0119 o wi\u0119cej log\u00f3w firmware. To jedno nawyk zmienia ton p\u00f3\u017anonocnego debugowania mi\u0119dzy witrynami, poniewa\u017c natychmiast zaw\u0119\u017ca przestrze\u0144 poszukiwa\u0144.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"defectclass-coverage-a-small-faultmodel-ladder-beats-complete-test-suite-theater\">Pokrycie klasy defekt\u00f3w: Ma\u0142y model b\u0142\u0119du w drabinie pokonuje \u201epe\u0142ny zestaw test\u00f3w\u201d teatr<\/h2>\n\n\n<p>Skuteczna wczesna strategia testowania nie polega na posiadaniu najd\u0142u\u017cszej listy kontrolnej. Polega na wykrywaniu najbardziej prawdopodobnych klas defekt\u00f3w za pomoc\u0105 najta\u0144szych i najbardziej wiarygodnych pomiar\u00f3w, przy jednoczesnym wyra\u017anym od\u0142o\u017ceniu na bok, aby nie mo\u017cna ich by\u0142o ukry\u0107 pod zielonym piecz\u0119ci\u0105.<\/p>\n\n\n\n<p>Schemat awaryjny zaczyna si\u0119 od wyliczenia klas defekt\u00f3w, kt\u00f3re faktycznie pojawiaj\u0105 si\u0119 w kontraktowych budowach: otwarcia, zwarcia, niew\u0142a\u015bciwy element, niew\u0142a\u015bciwa orientacja, brak elementu, mostki lutownicze i niew\u0142a\u015bciwe ustawienie mechaniczne. Nast\u0119pnie mapuje ka\u017cd\u0105 klas\u0119 na metod\u0119 wykrywania, kt\u00f3ra nie wymaga stabilnego oprogramowania: AOI dla du\u017cych b\u0142\u0119d\u00f3w w umieszczeniu i polaryzacji, sprawdzanie ci\u0105g\u0142o\u015bci tam, gdzie dost\u0119p istnieje, sygnatury szyn i odpowied\u017a na obci\u0105\u017cenie dla substytucji i brakuj\u0105cych pasywnych element\u00f3w, oraz boundary-scan tam, gdzie \u0142a\u0144cuchy i dost\u0119p s\u0105 rzeczywiste. Warto\u015b\u0107 tego schematu nie polega na teoretycznym pokryciu, lecz na zdolno\u015bci do powiedzenia na g\u0142os i na pi\u015bmie: \u201eten test wykrywa otwarcia\/zwarcia na tych sieciach, ale nie weryfikuje funkcji X.\u201d<\/p>\n\n\n\n<p>To tak\u017ce odnosi si\u0119 do presji \u201epe\u0142nej automatyzacji test\u00f3w produkcyjnych teraz\u201d. Automatyzacja nie jest post\u0119pem, je\u015bli automatyzuje ha\u0142as. Udowodnienie powtarzalno\u015bci urz\u0105dzenia testowego, zdefiniowanie invariant\u00f3w i wyb\u00f3r test\u00f3w klas defekt\u00f3w, kt\u00f3re nadal b\u0119d\u0105 mia\u0142y to samo znaczenie za tydzie\u0144, to post\u0119p. Wszystko inne to teatr na pulpicie nawigacyjnym.<\/p>\n\n\n\n<p>Odk\u0142adanie wymaga linii obrony, poniewa\u017c ludzie uto\u017csamiaj\u0105 \u201enie testowane\u201d z zaniedbaniem. Lepszym uj\u0119ciem jest, \u017ce odroczenia to celowe decyzje ryzyka: od\u0142o\u017cone z powodu braku dost\u0119pu, zbyt du\u017cej zmienno\u015bci firmware\u2019u lub rzadko\u015bci klasy defektu w por\u00f3wnaniu do obecnego harmonogramu i kontekstu produkcji. Chodzi o to, by zapobiec zamianie tych odrocze\u0144 w domniemane roszczenia.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"boundaryscan-deterministic-evidence-when-the-hardware-allows-it\">Boundary-Scan: Dowody deterministyczne, gdy sprz\u0119t na to pozwala<\/h2>\n\n\n<p>Boundary-scan jest najmniej efektownym, ale najbardziej skutecznym narz\u0119dziem w tej sytuacji, poniewa\u017c mo\u017ce zapewni\u0107 deterministyczne pokrycie dla otwar\u0107 i zwar\u0107 na elementach o drobnej rozstawie bez konieczno\u015bci u\u017cywania firmware\u2019u aplikacji. R\u00f3wnie\u017c zamyka dyskusje. Je\u015bli \u0142a\u0144cuch mo\u017ce przeprowadzi\u0107 testy po\u0142\u0105cze\u0144 i wykazuje otwarcie, nie ma dyskusji, czy zmiana timing\u2019u firmware\u2019u to naprawi.<\/p>\n\n\n\n<p>W jednym przypadku z przerywanymi awariami autobusu, tani analizator logiki sprawi\u0142, \u017ce magistrala wygl\u0105da\u0142a na \"w wi\u0119kszo\u015bci w porz\u0105dku\", co utrzymywa\u0142o oskar\u017cenia na firmware'ie zwi\u0105zane z czasowaniem. Testy boundary-scan izolowa\u0142y otwarte na pinie adresowym BGA \u2014 prawdopodobnie zimne lutowanie \u2014 bez czekania na wi\u0119cej log\u00f3w lub kodu. To zapobieg\u0142o kosztownej p\u0119tli naprawy rentgenowskiej i zamieni\u0142o napraw\u0119 w celowe dzia\u0142anie z ilo\u015bciow\u0105 weryfikacj\u0105. Koordynacja mi\u0119dzy Everett a zespo\u0142em CM w Penangu sta\u0142a si\u0119 prostsza, poniewa\u017c dowody by\u0142y deterministyczne.<\/p>\n\n\n\n<p>Rzeczywisto\u015b\u0107 ma znaczenie: boundary-scan dzia\u0142a tylko wtedy, gdy dost\u0119p jest prawdziwy. Kontynuacja \u0142a\u0144cucha musi by\u0107 zaprojektowana, BSDL musi by\u0107 u\u017cyteczne, pull-upy i strapping musz\u0105 by\u0107 sensowne, a ustawienia bezpiecze\u0144stwa nie s\u0105 \"p\u00f3\u017aniejszymi problemami\" \u2014 dost\u0119p debugowany przez fuse jest twardym ograniczeniem. Powszechne \u017cyczenie brzmi: \"czy boundary scan mo\u017ce testowa\u0107 wszystko\", cz\u0119sto w parze z \"brakiem pad\u00f3w testowych, ale nadal powinno by\u0107 mo\u017cliwe\". Szczera odpowied\u017a brzmi, \u017ce wykonalno\u015b\u0107 zale\u017cy od dost\u0119pu do \u0142a\u0144cucha, jako\u015bci BSDL i stanu blokady; obiecywanie procentowego pokrycia bez tych fakt\u00f3w to jak zamiana plan\u00f3w testowych w fikcj\u0119.<\/p>\n\n\n\n<p>Praktycznym kompromisem, kt\u00f3ry powstrzymuje zespo\u0142y od kr\u0119cenia si\u0119 w k\u00f3\u0142ko, jest pilota\u017c boundary-scan na jednej p\u0142ytce z zamierzonym dost\u0119pem do mocowania i narz\u0119dzi (zestawy Corelis\/Asset\/Keysight s\u0105 powszechne w fabrykach). Je\u015bli dzia\u0142a, mo\u017ce zast\u0105pi\u0107 dni debat przy ka\u017cdej przysz\u0142ej analizie awarii. Je\u015bli nie, plan powinien natychmiast wr\u00f3ci\u0107 do szyn, zegar\u00f3w, reset\u00f3w i ma\u0142ego zestawu sygnatur analogowych \u2014 rzeczy, kt\u00f3re nadal mo\u017cna zmierzy\u0107 przez dost\u0119pne z\u0142\u0105cza i pady.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"the-harness-that-survives-minimal-now-deeper-later\">Przyczepa, kt\u00f3ra przetrwa\u0142a: Minimalnie teraz, g\u0142\u0119biej p\u00f3\u017aniej<\/h2>\n\n\n<p>Wczesne testy maj\u0105 tendencj\u0119 do umierania, poniewa\u017c s\u0105 kruche, nieudokumentowane lub zwi\u0105zane z preferencjami narz\u0119dzi jednej osoby. Minimalny system, kt\u00f3ry przetrwa, jest nudny z za\u0142o\u017cenia: sterownik, specyficzna dla p\u0142ytki mapa pin\u00f3w, ustawiony pr\u00f3g i logowanie, kt\u00f3re sprawia, \u017ce ponowne uruchomienia s\u0105 por\u00f3wnywalne.<\/p>\n\n\n\n<p>Wzorzec, kt\u00f3ry przetrwa\u0142 wiele przebud\u00f3w firmware, to tr\u00f3jwarstwowy system: abstrakcja bod\u017ac\u00f3w\/pomiar\u00f3w (sterowniki instrument\u00f3w przez co\u015b w rodzaju pyvisa lub warstw\u0119 DAQ), mapa p\u0142ytki (cz\u0119sto wystarczy YAML z map\u0105 pin\u00f3w) oraz przypadki testowe, kt\u00f3re pozostaj\u0105 deterministyczne. Logowanie do CSV z kluczem wed\u0142ug numeru seryjnego mo\u017ce by\u0107 wystarczaj\u0105ce na pocz\u0105tku, o ile metadane s\u0105 dyscyplinowane: rewizja p\u0142ytki, ID mocowania, warunki otoczenia i wersja obrazu testowego, gdy zaanga\u017cowany jest firmware. Wyb\u00f3r j\u0119zyka (Python vs LabVIEW vs \u015brodowiska dostawc\u00f3w) ma mniejsze znaczenie ni\u017c granica modu\u0142owa. Monolityczny VI LabVIEW, kt\u00f3ry mo\u017ce edytowa\u0107 tylko jedna osoba, staje si\u0119 ryzykiem kadrowym, a nie strategi\u0105 testow\u0105.<\/p>\n\n\n\n<p>Istnieje r\u00f3wnie\u017c subtelna niepewno\u015b\u0107, kt\u00f3ra nale\u017cy do rozmowy o systemie: podpisy profilu pr\u0105du. S\u0105 pot\u0119\u017cne, gdy stany firmware s\u0105 stabilne. Gdy firmware zmienia si\u0119 codziennie, progi pr\u0105du powinny by\u0107 traktowane jako wykrywanie trend\u00f3w\/anomalii, a nie jako twarde przej\u015bcie\/niepowodzenie, chyba \u017ce zesp\u00f3\u0142 mo\u017ce zablokowa\u0107 wersjonowany obraz testowy z kontrolowanymi flagami funkcji i powtarzalno\u015bci\u0105.<\/p>\n\n\n\n<p>Punkt przekazania jest prosty: wczesne testy mog\u0105 rozszerza\u0107 swoje twierdzenia, gdy firmware dojrzewa, ale tylko je\u015bli system utrzymuje warstw\u0119 pomiarow\u0105 zaufan\u0105, a nazewnictwo pozostaje szczere. Wczesne przesiewanie zmniejsza ucieczki z monta\u017cu. Nie certyfikuje zachowania produktu.<\/p>","protected":false},"excerpt":{"rendered":"<p>Gdy firmware jest niestabilny, zielony odcisk \u201efunkcjonalny\u201d mo\u017ce ukrywa\u0107 prawdziwe defekty. Ten artyku\u0142 przekszta\u0142ca wczesne testy wok\u00f3\u0142 deterministycznych pomiar\u00f3w \u2014 szyny, zegary, resetowania, dowody na mocowanie i pokrycie modelu b\u0142\u0119d\u00f3w \u2014 tak aby wska\u017aniki powodzenia odzwierciedla\u0142y rzeczywisto\u015b\u0107, a nie optymizm.<\/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\/pl\/wp-json\/wp\/v2\/posts\/10694","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/comments?post=10694"}],"version-history":[{"count":1,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/posts\/10694\/revisions"}],"predecessor-version":[{"id":10698,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/posts\/10694\/revisions\/10698"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/media\/10696"}],"wp:attachment":[{"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/media?parent=10694"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/categories?post=10694"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.besterpcba.com\/pl\/wp-json\/wp\/v2\/tags?post=10694"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}