Hvordan finne den «uventede bug»

Det er en stor utfordring å identifisere bugs i innvevd kode på tvers av Tingenes Internett, men visuell spordiagnostikk kan gjøre prosessen enklere.

Publisert Sist oppdatert

Denne artikkelen er 2 år eller eldre

Etter hvert som flere prosjekter beveger seg mot tingenes internet (IoT), blir utfordringene med innvevd kode mer åpenbare. Med millioner av enheter ute i felten under alle slags forhold, er det enda mer sannsynlig at bugs – feil – i den innvevde koden dukker opp på et eller annet tidspunkt. Det er også vanskeligere å identifisere og fikse disse feilene når de innebygde systemene er ute på veien eller en del av en forsyningskjede på den andre siden av kloden.

Johan Kraft, Percepio.

Store huller
Dette er potensielt et stort problem. Forskning fra 13.500 programvareprosjekter fant at fjerningsfrekvensen for defekter var 95%. Selv om dette høres ganske imponerende ut fra det tekniske perspektivet, betyr det fortsatt at 5% av feilene havner i felten. Når det vanligvis blir introdusert 50-100 feil per 1000 linjer med kode, betyr dette at det kan være 25 til 50 betydelige feil i et system med 50.000 kodelinjer.

Uventede feil
Etter hvert som prosjekter blir større og kombinerer innvevde styre- og skysystemer på tvers av de nyeste industrielle automatiseringssystemene og IoT, blir dette problemet også stadig større. Selv om utviklere gjør sitt beste for ikke å introdusere feil i utgangspunktet og bruker omfattende testing for å fjerne alle feilene de kan finne. Og det er her nøkkelen ligger - hvordan finne feilene, spesielt når de kan dukke opp uventet.

Bevegelige ting
Når innebygde systemer implementeres i ting som beveger seg rundt omkring, enten det er i smarte søppelbøtter for å samle avfall eller overvåke kjølekjeden (en sammenhengende temperaturstyrt forsyningskjede fra produksjon til forbruk) for levering av vaksiner til håndtering av Covid-19-pandemien, kan alle slags forskjellige situasjoner oppstå. Enkelte ting kan skape et problem, og utviklerne bak programvaren må være klar over det.

Jo før, jo heller
Feilen er kanskje ikke åpenbar, men den kan være en forløper til et større problem. Å oppdage problemer tidlig og før problemet blir katastrofalt er ideelt, spesielt hvis dette kan gjøres uten at kunden eller brukeren legger merke til det.

Omfattende overvåking
De samme ressursene som virker for å drive kommunikasjonen til innvevde systemer kan også brukes til å identifisere og rapportere eventuelle problemer. For eksempel fremhever overvåking av omgivelses- og lufttemperaturen gjennom en hel kjølekjededistribusjon svake punkter som kan håndteres, og sikrer at produkter, inkludert vaksiner, når frem til bruksstedet uten å ha blitt kompromittert. Dette krever omfattende overvåking og logging, med data lastet opp til skyen for analyse.

Mer intelligent
På samme måte bruker smarte søppelsystemer sensorer og trådløse lenker for å avgjøre når en søppelkasse er full og må hentes, i stedet for å stole på en bestemt tidsplan. Flåtestyringsprogramvare og intelligent ruting bestemmer deretter den mest kostnadseffektive hentemetoden, dag for dag.

Kostnad ved feil
Kostnaden for en feil i slike systemer kan være dramatisk. Selv om en søppelbøtte som ikke samles inn ikke er en katastrofe, er neppe sure samtaler fra mange kunder med overfylte søppelbøtter noe en operatør ønsker å håndtere. Det er også viktig å vite om en sensornode har sviktet som følge av sensoren, lenken eller andre deler av systemet.

 

Dataflyt i DevAlert fra felten til utvikleren. Løsningen kan varsle utviklerne om uventede hendelser i felten via skyen.

Kritisk
Å miste en sending med vaksiner som kan ha blitt ødelagt under transitt er langt mer kritisk, spesielt hvis dette er et resultat av en sensorfeil. Og hvis en sensor svikter, er det ingen måte å kunne vite om batchen er blitt kompromittert eller ikke.

Fange feil
Så å fange feil når de oppstår og varsle utviklerne er av enorm verdi for næringslivet. Gjennomsnittskostnaden for å fikse bugs i det første året en innvevd enhet er i funksjon kan komme opp i hundretusenvis av dollar, i tillegg kommer skadene som kan være forårsaket av slike feil.

Visuell spordiagnostikk
En metode som er av enorm verdi for utvikleren ved arbeidsbordet, er visuell spordiagnostikk. Dette gir en visuell tidslinje for de interne programvarehendelsene under drift og er et sentralt verktøy for en utvikler som skal spore opp feil. Trikset er å få frem disse dataene under bruk, og gi utviklerteamet detaljert informasjon om programvareproblemer i felten.

Varsling via skytilkoblingen
Det er her skyintegrasjonen kommer inn i bildet. Ettersom flere noder er koplet sammen i IoT, kan den samme kanalen også brukes til diagnostiske data. Skytilkoblingen kan brukes til å varsle utviklere når en feil først oppdages og gi visuell spordiagnostikk for å identifisere årsaken.

Forklarende tidslinje
Dette er et kraftig konsept som ikke bare fremhever når en node feiler, men den gir også en forklaring - tidslinjen for programvarehendelser like før problemet ble oppdaget, som viser hva som førte til problemet. På denne måten kan programvaren korrigeres og oppdateres raskt, mens bare noen få kunder er blitt berørt av feilen, og dermed unngår man et mye større problem.

Dette konseptet er kjernen i et verktøy som kalles DevAlert. I kombinasjon med den visuelle spordiagnostikkteknologien Tracealyzer og et sofistikert skydatahåndteringssystem kan den brukes til å overvåke alle slags IoT-tilkoblede enheter.

Rask reaksjon
Når noe uventet skjer, for eksempel hvis systemet starter automatisk på nytt for å gjenopprettes etter en feil, blir hendelsene som førte til omstarten registrert og tilgjengelige. Men det er oppmerksomheten som er nøkkelen. Når utviklere mottar et varsel, kan de umiddelbart se på diagnostisk sporingsinformasjon og se nøyaktig hva som skjedde.

 

Ved hjelp av Tracealyzer-verktøyet kan utvikleren gå tilbake og analysere det angitte sporet som ledet til feilen.

Lettere å identifisere årsak
Ved å inkludere et spor i varselet, blir det mye lettere å identifisere situasjonen som forårsaket problemet. Når du legger til visuell sporingsdiagnostikk, inkludert mange typer visuelle oversikter, blir det enda lettere for utviklere å forstå problemet. Dette gjør det mulig for utviklere å finne årsaken og fikse problemet raskt. Reaksjonstiden har betydning. De fleste feil ved implementering vises ikke direkte for alle brukere, ellers ville de sannsynligvis blitt funnet under testingen. Så jo raskere en oppdatering kan tilbys, desto færre kunder vil bli berørt.

Nyttig startpunkt
Dette er spesielt nyttig ettersom kundene ikke nødvendigvis vil rapportere et problem og gi informasjonen som en utvikler trenger for å reprodusere og fikse feilene, spesielt når det gjelder forbrukerenheter. Selv når det rapporteres om en feil, kan det være med svært vag informasjon, slik at en utvikler ikke vet hvor han skal begynne.

Programvarekomponenter
Konseptet omfatter tre programvarekomponenter. DevAlert Firmware Monitor (DFM) er et kompakt programvarebibliotek som enhetsutviklere bygger inn i sin RTOS-baserte IoT-applikasjon. Denne agenten beholder et spor av nylige programvarehendelser og muliggjør at feilhåndteringskode i programmet kan rapportere enhver tilstand som er relevant for enhetsutvikleren, feil, proaktive advarsler eller annen diagnostisk informasjon, enten relatert til programvare eller maskinvare. Varslingsmeldingen lastes deretter opp til enhetens skykonto ved hjelp av en eksisterende sikker forbindelse, for eksempel MQTT over Transport Layer Security (TLS).

Unike varsler
Men DFM-monitoren alene kan bare levere en flom av data. DevAlert-skytjenesten tar disse dataene og ser på feilkoder og andre symptomer og varsler utviklerne i tilfelle et nytt unikt problem hvis en ny kombinasjon av symptomer har oppstått. Dette omgår problemene med dupliserte varsler som oversvømmer en utvikler. Percepios Tracealyzer-verktøy kan deretter brukes av utvikleren tilbake i laboratoriet for å analysere det oppgitte sporet.

Trenger begge deler
Det er viktig å forstå at DevAlert på ingen måte erstatter konvensjonell testing; Du trenger begge deler, akkurat som de fleste biler har både setebelter og kollisjonsputer. God, systematisk testing fjerner vanligvis 95% av feilene, som vi sa ovenfor. Feilrapportering i felten hjelper deg med å fange opp de feilene som testing ikke avslørte, de vanskelige som bare vises under visse forhold. Det er ofte et astronomisk antall potensielle scenarier i programvaren, som avhenger av innganger, programvaretiming, enhetsinnstillinger og andre miljøfaktorer (f.eks. Wi-Fi-tilkoblingen). Enhver av disse kan ha latente feil som kan føre til at enheten krasjer eller produserer feil data. En enhet kan for eksempel mislykkes hvis Wi-Fi-tilkoblingen mottar flere pakker innen 5 millisekunder mens den er opptatt med å skrive data til et flash-minne.

For å få vite mer om Percepio DevAlert kan du besøke percepio.com/devalert.

Powered by Labrador CMS