Verktygen som används för programvarutest i inbäddade system är olika, ofta beroende på den specifika hårdvaran, mjukvaruarkitekturen och testbehovet. Systemföretag använder absolut dessa verktyg, eftersom manuell testning av inbäddade system är oerhört tidskrävande och benägna att fel, särskilt med tanke på de ofta komplexa hårdvaruprogramvaror.
Här är en uppdelning av vanliga verktygskategorier och exempel:
1. Testramar: Dessa ger strukturen och organisationen för automatiserade tester.
* Google Test (gtest): Ett allmänt använt C ++ testram som är känd för sin enkelhet och utdragbarhet. Vanligtvis används i inbäddade projekt som använder C ++.
* enhet: En lätt, tvärplattformsenhetstestram som är lämplig för C ++ -projekt. Populärt i inbäddade system på grund av dess lilla fotavtryck.
* cpputest: En annan C ++ -enhetstestram som är speciellt utformad för inbäddade system, med betoning på minimal resursanvändning.
* cunit: En enhetstestram för C.
* testkomplet: En kommersiell ram som stöder skript på olika språk och kan automatisera GUI-test (även om det är mindre vanligt direkt i nakna metallinbäddade system)
2. Testa exekveringsmiljöer/löpare: Dessa hanterar drift av testsviter och rapportering av resultat.
* Många IDE:er innehåller testlöpare: Till exempel kan Eclipse CDT integreras med ramar som Google Test.
* Anpassade skript: Ofta skriver inbäddade systemteam sina egna skript (t.ex. med hjälp av python eller bash) för att orkestrera testutförande, särskilt för integrations- och systemnivåprov.
* Kontinuerlig integration/kontinuerlig distributionssystem (CI/CD): Jenkins, Gitlab CI, Azure DevOps, etc., används ofta för att automatisera bygg- och testprocessen, inklusive för inbäddade system. Dessa integreras ofta med testramarna och löparna.
3. Hårdvaruspecifika verktyg: Dessa verktyg överbryggar ofta klyftan mellan testautomationsprogramvaran och den inbäddade hårdvaran.
* JTAG -felsökare: Verktyg som de från Segger, Lauterbach eller ARM ger gränssnitt för att felsöka och testa hårdvaran på en låg nivå. De kan också utlösa tester och fånga resultat.
* in-Circuit Emulators (ICES): ICES möjliggör mer sofistikerade testscenarier än JTAG, ofta inklusive realtidsspårning och emuleringsfunktioner. Dessa är vanligtvis avancerade lösningar.
* Hårdvara-i-loop (HIL) Simulatorer: Dessa är avancerade system som simulerar den yttre miljön i det inbäddade systemet, vilket möjliggör grundlig testning av systemets interaktion med den verkliga världen utan behov av fysiska komponenter eller potentiellt farliga situationer.
* can/lin/Ethernet -bussanalysatorer: Dessa verktyg fångar och analyserar kommunikation om bil- och industribussar, avgörande för att testa inbäddade system som kommunicerar över dessa protokoll.
* oscilloskop/logikanalysatorer: För direkt hårdvaruundersökning.
4. Testtäckningsanalysverktyg: Dessa mäter hur noggrant testsviten täcker koden.
* gcov (GCC): Ett inbyggt verktyg inom GCC-kompilatorn som tillhandahåller kodtäckningsinformation.
* kommersiella verktyg: Mer sofistikerade verktyg ger detaljerade täckningsrapporter, inklusive grenstäckning, tillståndstäckning och MC/DC (modifierad tillstånd/beslutstäckning), som ofta krävs av säkerhetsstandarder (som ISO 26262).
5. Testhanteringsverktyg: Dessa hjälper till att organisera och hantera testprocessen.
* jira, Azure DevOps, Testrail: Dessa är vanliga verktyg för att hantera testfall, spåra buggar och rapportera om testresultat.
Vilka verktygsföretag använder: Valet beror starkt på faktorer som:
* Budget: Open-källverktyg som Google Test och Unity är attraktiva av kostnadsskäl. Kommersiella verktyg erbjuder mer avancerade funktioner men kommer med en prislapp.
* Projektkomplexitet: Enkla projekt kanske bara behöver en enhetstestram, medan komplexa system kommer att kräva en mer omfattande svit med verktyg.
* Säkerhetsstandarder: Säkerhetskritiska applikationer (bil, flyg-, medicinsk) kräver ofta användning av verktyg som uppfyller specifika standarder och erbjuder avancerad täckningsanalys.
* Hårdvaruplattform: De tillgängliga felsökningsgränssnitten och hårdvaran kommer att påverka valet av verktyg.
* Teamkompetens: Tekniska teamets färdigheter kommer att bestämma genomförbarheten av att anta och använda särskilda verktyg.
Sammanfattningsvis använder systemföretag som är involverade i inbäddade systemutveckling ett brett utbud av verktyg, som ofta kombinerar öppna källkods- och kommersiella alternativ för att bygga en skräddarsydd testinfrastruktur som uppfyller deras specifika behov och projektkrav. Trenden är mot ökad automatisering och integration med CI/CD -rörledningar.