Embedded testing

EMC's embedded testing allows our customers to concentrate on their core competencies and supports their businesses by providing optimal quality and product delivery as well as cost efficiency and time to market. Knowing the value of testing and validating the entire design, function and usability of various smart devices and products is a fundamental part of EMC's embedded testing services. This could be a touch phone, notebook, iPad, mobile device running based on Wireless, LAN, WAN, Bluetooth or GPS technologies, internet hardware like switches, hubs and routers, real-time navigation and control systems in cars, airplanes, helicopters, ships, hospital systems, printers and scanners, your PC, mouse, flat screen TV and surround sound home system and many more. EMC's testing experts utilize a six - step testing approach focusing on testing the software on one hand and the entire system on the other:

Software unit testing

In this type of testing the definition of the different activities varies based on what the testing unit is:

  • Thorough input testing: one applies large amounts and different variety of data as input variables to the various functions and methods defined for the specific unit.
  • Unit life-cycle testing: defining and performing different sequenced executions of the software code in order to verify each scenario and use case for the particular unit as part of the design requirements.
  • The following results are to be evaluated: coverage of all non-functional and functional requirements for the given unit, input/output variables and values, code behavior and exposure, run-time initialization and assignments, memory allocation and performance, any type of errors and their handling
  • Unit testing is the first step to verify the design, functionality and usability of complex embedded software. It provides the basis for further testing and integration of the system as a whole

Tools:

ECU testing tools from Vector, (Vector Software) VectorCast; (Elvior) TestCast; (Bsquare) TestQuest.

Software integration testing

Software integration testing takes all the units and combines them into one single large entity. This entity as a whole is the item of interest in this type of testing.

  • Examples of such entities can be set of functions or a collection of methods, clusters of classes, interfaces
  • The goal of this testing is to validate the functioning of the entity as a whole
  • Depending on the hierarchy of the system one can also combine multiple entities into one larger one(e.g. Factory of interfaces or cluster of classes)
  • An integration test can be executed in two ways:
    • Bottom-up method – starts with unit testing and then higher level components and modules are being tested progressively
    • Top-down method - starts with highest level components and modules testing and then the smallest hierarchical units are being tested progressively
  • The activity is finalized by repeated tests of the complete solution simulating live operations
  • The following results are to be evaluated: coverage of all non-functional and functional requirements for the given entity, interaction between the various units within the entity, dependencies of processes and executions, interaction between high level and low level items within the software, memory allocation and performance, any type of errors and their handling
  • Integration testing is the second step to verify the design, functionality and usability of complex embedded software. It provides the basis for the final validation of the system as a whole

Tools:

ECU testing tools from Vector, (Vector Software) VectorCast; (Elvior) TestCast; (Bsquare) TestQuest.

Software validation testing

Software validation testing takes the code of the software as a whole and includes all entities and their respective units:

  • The tests creation and execution is done without knowing the details and implementation of the individual units and entities involved
  • This type of testing is the final phase of any integration, build and release cycle
  • The following results are to be evaluated: coverage of all non-functional and functional requirements for the given software, resources allocation and usage, dependencies on other parts of the system, any type of errors and their handling
  • Validation testing is the third step to verify the design, functionality and usability of the complex embedded software as a whole. It allows for the further testing of other parts of the system

Tools:

ECU testing tools from Vector, (Vector Software) VectorCast; (Elvior) TestCast; (Bsquare) TestQuest.

System unit testing

In this type of testing the item of interest is a system unit that includes all the validated software code as well as platform pre-requisites and conditions allowing its execution:

  • The conditions can include hardware characteristics, operating system features, network parameters, scheduling tasks, messaging protocols, CPU processes, threads, interrupts and memory swapping, etc.
  • The idea is to test and vary all those pre-requisites and factors in multiple scenarios as well as simultaneously evaluate the behavior of the software and respectively of the whole system unit.
  • The following results are to be evaluated: system unit’s ability to function consistently under different platform conditions, system resources allocation, software functionality, input, output and performance, any type of errors and their handling
  • System unit testing is the fourth step to verify the design, functionality and usability of the complex embedded system. It tests separately full system units and their operation and provides the basis for the integration testing of the system

Tools:

ECU testing tools from Vector, (Vector Software) VectorCast; (Elvior) TestCast; (Bsquare) TestQuest.

System integration testing

System integration testing takes all the units and combines them into one single large system entity. This system entity as a whole is the item of interest in this type of testing.

  • Examples of such entities can be set of operating system features or modules, network, messaging units, CPU threads and processes, multiple software applications, interfaces, etc.
  • The goal of this testing is to validate the functioning of the system entity as a whole
  • Depending on the hierarchy of the system one can also combine multiple distributed system entities into one larger one(e.g. collection of software applications all part of one system)
  • An integration test can be executed in two ways:
    • Bottom-up method – starts with unit testing and then higher level components and modules are being tested progressively
    • Top-down method - starts with highest level components and modules testing and then the smallest hierarchical units are being tested progressively
  • The activity is finalized by repeated tests of the complete solution simulating live operations of all involved system units or entities and the whole entity or system
  • The following results are to be evaluated: interaction between the different system units or entities, interfaces, flows, messages, streams and behavior of the entire system, inputs and outputs, resources usage, any type of errors and their handling
  • System integration testing is the fifth step to verify the design, functionality and usability of the complex embedded system. It provides the basis for the final validation of the system as a whole

Tools:

ECU testing tools from Vector, (Vector Software) VectorCast; (Elvior) TestCast; (Bsquare) TestQuest.

System validation testing

System validation testing takes the complete system as a whole and includes all system entities and their respective units. This could also be a sub-system or the full complex embedded solution:

  • The tests creation and execution is done without knowing the details and implementation of the individual system units and entities involved
  • This type of testing ensures operational consistency and overall quality of the system verifying it under various conditions and loads
  • This type of testing is the final phase of any integration, build and release cycle of a system (smart device or product)
  • The following results are to be evaluated: coverage of all non-functional and functional requirements for the given system, resources allocation and usage, dependencies on and compatibility with other external systems, overall quality, any type of errors and their handling
  • Validation testing is the final step to verify the design, functionality and usability of the complex embedded system as a whole

Tools:

ECU testing tools from Vector, (Vector Software) VectorCast; (Elvior) TestCast; (Bsquare) TestQuest.

Our Methodology

EMC utilizes a risk-adjusted testing strategy and safety analysis: various modern hardware emulators and simulators are used by our experts in order to perform thorough software code analysis. As such the functionality, quality and compatibility of the respective system is validated in an optimal way. Further to the methods from above EMC also utilizes evolutionary algorithms for testing. Covering all available use cases as well as functional and non-functional requirements, simulating real world operation scenarios for the embedded solutions being tested allow for top-notch product releases of our clients.