Wat is ingebed testen bij softwaretesten?

โšก Slimme samenvatting

Bij embedded testen wordt zowel het functionele als het niet-functionele gedrag van software en hardware gecontroleerd, omdat in een embedded systeem de twee nauw met elkaar verbonden zijn en geen van beide afzonderlijk goed gevalideerd kan worden.

  • ๐Ÿ”˜ Strakke koppeling: De hardware wordt parallel met de software ontwikkeld, waardoor de daadwerkelijke testomgeving vaak pas later beschikbaar komt.
  • โ˜‘๏ธ Vijf niveaus: Software-, integratie-, systeem-, systeemintegratie- en systeemvalidatietests richten zich elk op een andere modulegrens.
  • โœ… Veiligheidspalen: Medische, spoorweg-, luchtvaart- en automobielproducten moeten aan strenge, gedocumenteerde tests voldoen voordat een certificaat kan worden verleend.
  • ๐Ÿงช Voorkeur voor een grijze doos: Systeemunit testen observeert interne resources en RTOS-berichten, dus greybox-methoden zijn daarvoor het meest geschikt.
  • ๏ธ Belangrijkste obstakels: Beperkte toegang tot hardware, open-source componenten, gemengde software- en hardwarefouten en defecten die moeilijk te reproduceren zijn.

Geรฏntegreerde testen van software en hardware in een ingebed systeem

Wat zijn embedded systemen?

Ingebouwde systemen Embedded systemen zijn elektronisch gestuurde apparaten waarbij software en hardware nauw met elkaar verbonden zijn. Ze kunnen verschillende computercomponenten bevatten. Dit zijn pc's die in andere apparaten zijn geรฏntegreerd om applicatiespecifieke functies uit te voeren. De eindgebruiker is zich meestal niet eens bewust van hun bestaan.

Ingesloten testen

Ingesloten testen is een testproces voor het controleren van de functionaliteit en niet-functioneel Het testen van ingebedde systemen omvat het controleren van de eigenschappen van zowel software als hardware, en het waarborgen dat het eindproduct vrij is van defecten. Het belangrijkste doel van ingebed testen is om te verifiรซren en te valideren of het eindproduct, bestaande uit ingebedde hardware en software, voldoet aan de eisen van de klant.

Het testen van embedded software controleert en waarborgt dat de betreffende software van goede kwaliteit is en voldoet aan alle gestelde eisen. Het testen van embedded software is een uitstekende manier om de veiligheid te garanderen in kritieke toepassingen zoals medische apparatuur, spoorwegen, luchtvaart, de auto-industrie, enzovoort. Strikte en zorgvuldige tests zijn cruciaal voor het verkrijgen van softwarecertificering.

Hoe u geรฏntegreerde softwaretests uitvoert

Over het algemeen test je om vier redenen:

  • Om fouten in software te vinden
  • Helpt het risico voor zowel gebruikers als het bedrijf te verminderen
  • Verlaag de ontwikkelings- en onderhoudskosten
  • Om de prestaties te verbeteren

Bij embedded testen worden de volgende activiteiten uitgevoerd:

  1. De software wordt geleverd met een aantal invoerparameters.
  2. Een deel van de software wordt uitgevoerd.
  3. De softwarestatus wordt geobserveerd en de output wordt gecontroleerd op verwachte eigenschappen, zoals of de output overeenkomt met het verwachte resultaat, of deze voldoet aan de vereisten en of er geen systeemcrashes optreden.

Typen ingebedde softwaretests

In principe zijn er vijf testniveaus die op embedded software kunnen worden toegepast.

Testen van software-eenheden

Een unit-module is ofwel een functie ofwel een klasse. Unit-testen worden uitgevoerd door het ontwikkelteam, voornamelijk door de ontwikkelaar, en vinden meestal plaats volgens een peer-reviewmodel. Testgevallen worden ontwikkeld op basis van de specificatie van de module.

Integratietesten

Integratietesten kan worden ingedeeld in twee segmenten:

  • Testen van software-integratie
  • Integratietesten van software en hardware

Uiteindelijk wordt de interactie tussen de hardware en de softwarecomponenten getest. Dit kan onder meer het onderzoeken van de interactie tussen ingebouwde randapparatuur en software omvatten.

Bij de ontwikkeling van embedded software is er een uniek kenmerk: de daadwerkelijke omgeving waarin de software draait, wordt doorgaans parallel met de software gecreรซerd. Dit zorgt voor problemen bij het testen, omdat uitgebreide tests niet in een gesimuleerde omgeving kunnen worden uitgevoerd.

Testen van systeemeenheden

De module die nu getest moet worden, is een volledig framework dat bestaat uit de complete softwarecode plus alle real-time besturingssysteem (RTOS) en platformgerelateerde onderdelen zoals interrupts, taakmechanismen, communicatie, enzovoort. Het Point of Control-protocol is niet langer een aanroep naar een functie of een methode-aanroep, maar een bericht dat wordt verzonden of ontvangen via de berichtenwachtrijen van het RTOS.

Systeembronnen worden geobserveerd om het vermogen van het systeem om de uitvoering van ingebedde systemen te ondersteunen te evalueren. Voor dit aspect is grijze doos testen is de geprefereerde testmethode. Afhankelijk van de organisatie is het uitvoeren van unit-testen van systemen de taak van de ontwikkelaar of van een speciaal systeemintegratieteam.

Systeemintegratietesten

De te testen module begint met een set componenten binnen รฉรฉn knooppunt. De Points of Control and Observations (PCO's) zijn een mix van netwerkgerelateerde communicatieprotocollen en RTOS-gebeurtenissen, zoals netwerkberichten. Naast een component kan een Virtual Tester ook de rol van een knooppunt vervullen.

Systeemvalidatietesten

De te testen module is een subsysteem met een volledige implementatie, of het complete embedded systeem. Het doel van deze eindtest is om te voldoen aan de functionele eisen van een externe entiteit. Een externe entiteit kan een persoon zijn, een apparaat in een telecommunicatienetwerk, of beide.

Verschil: ingebed testen en softwaretesten

De onderstaande tabel vergelijkt ingebedde tests met conventionele tests. software testen.

Software testen Ingesloten testen
Softwaretesten hebben alleen betrekking op software. Embedded testen heeft betrekking op zowel software als hardware.
Gemiddeld wordt 90% van alle tests wereldwijd handmatig uitgevoerd. black box testen. Embedded testen wordt uitgevoerd op embedded systemen of chips, en kan een black box-test zijn. witte doos testen.
Primaire testgebieden zijn GUI-controles, functionaliteit, validatie en een bepaald niveau van databasetests. De belangrijkste testgebieden zijn het gedrag van de hardware bij verschillende aantallen ingangen.
Softwaretesten worden voornamelijk uitgevoerd op client-server-, web- en mobiele applicaties. Het testen van ingebedde systemen gebeurt over het algemeen op de hardware zelf.
bv Google Mail, Yahoo Mail, Android toepassingen. bijvoorbeeld apparaten in de gezondheidszorg, microcontrollers die in computers worden gebruikt.

Uitdagingen: testen van ingebedde software

Enkele uitdagingen die men kan tegenkomen tijdens het testen van embedded software:

Hardware-afhankelijkheid

Hardwareafhankelijkheid is een van de grootste problemen bij het testen van embedded software, vanwege de beperkte toegang tot de hardware. Emulators en simulators geven echter mogelijk niet nauwkeurig het gedrag van het daadwerkelijke apparaat weer en kunnen een verkeerd beeld geven van de systeemprestaties en de bruikbaarheid van de applicatie.

Open source software

De meeste embedded softwarecomponenten zijn open source, worden niet intern ontwikkeld en er is geen complete testsuite voor beschikbaar. Dit leidt tot een breed scala aan testcombinaties en de daaruit voortvloeiende scenario's.

Software- versus hardwaredefecten

Een ander aspect is de ontwikkeling van software voor gloednieuwe hardware. Tijdens dit proces kunnen veel hardwarefouten worden vastgesteld. De gevonden fouten beperken zich niet alleen tot de software, maar kunnen ook betrekking hebben op de hardware zelf.

Reproduceerbare defecten

In een ingebed systeem zijn defecten moeilijker te reproduceren of na te bootsen. Daardoor moet bij het testen van ingebedde systemen elke defectmelding aanzienlijk zwaarder worden gewaardeerd dan in een standaard situatie, en moet er zoveel mogelijk data worden verzameld als redelijkerwijs nodig is om de oorzaak van het defect te achterhalen.

Continue software-updates

Ingebedde systemen vereisen regelmatige software-updates, zoals kernel-upgrades, beveiligingspatches, verschillende apparaatstuurprogramma's, enzovoort. De beperkingen die gepaard gaan met software-updates maken het lastig om bugs te identificeren. Bovendien verhoogt dit het belang van de bouw- en implementatieprocedure.

Veelgestelde vragen

Typische stacks combineren statische analyse, unit-testomgevingen voor C en C++, busanalysatoren, trace-compatibele debuggers en hardware-in-the-loop-systemen, plus test automatisering Regressietests worden dus automatisch uitgevoerd.

Hardware-in-the-loop (HIL) voert echte firmware uit op de echte controller, terwijl een simulator de signalen levert die de omringende installatie zou produceren. Hierdoor worden foutcondities gesimuleerd die fysiek onveilig zijn om na te bootsen.

Een simulator modelleert gedrag en voert een host-build uit; een emulator reproduceert de doelinstructieset zodat het daadwerkelijke binaire bestand wordt uitgevoerd. Geen van beide reproduceert analoge en timingeffecten exact.

IEC 61508 is de algemene norm voor functionele veiligheid. Sectorale versies zijn onder andere ISO 26262 voor wegvoertuigen, DO-178C voor software in vliegtuigen, IEC 62304 voor medische apparatuur en EN 50128 voor spoorwegbesturing.

AI-modellen sorteren de grote logbestanden en tracDe testomgeving produceert grote hoeveelheden data, clustert herhaalde storingen en bepaalt welke regressietests als eerste moeten worden uitgevoerd op schaarse hardware. De veiligheidsbeoordeling blijft bij de engineer.

GitHub-copiloot ontwerpt testkabelbomen en aansluitstukken voor C of C++ Modules versnellen repetitieve mocking. Gedrag en timingbeperkingen die het systeem nooit heeft gezien, moeten nog steeds worden gecontroleerd.

Door middel van analyse van de uitvoeringstijd in het slechtste geval, instrumentatie trace op het doel, en stresstests worden uitgevoerd onder maximale belasting. Deadline-overschrijdingen en interruptlatentie worden gemeten op echte hardware, iets wat hostbuilds niet kunnen nabootsen.

Lezen C en C++Comfortabel met schema's en logische analysers, bekend met RTOS-concepten en busprotocollen, plus scripting. Gerelateerde werkervaring zoals... IoT-testen is gebaseerd op dezelfde grondslag.

Vat dit bericht samen met: