WO2011047901A1 - Verfahren und vorrichtung zum testen eines systems mit zumindest einer mehrzahl von parallel ausführbaren softwareeinheiten - Google Patents

Verfahren und vorrichtung zum testen eines systems mit zumindest einer mehrzahl von parallel ausführbaren softwareeinheiten Download PDF

Info

Publication number
WO2011047901A1
WO2011047901A1 PCT/EP2010/062148 EP2010062148W WO2011047901A1 WO 2011047901 A1 WO2011047901 A1 WO 2011047901A1 EP 2010062148 W EP2010062148 W EP 2010062148W WO 2011047901 A1 WO2011047901 A1 WO 2011047901A1
Authority
WO
WIPO (PCT)
Prior art keywords
software
adjustable
testing
execution
unit
Prior art date
Application number
PCT/EP2010/062148
Other languages
English (en)
French (fr)
Inventor
Florian Mangold
Harald RÖLLE
Original Assignee
Siemens Aktiengesellschaft
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Siemens Aktiengesellschaft filed Critical Siemens Aktiengesellschaft
Priority to US13/503,535 priority Critical patent/US8972784B2/en
Publication of WO2011047901A1 publication Critical patent/WO2011047901A1/de

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites

Definitions

  • the invention relates to a method and apparatus for testing a system having at least a plurality of paral lel ⁇ executable software units.
  • the technical field of the invention relates to the testing of asynchronously operating software units of a system in order to detect synchronization errors in the synchronization of the asynchronously operating software units.
  • synchronization error refers to a software error, which is caused by defective or inadequate synchronization of the soft ware ⁇ units of the system.
  • race condition refers to the possibility that a software error may occur and does not have to occur every time the system is run. Such a race condition can occur during the execution of the system such as by non ⁇ deterministic side effects. Thus, race conditions are non-deterministic and unwanted effects, and thus errors that can occur due to parallelism in the system.
  • race conditions are errors that can occur in programs and cause them to show non-deterministic behavior.
  • Races are errors in programs that access and modify shared data in a critical area.
  • the generic term “Races” is used in the present application for both race conditions as well as used for data races.
  • Multitasking systems are used, among other things, for improved user interaction. Such multitasking systems must also be using software entspre ⁇ accordingly to multitasking, ie parallel processing of related instructions or threads, designed and implemented.
  • the perspective here is the performance enhancement of a system with potentially a plurality of concurrent programs.
  • a method for testing a system having at least ⁇ a plurality of parallel units is proposed executable Softwareein- which are adapted to the respective execution of a thread and to provide a common result and which have a respective programmed run time duration of the execution.
  • the procedure has the following steps:
  • Testing includes varying the at least one adjustable runtime duration for detecting synchronization errors of the system.
  • a system comprises a plurality of software units which can be executed in parallel and operate in particular asynchronously with one another.
  • the respective software unit has at least one program and data on .
  • system may include external factors such as hardware units, an operating system, and optionally other programs.
  • software units and the hard ⁇ ware units can interact with each other and influence each other.
  • a program consists of modules.
  • a module is a structurally related code.
  • a program code is preferably divided into different modules [12].
  • the software units, the hardware units and the modules can interact with each other and influence each other.
  • asynchronous operations can be added.
  • a scheduler or control program is preferably provided. This scheduler itself must be non-deterministic and can be preemptive. Thus, a discrete code becomes a non-deterministic and chaotic system that is difficult to control and needs to be checked for correctness. Checking for correctness of the system by means of a
  • the software test in IEEE Standard 610 is defined as a process of operating a system or component under defined conditions, observing and recording the results and evaluating some aspects of the system or components.
  • Empirical experiments in software engineering are described in [8].
  • certain properties in this case at least the running time or optionally further run-time properties, are changed or varied in order to deduce relationships from the observed system analogously to an experiment from the scientific disciplines.
  • Changing the runtime properties of software units becomes possible through replication, such as virtualization and / or emulation. Since a system can consist of a wide variety of software units, the runtime characteristics of a wide variety of software units can be varied and monitored.
  • the varying comprises a repeated, successive setting of the respective runtime property.
  • individual software units of the system are purposefully changed with regard to their running time. Such a change may be prolongation (prolonging), shifting (retarding) or shortening (simulated optimization). Furthermore, the start time and / or the end time of execution of the software unit can be changed. The retarding or prolonging of the respective software unit is carried out by the test agent according to the invention.
  • the system itself is preferably executed by a virtual machine.
  • the test means checks the system, in particular by means of a test code, as to whether any guarantee of synchronization can be maintained in every possible combination of running time and time.
  • the developer or tester who operates the test means according to the invention can specify which software unit is extended, slowed down or retarded for testing by what length of time.
  • This lengthening, slowing or retarding can also be done successively, for example at 5, 15, 20 ms.
  • this lengthening, Slowing down or slowing down can also be measured as a percentage of the total time of execution.
  • the developer can specify a vector by means of the test agent for each software unit, which describes the time period or the specific software unit to be longiert or retarded per ⁇ to how much per cent of the total time of the execution. This then yields a vector of vectors for a particular test case which describes the behavior of the software units.
  • test agent which comprises, for example, an x-unit test framework
  • the result of the prolongation and retardation is checked. If the test succeeds for all tested intervals, the probability of a synchronization error is very low. If a synchronization error occurs, the corresponding software unit must be reengineering to eliminate the error.
  • the respective software unit is using software implemen ⁇ advantage.
  • the respective software unit can be used as Computerpro ⁇ program product, as a function, as a routine, be formed as part of a program code, as a module or as part of a module or an executable object.
  • a computer program product which, on a program-controlled device, carries out a method as described above for testing a Nes system with at least a plurality of parallel out ⁇ feasible software units causes.
  • a computer program product such as a computer program means can be used, for example, as a storage medium, such as a memory card,
  • USB stick floppy, CD-ROM, DVD or even in the form of a downloadable file from a server in a network provided or delivered. This can be done for example in ei ⁇ nem wireless communication network by the transmission of a corresponding file with the computer program product or the computer program means.
  • an apparatus for testing a system having at least ⁇ a plurality of parallel units is proposed executable Softwareein- which are adapted to the execution of a thread and to provide a common result and which have a respective programmed run time duration of the execution.
  • the apparatus has a changing means for changing a predetermined running time duration of at least one software unit into an adjustable running time period and a
  • Test means for testing the system wherein the test means is adapted to vary the at least one adjustable duration ⁇ duration for the detection of synchronization errors of the system.
  • the respective means, changing means and testing means can be implemented by hardware technology or also by software.
  • the respective means may be designed as a device, for example as a computer, microprocessor, device or even as part of a system, for example as a computer system.
  • the respective means can be a computer program product, as a function, as a Rou ⁇ tine be formed ject as part of a program code or executable Obwalden.
  • a current trend in science and industry is the virtualization of resources and services.
  • a partial Biet of this is the visualization of hosts and operating systems ⁇ .
  • a large number of so-called virtual machines is realized on an end system. These virtual machines introduce themselves to the user as a standalone sys- tems are.
  • To this end hardware units and Softwareeinhei ⁇ th are simulated and thus replicated virtually.
  • the virtual hardware units or hardware components are replicated so that the normal or correct functionality of the real hardware counterpart is emulated as accurately as possible.
  • this objective is thwarted in terms of virtualization in the sense that now the stepless and selective slowness and delay as performance or performance degradation of the respective software unit becomes a central feature.
  • This is explicitly introduced into the test agent or the hypervisor.
  • the software units are supplemented or extended in such a way that their performance can be adjusted individually and dynamically by the test means, for example the test framework.
  • empirical experiments on the software tests become possible.
  • synchronization errors can be found inexpensively in a system of a plurality of asynchronously operating software units.
  • the main advantage of the present invention ⁇ is the fact that dedicated software units or software modules can be changed in their life.
  • the performance of the hardware units can be adapted. But precisely this can lead to a differing ⁇ chen hardware configuration of the target system to sync ⁇ errors.
  • the invention a better and above all more realistic test coverage can be ensured.
  • the order can be changed to analyze the synchronization behavior, but overall the Ab ⁇ running behavior, so the performance characteristics of the modules or hardware components.
  • the temporal behavior but also the order is changeable. Consequently, no serialization is required, which in particular allows testing on truly parallel platforms and thus better reflects the hardware conditions on the actual target systems.
  • the high level of hardware heterogeneity guarantees improved test case coverage.
  • synchronization errors occur due to different performance characteristics of the hardware, which can not be covered, for example, by the presented dynamic analysis.
  • the present invention gives an analyst, tester or software engineer valuable information about possible synchronization errors.
  • the present invention it is also possible to test situations that were conventionally excluded from testing so far.
  • an improved test case coverage as well as a time saving and a cost saving in testing can be achieved.
  • the present invention enables automation of testing and testing of a variety of systems. This results in significant time and réelleer ⁇ sparnisse and a higher security and floristredu ⁇ cation of the tested product.
  • model checking According to an approach known as model checking (see [11]) According to the invention, no formal model or formula needs to be specified. Furthermore, only smaller systems can be verified by means of model checking. By contrast, the present invention is more suitable for the software industry and thus also for larger projects. While using synchronization errors are discovered model-checking Kings ⁇ nen, but the system under test must be available as formula or Systembe ⁇ scription, which is rarely the case in industrial environments. Furthermore, the state space usually grows disproportionately with the size of the system to be tested. Since ⁇ with only smaller systems or programs using model checking verifiable. The reasons here are in particular the necessary memory size and a disproportionate amount of time.
  • the code or software code must be present as a whole.
  • Chess reorders possible execution combinations and forces execution to single-threaded [9]; Page 7]. In this citation, it is further mentioned that this does not allow full coverage of data races, which can lead to egg ⁇ nigen not found errors.
  • Another problem with the tools "Chess" is real Hardwareparalleli ⁇ ty. It is likely that in a real Paralleli ⁇ ty as opposed to a pseudo parallelism error th occurring that can not be found by the permutation of possible execution orders.
  • predetermined runtime characteristics of the execution of the respective software unit are formed by the programmed runtime duration of the execution of the respective software unit, by a start time of the execution and by an end time of the execution.
  • the programmed running time duration of at least one software unit is changed to an adjustable running time duration.
  • the predetermined start time of at least one software unit is changed to an adjustable start time.
  • the predetermined end time of at least one software unit is changed in ei ⁇ nen adjustable end time.
  • start and end time and run time can be artificially varied to reproduce after a relatively short time synchronization errors and thus to find.
  • the testing of the system includes varying the at least one adjustable running time duration and varying the at least one adjustable starting time and / or varying the at least one adjustable end time.
  • the execution timing of the Softwareein ⁇ units is delayed. This corresponds, for example, to the case where a software unit does not belong to the predefined one
  • the execution time of the software unit can be extended. This corresponds, for example, to the case when a software unit takes longer to process a predetermined task. This is called prolongieren be distinguished ⁇ .
  • changing at least one of the runtime properties of the execution of the respective software unit to provide at least one adjustable runtime property is formed by changing a code of the respective software unit.
  • changing at least one of the runtime characteristics of the execution of the respective software unit to provide at least one adjustable runtime property is formed by: providing a number of hardware units which are set up to execute the software units;
  • Replica of the respective hardware unit to provide a respective replica hardware unit; and Expanding the respective replica hardware unit such that at least one of the runtime properties of the replica hardware unit, by which the respective software means is executed at the execution time of the software means, is adjustable.
  • the respective simulated hardware unit may be designed as a computer program product, as part of a program code, as a module or as part of a module or as an executable object.
  • the simulated Hardwareeinhei- periods for example virtualized hardware components, ⁇ art complement or extend that their performance can be set from the test agent individually and dynamically to detect insufficient synchronization of the system.
  • the test medium is extended according to the invention by interfaces that are accessible from the test framework.
  • the performance of the software units and the replicated hardware units can be finely granular, for example down to microinstruction level, and set dynamically.
  • test methodology for a system according to the invention is basically extended.
  • Software is susceptible to race conditions and synchronization errors. Conventionally, these errors can only be discovered at random in a conventional test process.
  • the present invention reduces the risk that these errors will not be found, especially if the target systems differ from the test and development systems.
  • a different configuration may be used on the target system as on the test and development system.
  • the simulation of the respective hardware unit is designed as a virtualization or as an emulation.
  • the testing of the system for providing of test result data carried out, wherein a predeterminable number of Collector ⁇ voted and is suppressed to be examined synchronization measures for synchronizing the software units during testing, and testing with the ligated synchronization measures will be completed wherein the facedge presented ⁇ test result data is validated for the detection of the unnecessary synchronization measures.
  • Synchronization is preferably used as a security mechanism, but can also slow down a system.
  • a synchronization locks an object, so that other parallel from ⁇ guides can not access this object.
  • Syn ⁇ chronisations measure when running the system in a dedi- ed manner, in particular to detect race conditions, because only the risk of possible race conditions require synchronization.
  • the synchronization measures investigated by the testing are determined as unnecessary synchronization measures in the case of a positive validation of the provided test result data.
  • varying the at least one adjustable running time duration is as an extension of the running time duration by a predeterminable time duration educated .
  • test composition of the invention comprises in particular ⁇ sondere a specially designed virtual machine in order to facilitate the developer or tester to work and to automate the test.
  • the developer can specify for each software unit a vector which describes by which time period or by what percentage of the total time of execution the respective software unit should be extended or retarded. This then yields a vector of vectors for a particular test case which describes the behavior of the software units.
  • a plurality of predetermined run time durations of a plurality of software units are changed for the provision of respectively adjustable runtime durations.
  • synchronization errors can advantageously be found in the majority of asynchronously operating software units.
  • the testing includes varying the plurality of adjustable durations of the plurality of software units.
  • Fig. 1 is a schematic flow diagram of a first
  • Fig. 2 is a schematic flow diagram of a second
  • Embodiment of a method for testing a system with a plurality of parallel executable software units a schematic flow diagram of a third embodiment of a method for testing a system with a plurality of parallel executable software units;
  • Fig. 4 is a schematic block diagram of an exporting ⁇ approximately example of an apparatus for testing a system having a plurality of parallel detailed cash software units.
  • Fig. 1 shows a schematic flow diagram of a first embodiment of a method for testing a Sys tems ⁇ with a plurality of parallel executable software units.
  • the parallel executable software units are adapted to respectively execute a thread and to provide a common result.
  • the respective software ⁇ unit has a respective programmed or encoded run time of execution.
  • the respective software unit comprises, for example, a program and data.
  • the first embodiment of the method according to the invention 1 has the following method steps 101 to 103:
  • the programmed running time of at least one software unit is changed to an adjustable running time.
  • a test means 3 (see Fig. 3) for validating the system and setting the at least one adjustable run time is provided.
  • the system is tested by means of the test means for providing test results.
  • the testing includes varying the at least one adjustable run time to detect synchronization errors of the system.
  • the varying of the at least one setting ⁇ cash running time is formed as lengthening the running period to a predetermined time period.
  • the varying may also be designed as a shortening of the running time duration by a predetermined or predeterminable time duration.
  • Fig. 2 shows a schematic flow diagram of a second embodiment of a method for testing a Sys ⁇ tems having a plurality of parallel executable software units which are adapted to the respective execution of a thread and to provide a common result and which have a respective programmed run time duration of the execution.
  • the predetermined or programmed run-time properties are trained det by the predetermined running time duration of the execution of the respective software unit, by a time of starting the off ⁇ guide and an end time of execution.
  • the predetermined running time period is at least one software unit in an adjustable runtime unit geän ⁇ changed.
  • the predetermined start timing is changed preferably at least one software unit in a cash adjustment ⁇ start time.
  • the predetermined end timing of at least one soft ware ⁇ unit is changed in an adjustable end time.
  • Changing at least one of the runtime characteristics of the execution of the respective software unit is formed, for example, by changing a code of the respective software unit.
  • the change may be formed at least one of the run-time properties of the execution of the respective software unit for providing at least one adjustable run-time property by the following partial steps: A number of hardware units is provided which are adapted to the software unitshorizonar ⁇ BEITEN.
  • the respective hardware unit is modeled to provide a respective replica hardware unit.
  • the emulation can be virtualizing or emulating.
  • the respective simulated hardware unit is extended such that at least one of the runtime properties of the simulated hardware unit, by which the respective software means is executed at the execution time of the soft ⁇ warestoffs, is adjustable.
  • the respective Hardware unit is designed for example as a computer, Mikroprozes ⁇ sor, device or as part of a computer system. Step 202:
  • a test means 3 (see Fig. 3) is provided for validating the Sys tems ⁇ and for setting the settable Laufzeiteigenschaf- th.
  • the system is tested to provide test result data.
  • a predeterminable number of predetermined synchronization measures to be examined for the synchronization of the software units during the testing is prevented.
  • the testing is conducted with the ligated synchronization action to end, the provided test ⁇ result data for detection of unnecessary synchronization measures are validated.
  • FIG. 3 shows a schematic flowchart of a third exemplary embodiment of a method for testing a system having a plurality of software units that can be executed in parallel.
  • the third embodiment of FIG. 3 has the method steps 301 to 303:
  • a plurality of programmed or predetermined durations of a plurality of software units are changed to provide each adjustable run time.
  • Process step 302 A test means 3 (see Fig. 3) for validating the system and setting the at least one adjustable run time is provided.
  • Step 303
  • the testing of the system is Runaway ⁇ transferred by means of the test agent, wherein said testing includes varying the plurality of single adjustable overflow time durations of the plurality of software entities for the detection of synchronization errors of the system.
  • FIG. 4 shows a schematic block diagram of an embodiment of an apparatus 1 for testing a system with a plurality of software units that can be executed in parallel.
  • the parallel executable software units are configured to execute a thread and to provide a common result and have a respective programmed run time of execution.
  • the changing means 2 is adapted to change at least one changing means 2, and a test means a program ⁇ -programmed or predetermined running time period of at least one soft ware ⁇ unit in an adjustable run time.
  • represents the changing means 2 provided on the output side at least ei ⁇ ne modified software unit. 4
  • the test means 3 is configured to test the system to Be ⁇ riding position of test result data. 5
  • the testing is set up to vary the at least one adjustable running time duration of the at least one changed software unit 4 for detecting synchronization errors of the system.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Erfindungsgemäß wird eine programmierte Laufzeitdauer zumindest einer Softwareeinheit in eine einstellbare Laufzeitdauer geändert. Weiter wird ein Testmittel zum Validieren des Systems und zum Einstellen der zumindest einen einstellbaren Laufzeitdauer bereitgestellt. Ferner wird das System mittels des Testmittels getestet, wobei das Testen ein Variieren der zumindest einen einstellbaren Laufzeitdauer zur Detektion von Synchronisationsfehlern des Systems beinhaltet. Somit wird ein Test eines Systems mit Softwareeinheiten auf Synchronisationsfehler durch gezielte Änderung der Laufzeitdauern ermöglicht. Ein Blockschaltbild für eine entsprechende Vorrichtung, Ablaufdiagramme für entsprechende Verfahren und ein Computerprogramm-Produkt zur Durchführung eines solchen Verfahrens sind angegeben.

Description

Beschreibung
Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinhei- ten
Die Erfindung betrifft ein Verfahren und eine Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von paral¬ lel ausführbaren Softwareeinheiten.
Das technische Gebiet der Erfindung betrifft das Testen von asynchron arbeitenden Softwareeinheiten eines Systems, um Synchronisationsfehler bei der Synchronisation der asynchron arbeitenden Softwareeinheiten zu detektieren.
Im Sinne der vorliegenden Anmeldung bezieht sich der Begriff Synchronisationsfehler auf einen Softwarefehler, der durch fehlerhafte oder nicht ausreichende Synchronisation der Soft¬ wareeinheiten des Systems verursacht ist.
Ein spezieller Fall eines Synchronisationsfehlers ist eine so genannte Race Condition. Eine Race Condition bezieht sich auf die Möglichkeit, dass ein Softwarefehler auftreten kann und nicht bei jeder Ausführung des Systems auftreten muss. Eine solche Race Condition kann beispielsweise durch nicht¬ deterministische Seiteneffekte bei der Ausführung des Systems auftreten. Somit sind Race Conditions nicht-deterministische und ungewünschte Effekte, und damit Fehler, welche aufgrund von Parallelität im System auftreten können.
[10; S.75] präzisiert, formalisiert und erweitert den Begriff der Race Conditions. Demnach sind Race Conditions Fehler, welche in Programmen auftreten können und bewirken, dass solche ein nicht-deterministisches Verhalten zeigen.
Data Races hingegen sind Fehler in Programmen, bei denen auf gemeinsam genutzte Daten in einem kritischen Bereich zugegriffen und diese verändert werden. Der Oberbegriff "Races" wird in der vorliegenden Anmeldung sowohl für Race Conditions als auch für Data Races benutzt.
Der Einsatz asynchron arbeitender Softwareeinheiten zur Abarbeitung paralleler Anweisungsblöcke hat mehrere Gründe. Ein wichtiger Grund liegt in der Effizienzsteigerung durch eine verbesserte Auslastung des Systems, beispielsweise eines Rechnersystems. Während das Softwaresystem auf die Eingaben eines Benutzers warten muss, können während dieser Wartezeit andere Berechnungen, Datenzugriffe oder dergleichen durchge- führt werden. Bei einer sequenziellen Ausführung ist dies nicht möglich. Durch eine parallele Ausführung steht das ge¬ samte Softwaresystem damit schneller wieder für eine neue Benutzerinteraktion bereit. Damit wirkt das System performan- ter, weil der Durchsatz erhöht wurde. Die Perspektive hier ist die Performanzsteigerung eines einzelnen Programms.
Ein weiterer Grund für den Einsatz von parallel und asynchron arbeitenden Softwareeinheiten liegt in der Verwendung von Multitasking-Systemen. Multitasking-Systeme werden unter an- derem zur verbesserten Benutzerinteraktion eingesetzt. Solche Multitasking-Systeme müssen auch softwaretechnisch entspre¬ chend auf Multitasking, also auf eine parallele Abarbeitung von zusammenhängenden Anweisungen oder Threads, konstruiert und implementiert werden. Die Perspektive hier ist die Per- formanzsteigerung eines Systems mit potenziell einer Mehrzahl gleichzeitig ausgeführter Programme.
Somit müssen zur Effizienzsteigerung und aufgrund neuer Rechnerarchitekturen Softwaresysteme hinsichtlich paralleler Ab- arbeitung konstruiert und implementiert werden. Beispielswei¬ se Server-Systeme basieren in hohem Maße auf einer solchen Parallelität. Die daraus resultierenden vielgestaltigen parallelen Interaktionen in der Software sind für einen Menschen, insbesondere für einen Tester, nur schwer zu überbli- cken. Die einzelnen parallelen Abarbeitungslinien müssen zur Abarbeitung einer Aufgabe irgendwann, spätestens am Ende der Abarbeitung, wieder in korrekter Weise synchronisiert werden. Dies birgt ein enormes Fehlerpotenzial. Zusammenfassend ist ein asynchroner Betrieb von Softwareeinheiten oder Softwarekomponenten immer mehr gewünscht. Ausreichende Validierungsmethoden sind jedoch im Stand der Technik nicht vorhanden. Nach einer Untersuchung von Javacode durch David Hovemeyer und William Pugh [7] sind Synchronisations¬ fehler eher die Regel als die Ausnahme.
Demnach ist es eine Aufgabe der vorliegenden Erfindung, eine verbesserte Möglichkeit zur Detektion von Synchronisations¬ fehlern eines Systems mit einer Mehrzahl asynchron arbeitender Softwareeinheiten zu schaffen.
Erfindungsgemäß wird diese gestellte Aufgabe durch ein Ver- fahren mit den Merkmalen des Patentanspruchs 1 und durch eine Vorrichtung mit den Merkmalen des Patentanspruchs 14 gelöst.
Demgemäß wird ein Verfahren zum Testen eines Systems mit zu¬ mindest einer Mehrzahl von parallel ausführbaren Softwareein- heiten vorgeschlagen, welche zur jeweiligen Ausführung eines Threads und zur Bereitstellung eines gemeinsamen Ergebnisses eingerichtet sind und welche eine jeweilige programmierte LaufZeitdauer der Ausführung haben. Das Verfahren hat folgende Schritte:
- Ändern der vorbestimmten LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare LaufZeitdauer ;
- Bereitstellen eines Testmittels zum Validieren des Systems und zum Einstellen der zumindest einen einstellbaren Laufzeitdauer; und
- Testen des Systems mittels des Testmittels, wobei das
Testen ein Variieren der zumindest einen einstellbaren Laufzeitdauer zur Detektion von Synchronisationsfehlern des Systems beinhaltet. Im Sinne der vorliegenden Anmeldung umfasst ein System eine Mehrzahl von parallel ausführbaren Softwareeinheiten, die insbesondere asynchron zueinander arbeiten. Dabei weist die jeweilige Softwareeinheit zumindest ein Programm und Daten auf .
Des Weiteren kann das System externe Faktoren, wie Hardwareeinheiten, ein Betriebssystem und optional andere Programme, umfassen. Insbesondere die Softwareeinheiten und die Hard¬ wareeinheiten können miteinander agieren und sich gegenseitig beeinflussen .
Ein Programm besteht wiederum aus Modulen. Ein Modul ist ein strukturell zusammengehöriger Code. Ein Programmcode wird vorzugsweise in verschiedene Module gegliedert [12].
Die Softwareeinheiten, die Hardwareeinheiten sowie die Module können miteinander agieren und sich gegenseitig beeinflussen. Unter anderem können asynchrone Operationen hinzukommen. Zur Steuerung der zeitlichen Ausführung von nebenläufigen Arbeitslinien oder Threads ist vorzugsweise ein Scheduler oder Steuerprogramm vorgesehen. Dieser Scheduler muss selbst nicht-deterministisch sein und kann weiter unterbrechend (preemptiv) sein. Somit wird aus einem diskreten Code ein nicht-deterministisches und chaotisches und dadurch nur schwer beherrschbares System, das auf Korrektheit überprüft werden muss. Das Überprüfen auf Korrektheit des Systems mittels eines
Softwaretests wird hierbei als Validierung bezeichnet. Erfin¬ dungsgemäß wird damit ein herkömmlicher Softwaretest mit ei¬ nem empirischen Experiment hinsichtlich der Variation der LaufZeiteigenschaften kombiniert. Durch diese erfindungsgemä- ße Kombination können Sychronisationsfehler aufgefunden werden .
Dabei ist der Softwaretest im IEEE Standard 610 definiert als ein Prozess des Betreibens eines Systems oder einer Komponen- te unter definierten Bedingungen, wobei die Ergebnisse beobachtet und aufgenommen werden und eine Evaluierung mancher Aspekte des Systems oder Komponenten gemacht wird. Empirische Experimente in der Softwaretechnik werden in [8] beschrieben. Hierbei werden bestimmte Eigenschaften, vorliegend zumindest die LaufZeitdauer oder fakultativ weitere LaufZeiteigenschaften, verändert oder variiert, um analog zu einem Experiment aus den naturwissenschaftlichen Disziplinen Zusammenhänge aus dem beobachteten System abzuleiten. Das Verändern der LaufZeiteigenschaften von Softwareeinheiten wird durch die Nachbildung, beispielsweise die Virtualisie- rung und/oder die Emulierung, möglich. Da ein System aus un- terschiedlichsten Softwareeinheiten bestehen kann, können die LaufZeiteigenschaften unterschiedlichster Softwareeinheiten variiert und beobachtet werden.
Dabei umfasst das Variieren insbesondere ein mehrmaliges, aufeinanderfolgendes Einstellen der jeweiligen Laufzeiteigen- schaft .
Beim erfindungsgemäßen Testen werden einzelne Softwareeinheiten des Systems hinsichtlich ihrer LaufZeitdauer gezielt ver- ändert. Ein solches Verändern kann ein Verlängern (Prolongieren) , Verschieben (Retardieren) oder Verkürzen (simuliertes Optimieren) sein. Des Weiteren kann der StartZeitpunkt und/oder der Endzeitpunkt der Ausführung der Softwareeinheit verändert werden. Das Retardieren oder Prolongieren der je- weiligen Softwareeinheit wird von dem erfindungsgemäßen Testmittel durchgeführt. Das System selbst wird vorzugsweise durch eine virtuelle Maschine ausgeführt. Das Testmittel überprüft das System insbesondere mittels eines Testcodes, ob in jeder möglichen Kombination aus LaufZeitdauer und Zeit- punkt jede Zusicherung der Synchronisation gehalten werden kann .
Beispielsweise kann der Entwickler oder Tester, der das erfindungsgemäße Testmittel bedient, angeben, welche Software- einheit zum Testen um welche Zeitdauer verlängert, verlangsamt oder retardiert wird. Dieses Verlängern, Verlangsamen oder Retardieren kann auch sukzessive geschehen, beispielsweise um 5, 15, 20 ms. Des Weiteren kann dieses Verlängern, Verlangsamen oder Retardieren auch prozentual an der Gesamtzeit der Ausführung bemessen werden. Hier ist es vorteilhaft, Anleihen aus bestimmten Optimierungsverfahren, wie beispielsweise Simulated Annealing [13] oder anderen heuristische Me- thoden, zu machen.
Weiter wird vorzugsweise eine Kombination von Softwareeinhei¬ ten hinsichtlich ihrer LaufZeitdauer verändert, beispielsweise prolongiert. Das Prolongieren selber übernimmt ein Test- Framework des Testmittels mit der speziell konstruierten virtuellen Maschine, um so dem Entwickler oder Tester die Arbeit zu erleichtern und den Test zu automatisieren.
Beispielsweise kann der Entwickler mittels des Testmittels für jede Softwareeinheit einen Vektor angeben, der beschreibt, um welche Zeitdauer oder um wie viel Prozent der Gesamtzeit der Ausführung die jeweilige Softwareeinheit pro¬ longiert oder retardiert werden soll. Dies ergibt dann für einen speziellen Testfall einen Vektor von Vektoren, welcher das Verhalten der Softwareeinheiten beschreibt.
Mit dem erfindungsgemäßen Testmittel, das beispielsweise ein x-Unit-Test-Framework umfasst, wird das Ergebnis der Prolongation und Retardation überprüft. Gelingt der Test für alle geprüften Intervalle, so ist die Wahrscheinlichkeit für einen Synchronisationsfehler sehr gering. Tritt ein Synchronisationsfehler auf, muss die entsprechende Softwareeinheit einem Reengineering zugeführt werden, um den Fehler zu beseitigen. Die jeweilige Softwareeinheit ist softwaretechnisch implemen¬ tiert. Die jeweilige Softwareeinheit kann als Computerpro¬ grammprodukt, als eine Funktion, als eine Routine, als Teil eines Programmcodes, als Modul oder als ein Teil eines Moduls oder als ausführbares Objekt ausgebildet sein.
Weiterhin wird ein Computerprogrammprodukt vorgeschlagen, welches auf einer programmgesteuerten Einrichtung die Durchführung eines wie oben erläuterten Verfahrens zum Testen ei- nes Systems mit zumindest einer Mehrzahl von parallel aus¬ führbaren Softwareeinheiten veranlasst.
Ein Computerprogramm-Produkt wie ein Computerprogramm-Mittel kann beispielsweise als Speichermedium, wie Speicherkarte,
USB-Stick, Floppy, CD-ROM, DVD oder auch in Form einer herunterladbaren Datei von einem Server in einem Netzwerk bereitgestellt oder geliefert werden. Dies kann zum Beispiel in ei¬ nem drahtlosen Kommunikationsnetzwerk durch die Übertragung einer entsprechenden Datei mit dem Computerprogramm-Produkt oder dem Computerprogramm-Mittel erfolgen.
Ferner wird eine Vorrichtung zum Testen eines Systems mit zu¬ mindest einer Mehrzahl von parallel ausführbaren Softwareein- heiten vorgeschlagen, welche zur Ausführung eines Threads und zur Bereitstellung eines gemeinsamen Ergebnisses eingerichtet sind und welche eine jeweilige programmierte LaufZeitdauer der Ausführung haben. Die Vorrichtung hat ein Änderungsmittel zum Ändern einer vorbestimmten LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare LaufZeitdauer und ein
Testmittel zum Testen des Systems, wobei das Testmittel dazu eingerichtet ist, die zumindest eine einstellbare Laufzeit¬ dauer zur Detektion von Synchronisationsfehlern des Systems zu variieren.
Das jeweilige Mittel, Änderungsmittel und Testmittel, kann hardwaretechnisch oder auch softwaretechnisch implementiert sein. Bei einer hardwaretechnischen Implementierung kann das jeweilige Mittel als Vorrichtung, zum Beispiel als Computer, Mikroprozessor, Einrichtung oder auch als Teil eines Systems, zum Beispiel als Computer-System, ausgebildet sein. Bei einer softwaretechnischen Implementierung kann das jeweilige Mittel als Computerprogrammprodukt, als eine Funktion, als eine Rou¬ tine, als Teil eines Programmcodes oder als ausführbares Ob- jekt ausgebildet sein.
Ein aktueller Trend in Wissenschaft und Industrie liegt in der Virtualisierung von Ressourcen und Diensten. Ein Teilge- biet hiervon ist die Visualisierung von Hosts und Betriebs¬ systemen. Hierbei wird eine Vielzahl so genannter virtueller Maschinen auf einem Endsystem realisiert. Diese virtuellen Maschinen stellen sich für den Nutzer als eigenständige Sys- teme dar. Hierzu werden Hardwareeinheiten und Softwareeinhei¬ ten nachgebildet und somit virtuell repliziert. In bestehen¬ den Virtualisierungslösungen werden die virtuellen Hardwareeinheiten oder Hardwarekomponenten so nachgebildet, dass die normale oder korrekte Funktionalität des realen Hardware- Pendants möglichst exakt emuliert wird.
Gemäß der vorliegenden Erfindung wird diese Zielsetzung hinsichtlich Virtualisierung in dem Sinne konterkariert, dass nun die stufenlose und selektive Langsamkeit und Verzögerung als Performanz- oder Leistungsminderung der jeweiligen Softwareeinheit zu einer zentralen Eigenschaft wird. Diese wird explizit in das Testmittel oder den Hypervisor eingebracht. Demnach werden die Softwareeinheiten derart ergänzt oder erweitert, dass deren Performanz individuell und dynamisch vom Testmittel, beispielsweise dem Test-Framework, eingestellt werden kann. Somit werden empirische Experimente auf den Softwaretests möglich. Hierdurch können Synchronisationsfehler bei einem System aus einer Mehrzahl von asynchron arbeitenden Softwareeinheiten kostengünstig aufgefunden werden.
Zusammenfassend liegt der wesentliche Vorteil der vorliegen¬ den Erfindung darin, dass dedizierte Softwareeinheiten oder Softwaremodule in ihrer Laufzeit verändert werden können. Insbesondere kann die Performanz der Hardwareeinheiten ange- passt werden. Gerade dies kann aber auf einer unterschiedli¬ chen Hardwareausstattung des Zielsystems zu Synchronisations¬ fehlern führen.
Erfindungsgemäß kann eine bessere und vor allem realitätsge- treuere Testabdeckung gewährleistet werden. Erfindungsgemäß kann zur Analyse des Synchronisationsverhaltens nicht nur die Reihenfolge geändert werden, sondern insgesamt kann das Ab¬ laufverhalten, also die Performanzeigenschaften der Module oder Hardwarekomponenten, verändert werden. Somit ist nicht nur das zeitliche Verhalten, sondern auch die Ordnung veränderbar . Folglich ist keine Serialisierung erforderlich, was insbesondere ein Testen auf echt parallelen Plattformen erlaubt und somit die Hardwarebedingungen an den tatsächlichen Zielsystemen besser wider spiegelt. Des Weiteren ist durch die hohe Hardwareheterogenität eine verbesserte Testfallabdeckung ge- währleistet. So treten Synchronisationsfehler durch unterschiedliche Performanzeigenschaften der Hardware auf, was beispielsweise durch die vorgestellte dynamische Analyse nicht abgedeckt werden kann. Durch die vorliegende Erfindung gewinnt ein Analyst, Tester oder Softwareingenieur wertvolle Informationen über mögliche Synchronisationsfehler .
Insgesamt ist es gemäß der vorliegenden Erfindung möglich, auch Situationen zu testen, die herkömmlicher weise bislang vom Testen ausgeschlossen waren. Somit ergeben sich unter anderem die Vorteile, dass eine verbesserte Testfallabdeckung sowie eine Zeitersparnis und eine Kostenersparnis beim Testen erzielt werden können. Insbesondere ermöglicht die vorliegen- de Erfindung durch die Virtualisierung der Umgebung eine Automatisierung des Testens und ein Testen unterschiedlichster Systeme. Daraus resultieren erhebliche Zeit- und Kostener¬ sparnisse sowie eine höhere Sicherheit und eine Fehlerredu¬ zierung des getesteten Produkts.
Der Ansatz der vorliegenden Erfindung hat gegenüber den Ansätzen spezieller Programmiersprachen (siehe [2] und [3]) den Vorteil, dass die Erfindung in beliebige Programmiersprachen implementiert werden kann, diese erwähnten speziellen Pro- grammiersprachen allerdings nicht generell akzeptiert sind (siehe [ 7 ] ) .
Gemäß einem als Modelchecking bekannten Ansatz (siehe [11]) muss erfindungsgemäß kein formales Model oder eine Formel spezifiziert werden. Des Weiteren sind mittels Modelchecking nur kleinere Systeme verifizierbar. Die vorliegende Erfindung hingegen ist für die Softwareindustrie und damit auch für größere Projekte besser geeignet. Mittels Model-checking kön¬ nen zwar Synchronisationsfehler aufgefunden werden, das zu testende System muss allerdings als Formel oder Systembe¬ schreibung vorliegen, was im industriellen Umfeld eher selten der Fall ist. Des Weiteren wächst der Zustandsraum meist überproportional mit der Größe des zu testenden Systems. Da¬ mit sind nur kleinere Systeme oder Programme mittels Model- checking verifizierbar. Die Gründe hierin liegen insbesondere in der notwendigen Speichergröße und einem unverhältnismäßig langen Zeitbedarf.
Im Weiteren sollen die Vorteile der vorliegenden Erfindung gegenüber statischen Analyse-Methoden detailliert erläutert werden. Herkömmlicherweise existiert eine Klasse von Program¬ mierwerkzeugen, beispielsweise die Werkzeuge "FindBug" [1] und "RacerX" [5], die nach statischen Mustern im Softwarecode sucht. Neben der Fehleranfälligkeit der sogenannte "False Po¬ sitives", das heißt aufgefundene Fehler, die tatsächlich kei¬ ne solchen sind, hat der Ansatz der statischen Analyse weiterhin die folgenden Nachteile:
Der Code oder Softwarecode muss als Ganzes vorliegen. Die
Entwicklung größerer Projekte basiert allerdings auf der Wie¬ derverwendung von bestehenden Codebauteilen, wie beispielsweise Bibliotheken, welche oftmals auch von Drittanbietern kommen. Diese Drittanbieter sind in der Regel nicht bereit, ihren Softwarecode und ihre Bibliotheken offenzulegen. Des
Weiteren können bei einer statischen Analyse Konflikte in Zusammenhang mit Routinen des Betriebssystems nicht analysiert werden. Weiterhin kann mittels statischen Analysen das jeweils aktuelle Verhalten auf einem realen oder potenziell möglichen System nicht untersucht werden. So können unnötige Synchronisationsmechanismen den Softwarecode vorliegen, die das System tatsächlich unnötig verlangsamen können, oder Synchronisationsprobleme können durch die verwendende Hardware entstehen. Des Weiteren sind große Softwareprodukte herkömm¬ licherweise oftmals in unterschiedlichen Programmiersprachen implementiert, was eine statische Analyse deutlich erschwert. Erfindungsgemäß kann gegenüber solchen statischen Analyse- Methoden eine deutliche Zeitersparnis erreicht werden. Ferner muss erfindungsgemäß nicht der gesamte Code oder Softwarecode vollständig vorliegen. Es besteht erfindungsgemäß auch nicht das Erfordernis, dass dieser Code in einer einzigen Program- miersprache implementiert vorliegt, weil erfindungsgemäß em¬ pirisch getestet wird. Ein weiterer Vorteil liegt darin, dass keine sogenannten "False Positives" gefunden werden.
Weiter werden im Folgenden die erfindungsgemäßen Vorteile ge- genüber einer dynamischen Analyse durch Ausführen potenziell möglicher Thread-Interleavings aufgezeigt.
Ein Beispiel für eine dynamische Analyse durch Ausführen po¬ tenziell möglicher Thread-Interleavings ist als das Werkzeug "Chess" bekannt [9] . "Chess" reduziert die möglichen Pre- emptions, um einer Explosion des Zustandsraumes der möglichen Thread-Interleavings vorzubeugen [9]; Seite 9]. Allerdings besteht eine Wahrscheinlichkeit dafür, dass gerade speziell durch diese Pre-emptions Synchronisationsfehler und Race- Conditions nachteiligerweise auftreten.
"Chess" ordnet mögliche Ausführungskombinationen um und erzwingt die Ausführung "Single-Threaded" [9]; Seite 7]. In dieser Zitatstelle ist weiter erwähnt, dass dadurch keine vollständige Abdeckung von Data Races möglich ist, was zu ei¬ nigen nicht aufgefundenen Fehlern führen kann. Ein weiteres Problem des Tools "Chess" liegt in echter Hardwareparalleli¬ tät. Es ist wahrscheinlich, dass bei einer echten Paralleli¬ tät im Gegensatz zu einer Pseudoparallelität Fehler auftre- ten, die durch die Permutation der möglichen Ausführungsreihenfolgen nicht gefunden werden kann.
Im Weiteren werden die erfindungsgemäßen Vorteile gegenüber einer dynamischen Analyse von Data Races diskutiert. Aus der Veröffentlichung [14] ist das Tool "Race Track" bekannt, mit¬ tels dem Data Races gefunden werden können. Hierbei wird eine virtuelle Maschine instrumentiert. Die Aktionen des Programms werden protokolliert und potenzielle Data Races werden refe¬ riert. Allerdings wird in [14; Seite 1] darauf hingewiesen, dass durch den dynamischen Ansatz nur eine Teilmenge aller möglichen Data Races gefunden werden kann, da nicht alle möglichen Ausführungspfade betrachtet werden. Auf anderen Ziel- Systemen mit anderen (Hardware-) Eigenschaften kann dies entscheidend sein, da sich die Ausführungspfade aufgrund der ge¬ änderten Hardwareeigenschaften unterscheiden können. Der erfindungsgemäße Ansatz deckt diese durch eine deutlich größere Menge an Ausführungspfaden ab, da die LaufZeiteigenschaften der einzelnen Module variiert werden.
Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung ergeben sich aus den Unteransprüchen sowie der Beschreibung unter Bezugnahme auf die Zeichnungen.
Gemäß einer bevorzugten Weiterbildung werden vorbestimmte LaufZeiteigenschaften der Ausführung der jeweiligen Softwareeinheit durch die programmierte LaufZeitdauer der Ausführung der jeweiligen Softwareeinheit, durch einen StartZeitpunkt der Ausführung und durch einen Endzeitpunkt der Ausführung ausgebildet .
Gemäß einer weiteren bevorzugten Weiterbildung wird die programmierte LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare LaufZeitdauer geändert.
Gemäß einer weiteren bevorzugten Weiterbildung wird der vorbestimmte StartZeitpunkt zumindest einer Softwareeinheit in einen einstellbaren StartZeitpunkt geändert.
Gemäß einer weiteren bevorzugten Weiterbildung wird der vorbestimmte Endzeitpunkt zumindest einer Softwareeinheit in ei¬ nen einstellbaren Endzeitpunkt geändert. Somit können vorteilhafterweise Start- und Endzeitpunkt sowie LaufZeitdauer künstlich variiert werden, um nach relativ kurzer Zeit Synchronisationsfehler zu reproduzieren und damit aufzufinden.
Gemäß einer weiteren bevorzugten Weiterbildung beinhaltet das Testen des Systems ein Variieren der zumindest einen einstellbaren LaufZeitdauer und ein Variieren des zumindest ei- nen einstellbaren StartZeitpunkt und/oder ein Variieren des zumindest einen einstellbaren Endzeitpunktes.
Beispielsweise wird der Ausführungszeitpunkt der Softwareein¬ heiten zeitlich verzögert. Dies entspricht beispielsweise dem Fall, dass eine Softwareeinheit nicht zum vordefinierten
Zeitpunkt ausführbar ist. Dies wird als Retardieren bezeichnet .
Des Weiteren kann die Ausführungsdauer der Softwareeinheit verlängert werden. Dies entspricht beispielsweise dem Fall, wenn eine Softwareeinheit länger für die Bearbeitung einer vorbestimmten Aufgabe braucht. Dies wird als Prolongieren be¬ zeichnet . Gemäß einer weiteren bevorzugten Weiterbildung wird das Ändern zumindest einer der Laufzeiteigenschaften der Ausführung der jeweiligen Softwareeinheit zur Bereitstellung zumindest einer einstellbaren Laufzeiteigenschaft durch ein Ändern eines Codes der jeweiligen Softwareeinheit ausgebildet.
Gemäß einer weiteren bevorzugten Weiterbildung wird das Ändern zumindest einer der Laufzeiteigenschaften der Ausführung der jeweiligen Softwareeinheit zur Bereitstellung zumindest einer einstellbaren Laufzeiteigenschaft ausgebildet durch: - Bereitstellen einer Anzahl von Hardwareeinheiten, welche dazu eingerichtet sind, die Softwareeinheiten abzuarbeiten;
Nachbilden der jeweiligen Hardwareeinheit zur Bereitstellung einer jeweiligen nachgebildeten Hardwareeinheit; und Erweitern der jeweiligen nachgebildeten Hardwareeinheit derart, dass zumindest eine der LaufZeiteigenschaften der nachgebildeten Hardwareeinheit, durch welche das jeweilige Softwaremittel zum Ausführungszeitpunkt des Softwaremittels abgearbeitet wird, einstellbar ist.
Die jeweilige nachgebildete, insbesondere virtualisierte oder emulierte, Hardwareeinheit ist softwaretechnisch implemen¬ tiert. Die jeweilige nachgebildete Hardwareeinheit kann als Computerprogramm-Produkt, als Teil eines Programmcodes, als Modul oder als Teil eines Moduls oder als ein ausführbares Objekt ausgebildet sein.
Vorteilhafterweise werden die nachgebildeten Hardwareeinhei- ten, beispielsweise virtualisierte Hardwarekomponenten, der¬ art ergänzt oder erweitert, dass deren Performanz individuell und dynamisch von dem Testmittel eingestellt werden kann, um unzureichende Synchronisationen des Systems zu detektieren. Zur Steuerung der Performance-Eigenschaften wird erfindungsgemäß das Testmittel um Schnittstellen erweitert, die aus dem Test-Framework zugreifbar sind. Somit kann für ein Test- Framework die Performanz der Softwareeinheiten und der nachgebildeten Hardwareeinheiten feingranular, beispielsweise bis auf Mikrobefehlsebene, und dynamisch eingestellt werden.
Damit wird die Testmethodik für ein System erfindungsgemäß grundsätzlich erweitert. Software ist anfällig für Race Con- ditions und Synchronisationsfehler. Diese Fehler können her- kömmlicherweise nur zufällig in einem herkömmlichen Testpro- zess entdeckt werden.
Damit vermindert die vorliegende Erfindung die Gefahr, dass diese Fehler nicht aufgefunden werden, insbesondere wenn sich die Zielsysteme von den Test- und Entwicklungssystemen unterscheiden. Insbesondere kann auf dem Zielsystem eine andere Konfiguration wie auf dem Test- und Entwicklungssystem verwendet werden. Gemäß einer weiteren bevorzugten Weiterbildung wird das Nachbilden der jeweiligen Hardwareeinheit als ein Virtualisieren oder als ein Emulieren ausgebildet.
Gemäß einer weiteren bevorzugten Weiterbildung wird das Testen des Systems zur Bereitstellung von Testergebnisdaten durchgeführt, wobei eine vorbestimmbare Anzahl von vorbe¬ stimmten und zu untersuchenden Synchronisations-Maßnahmen zur Synchronisation der Softwareeinheiten während des Testens unterbunden wird und das Testen mit den unterbundenen Synchronisationsmaßnahmen zu Ende geführt wird, wobei die bereitge¬ stellten Testergebnisdaten zur Detektion von unnötigen Synchronisationsmaßnahmen validiert werden.
Synchronisation wird vorzugsweise als Sicherheitsmechanismus eingesetzt, kann ein System aber auch verlangsamen. Eine Synchronisation sperrt ein Objekt, so dass andere parallele Aus¬ führungen nicht auf dieses Objekt zugreifen können. Der
Overhead der Synchronisation ist beispielsweise durch jüngste Forschung (z.B. [6]) deutlich verbessert, jedoch wird teilweise bei der Programmierung zu viel Synchronisation verwendet, welche das System wiederum verlangsamen kann. Vorliegend wird bei der Ausführung des Systems in einer dedi- zierten Art und Weise zumindest eine zu untersuchende Syn¬ chronisations-Maßnahme unterbunden, um insbesondere Race Con- ditions zu detektieren, denn nur die potenziell möglichen Race Conditions verlangen eine Synchronisation.
Gemäß einer weiteren bevorzugten Weiterbildung werden die durch das Testen untersuchten Synchronisationsmaßnahmen bei einer positiven Validierung der bereitgestellten Testergebnisdaten als unnötige Synchronisationsmaßnahmen bestimmt.
Gemäß einer weiteren bevorzugten Weiterbildung wird das Variieren der zumindest einer einstellbaren LaufZeitdauer als ein Verlängern der LaufZeitdauer um eine vorbestimmbare Zeitdauer ausgebildet .
Für weitere Tests ist es vorteilhafterweise sinnvoll, eine Kombination von Softwareeinheiten zu prolongieren. Das Pro- longieren selbst wird durch das erfindungsgemäße Testmittel durchgeführt. Das erfindungsgemäße Testmittel umfasst insbe¬ sondere eine speziell konstruierte virtuelle Maschine, um so dem Entwickler oder Tester die Arbeit zu erleichtern und den Test zu automatisieren.
Beispielsweise kann der Entwickler mittels des Testmittels für jede Softwareeinheit einen Vektor angeben, der beschreibt, um welche Zeitdauer oder um wie viel Prozent der Gesamtzeit der Ausführung die jeweilige Softwareeinheit pro- longiert oder retardiert werden soll. Dies ergibt dann für einen speziellen Testfall einen Vektor von Vektoren, welcher das Verhalten der Softwareeinheiten beschreibt.
Ferner wird hier eine Erweiterung um simuliertes Optimieren vorgeschlagen, um auch durch die Prolongation Verkürzungen der Ausführungszeit zu ermöglichen.
Gemäß einer weiteren bevorzugten Weiterbildung wird eine Mehrzahl von vorbestimmten LaufZeitdauern einer Mehrzahl von Softwareeinheiten zur Bereitstellung von jeweils einstellbaren LaufZeitdauern geändert.
Somit können vorteilhafterweise bei der Mehrzahl asynchron arbeitender Softwareeinheiten Synchronisationsfehler aufge- funden werden.
Gemäß einer weiteren bevorzugten Weiterbildung beinhaltet das Testen ein Variieren der Mehrzahl der einstellbaren Laufzeitdauern der Mehrzahl der Softwareeinheiten.
Die Erfindung wird nachfolgend anhand der in den schemati¬ schen Figuren angegebenen Ausführungsbeispiele näher erläutert. Es zeigen: Fig. 1 ein schematisches Ablaufdiagramm eines ersten
Ausführungsbeispiels eines Verfahrens zum Testen eines Systems mit einer Mehrzahl von parallel ausführbaren Softwareeinheiten;
Fig. 2 ein schematisches Ablaufdiagramm eines zweiten
Ausführungsbeispiels eines Verfahrens zum Testen eines Systems mit einer Mehrzahl von parallel ausführbaren Softwareeinheiten; ein schematisches Ablaufdiagramm eines dritten Ausführungsbeispiels eines Verfahrens zum Testen eines Systems mit einer Mehrzahl von parallel ausführbaren Softwareeinheiten; und
Fig. 4 ein schematisches Blockschaltbild eines Ausfüh¬ rungsbeispiels einer Vorrichtung zum Testen eines Systems mit einer Mehrzahl von parallel ausführ- baren Softwareeinheiten.
In allen Figuren sind gleiche bzw. funktionsgleiche Mittel und Einrichtungen - sofern nichts anderes angegeben - mit denselben Bezugszeichen versehen.
Fig. 1 zeigt ein schematisches Ablaufdiagramm eines ersten Ausführungsbeispiels eines Verfahrens zum Testen eines Sys¬ tems mit einer Mehrzahl von parallel ausführbaren Softwareeinheiten .
Die parallel ausführbaren Softwareeinheiten sind zur jeweiligen Ausführung eines Threads und zur Bereitstellung eines gemeinsamen Ergebnisses eingerichtet. Die jeweilige Software¬ einheit hat eine jeweilige programmierte oder codierte Lauf- Zeitdauer der Ausführung. Weiter umfasst die jeweilige Softwareeinheit beispielsweise ein Programm und Daten.
Das erste Ausführungsbeispiel des erfindungsgemäßen Verfah- rens gemäß Fig. 1 hat folgende Verfahrensschritte 101 bis 103:
Verfahrensschritt 101:
Die programmierte LaufZeitdauer zumindest einer Softwareeinheit wird in eine einstellbare LaufZeitdauer geändert.
Verfahrensschritt 102:
Ein Testmittel 3 (siehe Fig. 3) zum Validieren des Systems und zum Einstellen der zumindest einen einstellbaren Laufzeitdauer wird bereitgestellt. Verfahrensschritt 103:
Das System wird mittels des Testmittels zur Bereitstellung von Testergebnissen getestet. Das Testen beinhaltet ein Variieren der zumindest einen einstellbaren LaufZeitdauer zur De- tektion von Synchronisationsfehlern des Systems.
Vorzugsweise ist das Variieren der zumindest einen einstell¬ baren LaufZeitdauer als ein Verlängern der LaufZeitdauer um eine vorbestimmte Zeitdauer ausgebildet. Des Weiteren kann das Variieren auch als ein Verkürzen der LaufZeitdauer um eine vorbestimmte oder vorbestimmbare Zeitdauer ausgebildet sein .
Fig. 2 zeigt ein schematisches Ablaufdiagramm eines zweiten Ausführungsbeispiels eines Verfahrens zum Testen eines Sys¬ tems mit einer Mehrzahl von parallel ausführbaren Softwareeinheiten, welche zur jeweiligen Ausführung eines Threads und zur Bereitstellung eines gemeinsamen Ergebnisses eingerichtet sind und welche eine jeweilige programmierte LaufZeitdauer der Ausführung haben.
Das zweite Ausführungsbeispiel der Fig. 2 hat die Verfahrens¬ schritte 201-203. Verfahrensschritt 201:
Es werden verschiedene programmierte LaufZeiteigenschaften der Ausführung der jeweiligen Softwareeinheit geändert. Die vorbestimmten oder programmierten LaufZeiteigenschaften sind durch die vorbestimmte LaufZeitdauer der Ausführung der jeweiligen Softwareeinheit, durch einen StartZeitpunkt der Aus¬ führung und durch einen Endzeitpunkt der Ausführung ausgebil- det.
Dabei wird die vorbestimmte LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare LaufZeiteinheit geän¬ dert. Zusätzlich wird vorzugsweise der vorbestimmte Start- Zeitpunkt zumindest einer Softwareeinheit in einen einstell¬ baren StartZeitpunkt geändert. Zusätzlich oder alternativ wird auch der vorbestimmte Endzeitpunkt zumindest einer Soft¬ wareeinheit in einen einstellbaren Endzeitpunkt geändert. Das Ändern zumindest einer der LaufZeiteigenschaften der Ausführung der jeweiligen Softwareeinheit ist beispielsweise durch ein Ändern eines Codes der jeweiligen Softwareeinheit ausgebildet . Alternativ oder zusätzlich kann das Ändern zumindest einer der LaufZeiteigenschaften der Ausführung der jeweiligen Softwareeinheit zur Bereitstellung zumindest einer einstellbaren Laufzeiteigenschaft durch folgende Teilschritte ausgebildet sein: Eine Anzahl von Hardwareeinheiten wird bereitgestellt, welche dazu eingerichtet sind, die Softwareeinheiten abzuar¬ beiten. Die jeweilige Hardwareeinheit wird zur Bereitstellung einer jeweiligen nachgebildeten Hardwareeinheit nachgebildet. Das Nachbilden kann ein Virtualisieren oder ein Emulieren sein. Weiter wird die jeweilige nachgebildete Hardwareeinheit derart erweitert, dass zumindest einer der Laufzeiteigen- schaften der nachgebildeten Hardwareeinheit, durch welche das jeweilige Softwaremittel zum Ausführungszeitpunkt des Soft¬ waremittels abgearbeitet wird, einstellbar ist. Die jeweilige Hardwareeinheit ist beispielsweise als Computer, Mikroprozes¬ sor, Einrichtung oder auch als Teil eines Computersystems ausgebildet . Verfahrensschritt 202:
Ein Testmittel 3 (siehe Fig. 3) wird zum Validieren des Sys¬ tems und zum Einstellen der einstellbaren Laufzeiteigenschaf- ten bereitgestellt.
Verfahrensschritt 203:
Das System wird zur Bereitstellung von Testergebnisdaten getestet. Dabei wird eine vorbestimmbare Anzahl von vorbestimm- ten und zu untersuchenden Synchronisationsmaßnahmen zur Synchronisation der Softwareeinheiten während des Testens unterbunden. Das Testen wird mit den unterbundenen Synchronisationsmaßnahme zu Ende geführt, wobei die bereitgestellten Test¬ ergebnisdaten zur Detektion von unnötigen Synchronisations- maßnahmen validiert werden.
In Fig. 3 ist ein schematisches Ablaufdiagramm eines dritten Ausführungsbeispiels eines Verfahrens zum Testen eine Systems mit einer Mehrzahl von parallel ausführbaren Softwareeinhei- ten dargestellt.
Das dritte Ausführungsbeispiel basiert auf dem ersten Ausfüh¬ rungsbeispiel gemäß Fig. 1 und umfasst sämtliche mit Bezug zu Fig. 1 dargestellten Merkmale. Das dritte Ausführungsbeispiel der Fig. 3 hat die Verfahrensschritte 301 bis 303:
Verfahrensschritt 301:
Eine Mehrzahl von programmierten oder vorbestimmten Laufzeit- dauern einer Mehrzahl von Softwareeinheiten wird zur Bereitstellung von jeweils einstellbaren LaufZeitdauern geändert.
Verfahrensschritt 302: Ein Testmittel 3 (siehe Fig. 3) zum Validieren des Systems und zum Einstellen der zumindest einen einstellbaren Laufzeitdauer wird bereitgestellt.
Verfahrensschritt 303:
Das Testen des Systems wird mittels des Testmittels durchge¬ führt, wobei das Testen ein Variieren der Mehrzahl der ein- stellbaren LaufZeitdauern der Mehrzahl der Softwareeinheiten zur Detektion von Synchronisationsfehlern des Systems beinhaltet .
Fig. 4 zeigt ein schematisches Blockschaltbild eines Ausfüh- rungsbeispiels einer Vorrichtung 1 zum Testen eines Systems mit einer Mehrzahl von parallel ausführbaren Softwareeinheiten. Die parallel ausführbaren Softwareeinheiten sind zur Ausführung eines Threads und zur Bereitstellung eines gemeinsamen Ergebnisses eingerichtet und haben eine jeweilige pro- grammierte LaufZeitdauer der Ausführung.
Die Vorrichtung hat zumindest ein Änderungsmittel 2 und ein Testmittel 3. Das Änderungsmittel 2 ist dazu eingerichtet, eine program¬ mierte oder vorbestimmte LaufZeitdauer zumindest einer Soft¬ wareeinheit in eine einstellbare LaufZeitdauer zu ändern. Da¬ mit stellt das Änderungsmittel 2 ausgangsseitig zumindest ei¬ ne geänderte Softwareeinheit 4 bereit.
Das Testmittel 3 ist dazu eingerichtet, das System zur Be¬ reitstellung von Testergebnisdaten 5 zu testen. Dabei ist das Testen dazu eingerichtet, die zumindest eine einstellbare LaufZeitdauer der zumindest einen geänderten Softwareeinheit 4 zur Detektion von Synchronisationsfehlern des Systems zu variieren .
Obwohl die vorliegende Erfindung vorstehend anhand der bevor- zugten Ausführungsbeispiele beschrieben wurde, ist sie darauf nicht beschränkt, sondern auf vielfältige Art und Weise modi¬ fizierbar .
Literaturliste
[1] Ayewah, Nathaniel; Hovemeyer, David; Morgenthaler, J.D.;
Penix, John; Pugh, William: Using Static Analysis to Find Bugs. In: IEEE Software 25 (2008), No . 5, Se. 22-
29.
http : //dx . doi . org/http : //doi . ieeecomputersociety. org/10. 1109/MS.2008.130.-
DOIhttp: //doi . ieeecomputersociety . org/10.1109/MS .2008.13 0.-ISSN 0740-7459
[2] Bacon, David F.; Strom, Robert E . ; Tarafdar, Ashis:
Guava: A dialect of Java without data races. In: In Ob¬ ject-Oriented Programming, Systems, Languages, and Ap- plications (OOPSLA, ACM Press, 2000, S. 382-400
[3] Boyapati, Chandrasekhar ; Lee, Robert; Rinard, Martin:
Ownership types for safe programming: preventing data races and deadlocks. In: OOPSLA '02: Proceedings of the 17th ACM SIGPLAN Conference on Obj ectoriented program¬ ming, Systems, languages, and applications Bd. 37. ew York, NY, USA: ACM Press, November 2002. -ISBN
1581134711, 211-230 [4] Choi, Jong-Dek; Lee, Keunwoo; loginov, Alexey; O'Calla- han; Robert; Sarkar, Vivek; Sridharan, Manu: Efficient and precise datarace detection for multithreaded object- oriented programs . In: PLDI'02: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design an Implementation. New York, NY, USA: ACM, 2002. -ISBN 1-
58113-463-0, S. 258-269
[5] Engler, Dawson; Ashcraft, Ken: RacerX: effective, static detection of race conditions and deadlocks. In: SIGOPS Oper. Syst. Rev. 37 (2003), Nr. 5, S. 237-252.
http://dx.doi . org/http : //doi . acm. org/10.1145/1165389.945 468. -DOI http: //doi .acm. org/10.1145/1165389.945468. -ISSN 0163-5980 [6] Hohmuth, Michael; Härtig, Hermann: Pragmatic Nonblocking Synchronization for Real-Time Systems. In: Proceedings of the General Track: 2002 USENIX Annual Technical Con- ference. Berkeley, CA, USA: USENIX Association, 2001.-
ISBN 1-880446-09-X, S.217-230.
[7] Hovemeyer, David; Pugh, William: Finding concurrency
bugs in Java. In: In Proceedings of the PODC Workshop on Concurrency and Synchronization in Java Programs, 2004.
[8] Florian Mangold. Performanzanalyse mit Hilfe künstlicher Varianz. Diplomarbeit, Ludwig-Maximilians-Universität, Munich, May 2007.
[9] Musuvathi, Madanlal; Qadeer, Shaz; Ball, Thomas; Basler, Gerard; Ninar, Piramanayagam A. ; Naemtiu, Iulian: Finding and Reproducing Heisenbugs in Concurrent Programs. In: Draves, Richard (Hrsg.); Renesse, Robbert van
(Hrsg.): OSDI, USENIX Association, 2008. -ISBN 978-1-
931971-65-2, 267-280
[10] Netzer, Robert H.B.; Miller, Barton P.: What are race conditions? some issues and formalizations . In: ACM Let- ters on Programming Languages and Systems 1 (1992),
S.74-88.
[11] Stoller, Scott D.: Testing Concurrent Java Programs us- ing Randomized Scheduling. In: Proc. Second Workshop on Runtime Verification (RV) Bd. 70(4), Elsevier, Juli 2002
(Electronic Notes in Theoretical Computer Science)
[12] Yourdon Edward, Larry L. C: Structured Design: Funda¬ mentals of a Discipline of Computer Program and Systems Design. Englewood Cliffs, NJ: Prentice Hall, 1979
[13] Laarhoven, P.J.M., Aarts, E.H.L. "Simulated Annealing:
Theory and Applications", Norwell, MA, USA, Kluwer Aca- demic Publishers, 1987
[14] Yu, Yuan; Rodeheffer, Tom; Chen, Wei: Race Track: Effi- cient Detection of Data Race Conditions via Adaptive Tracking. in: SOSP '05: Proceedings of the twentieth ACM
Symposium on Operating Systems principles. New York, NY, USA; ACM Press, 2005, 221- 234

Claims

Patentansprüche
Verfahren zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten, welche zur jeweiligen Ausführung eines Threads und zur Bereitstellung eines gemeinsamen Ergebnisses eingerichtet sind und welche eine jeweilige programmierte Laufzeitdau¬ er der Ausführung haben, mit den Schritten:
a) Ändern der vorbestimmten LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare Laufzeitdau¬ er (101);
b) Bereitstellen eines Testmittels (3) zum Validieren des Systems und zum Einstellen der zumindest einen einstellbaren LaufZeitdauer (102); und
c) Testen des Systems mittels des Testmittels, wobei das Testen ein Variieren der zumindest einen einstellbaren LaufZeitdauer zur Detektion von Synchronisationsfehlern des Systems beinhaltet (103) .
Verfahren nach Anspruch 1,
dadurch gekennzeichnet,
dass programmierte Laufzeiteigenschaften der Ausführung der jeweiligen Softwareeinheit durch die programmierte LaufZeitdauer der Ausführung der jeweiligen Softwareeinheit, durch einen StartZeitpunkt der Ausführung und durch einen Endzeitpunkt der Ausführung ausgebildet werden (201) .
Verfahren nach Anspruch 2,
dadurch gekennzeichnet,
dass die programmierte LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare LaufZeitdauer geän¬ dert wird und
dass der vorbestimmte StartZeitpunkt zumindest einer Softwareeinheit in einen einstellbaren StartZeitpunkt ge¬ ändert wird und/oder dass der vorbestimmte Endzeitpunkt zumindest einer Soft¬ wareeinheit in einen einstellbaren Endzeitpunkt geändert wird (201) .
Verfahren nach Anspruch 3,
dadurch gekennzeichnet,
dass das Testen des Systems ein Variieren der zumindest einen einstellbaren LaufZeitdauer und ein Variieren des zumindest einen einstellbaren StartZeitpunkt und/oder ein Variieren des zumindest einen einstellbaren Endzeitpunktes beinhaltet (203) .
Verfahren nach einem der Ansprüche 2-4,
dadurch gekennzeichnet,
dass das Ändern zumindest einer der LaufZeiteigenschaften der Ausführung der jeweiligen Softwareeinheit zur Bereitstellung zumindest einer einstellbaren Laufzeiteigen- schaft ausgebildet wird durch:
Ändern eines Codes der jeweiligen Softwareeinheit (201).
Verfahren nach einem der Ansprüche 2-4,
dadurch gekennzeichnet,
dass das Ändern zumindest einer der LaufZeiteigenschaften der Ausführung der jeweiligen Softwareeinheit zur Bereitstellung zumindest einer einstellbaren Laufzeiteigen- schaft ausgebildet wird (201) :
Bereitstellen einer Anzahl von Hardwareeinheiten, welche dazu eingerichtet sind, die Softwareeinheiten abzuarbeiten;
Nachbilden der jeweiligen Hardwareeinheit zur Bereitstellung einer jeweiligen nachgebildeten Hardwareeinheit; und
Erweitern der jeweiligen nachgebildeten Hardwareeinheit derart, dass zumindest eine der Laufzeiteigen- schaften der nachgebildeten Hardwareeinheit, durch welche das jeweilige Softwaremittel zum Ausführungs¬ zeitpunkt des Softwaremittels abgearbeitet wird, ein¬ stellbar ist. Verfahren nach Anspruch 6,
dadurch gekennzeichnet,
dass das Nachbilden der jeweiligen Hardwareeinheit als ein Virtualisieren oder als ein Emulieren ausgebildet wird .
Verfahren nach einem der vorstehenden Ansprüche,
dadurch gekennzeichnet,
dass das Testen des Systems zur Bereitstellung von Testergebnisdaten durchgeführt wird, wobei eine vorbestimmba¬ re Anzahl von vorbestimmten und zu untersuchenden Synchronisations-Maßnahmen zur Synchronisation der Softwareeinheiten während des Testens unterbunden wird und das Testen mit den unterbundenen Synchronisationsmaßnahmen zu Ende geführt wird, wobei die bereitgestellten Testergeb¬ nisdaten zur Detektion von unnötigen Synchronisationsmaßnahmen validiert werden (203) . Verfahren nach Anspruch 8,
dadurch gekennzeichnet,
dass die durch das Testen untersuchten Synchronisations¬ maßnahmen bei einer positiven Validierung der bereitgestellten Testergebnisdaten als unnötige Synchronisations- maßnahmen bestimmt werden (203) .
Verfahren nach einem der vorstehenden Ansprüche,
dadurch gekennzeichnet,
dass das Variieren der zumindest einer einstellbaren LaufZeitdauer als ein Verlängern der LaufZeitdauer um eine vorbestimmbare Zeitdauer ausgebildet wird.
Verfahren nach einem der vorstehenden Ansprüche,
dadurch gekennzeichnet,
dass eine Mehrzahl von vorbestimmten LaufZeitdauern einer Mehrzahl von Softwareeinheiten zur Bereitstellung von jeweils einstellbaren LaufZeitdauern geändert wird (301).
12. Verfahren nach Anspruch 11,
dadurch gekennzeichnet,
dass das Testen ein Variieren der Mehrzahl der einstellbaren LaufZeitdauern der Mehrzahl der Softwareeinheiten beinhaltet (303) .
13. Computerprogrammprodukt, welches auf einer programmge¬ steuerten Einrichtung die Durchführung eines Verfahrens nach einem der Ansprüche 1-12 veranlasst.
14. Vorrichtung (1) zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten, welche zur Ausführung eines Threads und zur Bereit¬ stellung eines gemeinsamen Ergebnisses eingerichtet sind und welche eine jeweilige programmierte LaufZeitdauer der Ausführung haben, mit:
a) einem Änderungsmittel (2) zum Ändern einer vorbe¬ stimmten LaufZeitdauer zumindest einer Softwareeinheit in eine einstellbare LaufZeitdauer ; und b) einem Testmittel (3) zum Testen des Systems, wobei das Testmittel dazu eingerichtet ist, die zumindest eine einstellbare LaufZeitdauer zur Detektion von Synchronisationsfehlern des Systems zu variieren.
PCT/EP2010/062148 2009-10-21 2010-08-20 Verfahren und vorrichtung zum testen eines systems mit zumindest einer mehrzahl von parallel ausführbaren softwareeinheiten WO2011047901A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US13/503,535 US8972784B2 (en) 2009-10-21 2010-08-20 Method and device for testing a system comprising at least a plurality of software units that can be executed simultaneously

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102009050161.4 2009-10-21
DE200910050161 DE102009050161A1 (de) 2009-10-21 2009-10-21 Verfahren und Vorrichtung zum Testen eines Systems mit zumindest einer Mehrzahl von parallel ausführbaren Softwareeinheiten

Publications (1)

Publication Number Publication Date
WO2011047901A1 true WO2011047901A1 (de) 2011-04-28

Family

ID=43016628

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/EP2010/062148 WO2011047901A1 (de) 2009-10-21 2010-08-20 Verfahren und vorrichtung zum testen eines systems mit zumindest einer mehrzahl von parallel ausführbaren softwareeinheiten

Country Status (3)

Country Link
US (1) US8972784B2 (de)
DE (1) DE102009050161A1 (de)
WO (1) WO2011047901A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104008046A (zh) * 2013-02-26 2014-08-27 北京千橡网景科技发展有限公司 程序的测试方法以及用于测试程序的设备
JP6119395B2 (ja) * 2013-04-18 2017-04-26 ブラザー工業株式会社 情報処理装置、及びプログラム
CN105893234B (zh) * 2014-12-30 2019-05-07 伊姆西公司 用于软件测试的方法和计算设备
US10417077B2 (en) 2016-09-29 2019-09-17 2236008 Ontario Inc. Software handling of hardware errors
US10599552B2 (en) * 2018-04-25 2020-03-24 Futurewei Technologies, Inc. Model checker for finding distributed concurrency bugs
US20200366573A1 (en) * 2019-05-17 2020-11-19 Citrix Systems, Inc. Systems and methods for visualizing dependency experiments

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6002871A (en) * 1997-10-27 1999-12-14 Unisys Corporation Multi-user application program testing tool
US20050177775A1 (en) * 2004-01-26 2005-08-11 Microsoft Corporation Data race detection using sequential program analysis
EP2037368A2 (de) * 2007-07-30 2009-03-18 Fujitsu Microelectronics Limited Simulation einer Programmausführung zum Erkennen eines Problems, wie z.B. Blockierung

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4330826A (en) * 1980-02-05 1982-05-18 The Bendix Corporation Synchronizer and synchronization system for a multiple computer system
US4965717A (en) * 1988-12-09 1990-10-23 Tandem Computers Incorporated Multiple processor system having shared memory with private-write capability
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
US5491787A (en) * 1994-08-25 1996-02-13 Unisys Corporation Fault tolerant digital computer system having two processors which periodically alternate as master and slave
JP3571976B2 (ja) * 1999-11-08 2004-09-29 富士通株式会社 デバッグ装置及び方法並びにプログラム記録媒体
US7971095B2 (en) * 2005-02-16 2011-06-28 Honeywell International Inc. Fault recovery for real-time, multi-tasking computer system
JP4468410B2 (ja) * 2007-06-21 2010-05-26 株式会社東芝 ソフトウェア実行装置および協調動作方法
US20090177866A1 (en) * 2008-01-08 2009-07-09 Choate Michael L System and method for functionally redundant computing system having a configurable delay between logically synchronized processors
JP5347414B2 (ja) * 2008-10-03 2013-11-20 富士通株式会社 同期制御装置,情報処理装置及び同期管理方法
US8813038B2 (en) * 2011-02-09 2014-08-19 Microsoft Corporation Data race detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6002871A (en) * 1997-10-27 1999-12-14 Unisys Corporation Multi-user application program testing tool
US20050177775A1 (en) * 2004-01-26 2005-08-11 Microsoft Corporation Data race detection using sequential program analysis
EP2037368A2 (de) * 2007-07-30 2009-03-18 Fujitsu Microelectronics Limited Simulation einer Programmausführung zum Erkennen eines Problems, wie z.B. Blockierung

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
AYEWAH, NATHANIEL; HOVEMEYER, DAVID; MORGENTHALER, J.D.; PENIX, JOHN; PUGH, WILLIAM: "Using Static Analysis to Find Bugs", IEEE SOFTWARE, vol. 25, no. 5, 2008, pages 22 - 29, XP011233271, ISSN: 0740-7459, Retrieved from the Internet <URL:dx.doi.org/http://doi.ieeecomputersociety.org/10. 1109/MS.2008.130.-DOIhttp://doi.ieeecomputersociety.org/10.1109/MS.2008.13 0> DOI: doi:10.1109/MS.2008.130
BERGQVIST M: "Debugging Multicore SoftwareUsing Virtual Hardware", INTERNET CITATION, 30 May 2008 (2008-05-30), pages 1 - 42, XP002603758, Retrieved from the Internet <URL:http://www.power.org/events/powercon/munich/Virtutech-Multicore_Debug _PAC_EU_May-2008v6.pdf> [retrieved on 20101006] *
ENGLER, DAWSON; ASHCRAFT, KEN; RACERX: "effective, static detection of race conditions and deadlocks", SIGOPS OPER. SYST. REV., vol. 37, no. 5, 2003, pages 237 - 252, ISSN: 0163-5980, Retrieved from the Internet <URL:dx.doi.org/http://doi.acm.org/10.1145/1165389.945 468.-DOI http://doi.acm.org/10.1145/1165389.945468>
FLORIAN MANGOLD: "Performanzanalyse mit Hilfe künstlicher Varianz. Diplomarbeit", LUDWIG-MAXIMILIANS-UNIVERSITÄT, May 2007 (2007-05-01)
HOVEMEYER, DAVID; PUGH, WILLIAM: "Finding concurrency bugs in Java", IN PROCEEDINGS OF THE PODC WORKSHOP ON CONCURRENCY AND SYNCHRONIZATION IN JAVA PROGRAMS, 2004
NETZER, ROBERT H.B.; MILLER, BARTON P.: "What are race conditions? some issues and formalizations", ACM LETTERS ON PROGRAMMING LANGUAGES AND SYSTEMS, vol. 1, 1992, pages 74 - 88
ONTKO R: "MOSS Deadlock Simulator User Guide", 20010818, 18 August 2001 (2001-08-18), pages 1 - 8, XP007915594, Retrieved from the Internet <URL:http://www.ontko.com/moss/deadlock/user_guide.html> [retrieved on 20101103] *

Also Published As

Publication number Publication date
DE102009050161A1 (de) 2011-04-28
US20120278660A1 (en) 2012-11-01
US8972784B2 (en) 2015-03-03

Similar Documents

Publication Publication Date Title
DE69831732T2 (de) Verfahren und gerät zum korrigieren von fehlern in einem rechnersystem
WO2011047901A1 (de) Verfahren und vorrichtung zum testen eines systems mit zumindest einer mehrzahl von parallel ausführbaren softwareeinheiten
EP2962205B1 (de) Mehrkern-prozessorsystem mit fehleranalysefunktion
DE102012224276B4 (de) Verzögerte Ausführung auf mehreren Prozessoren
DE102014102551A1 (de) Maschine und Verfahren zum Evaluieren von fehlschlagenden Softwareprogrammen
DE112020007444T5 (de) Automatische Testeinrichtung, Prozess und Computerprogramm zum Testen eines oder mehrerer zu testender Geräte, wobei unterschiedliche Testaktivitäten Teilsätze von Ressourcen des zu testenden Geräts nutzen
DE112011104830T5 (de) Ein Verfahren zum Sicherstellen der Programmkorrektheit unter Verwendung von feingranularem spekulativem Hardwareausführen
DE112019002778T5 (de) Simulationsvorrichtung, simulationsverfahren und elektronische steuereinheitsvorrichtung
DE112011100168T5 (de) Erfassen von Diagnosedaten in einer Datenverarbeitungsumgebung
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
EP2083339A1 (de) Verfahren und Vorrichtung zur Ausführung von Tests mittels funktional kaskadierten Test- und Experimentiervorrichtungen
DE102008043374A1 (de) Vorrichtung und Verfahren zur Generierung redundanter, aber unterschiedlicher Maschinencodes aus einem Quellcode zur Verifizierung für ein sicherheitskritisches System
DE102005020899A1 (de) Verfahren und Vorrichtung zur Messung der Testabdeckung bei Multithreading-Programmen
EP2567295B1 (de) Verfahren zum selektiven aufzeichnen, rekonstruieren und analysieren des programmlaufs eines steuerungsprogramms
CH713111A2 (de) Statische Erkennung von Nebenläufigkeitsfehlern in Computerprogrammen.
DE102016101871A1 (de) Nicht initialisierte Arbeitsspeicherverweise erfassen
Meyer et al. Selective tracing for dynamic analyses
DE102009049226A1 (de) Verfahren und Vorrichtung zum Testen von Einheiten mit Softwareeinheiten und Hardwareeinheiten eines Systems
DE102010032765B4 (de) Automatische Verifizierung von Übersetzungen
DE102022204717A1 (de) Verfahren zum Testen eines Computerprogramms
EP2634700A1 (de) Verfahren und Entwicklungsumgebung zur Überwachung eines ablaufenden Programms
DE102022202339A1 (de) Verfahren zum Software-Fehlerbereinigung
EP0560342B1 (de) Verfahren zum Untersuchen des Ablaufs eines in einer Hardware-Beschreibungssprache geschriebenen Programms
DE102022202697A1 (de) Verfahren zum Bereitstellen einer Blockchain
DE102021211083A1 (de) Verfahren zur Fuzz-Prüfung

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10748073

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 13503535

Country of ref document: US

122 Ep: pct application non-entry in european phase

Ref document number: 10748073

Country of ref document: EP

Kind code of ref document: A1