Dissertation of Ingo Stürmer:

Systematic Testing of Code Generation Tools - A Test Suite-oriented Approach for Safeguarding Model-based Code Generation

Systematic Testing of Code Generation Tools
click here to enlarge image
Available at publisher's site or at Amazon (EUR 14,95)

Abstract

The adoption of model-based development techniques for the design of embedded software has had a major impact on today's industry. In this context, the model-based code generation approach plays a key role. Model-based code generation promises significant efficiency improvement in contrast to manual programming, provided that no errors are introduced by the tool. In many cases, optimisations are the main sources of error. Currently, there is a lack of methods that allow a comprehensive and largely automated test of the optimisations. The test approach proposed in this thesis closes this gap. The test approach provides and integrates solutions for four major challenges in code generator testing, particularly with regard to testing code generator optimisations:
  1. A procedure for identifying code generator test cases, i.e. test models, which are highly likely to reveal code generator implementation bugs.
     
  2. A method for generationg test data that can be used to compare the test models and the code generated from them for functional equivalence.
     
  3. A test result evaluation method that can be used to check the test results, concerning the required test data, for validity with respect to the dynamic properties of model simulation and code execution.
     
  4. A test environment that makes it possible to connect the different testing tools as well as to manage, control, and document the testing process. The experimental setting of the test environment should be selected in such a way that possible sources of error in the tool-chain can be revealed.
The test approach presented provides possible solutions for these problems. More specifically, test case design is based on a partial specification of the optimisations in terms of graph transformation rules. This has the advantage that the model translation process, which in principle depends on the transformation of graphs, is specified in an abstract and formal way. Furthermore, implementation details are also taken into account for testing, which constitutes a good basis for test case, or, to be more precise, test model design. Most of the test models are generated by a model generator, developed specifically for this purpose. The required test data are extracted by means of the structural test. The test data allows sufficient coverage of functional properties on model level as well as on code level. Test result evaluation is carried out using signal comparison methods. In this context, the dynamic behaviour of model simulation and code execution are taken into consideration. The test approach is realised by means of a modular test suite as a central part of an automated test environment. This thesis shows, if the test suite passes successfully, this indicates the adequate safeguarding of the code generator optimisations.

Zusammenfassung

Der Einsatz modellbasierter Entwicklungsmethoden für die Entwicklung eingebetteter Software ist für die Industrie von hoher Bedeutung. Der Modellbasierten Codegenerierung kommt dabei eine Schlüsselrolle zu, da sie deutliche Effizienzgewinne gegenüber der traditionellen Programmierung ermöglicht. Voraussetzung hierfür ist aber, dass bei der automatischen Übersetzung bereits getesteter Modelle keine Fehler in die Software eingebracht werden. Häufige Fehlerquellen können hierbei Optimierungstechniken sein. Es mangelt derzeitig an Testmethoden, die solche Optimierungen umfassend und weitgehend automatisiert prüfen. Diese Lücke soll das hier vorgestellte Testverfahren schließen; es bietet und integriert Lösungsmöglichkeiten für vier zentrale Problemfelder beim Test von Codegeneratoren und deren Optimierungen:
  1. Eine Vorgehensweise die es ermöglicht Testfälle -also zu übersetzende Modelle- zu entwerfen, die mit hoher Wahrscheinlichkeit einen Fehler in der Implementierung der Optimierung aufdecken.
     
  2. Eine Methodik zur Erzeugung von Testdaten, die es erlauben die Testmodelle und den daraus generierten Code auf funktionale Gleichheit zu überprüfen.
     
  3. Ein Testauswerteverfahren, das die Testergebnisse auf Gültigkeit überprüft. Dem Vergleich der dynamischen Eigenschaften bei der Modellsimulation und der Codeausführung im Hinblick auf die benötigten Testdaten kommt dabei eine zentrale Rolle zu.
     
  4. Eine Testumgebung, die es ermöglicht, die verschiedenen Testwerkzeuge zu koppeln und den Testablauf zu verwalten, zu steuern und zu dokumentieren. Der Aufbau der Testumgebung sollte so gewählt sein, dass mögliche Fehlerquellen in der Werkzeugkette aufgedeckt werden können.
Die Verwendung einer Spezifikation der Optimierungen, die einerseits den Übersetzungsprozess der Modelle abstrakt und formal beschreibt und andererseits Implementierungsdetails für den Testfallentwurf berücksichtigt, verspricht den wirkungsvollen Entwurf von Testfällen. Da der Übersetzungsprozess vom Modell zum Code im Wesentlichen auf der Transformation von Graphen beruht, werden Graph Transformationsregeln als Basis für den Testfallentwurf verwendet. Die automatische Erzeugung der Testmodelle erfolgt über einen hierfür entwickelten Modellgenerator. Die benötigten Testdaten werden über einen kombinierten Strukturtest auf Modell- und Codeebene gewonnen. Diese Testdaten erlauben eine hinreichende Überdeckung funktionaler Eigenschaften des Modells und Codes. Die Auswertung der Testergebnisse wird über Signalvergleichsverfahren ermöglicht, die das dynamische Verhalten der Modellsimulation und der Codeausführung berücksichtigen. Die Realisierung des Testverfahrens erfolgt über eine modulare Testsuite als zentraler Bestandteil einer automatisierten Testumgebung. Die vorliegende Arbeit zeigt, dass ein erfolgreiches Durchlaufen der Testsuite eine hinreichende Absicherung der Optimierungen des Codegenerators ermöglicht.

© 1998-2006 Ingo Stürmer, www.ichmaschine.de (last update: 05/2006)