Enklare utveckling och validering av embeddedprogramvara
Allt komplexare system och program ökar kraven på utvecklings- och valideringsverktyg. Jonas Dietsche från Wind River analyserar problemen och beskriver företagets lösning på det.
Marknadsundersökningar visar att mängden programvara inbyggd i intelligent utrustning i stort sett dubbleras vartannat år, vilket ökar programvarukomplexiteten. Dessutom ökar komplexiteten ur arkitektursynpunkt. Idag är det vanligt med inbyggda lösningar som kombinerar 32-bitars och 64-bitars arkitekturer, baserade på antingen flera eller flerkärniga processorer som kör kraftfulla operativsystem. Slutligen innehåller nu tillämpningar rikare användargränssnitt och förbättrade nätverksmöjligheter. Denna ökade komplexitet skapar fler utmaningar för den validering av programvaran som ska se till att en produkt verkligen fungerar enligt konstruktionen.
Kvalitetsansvariga arbetslag måste rutinmässigt bedöma kvaliteten hos ett ständigt ökande antal funktioner under stor tidspress. Givet trycket på dagens kretstillverkare och användningen av flexibla upprepade utvecklingscykler blir tidsramarna bara kortare och kortare. Under produktutvecklingen kan programvaran ändras ganska snabbt och ofta i nära anslutning till viktiga milstenar, vilket ger lite eller ingen tid för omfattande tester. När detta inträffar är det ofta svårt för testteamen att komma ifatt eftersom de inte kan koncentrera sig bara på det som är nytt utan även måste hitta nya buggar eller regressioner.
Om programvaran inte testas noga kan det få allvarliga konsekvenser för ett företag eller en organisation. Det inkluderar skadade varumärken, ekonomiska förluster på grund av att produkter återkallas, eller t o m förlust av liv eller en kroppsdel till följd av exempelvis felande medicinsk utrustning. Totalt sett väcker komplexiteten och de pressade cyklerna i dagens inbyggda utvecklingsmiljö en rad allvarliga frågor.
Kortstödpaket
Maskinvarustöd i form av ett kortstödpaket (BSP, board support package) för operativsystem såsom VxWorks och Wind River® Linux eller något annat Linux-paket är viktigt för utvecklingen. En viktig fråga är: har detta stödpaket implementerats på den kvalitetsnivå som krävs? I idealfallet levereras paketet direkt från företaget, efter omfattande tester och kvalitetssäkring. Men vad händer om så inte är fallet och utvecklaren måste bygga det själv? För det första måste stödpaketet ha samtliga adaptrar och drivrutiner som är relevanta för maskinvaran. För det andra måste stödpaketet uppfylla en viss kvalitetsnivå. Utvecklare ska kunna förlita sig på en samling certifierade testfall som hjälper till att validera stödpaketets grundläggande funktioner, såsom CPU, RAM, avbrottsstyrkrets, timer osv. Det är helt klart viktigt att stödpaketet är robust och tillförlitligt och det är därför lämpligt att stresstesta paketet.
En tillämpning, och därmed stödpaketet, kommer troligen också att ändras när nya funktioner med tiden läggs till eller tas bort. Hur påverkar sådana förändringar prestanda? Innehåller utrustningen kod som inte har testats tidigare? Eller finns det testfall som är beroende av kod som inte längre existerar? Och hur uppför sig systemet när det utsätts för undantag?
Valideringsansvar
Vem ansvarar egentligen för utvecklingen av testfall? I flertalet fall bör inte utvecklaren skriva testfall; idealiskt sett bör detta göras inom kvalitetssäkringsenheten (QA, Quality Assurance), som är specialiserade på testning. Utvecklare har vanligtvis något i åtanke när de skapar programvara och kommer troligen att skapa grundläggande test för att hjälpa till att validera funktionen hos sin programvara, vilket möjliggör framtida användning av dessa grundtest vid regressionstester senare under QA-cykeln. Det behövs helt klart ett djupgående samarbete mellan utvecklaren och QA-enheten.
En annan viktig sak att överväga är utrustningens gränstillstånd, vilket är där programvarubuggar troligast kommer att uppkomma. I inbyggnadsvärlden är det vanligt att tillägna cirka en tredjedel av koden åt att hantera gränstillstånd, som ofta inte är väl validerade eftersom det kan vara svårt att förflytta en utrustning till ett gränstillstånd såsom arbete vid hög temperatur eller hög hastighet. Det kan vara mycket tids- och arbetskrävande, kräver vanligtvis manuella ingrepp och riskerar potentiellt att skada utrustningen.
En idealisk värld
En lösning som tar itu med samtliga problem kräver ett testramverk som erbjuder flexibilitet i hanteringen och utförandet av såväl manuella som automatiska test, utan behov av mänskligt ingripande och som körs direkt på den aktuella maskinvaran. Medan testen körs måste testaren veta vad testerna gör, exempelvis, hur lång tid testerna tar och vilka funktioner som utförs. Förmågan att associera testfall till den kod som exekveras är utomordentligt användbart, utöver möjlighet att jämföra aktuella och tidigare programvarukonstruktioner.
Sedan återstår analys av den programvara som ingår i den aktuella konstruktionen, vilket innebär att bara de test som är relevanta för den förändrade koden körs; en given konstruktion kan ha en halv miljon kodlinjer, men endast 10 000 linjer som modifierats. Alternativet är naturligtvis att utföra ett fullständigt test av den slutliga programvaran, men det är inte nödvändigtvis effektivt att testa all kod i samtliga iterationer av programvaran. Det är mycket önskvärt att det går att se tydligt vilken inverkan kodförändringar har och vilka test som behöver utföras . Programvarutestare ägnar vanligtvis mycket tid åt att generera testfall och att välja ut dem för testkörningen. Att ha sådana saker på plats sparar programvarutestarens värdefulla resurser och ger kortare marknadsledtid.
Valideringsutopi
Wind River Test Management är en lösning som byggts från grunden för inbyggnadsmarknaden och som når långt på vägen mot en optimal situation. Verktyget är i grunden ett automatiskt testramverk för inbyggda programvarusystem som minskar risken att defekter visar sig för första gången i fält.
Avbildning av körtidsprestanda erbjuder ett icke-störande, dynamiskt sätt att övervaka exekveringstider för kritiska funktioner vid test.
Testsviten Wind River Test Management innehåller förändringsbaserade algoritmer och utnyttjar dynamiska instrumenteringsmöjligheter att köra på utrustningen vid test. Framför allt erbjuder verktyget BSP-valideringstestpaket för Wind River VxWorks och Wind River Linux eller andra Linux-baserade system. Utöver att leverera mekanismer för att testa prestanda och stabiliteten, utnyttjar dessa paket unik sensorpunktteknik från Wind River, som mäter testtäckning, kartlägger spårbarheten för test-till-kod ned till block- och grennivå, ger en översikt av prestanda och snabbar på diagnostiseringen av komplicerad utrustning, allt på en och samma binärkod, utan behov av specialbyggen eller avlusningsinformation. Wind Rivers Test Management-ramverk ger tydlig och klar insyn i vilken kod som exekveras, mäter prestanda för varje funktion och kan tvinga fram exekvering via en särskild kodväg för att ordentligt testa gräns- och feltillstånd som är svåra att uppnå.
Testtäckning av körtiden minskar risken att otestade förändringar undgår upptäckt.
Genom att använda kartläggning av tester mot kod, i kombination med möjligheten att analysera och jämföra två binära konstruktioner och identifiera förändringen dem emellan möjliggör testsvitens genereringsverktyg att en optimerad undergrupp av test körs, bestående av det minimala antal testfall som behövs för att ordentligt och till fullo testa vilken inverkan en förändring av koden får. Testsvitgeneratorn kan även användas för att ta fram testsviter baserade på defektstatus, resultat av föregående körningar och förändrade behov samt t o m ge maximal kodtäckning baserad på en given tidsbegränsning.
Testsvitgeneratorn hjälper till att skapa testsviter optimerade för kriterier såsom täckning, validering av fasta defekter och spårbarhet av behov.
Integrering av utvecklingens testflöde
En viktig fördel med Wind River Test Management är dess förmåga att sömlöst integrera med andra existerande livscykelslösningar för tillämpningsutveckling, såsom behovshantering, spårning av defekter och kontinuerlig integrering. Det ger en fullständig testprocess som ger spårbarhet från behovsfasen och där testfallen associeras till behoven och varje rapporterad bugg associeras till ett givet testfall. Denna process förbättrar inte bara produktiviteten utan hjälper även till att tillfredsställa behov ställda av olika föreskrivna standarder och krav på granskning. Flexibiliteten hos Wind River Test Management och dess gränssnitt för kommandolinjer innebär att kunder lätt kan integrera det i sina existerande arbetsflödeslösningar, som kan inkludera industrigemensamma verktyg från exempelvis Hewlett-Packard eller IBM.
Wind River Test Managements spårbarhet för binära skillnader och för test-till-kod inriktar testningen på förändrad kod.
Wind River Test Management hjälper i huvudsak till att hantera de rippeleffekter som förändringar ger och möjliggör för utvecklare och testteam att till fullo förstå hur kodförändringar påverkar en tillämpning, antingen det är programvara till en CT-scanner eller en mycket komplicerad nätverksrouter. Det förkortar väsentligt valideringstiden och minskar den frustration som testteamen kan känna när de hjälper till att leverera högsta möjliga kvalitet.
Jonas Dietsche, Senior Technical Account Manager, Wind River
Filed under: Embedded