DE112021000240T5 - Ausführen von tests in deterministischer reihenfolge - Google Patents

Ausführen von tests in deterministischer reihenfolge Download PDF

Info

Publication number
DE112021000240T5
DE112021000240T5 DE112021000240.6T DE112021000240T DE112021000240T5 DE 112021000240 T5 DE112021000240 T5 DE 112021000240T5 DE 112021000240 T DE112021000240 T DE 112021000240T DE 112021000240 T5 DE112021000240 T5 DE 112021000240T5
Authority
DE
Germany
Prior art keywords
attribute
test
value
test cases
generating
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
DE112021000240.6T
Other languages
English (en)
Inventor
Andrew Hicks
Ryan Thomas Rawlins
Deborah Furman
Michael Gildein
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112021000240T5 publication Critical patent/DE112021000240T5/de
Pending legal-status Critical Current

Links

Images

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/3676Test management for coverage analysis
    • 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/3684Test management for test design, e.g. generating new test cases
    • 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
    • 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/3692Test management for test results analysis

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)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Eye Examination Apparatus (AREA)
  • Production Of Liquid Hydrocarbon Mixture For Refining Petroleum (AREA)

Abstract

Ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) umfasst ein Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt. Das Verfahren umfasst ferner ein Generieren und Ausführen eines anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten. Das Verfahren umfasst ferner ein Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist. Das Verfahren umfasst ferner ein Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall. Das Verfahren umfasst ferner ein Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten. Das Verfahren umfasst ferner ein Erkennen und ein Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.

Description

  • HINTERGRUND
  • Die vorliegende Erfindung betrifft ein Testen eines Computerprogramms und insbesondere eine Reduzierung einer Testfall-Infrastruktur.
  • Computerisierte Einheiten steuern fast jeden Aspekt unseres Lebens - angefangen beim Schreiben von Dokumenten bis hin zum Steuern von Verkehrsampeln. Allerdings sind neu entwickelte computerisierte Einheiten oft fehleranfällig und erfordern daher eine Testphase, in der die Fehler entdeckt und korrigiert werden. Die Testphase gilt als eine der schwierigsten Aufgaben beim Entwickeln einer computerisierten Einheit. Gründliches Testen ist wichtig, da die Kosten eines nicht entdeckten Fehlers enorm sein können, je nachdem, wofür die computerisierte Einheit verwendet wird. Abdeckungswerkzeuge (Coverage Tools) zum Prüfen von Software stellen ein Maß dafür bereit, wie gut die beurteilte Software während des Testens ausgeführt wurde, und bietet damit eine Gewährleistungsebene, dass die Software hohe Qualität aufweist.
  • KURZDARSTELLUNG DER ERFINDUNG
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung umfasst ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (zu testendes System, SUT) ein Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren und ein Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren. Das Verfahren umfasst ferner ein Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen werden. Das Verfahren umfasst ferner ein Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt. Das Verfahren umfasst ferner ein Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren. Das Verfahren umfasst ferner ein Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten. Das Verfahren umfasst ferner ein Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist. Das Verfahren umfasst ferner ein Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall. Das Verfahren umfasst ferner ein Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten. Das Verfahren umfasst ferner ein Erkennen und ein Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird der kartesianische Produktraum ferner auf Grundlage einer architekturgebundenen Einschränkung des SUT reduziert. Ferner umfasst die architekturgebundene Einschränkung in einer oder mehreren Ausführungsformen der vorliegenden Erfindung mindestens eines von: einer Anforderung, dass ein erstes Attribut nicht einen oder mehrere Kandidaten-Attributwerte übernehmen kann, wenn ein zweites Attribut einen bestimmten Attributwert hat, einer Anforderung, dass das erste Attribut einen bestimmten Kandidaten-Attributwert übernehmen muss, wenn das zweite Attribut den bestimmten Attributwert hat, oder einer Anforderung, ein drittes Attribut einzuführen, wenn das zweite Attribut den bestimmten Attributwert hat.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden ein Attribut-Wert-Paar und ein entsprechender Wahrscheinlichkeitswert in einem Hash dargestellt. Ferner wird ein erstes Attribut-Wert-Paar, das getestet werden soll, einem ersten Wahrscheinlichkeitswert zugewiesen, der höher als ein zweiter Wahrscheinlichkeitswert eines zweiten Attribut-Wert-Paars ist.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung weist das Erkennen und das Lokalisieren des Fehlers, der zumindest teilweise auf dem zweiten Satz von Ausführungsergebnissen beruht, ein Bestimmen einer bestimmten Kombination von Attributwerten auf, die den Fehler verursacht. Ein Generieren eines Regressions-Buckets für fehlerhafte Testfälle beruht zumindest teilweise auf der bestimmten Kombination von Attributwerten, die den Fehler verursacht hat.
  • Die technischen Lösungen können auch durch ein System, ein Computerprogrammprodukt, eine Vorrichtung, eine Maschine, eine Einheit oder in anderen praktischen Anwendungen in einer oder mehreren Ausführungsformen der vorliegenden Erfindung umgesetzt werden.
  • Außerdem umfasst ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) in einer oder mehreren Ausführungsformen der vorliegenden Erfindung ein Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren. Das Verfahren umfasst ferner ein Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren. Das Verfahren umfasst ferner ein Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen wird bzw. werden. Das Verfahren umfasst ferner ein Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt. Das Verfahren umfasst ferner ein Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren. Das Verfahren umfasst ferner ein Ausführen eines anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten. Das Verfahren umfasst ferner ein Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist. Das Verfahren umfasst ferner ein Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall, wobei das Generieren des Satzes von neuen Testfällen ein Generieren, in Bezug auf jedes Attribut in dem ausgewählten fehlerhaften Testfall, eines jeweiligen untergeordneten Satzes von neuen Testfällen aufweist, zumindest teilweise durch Ändern eines jeweiligen Attributwerts für das Attribut in dem ausgewählten fehlerhaften Testfall in jeden anderen Kandidaten-Attributwert für das Attribut, das nicht in dem einen oder den mehreren Testfällen vorhanden ist, deren Ausführung fehlerhaft ist. Das Verfahren umfasst ferner ein Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten. Das Verfahren umfasst ferner ein Erkennen und ein Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • Gemäß einem Aspekt wird ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) bereitgestellt, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen wird bzw. werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • Gemäß einem weiteren Aspekt wird ein System bereitgestellt, das aufweist: einen Arbeitsspeicher und einen Prozessor, der mit dem Arbeitsspeicher verbunden ist, wobei der Prozessor konfiguriert ist, um ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) durchzuführen, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen wird bzw. werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • Gemäß einem weiteren Aspekt wird ein Computerprogrammprodukt bereitgestellt, das ein durch einen Computer lesbares Speichermedium mit darauf gespeicherten, durch einen Computer ausführbaren Anweisungen aufweist, die bei Ausführung durch einen Prozessor den Prozessor veranlassen, ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in dem SUT durchzuführen, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen wird bzw. werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • Gemäß einem weiteren Aspekt wird ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) bereitgestellt, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen wird bzw. werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall, wobei das Generieren des Satzes von neuen Testfällen ein Generieren, in Bezug auf jedes Attribut in dem ausgewählten fehlerhaften Testfall, eines jeweiligen untergeordneten Satzes von neuen Testfällen aufweist, zumindest teilweise durch Ändern eines jeweiligen Attributwerts für das Attribut in dem ausgewählten fehlerhaften Testfalls für jeden anderen Kandidaten-Attributwert für das Attribut, das nicht in dem einen oder den mehreren Testfällen vorhanden ist, deren Ausführung fehlerhaft ist; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • Gemäß einem weiteren Aspekt wird ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) bereitgestellt, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Reduzieren des Testraums, der alle möglichen Kombinationen der Attribut-Wert-Paare aufweist, auf einen reduzierten Testraum, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen wird bzw. werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt, der der Sammlung von Attribut-Wert-Paaren zugehörig ist; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall, wobei das Generieren des Satzes von neuen Testfällen ein Ändern eines jeweiligen Attributwerts in dem ausgewählten fehlerhaften Testfall aufweist, um jeden neuen Testfall zu generieren; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  • Weitere technische Merkmale und Vorteile werden durch die Techniken der vorliegenden Erfindung verwirklicht. Ausführungsformen und Aspekte der Erfindung werden hierin ausführlich beschrieben und werden als Bestandteil des beanspruchten Erfindungsgegenstands betrachtet. Zum besseren Verständnis wird auf die ausführliche Beschreibung und auf die Zeichnungen verwiesen.
  • Figurenliste
  • Nachstehend werden bevorzugte Ausführungsformen der vorliegenden Erfindung allein zu Beispielzwecken und unter Bezugnahme auf die folgenden Zeichnungen beschrieben:
    • 1 zeigt eine schematische Veranschaulichung einer computerisierten Umgebung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung;
    • 2 ist ein Blockschaubild, das Module darstellt, die eine Test-Infrastruktur gemäß einer Ausführungsform der vorliegenden Erfindung bereitstellen;
    • 3 ist ein schematisches hybrides Datenfluss-/Blockschaubild, das Erkennung und Lokalisierung von Fehlern durch Verwenden eines Kombinatorik-Testdesigns (CTD) und einer Generierung eines Regressions-Buckets von fehlerhaften Testfällen veranschaulicht, die einen erkannten Fehler gemäß einer oder mehreren beispielhaften Ausführungsformen der vorliegenden Erfindung aufzeigen;
    • 4 stellt einen beispielhaften Satz von CTD-Vektoren gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar;
    • 5 stellt einen beispielhaften CTD-Vektor gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar;
    • 6 ist eine Prozessablauf-Darstellung eines veranschaulichenden Verfahrens zum Erkennen und Lokalisieren eines n-fachen Fehlers durch Verwenden von CTD-Techniken und Generieren eines Regressions-Buckets von fehlerhaften Testfällen, die den erkannten n-fachen Fehler gemäß einer oder mehreren beispielhaften Ausführungsformen der vorliegenden Erfindung aufzeigen;
    • 7 stellt einen Ablaufplan für ein Bereitstellen einer deterministischen Reihenfolge von Tests dar, die für das System Under Test in der Test-Infrastruktur gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung auszuführen sind; und
    • 8 stellt ein Computersystem gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung dar.
  • Die hierin dargestellten Abbildungen dienen zur Veranschaulichung. Viele Variationen der Darstellungen oder der hierin beschriebenen Operationen sind möglich, ohne vom Erfindungsgedanken der Erfindung abzuweichen. Die Aktionen können zum Beispiel in einer anderen Reihenfolge ausgeführt werden, oder Aktionen können hinzugefügt, gelöscht oder modifiziert werden. Der Begriff „verbunden“ und Variationen davon beschreiben zudem einen Datenübertragungspfad zwischen zwei Elementen und implizieren keine direkte Verbindung zwischen den Elementen ohne zwischen diesen liegenden Elementen/Verbindungen. Alle dieser Variationen werden als Teil der Patentschrift betrachtet.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Beispielhafte Ausführungsformen der vorliegenden Erfindung betreffen unter anderem Einheiten, Systeme, Verfahren, durch einen Computer lesbare Medien, Techniken und Methodiken zum Durchführen von Fehlererkennung und -lokalisierung durch Verwenden von kombinatorischen Testdesign- (CTD) Techniken und zum Generieren eines Regressions-Buckets von Testfällen, die den erkannten Fehler aufzeigen. In beispielhaften Ausführungsformen der vorliegenden Erfindung tritt der erkannte und lokalisierte Fehler in einem System Under Test (SUT) auf. Das SUT kann ein Hardware-System oder ein Software-System sein. Ferner kann die Fehlererkennung und -lokalisierung in beispielhaften Ausführungsformen unter Einhaltung von architekturbedingten Einschränkungen auf dem SUT durchgeführt werden.
  • Außerdem stellen Abdeckungswerkzeuge zum Testen des SUTs ein Maß dafür bereit, wie gut das SUT während des Testens ausgeführt wurde, und bieten damit eine Gewährleistungsebene, dass das SUT hohe Qualität aufweist. Es gibt eine Reihe von Abdeckungstypen, die im Stand der Technik bekannt sind, wie zum Beispiel Anweisungsabdeckung, Zeilenabdeckung, Bedingungsabdeckung, Pfadabdeckung, Methodenabdeckung und dergleichen. Ein weiteres Abdeckungsverfahren ist die Funktionsabdeckung. Die Funktionsabdeckung ist dafür ausgelegt, eine Menge, einen Abschnitt oder ähnliche Kennzahlen von Tests zu messen, die vorbestimmte funktionale Verhaltensweisen untersucht haben. Wenn eine Funktionsabdeckung gemessen wird, kann Qualitätssicherungs- (QA) Personal weitere Tests entwickeln, um nicht getestete Verhaltensweisen zu untersuchen.
  • Die Testinfrastruktur kann jedoch unglaublich teuer werden, und die Kosten pro Testzyklus steigen ohne kontinuierliche Optimierung von Produkten, Tests und Umgebungen. Je mehr Tests hinzugefügt werden, um so mehr Testreihen werden ausgeführt, und die Komplexität von unterstützenden Diensten nimmt mit den Kosten jedes Testzyklus zu. Testumgebungen, Testabhängigkeiten und Testreihen müssen mit derselben Strenge wie das gelieferte Produkt (d.h. das SUT) verwaltet werden. Dementsprechend stellt ein Verwalten der Testinfrastruktur eine technische Herausforderung dar, und eine effiziente Reduzierung der Testinfrastruktur ist ihrerseits eine technische Herausforderung. Es ist anzumerken, dass die Reduzierung der Testinfrastruktur keine Reduzierung der Testqualität des SUT impliziert. Stattdessen besteht die technische Herausforderung darin, dass die Qualität der Tests zusammen mit der Reduzierung der Testinfrastruktur verbessert werden muss.
  • Ausführungsformen der vorliegenden Erfindung befassen sich mit derartigen technischen Herausforderungen. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird ein reduzierter Satz von Testfällen für ein SUT auf dem System ausgeführt. Es ist anzumerken, dass es sich dabei um ein von dem SUT verschiedenes System handelt; das SUT wird durch Verwenden des Systems ausgeführt. Der reduzierte Satz von Testfällen kann durch Verwenden eines Kombinatorik-Testdesigns (CTD) generiert werden. Fehler können auf Grundlage eines untergeordneten Satzes von Tests identifiziert werden, die aus diesem reduzierten Satz fehlschlagen. Ferner wird gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung inverses CTD zum Lokalisieren des Fehlers in dem System verwendet.
  • Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird ein CTD in Bezug auf eine Interaktionsanforderung, wie zum Beispiel eine paarweise Interaktion, n-Tupel-Interaktion oder Sonstige durchgeführt. Der Testplan kann ausreichende Abdeckungsaufgaben vorsehen, die sicherstellen, dass die Interaktionsanforderung erfüllt wird. In einigen beispielhaften Ausführungsformen beruht die Testplanung auf einem Modellieren des Testraums durch Verwenden eines Funktionsabdeckungsmodells. Der Testraum kann Eingaben, Szenarios, Konfigurationen, den internen Zustand der Anwendung oder jeden anderen Aspekt darstellen, der möglicherweise getestet werden muss. Das Funktionsabdeckungsmodell kann einen Satz von Funktionsattributen umfassen. In anderen Ausführungsformen der vorliegenden Erfindung kann das Abdeckungsmodell einen von einer Reihe von Abdeckungstypen umfassen, die im Stand der Technik bekannt sind, wie zum Beispiel Anweisungsabdeckung, Zeilenabdeckung, Bedingungsabdeckung, Pfadabdeckung, Methodenabdeckung und dergleichen. Der Abdeckungstyp beeinträchtigt die Reduzierung der hierin beschriebenen Testinfrastrukturtechniken nicht.
  • Ferner kann ein Testraum in Bezug auf die Testplanung potenzielle Tests definieren, die auf dem SUT ausgeführt werden können. Ein Test kann im Gegensatz zu Abdeckungsaufgaben genau einem potentiellen Test zugeordnet werden. In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung können mehrere verschiedene Tests denselben potenziellen Test enthalten.
  • In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung liegt der Beweggrund für den CTD-Ansatz darin, dass die meisten Fehler von der Interaktion zwischen einer kleinen Anzahl von Funktionsattributen abhängen. CTD-Algorithmen können sich auch mit Skalierbarkeitsproblemen befassen. Die CTD-Algorithmen können davon ausgehen, dass der Kombinationsraum zu groß ist, um explizit dargestellt zu werden, und sie verwenden verschiedene Techniken, um zu versuchen, einen optimierten Testplan ohne explizite Aufzählung aller möglichen Kombinationen zu generieren. Beispiele für derartige Algorithmen können eine Reduzierung auf die orthogonalen Arrays oder ein Abdecken von Array-Problemen sein. Diese Techniken sind hinsichtlich des Typs von Einschränkungen, die sie für die Wertekombinationen erlauben, oder hinsichtlich des Typs der erforderlichen Interaktionsebene begrenzt, und treffen immer noch auf Skalierbarkeitsprobleme, wenn sich die Anzahl von Modellvariablen erhöht.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung werden Eingaben in ein SUT als eine Sammlung von Attribut-Wert-Paaren modelliert. Insbesondere können Eingaben in ein SUT als eine Sammlung von Attributen modelliert werden, von denen jedes einen oder mehrere entsprechende Attributwerte annehmen kann. In beispielhaften Ausführungsformen der vorliegenden Erfindung kann der gesamte kartesianische Produktraum, der alle möglichen Kombinationen von Attribut-Wert-Paaren enthält, auf einen kleineren Satz von Testvektoren reduziert werden, der eine umfassende n-fache Abdeckung des gesamten Testraums bereitstellt. Wenn zum Beispiel angenommen wird, dass vier verschiedene Attribute A, B, C und D modelliert werden, und wenn ferner angenommen wird, dass Attribut A vier unterschiedliche Werte annehmen kann; Attribut B drei unterschiedliche Werte annehmen kann; Attribut C drei unterschiedliche Werte annehmen kann; und Attribut D zwei unterschiedliche Werte annehmen kann, wäre die Gesamtanzahl möglicher Kombinationen von Attribut-Wert-Paaren 4 * 3 * 3 * 2 = 72 Somit würde der gesamte kartesianische Produktraum in diesem veranschaulichenden Beispiel 72 verschiedene Kombinationen von Attribut-Wert-Paaren umfassen. Wie vorher angemerkt, können diese 72 verschiedenen Kombinationen von Attribut-Wert-Paaren auf einen kleineren Satz von Kombinationen reduziert werden, die immer noch eine umfassende n-fache Abdeckung des kartesianischen Produktraums bereitstellen. Wenn zum Beispiel unter Bezugnahme auf dasselbe oben aufgeführte Beispiel eine umfassende paarweise Abdeckung gesucht wird, können die 72 verschiedenen Kombinationen auf 12 unterschiedliche Kombinationen reduziert werden, die zusammen jede mögliche paarweise Interaktion von Attributwerten umfassen. Die reduzierte Anzahl von Kombinationen, die zum Bereitstellen von n-facher Abdeckung erforderlich ist, kann sich logarithmisch mit höher werdendem n erhöhen.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung wird der gesamte kartesianische Produktraum, der alle Kombinationen von Attribut-Wert-Paaren umfasst, auf einen kleineren Satz von CTD-Testvektoren reduziert, der eine umfassende n-fache Abdeckung für ein gewünschtes n bereitstellt. In komplexen Hardware- oder Software-Systemen kann die Gesamtanzahl von Attributen und entsprechenden Kandidaten-Attributwerten ziemlich groß sein, wobei in diesem Fall die Gesamtanzahl von möglichen Kombinationen von Attributwerten, die den gesamten kartesianischen Produktraum ausmachen, astronomisch hoch sein kann, wodurch es praktisch unmöglich ist, alle möglichen Kombinationen zu testen. Die Reduzierung des gesamten kartesianischen Produktraums auf eine wesentlich kleinere Anzahl von CTD-Testvektoren, die immer noch eine umfassende n-fache Abdeckung bereitstellen, ermöglicht es, jeden n-fachen (oder m-fachen, wobei m < n) Fehler zu erkennen, ohne jede mögliche Kombination in dem Testraum direkt zu testen.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung kann ein binäres Entscheidungsdiagramm oder dergleichen verwendet werden, um die Reduzierung durchzuführen und den reduzierten Satz von CTD-Vektoren zu identifizieren, der eine umfassende n-fache Abdeckung bereitstellt. In beispielhaften Ausführungsformen der vorliegenden Erfindung umfasst jeder generierte CTD-Testvektor eine eindeutige Kombination von Attributwerten, und der Satz der gesamten CTD-Testvektoren umfasst jede mögliche n-fache Interaktion von Attributwerten. Insbesondere kann jeder CTD-Vektor eine Dimension aufweisen, die der Anzahl von Attributen entspricht, die modelliert sind, wobei jedes Element des CTD-Vektors ein jeweiliger Attributwert für ein entsprechendes Attribut ist. Der Satz von generierten CTD-Vektoren ist jedoch möglicherweise nicht eindeutig. Das heißt, es können mehrere verschiedene Sätze von CTD-Vektoren vorhanden sein, von denen jeder eine umfassende n-fache Abdeckung bereitstellt. In beispielhaften Ausführungsformen der vorliegenden Erfindung können die CTD-Vektoren beliebig gewählt werden und trotzdem immer noch eine umfassende n-fache Abdeckung sicherstellen. In anderen beispielhaften Ausführungsformen kann der anfängliche Satz von CTD-Vektoren unter Berücksichtigung spezifischer Kriterien gewählt werden, um zum Beispiel die Darstellung von bestimmten Attributwerten in dem Satz von CTD-Vektoren zu vergrößern oder zu verkleinern.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung werden die CTD-Testvektoren nach dem Generieren des anfänglichen Satzes von CTD-Testvektoren verwendet, um einen entsprechenden Satz von Testfällen zu generieren. Zum Beispiel kann der Satz von CTD-Testvektoren als Eingabe in ein Testfall-Generierungswerkszeug bereitgestellt werden, das konfiguriert ist, um einen jeweiligen entsprechenden Testfall für jeden CTD-Vektor zu generieren. Jeder Testfall kann zum Testen der Interaktionen zwischen der bestimmten Kombination von Attributwerten konzipiert werden, die in dem entsprechenden CTD-Vektor enthalten sind.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung werden die Testfälle dann ausgeführt. Die Ausführung jedes Testfalls führt entweder zu einem erfolgreichen Ausführungsergebnis, das angibt, dass die dem Testfall zugehörige Kombination von Attributwerten keinen n-fachen (oder m-fachen, wobei m < n) Fehler enthält, oder zu einem fehlerhaften Ausführungsergebnis, das angibt, dass die dem Testfall zugehörige Kombination von Attributwerten einen n-fachen (oder m-fachen, wobei m < n) Fehler enthält. In beispielhaften Ausführungsformen der vorliegenden Erfindung wird dann ein bestimmter fehlerhafter Testfall ausgewählt, und auf den fehlerhaften Testfall wird eine inverse Kombinatorik angewendet, um einen neuen Satz von Testfällen zu erzeugen, die fähig sind, den Programmfehler aufzuzeigen. In beispielhaften Ausführungsformen der vorliegenden Erfindung umfasst eine Anwendung von inverser Kombinatorik auf den ausgewählten fehlerhaften Testfall ein Generieren eines jeweiligen neuen Testfalls in Bezug auf jedes Attribut. Somit kann die Anzahl von generierten neuen Testfällen gleich der Anzahl von Attributen sein. In beispielhaften Ausführungsformen der vorliegenden Erfindung wird in jedem neuen Testfall der Attributwert eines entsprechenden Attributs in dem ausgewählten fehlerhaften Testfall in einen Attributwert für dieses Attribut geändert, das nicht in irgendeinem fehlerhaften Testfall vorhanden ist, und der jeweilige Attributwert für jedes andere Attribut bleibt unverändert von dem, das in dem ausgewählten fehlerhaften Testfall vorhanden ist.
  • Dieser neue Testfall bzw. die neuen Testfälle, der bzw. die zu einem erfolgreichen Ausführungsergebnis führt bzw. führen, kann bzw. können dann zum Erkennen und Lokalisieren des n-fachen (oder m-fachen, wobei m < n) Fehlers erfasst werden. Insbesondere können die spezifischen Attribut-Wert-Paare, die den Fehler verursachen, auf Grundlage dieser neuen Testfälle identifiziert werden, die erfolgreich ausgeführt werden. Ein Regressions-Bucket von Testfällen kann dann auf Grundlage der fehlererzeugenden Kombination von Attribut-Wert-Paaren generiert werden. Insbesondere kann jede mögliche Kombination von Attributwerten, die die Attributwerte umfassen, für die ermittelt wird, dass sie den Fehler verursachen, bestimmt werden, und ein Regressions-Bucket von entsprechenden Testfällen zum Testen dieser Kombinationen kann zum Beispiel zur Verwendung durch einen manuellen Tester ausgegeben werden. In beispielhaften Ausführungsformen der vorliegenden Erfindung schlagen insbesondere alle Testfälle fehl, die in dem Regressions-Bucket enthalten sind, wenn sie ausgeführt werden, bevor der Programmfehler behoben ist, wobei alle Regressions-Bucket-Testfälle danach bestehen sollten (d.h. ein erfolgreiches Ausführungsergebnis erzeugen).
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung können für das SUT architekturbedingte Einschränkungen gelten. Architekturbedingte Einschränkungen können alle einer Vielfalt von Einschränkungen für Eingaben in das SUT umfassen. Zum Beispiel kann eine beispielhafte Einschränkung vorliegen, dass, wenn ein vorgegebenes Attribut einen bestimmten Attributwert hat, ein oder mehrere andere Attribute davon ausgeschlossen ist bzw. sind, einen oder mehrere gewisse(n) Attributwert(e) zu haben. Eine andere beispielhafte architekturbedingte Einschränkung kann vorliegen, wenn ein vorgegebenes Attribut einen bestimmten Attributwert hat, dass ein oder mehrere andere Attribute einen oder mehrere gewisse(n) Attributwert(e) haben muss bzw. müssen. Noch eine weitere beispielhafte architekturbedingte Einschränkung kann sein, dass ein neues Attribut eingeführt wird, wenn und nur wenn ein bestimmtes Attribut einen bestimmten Attributwert hat. Es sollte klar sein, dass die oben genannten Beispiele für architekturbedingte Einschränkungen nur veranschaulichend und nicht erschöpfend sind.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung werden architekturbedingte Einschränkungen vor einem Durchführen der Reduzierung des gesamten kartesianischen Raums auf den anfänglichen Satz von CTD-Vektoren berücksichtigt, der die gewünschte umfassende n-fache Abdeckung bereitstellt. Das heißt, in beispielhaften Ausführungsformen der vorliegenden Erfindung werden bestimmte Kombinationen von Attributwerten, die irgendwelche architekturbedingten Einschränkungen verletzen, zuerst aus dem kartesianischen Produktraum ausgeschlossen, und anschließend wird die Reduzierung auf den Satz von CTD-Vektoren durchgeführt, die eine umfassende gewünschte n-fache Abdeckung bereitstellen. Auf diese Weise kann sichergestellt werden, dass keine Kombination von Attributwerten, die eine architekturbedingte Einschränkung verletzt, in dem anfänglichen Satz von CTD-Vektoren enthalten ist. Ferner kann in beispielhaften Ausführungsformen der vorliegenden Erfindung, wenn ein ausgewählter Testfall, der einem anfänglichen CTD-Vektor entspricht, fehlschlägt und zur Erweiterung ausgewählt wird, um einen Satz von neuen Testfällen zu erhalten, die dafür ausgelegt sind, einen n-fachen Fehler zu erkennen und zu lokalisieren, diese Erweiterung zuerst durchgeführt werden, ohne irgendwelche architekturbedingten Einschränkungen zu berücksichtigen. Anschließend können alle neuen Testfälle ausgeschlossen werden, die eine architekturbedingte Einschränkung verletzen. Auf diese Weise kann sichergestellt werden, dass die Erweiterung so viel Abdeckung des Testraums wie möglich in der Nachbarschaft rund um den fehlerhaften Testfall bereitstellt. Außerdem kann in beispielhaften Ausführungsformen der vorliegenden Erfindung das Regressions-Bucket von fehlerhaften Testfällen zuerst ohne Rücksicht auf architekturbedingte Einschränkungen generiert werden, und anschließend können alle Testfälle, die eine architekturbedingte Einschränkung verletzen, aus dem Regressions-Bucket ausgeschlossen werden. Das heißt, dass Testfälle, die allen möglichen Kombinationen des gesamten kartesianischen Produkt-Testraums entsprechen, der die bestimmte Kombination von Attributwerten umfasst, die einen n-fachen Fehler oder Fehler geringerer Rangordnung verursachen, zuerst generiert und anschließend reduziert werden können, um jeden Testfall bzw. alle Testfälle auszuschließen, der bzw. die eine Einschränkung verletzen. Alternativ können die Testfälle, die in dem Regressions-Bucket enthalten sind, aus dem reduzierten kartesianischen Raum ausgewählt werden, aus dem der anfängliche Satz von CTD-Vektoren ausgewählt wurde, wobei das Regressions-Bucket in diesem Fall so generiert wird, dass es nur diejenigen Kombinationen von Attributwerten umfasst, die den untergeordneten Satz von Attributwerten enthalten, die den Fehler verursachen und die keine architekturbedingte Einschränkung verletzen.
  • Beispielhafte Ausführungsformen der Erfindung umfassen technische Merkmale, die verschiedene technische Funktionen umfassen, die zu technischen Effekten führen, die verschiedene Verbesserungen von Computertechnologie bereitstellen. Zum Beispiel umfassen beispielhafte Ausführungsformen der Erfindung die technische Funktion von inverser Kombinatorik, um einen Satz von Testfällen aus einem ausgewählten fehlerhaften Testfall zu erweitern. Dieses technische Merkmal ermöglicht, dass ein n-facher Fehler oder ein Fehler geringerer Rangordnung innerhalb einer einzigen Wiederholung der Erweiterung erkannt und lokalisiert werden kann. Dieser technische Effekt stellt eine Verbesserung für die Fehlerbehebungs- und Fehlererkennungs-Computertechnologie dar, da er die Erstellung von zusätzlichen Testfällen rund um einen ausgewählten fehlerhaften Testfall auf eine Weise automatisiert, die speziell dafür ausgelegt ist, Erkennung und Lokalisierung eines Fehlers zu erleichtern. Somit ist die automatisierte Generierung von neuen Testfällen gemäß beispielhaften Ausführungsformen der Erfindung fähig, einen Fehler effizienter und durch Verwenden einer Methodik aufzuzeigen, die von einer manuellen Testfallgenerierung grundlegend verschieden ist. Beispielhafte Ausführungsformen der Erfindung umfassen auch das technische Merkmal eines Generierens eines Regressions-Buckets von Testfällen, der jede mögliche Kombination von Attributwerten testet, die den bestimmten untergeordneten Satz von Attributwerten umfasst, der den n-fachen Fehler verursacht. Somit umfasst das Regressions-Bucket nur Testfälle, die alle vor einer Korrektur des Fehlers fehlschlagen würden, und die nach einer Korrektur des Fehlers bestehen würden. Somit stellt die automatisierte Generierung eines Regressions-Buckets für fehlerhafte Testfälle gemäß beispielhaften Ausführungsformen der Erfindung eine Verbesserung von Computertechnologie bereit, indem ein Tester oder ein automatisierter Test-Algorithmus mit einem Satz von Testfällen bereitgestellt wird - wobei für jeden ein Fehlschlagen sichergestellt wird - sodass der Tester oder der automatisierte Test-Algorithmus das Regressions-Bucket von Testfällen verwenden kann, um zu überprüfen, ob ein Fehler korrigiert worden ist, wenn alle Testfälle schließlich nach einem Durchführen der Fehlerbehebung bestanden haben.
  • Eine technische Herausforderung beim Verwenden von Tests, die unter CTD-Verwendung generiert wurden, liegt in dem Fall eines Generierens von Testprogrammen vor, die eine bestimmte Reihenfolge von Operationen von Aktionen erfordern, die auf dem SUT durchgeführt werden sollen. In diesem Fall besteht eine technische Herausforderung darin, den Testraum durch Verwenden der vorliegenden CTD-Technologie zu reduzieren. Zum Beispiel soll angenommen werden, dass die folgenden Aktionen (A, B und C) in jeder Reihenfolge auf dem SUT auftreten können, und dass ein Test erfordert, dass ein Satz von Unterbrechungspunkten in jeder Aktion vorhanden sein muss, die auftreten, bevor die nächste Aktion stattfindet:
    • Aktion A <runToCompletion, StopBkpt1, StopBkpt2, StopBkpt3>
    • Aktion B <runToCompletion, StopBkpt4, StopBkpt5>
    • Aktion C <runToCompletion, StopBkpt6>
  • Hier kann jede der Aktionen A, B und C eine Operation sein, die von/auf dem SUT durchgeführt werden kann. Jede Aktion kann mindestens einem Attribut zugehörig sein, und ein bestimmter Wert bzw. mehrere bestimmte Werte kann bzw. können dem bzw. den Attributen für jeden Test zugewiesen werden. Auf Grundlage des bzw. der zugewiesenen Werte wird ein gewünschtes Ergebnis von dem Test erwartet. Wenn das gewünschte Ergebnis erhalten wird, wird der Test als „bestanden“ berücksichtigt, und andernfalls wird der Test als „fehlgeschlagen“ betrachtet. Zum Beispiel kann die Aktion A einem Attribut A-a zugehörig sein, dem ein Wert a1 in einem ersten Test, a2 in einem zweiten Test usw. zugewiesen wird. Der A-a zugewiesene Wert kann in jedem Text verschieden sein. Die Werte von a1, a2 usw. werden spezifiziert, zum Beispiel a1=runToCompletion, a2= StopBkpt1, a3=StopBkpt2 und a4=StopBkpt3.
  • Unter folgender Bezugnahme auf die oben genannten Aktionen A, B und C wird jede der folgenden Reihenfolgen von Operationen der Aktionen als für einen Test des SUT erforderlich betrachtet: ABC, ACB, BAC, BCA, CAB, and CBA. In jeder dieser Reihenfolgen von Operationen, wenn irgendeine der Aktion nicht bis zum Abschluss ausgeführt wird, sondern an einem Unterbrechungspunkt stoppt und anschließend nur bis zum Abschluss weiter ausgeführt wird, nachdem eine andere Aktion oder mehrere andere Aktionen stattgefunden hat bzw. haben, können die Reihenfolgen der Operationen wie die folgenden vier Beispiele aussehen:
    1. 1. A<StopBkpt1>-B<runToCompletion>-A<runToCompletion>-C<runToCompletion>;
    2. 2. A<StopBkpt1>-B<runToCompletion>-C<runToCompletion>-A<runToCompletion>;
    3. 3. A<StopBkpt1>-B<runToCompletion>-A<StopBkpt3>-C<runToCompletion>-A<runToCompletion>; und
    4. 4. A<StopBkpt2>-B<StopBkpt4>-A<runToCompletion>-C<StopBkpt6>-B<runToCompletion>-C<runToCompletion>.
  • Aufgrund der derzeitigen CTD-Technologie zum Identifizieren von Attribut/Wert-Paaren, die in einer kombinatorischen Reduzierung verwendet werden sollen, erstellt die vorliegende Testinfrastruktur auf CTD-Grundlage mehrere Modelle zum Abdecken jedes Falls einer bestimmten Reihenfolge von Operationen. Hier muss ein Modell für die Reihenfolge der Aktionen selbst erstellt werden, und ein separates zweites Modell muss den Ausführungszustand jeder Aktion darstellen (d.h. Werte, die den Attributen zugewiesen sind). Ferner müssen die Modelle überlagert werden, um den Testraum zu identifizieren, der verwendet werden soll. Dies ist nicht nur zeitaufwendig, sondern auch fehleranfällig.
  • Ausführungsformen der vorliegenden Erfindung befassen sich mit derartigen technischen Herausforderungen. Gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden die technischen Herausforderungen durch ein Identifizieren der Attribute, die Tests mit einer bestimmten Reihenfolge von Operationen erfordern, und ferner ein Identifizieren von Anforderungen angegangen (zum Beispiel muss Aktion A vor Aktion B erfolgen). Weiter noch wird ein vollständiges kartesianisches Produkt der eindeutigen Werte der Attribute bestimmt. Eine kombinatorische Reduzierung und Testfall-Verringerung wird anschließend auf den Satz von Tests durch Verwenden des kartesianischen Produkts angewendet, um alle redundanten Tests zu entfernen. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann ein Identifizieren der Attribute und der Einschränkungen und ein Erstellen des kartesianischen Produkts in einem einzigen Schritt durchgeführt werden, d.h. durch Verwenden eines einzelnen Modells.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung können die Informationen über die Reihenfolge durch Verwenden einer Markov-Kette, die als Nutzinformation verwendet wird, in das System gespeichert werden, das die CTD-Reduzierung und Erweiterung durchführt, um die Testprogramme für das SUT zu generieren. Eine Markov-Kette ist ein stochastisches Modell, das eine Abfolge von möglichen Ereignissen beschreibt, in denen die Wahrscheinlichkeit jedes Ereignisses nur von dem Zustand abhängt, der in dem vorherigen Ereignis erreicht wurde.
  • Im Folgenden wird auf 1 verwiesen, die eine schematische Veranschaulichung einer computerisierten Umgebung gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung zeigt. Eine computerisierte Umgebung 100 kann eine oder mehrere computerisierte Werkzeuge umfassen. Es ist anzumerken, dass die Darstellung ein mögliches Beispiel für ein Blockschaubild ist, und dass einige Komponenten aus Gründen der Übersichtlichkeit nicht dargestellt sein können.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann ein Benutzer 110, wie zum Beispiel ein Entwickler, ein QA-Mitarbeiter, ein Tester, ein Designer, ein Prüfingenieur oder dergleichen mit der computerisierten Umgebung 100 interagieren. Der Benutzer 110 kann eine Mensch-Maschine-Schnittstelle (MMI) 112 nutzen, wie beispielweise ein Endgerät, eine Anzeige, eine Tastatur, eine Eingabeeinheit oder dergleichen.
  • In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann ein Abdeckungsmodell-Definitionswerkzeug 102 verwendet werden, um das Testabdeckungsmodell zu definieren, wie zum Beispiel ein Funktionsabdeckungsmodell oder dergleichen. In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann der Benutzer 110 die Attribute definieren, die getestet werden sollen, zum Beispiel die Funktionsattribute für den Fall, dass eine Funktionsabdeckung getestet wird. In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann ein ähnliches Werkzeug zum Definieren eines Testraums verwendet werden. In einigen beispielhaften Ausführungsformen kann das Abdeckungsmodell so angepasst werden, dass es als ein Testmodell verwendet werden kann.
  • In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann eine Testausführungs-Engine 108 zum Testen des SUTs verwendet werden. Es ist anzumerken, dass das SUT Hardware, Firmware, Software, eine Kombination davon oder jeder andere Typ einer computerisierten Einheit sein kann. Die Testausführungs-Engine 108 kann ein Prüfwerkzeug auf Simulationsgrundlage, eine Testgenerierungsplattform oder dergleichen sein. Die Testausführungs-Engine 108 kann betriebsfähig mit einem Testplanungswerkzeug 106 verbunden und konfiguriert sein, um ein Testen gemäß dem Testplan durchzuführen. In einigen beispielhaften Ausführungsformen kann das Testplanungswerkzeug 106 die von der Testausführungs-Engine 108 durchzuführenden Tests bereitstellen. Es ist anzumerken, dass eine dynamische Überprüfung ein breiter gefasstes Konzept als ein Testen des SUTs ist, und sie umfasst ferner Testplanung, Abdeckungsanalyse und dergleichen. Die Testausführungs-Engine 108 stellt nur einen Aspekt des gesamten Umfangs von Operationen bereit, die während einer dynamischen Überprüfung durchgeführt werden können und nicht verwendet werden sollten, um den Begriff „dynamische Überprüfung“ eng begrenzt aufzufassen.
  • In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung ist ein Abdeckungsanalyse-Werkzeug 104 konfiguriert, um eine Abdeckung des Testraums für das SUT auf Grundlage der dynamischen Überprüfung zu messen, der durch die Testausführungs-Engine 108 durchgeführt wird. Zum Beispiel kann das Abdeckungsanalyse-Werkzeug 104 ein Funktionsabdeckungs-Analysewerkzeug sein. Das Abdeckungsanalysewerkzeug 104 stellt eine Abdeckungsmessung bereit, wie zum Beispiel einen Abschnitt des Abdeckungs-Testraums oder des definierten Testplans, der Abdeckungsaufgaben angibt, die während einer dynamischen Überprüfung abgedeckt wurden, die von der Testausführungs-Engine 108 durchgeführt wurde. Der Benutzer 110 kann die Abdeckungsmessung und/oder die Liste von abgedeckten Aufgaben prüfen.
  • In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann ein Testplanungswerkzeug 106 einen Testplan definieren, der abgedeckt werden soll. In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann ein Testplan ein Satz von Abdeckungsaufgaben sein, die abgedeckt werden sollen. In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann das Testplanwerkzeug 106 Tests bereitstellen, die den Testplan wahrscheinlich abdecken, wie beispielsweise auf Grundlage einer Test-Benchmark, die in einem Datastore gespeichert sind, der Tests umfasst, die bekannt sind/von denen angenommen wird, dass sie spezifische Aspekte des SUTs abdecken. Als weiteres Beispiel wird das Testplanwerkzeug 106 konfiguriert, um Tests so zu generieren, dass sie Abdeckungsaufgaben abdecken. Der Benutzer 110 kann den Testplan, den ausgewählten Test oder dergleichen prüfen. In einigen beispielhaften Ausführungsformen der vorliegenden Erfindung kann der Benutzer 110 Parameter für das Testplanungswerkzeug 106 bereitstellen, die zum Bestimmen des Ziels des Testplans verwendet werden sollen, wie zum Beispiel eine gewünschte Interaktionsebene. Ausführungsformen der vorliegenden Erfindung ermöglichen die Beseitigung jeglicher Redundanz in den generierten Tests.
  • Zwar wurde die Darstellung in 1 mit spezifischen Komponenten beschrieben, darunter das Abdeckungsmodell-Definitionswerkzeug 102, das Abdeckungsanalysewerkzeug 104, das Testplanungswerkzeug 106 und die Testausführungs-Engine 108, Ausführungsformen der vorliegenden Erfindung sind aber nicht auf diese Komponenten oder Systemkonfigurationen beschränkt und können mit einer anderen Systemkonfiguration umgesetzt werden, die weniger oder zusätzliche Komponenten verwendet.
  • 2 ist ein Blockschaubild, das Module darstellt, die eine Test-Infrastruktur gemäß einer Ausführungsform der Erfindung bereitstellen. Insbesondere umfasst die Infrastruktur einen Testgenerator 208. Der Testgenerator 208 greift auf eine Test-Infrastruktur zu, wie zum Beispiel ein Repository von Testfällen 202, das Reihen von Testfällen speichert, die verfügbar sind, um die Richtigkeit des SUTs 214 zu überprüfen. Jeder Testfall spezifiziert eine Eingabe, die auf das SUT 214 und die erwartete Antwort angewendet werden soll, die in Reaktion auf diese Eingabe zurückgegeben werden soll (um den korrekten Betrieb anzugeben). In der Regel sind die Testfälle in Sätzen (Testreihen) organisiert, zum Beispiel jede Testreihe für eine andere Komponente des SUTs 214.
  • Der Testgenerator 208 erstellt ein Regressions-Bucket für jede Ausführung des Tests auf dem SUT 214. Das Bucket gibt die Operationen an, die zum Ausführen der gewünschten Testfälle in einer durch eine Maschine lesbaren Sprache (beispielweise auf XML-Grundlage) durchgeführt werden sollen. Insbesondere werden in dem Fall eines vollständigen Tests alle verfügbaren Testfälle auf jeder Komponente des SUTs 214 ausgeführt; umgekehrt ist die Ausführung in dem Fall eines Regressions-Tests auf einen untergeordneten Satz von ausgewählten Testfällen begrenzt. Das auf diese Weise erhaltene Bucket kann in einer Datei gespeichert werden.
  • Der Testgenerator 208 veranschaulicht die Ereignis-Sortierinformationen 220 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Die Ereignis-Sortierinformationen 220 geben eine bestimmte Reihenfolge für einen Satz von Attributen/Operationen an, wie hierin beschrieben. Zum Beispiel geben die Ereignis-Sortierinformationen 220 eine vorbestimmte sequenzielle Reihenfolge an, in der Attribute getestet werden müssen. Die Ereignis-Sortierinformationen 220 können in der Form einer Markov-Kette in einer oder mehreren Ausführungsformen der vorliegenden Erfindung bereitgestellt werden. Der Testgenerator 208 sortiert die Tests in dem Bucket 212 auf Grundlage der Ereignis-Sortierinformationen 220.
  • Eine Testausführungs-Engine 108 steuert die Ausführung des Bucket-Lesevorgangs aus der Datei. Für jeden Testfall des Buckets gehört dazu die Anwendung der entsprechenden Eingabe auf das SUT 214. In Reaktion darauf gibt das SUT 214 eine entsprechende Ausgabe an die Testausführungs-Engine 108 zurück. Die Testausführungs-Engine 108 bestimmt das Ergebnis des Testfalls durch Vergleichen der Ausgabe mit der entsprechenden erwarteten Antwort (die zum Beispiel aus der Datei extrahiert wird). Das Ergebnis des Testfalls (d.h. positiv, wenn die beiden Werte übereinstimmen und andernfalls negativ) wird in einem Protokoll gespeichert. Dies kann zum Beispiel mittels eines standardmäßigen Testverfolgungswerkzeugs (TTT) (Test Tracking Tool) erreicht werden. Die Ergebnisse der (aktuellen) Ausführung des Tests stehen in dem Protokoll zur Analyse zur Verfügung.
  • Für ein großes komplexes SUT 214 kann die Testfall-Infrastruktur 202 eine große Menge an doppelten Testaktionen/Testfällen enthalten. Gemäß bestimmten Ausführungsformen der vorliegenden Erfindung integriert eine Technik, die entwickelt wurde, um sich mit diesen Herausforderungen zu befassen, die Verwendung eines Fingerabdruck-Repositories 206 mit einem Speicher von Informationen, die einen Satz von Fingerabdrücken umfassen, die einer Mehrzahl von Regressions-Tests entsprechen, die in dem Test-Repository 202 gespeichert sind. In einer Ausführungsform werden die Fingerabdrücke durch einen Fingerabdruck-Generator 204 generiert. Zum Beispiel kann das Fingerabdruck-Repository 206 Fingerabdrücke der meisten, wenn nicht sogar aller Tests, die in dem Test-Repository 202 gespeichert sind, und einen Verweis darauf umfassen, wo sich Kopien des Tests in der gesamten Testinfrastruktur befinden, ähnlich einem Index in einem Buch. Jeder Fingerabdruck identifiziert eindeutig einen spezifischen Codepfad, der durch einen entsprechenden Testfall abgedeckt wird. Auf diese Weise kann das System Fingerabdrücke (und entsprechende Tests) identifizieren, die redundant und in einigen Fälle doppelt sind.
  • Gemäß Ausführungsformen der vorliegenden Erfindung kann eine Verarbeitung der Ergebnisse 216 der Regressions-Tests, die durch den Testgenerator 208 generiert und durch die Testausführungs-Engine 108 ausgeführt wurden, eine Bestimmung eines Codepfads, der während einer Ausführung jedes generierten Regressions-Tests durchlaufen wurde, und eine Generierung eines Fingerabdrucks für jeden ausgeführten Regressions-Test zumindest teilweise auf Grundlage des Codepfads umfassen. In einigen Ausführungsformen der vorliegenden Erfindung können diese Schritte durch den Fingerabdruckgenerator 204 durchgeführt werden.
  • Ein Redundanzanalysator 218 vergleicht Fingerabdrücke, die allen Testfällen entsprechen, die durch den Testgenerator 208 generiert wurden, mit einer Mehrzahl von Fingerabdrücken, die in dem Fingerabdruck-Repository 206 gespeichert wurden. Der Redundanzanalysator 218 stellt eine Liste der von dem Testgenerator 208 generierten Regressions-Testfälle bereit, die mit einem oder mehreren Fingerabdrücken übereinstimmende Fingerabdrücke aufweisen, die in dem Fingerabdruck-Repository 206 gespeichert sind. Diese Informationen werden verwendet, um die doppelten Testfälle aus dem Test-Repository 202 auszuwählen und zu verwerfen (wie im Folgenden beschrieben).
  • 3 ist ein schematisches hybrides Datenfluss-/Blockschaubild, das Erkennung und Lokalisierung von Fehlern durch Verwenden von CTD-Techniken und Generieren eines Regressions-Buckets von fehlerhaften Testfällen veranschaulicht, die einen erkannten Fehler gemäß einer oder mehreren beispielhaften Ausführungsformen der Erfindung aufzeigen. 6 ist eine Prozessablauf-Darstellung eines veranschaulichenden Verfahrens 600 zum Erkennen und Lokalisieren eines n-fachen Fehlers durch Verwenden von CTD-Techniken und Generieren eines Regressions-Buckets von fehlerhaften Testfällen, die den erkannten n-fachen Fehler gemäß einer oder mehreren beispielhaften Ausführungsformen der Erfindung aufzeigen. 6 wird in Verbindung mit 1, 2 und 3 beschrieben.
  • Im Folgenden werden veranschaulichende Verfahren gemäß beispielhaften Ausführungsformen der Erfindung und entsprechende Datenstrukturen (z.B. Module, Einheiten und andere derartige Komponenten) zum Durchführen der Verfahren beschrieben. Es ist anzumerken, dass jede Operation des Verfahrens 600, das in 6 dargestellt wird, und/oder des Verfahrens 700, das in 7 dargestellt wird, von einem oder mehreren der Module oder dergleichen durchgeführt wird, die hierin beschrieben werden. Diese Module können in jeder Kombination von Hardware, Software und/oder Firmware umgesetzt werden, wie hierin beschrieben. In bestimmten beispielhaften Ausführungsformen kann ein bzw. können mehrere dieser Module zumindest teilweise als Software- und/oder Firmware-Module umgesetzt werden, die durch einen Computer ausführbare Anweisungen umfassen, die bei Ausführung durch eine Verarbeitungsschaltung verursachen, dass eine oder mehrere Operationen ausgeführt werden. Ein System oder eine Einheit, das bzw. die hierin so beschrieben wird, dass es bzw. sie zum Umsetzen von beispielhaften Ausführungsformen konfiguriert ist, kann eine oder mehrere Verarbeitungsschaltungen umfassen, von denen jede eine oder mehrere Verarbeitungseinheiten oder Knoten umfassen kann. Durch einen Computer ausführbare Anweisungen können einen durch einen Computer ausführbaren Programmcode umfassen, der bei Ausführung durch eine Verarbeitungseinheit verursachen kann, dass auf Eingabedaten, die in dem durch einen Computer ausgeführten Programmcode enthalten sind oder auf die verwiesen wird, zugegriffen wird oder von diesem verarbeitet werden, um Ausgabedaten zu erzielen.
  • Unter Bezugnahme auf 6 in Verbindung mit 3 werden in beispielhaften Ausführungsformen der vorliegenden Erfindung an einem Block 602 des Verfahrens 600 Eingaben in das SUT 214 als eine Sammlung von Attribut-Wert-Paaren 302 modelliert. Jede Anzahl von Attributen kann verwendet werden, um SUT-Eingaben zu modellieren, und jedes Attribut kann eine beliebige Anzahl von Kandidaten-Attributwerten übernehmen. An einem Block 604 werden durch einen Computer ausführbare Anweisungen von einem oder mehreren CTD-Vektor-Generierungsmodulen für eine n-fache Abdeckung 304 ausgeführt, um einen anfänglichen Satz von CTD-Vektoren 306 zu generieren, der eine n-fache Abdeckung eines gesamten kartesianischen Produktraums bereitstellt, der der Sammlung von Attribut-Wert-Paaren 302 zugehörig ist.
  • Insbesondere wird der gesamte kartesianische Produktraum, der alle möglichen Kombinationen der Attribut-Wert-Paare 302 enthält, auf einen kleineren Satz von Testvektoren 306 reduziert, der eine umfassende n-fache Abdeckung des gesamten Testraums bereitstellt. In beispielhaften Ausführungsformen der vorliegenden Erfindung kann die umfassende n-fache Abdeckung, die durch den Satz von CTD-Vektoren 306 bereitgestellt wird, eine umfassende paarweise Abdeckung sein. Wenn zum Beispiel angenommen wird, dass drei Attribute modelliert werden, und zwar ein Attribut „Name“, ein Attribut „Farbe“ und ein Attribut „Form“, wie in 4 gezeigt, und wenn ferner angenommen wird, dass das Attribut „Name“ vier verschiedene Attribute annehmen kann (Dale, Rachel, Andrew und Ryan), das Attribut „Farbe“ 2 verschiedene Attribute annehmen kann (grün, blau) und das Attribut „Form“ 3 verschiedene Attribute annehmen kann (Kreis, Quadrat, Dreieck), wäre die Gesamtanzahl von möglichen Kombinationen von Attribut-Wert-Paaren 4 * 3 * 2 = 24. Somit würde der gesamte kartesianische Produktraum in diesem veranschaulichenden Beispiel 24 verschiedene Kombinationen von Attribut-Wert-Paaren umfassen.
  • Die 24 verschiedenen Kombinationen von Attribut-Wert-Paaren können auf einen kleineren Satz von Kombinationen (d.h. den Satz von CTD-Vektoren 306) reduziert werden, die immer noch eine umfassende n-fache Abdeckung des kartesianischen Produktraums bereitstellen. Wenn zum Beispiel eine umfassende paarweise Abdeckung gesucht wird, können die 24 verschiedenen Kombinationen auf 12 unterschiedliche Kombinationen reduziert werden, die zusammen jede mögliche paarweise Interaktion von Attributwerten umfassen. Ein beispielhafter Satz von CTD-Vektoren 400 ist in 4 gezeigt. Der beispielhafte Satz von CTD-Vektoren 400 umfasst alle paarweisen Interaktionen zwischen den Attributwerten der Attribute „Name“, „Farbe“ und „Form“.
  • Ein binäres Entscheidungsdiagramm oder dergleichen kann verwendet werden, um die Reduzierung durchzuführen und den reduzierten Satz von CTD-Vektoren zu identifizieren, der eine umfassende n-fache Abdeckung bereitstellt. Während jeder CTD-Vektor in dem Satz von CTD-Vektoren 306 eine eindeutige Kombination von Attributwerten umfasst, kann der Satz von CTD-Vektoren 306 selbst nicht eindeutig sein. Das heißt, es können mehrere verschiedene Sätze von CTD-Vektoren vorhanden sein, von denen jeder eine umfassende n-fache Abdeckung bereitstellt. Während 4 zum Beispiel einen beispielhaften Satz von CTD-Vektoren 400 für die beispielhaften Attribute und beschriebenen Attributwerte darstellt, sollte klar sein, dass alternative Sätze von CTD-Vektoren, die verschiedene Kombinationen von Attributwerten umfassen, auch unabhängig eine umfassende n-fache Abdeckung bereitstellen können. Es sollte ferner klar sein, dass der beispielhafte Satz von CTD-Vektoren 400 zwar eine umfassende paarweise Abdeckung und teilweise Dreifach-Abdeckung (three-wise coverage) bereitstellt, aber eine größere Anzahl von CTD-Vektoren benötigt würde, um eine vollständige Dreifach-Abdeckung bereitzustellen. Allgemeiner ausgedrückt erhöht sich die Anzahl benötigter CTD-Vektoren zum Bereitstellen einer vollständigen n-fachen Abdeckung logarithmisch mit n.
  • 5 stellt einen beispielhaften CTD-Vektor 500 des Typs dar, der in dem Satz von CTD-Vektoren 306 enthalten sein kann. Der beispielhafte CTD-Vektor 500 umfasst mehrere Attribute 502. Wie vorher beschrieben, können die Attribute 502 zum Modellieren von Eingaben in das SUT 214 verwendet werden. Die Attribute 502 können Attributwerten 504 zugehörig sein. Insbesondere kann jedes Attribut 502 einen entsprechenden Attributwert 504 haben, der einer von einem oder mehreren Kandidaten-Attributwerten sein kann, die das Attribut annehmen darf.
  • Ferner reduziert das CTD-Vektor-Generierungsmodul für eine n-fache Abdeckung 104 gemäß einer oder mehreren Ausführungsformen den gesamten kartesianischen Produktraum, der der Sammlung von Attribut-Wert-Paaren 302 zugehörig ist, durch ein Identifizieren und Ausschließen derjenigen Kombinationen, die nicht den Ereignis-Sortierinformationen 220 zugehörig sind. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden die Ereignis-Sortierinformationen 220 zum Generieren von architekturbedingten Einschränkungen verwendet, die dem SUT 214 zugehörig sind. Nachdem der gesamte kartesianische Produktraum reduziert worden ist, um Kombinationen auszuschließen, die die architekturbedingten Einschränkungen auf dem SUT 214 nicht erfüllen, generiert das CTD-Vektor-Generierungsmodul für eine n-fache Abdeckung 304 einen weiteren reduzierten anfänglichen Satz von CTD-Vektoren 306. In beispielhaften Ausführungsformen der vorliegenden Erfindung wird jeder CTD-Vektor 306 nur aus dem reduzierten Testraum ausgewählt, der ungültige Kombinationen von Attributwerten ausschließt, die architekturbedingte Einschränkungen auf dem SUT 214 verletzen. Hier umfasst die ungültige Kombination eine Abfolge von Attributen, die nicht mit den Ereignis-Sortierinformationen 220 übereinstimmen.
  • Dementsprechend wird eine architekturbedingte Einschränkung auf dem kartesianischen Produktraum erstellt, dass ein bestimmtes erstes Attribut vor einem bestimmten zweiten Attribut gemäß den Ereignis-Sortierinformationen 220 verwendet werden muss. Zum Beispiel muss Aktion A auf jeden Fall vor Aktion B durchgeführt werden. Architekturbedingte Einschränkungen können zusätzlich jede einer Vielfalt von Einschränkungen für Eingaben in das SUT 214 umfassen. Zum Beispiel kann eine beispielhafte Einschränkung vorliegen, wenn ein vorgegebenes Attribut einen bestimmten Attributwert hat, dass eine oder mehrere andere Attribute davon ausgeschlossen sind, einen oder mehrere gewisse(n) Attributwert(e) zu haben. Eine andere beispielhafte architekturbedingte Einschränkung kann vorliegen, wenn ein vorgegebenes Attribut einen bestimmten Attributwert hat, dass ein oder mehrere andere Attribute einen oder mehrere gewisse(n) Attributwert(e) haben muss bzw. müssen. Noch eine weitere beispielhafte architekturbedingte Einschränkung kann sein, dass ein neues Attribut eingeführt wird, wenn und nur wenn ein bestimmtes Attribut einen bestimmten Attributwert hat. Es sollte klar sein, dass die oben genannten Beispiele für architekturbedingte Einschränkungen nur veranschaulichend und nicht erschöpfend sind.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung werden architekturbedingte Einschränkungen in einem Verfahren 600 vor einem Durchführen der Reduzierung des gesamten kartesianischen Raums auf den anfänglichen Satz von CTD-Vektoren 306 berücksichtigt, der die gewünschte umfassende n-fache Abdeckung bereitstellt. Das heißt, bestimmte Kombinationen von Attributwerten, die irgendwelche architekturbedingten Einschränkungen verletzen, werden zuerst aus dem kartesianischen Produktraum ausgeschlossen, und anschließend wird die Reduzierung auf den Satz von CTD-Vektoren 306 durchgeführt, der eine umfassende gewünschte n-fache Abdeckung bereitstellt. Auf diese Weise kann sichergestellt werden, dass keine Kombination von Attributwerten, die eine architekturbedingte Einschränkung verletzt, in dem anfänglichen Satz von CTD-Vektoren 306 enthalten ist.
  • Unter erneuter Bezugnahme auf 6 können an einem Block 606 des Verfahrens 600 in beispielhaften Ausführungsformen der vorliegenden Erfindung die Testfall-Generierungsmodule 208 ausgeführt werden, um aus dem anfänglichen Satz von CTD-Testvektoren 306 einen entsprechenden Satz von Testfällen 202 zu generieren, die anschließend durch das bzw. die Testfall-Ausführungsmodul(e) 108 ausgeführt werden, um für jeden Testfall ein Ausführungsergebnis (bestanden oder fehlerhaft) zu ergeben.
  • Zum Beispiel kann der Satz von CTD-Testvektoren 306 als Eingabe in ein Testfall-Generierungswerkszeug 208 bereitgestellt werden, das einen jeweiligen entsprechenden Testfall für jeden CTD-Vektor generiert. Jeder Testfall in dem Satz von Testfällen 202 testet die Interaktionen zwischen der bestimmten Kombination von Attributwerten, die in einem entsprechenden CTD-Vektor des Satzes von CTD-Vektoren 306 enthalten sind. Es sollte klar sein, dass ein Satz von CTD-Vektoren und ihre entsprechenden Testfälle hierin manchmal austauschbar beschrieben und/oder dargestellt werden können. Zum Beispiel kann der beispielhafte Satz von CTD-Vektoren 400, dargestellt in 4, austauschbar als der entsprechende Satz von Testfällen betrachtet werden, die die bestimmten Kombinationen von Attributwerten testen, die durch den Satz von CTD-Vektoren 400 dargestellt werden.
  • Außerdem empfängt der Testgenerator 208 die Ereignis-Sortierinformationen 220 gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung. Die Ereignis-Sortierinformationen 220 geben eine bestimmte Reihenfolge für einen Satz von Attributen/Operationen an, wie hierin beschrieben. Die Ereignis-Sortierinformationen 220 können in der Form einer Markov-Kette in einer oder mehreren Ausführungsformen der vorliegenden Erfindung bereitgestellt werden. Der Testgenerator 208 sortiert die Tests in dem Bucket 212 auf Grundlage der Ereignis-Sortierinformationen 220.
  • An einem Block 608 des Verfahrens 600 werden durch einen Computer ausführbare Anweisungen des bzw. der Testfall-Ausführungsmodule 108 ausgeführt, um zu bestimmen, ob irgendwelche Testfälle in dem Satz von Testfällen 202 fehlerhaft sind. In beispielhaften Ausführungsformen der vorliegenden Erfindung führt die Ausführung jedes Testfalls 202 entweder zu einem erfolgreichen Ausführungsergebnis, das angibt, dass die in dem entsprechenden CTD-Vektor 306 enthaltene Kombination von Attributwerten keinen n-fachen (oder m-fachen, wobei m < n) Fehler enthält, oder zu einem fehlerhaften Ausführungsergebnis, das angibt, dass die Kombination von Attributwerten in dem entsprechenden CTD-Vektor 306 einen n-fachen (oder m-fachen, wobei m < n) Fehler enthält.
  • Unter Bezugnahme auf das in 4 dargestellte Beispiel werden Testfälle, die dem beispielhaften Satz von CTD-Vektoren 400 entsprechen, am Block 606 ausgeführt, um für jeden Testfall ein jeweiliges Ausführungsergebnis zu ergeben. Insbesondere werden zwei Testfälle 402 und 404 als Fehlschlagsergebnis in 4 veranschaulichend dargestellt. Der fehlerhafte Testfall 402 testet die folgende Kombination von Attributwerten: Dale; blau; Dreieck, die jeweils den Attributen Name, Farbe und Form entsprechen. Der fehlgeschlagene Testfall 404 testet die folgende Kombination von Attributwerten: Dale; blau; Kreis, die jeweils den Attributen Name, Farbe und Form entsprechen. Obwohl „Dale“ und „Blau“ sowohl in dem CTD-Vektor, der dem fehlerhaften Testfalls 402 entspricht, als auch in dem CTD-Vektor vorhanden sind, der dem fehlerhaften Testfall 404 entspricht, ist in dieser Stufe in dem Prozess nicht klar, ob „Dale“ und „blau“ einen paarweisen Fehler generieren; ob „Dale“ und („Dreieck“ oder „Kreis“) die paarweisen Fehler generieren; oder ob „blau“ und („Dreieck“ oder „Kreis“) die paarweisen Fehler generieren. Anschließende Operationen des Verfahrens 600 können inverse Kombinatorik zum Erweitern des Testraums um einen ausgewählten fehlerhaften Testfall verwenden, um die bestimmte Kombination von Attributwerten zu erkennen und zu lokalisieren, die den n-fachen Fehler (paarweiser Fehler in dem Fall des in 4 dargestellten Beispiels) verursachen.
  • In Reaktion auf eine negative Bestimmung an einem Block 608 kann das Verfahren 600 enden, da keiner der anfänglichen Sätze von Testfällen 202 fehlerhaft ist. Da der anfängliche Satz von CTD-Vektoren 306 (auf dessen Grundlage der Satz von Testfällen 202 generiert wird) eine umfassende n-fache Abdeckung bereitgestellt hat, kann sichergestellt werden, dass kein n-facher Fehler oder Fehler geringerer Rangordnung vorhanden ist. Eine erfolgreiche Ausführung aller Testfälle in dem anfänglichen Satz von Testfällen 202 stellt jedoch nicht sicher, dass kein Fehler höherer Rangordnung (k-weise, wobei k > n) vorhanden ist.
  • Andererseits umfasst das Verfahren 600 in Reaktion auf eine positive Bestimmung am Block 608, die angibt, dass die Ausführung des Satzes von Testfällen 202 zu einem oder mehreren fehlerhaften Testfällen 314 führt, ein Verwenden eines inversen CTD-Testfall-Generierungsmoduls 316, um einen bestimmten fehlerhaften Testfall 314 auszuführen und auszuwählen und inverse Kombinatorik auf den ausgewählten fehlerhaften Testfall 314 anzuwenden, um einen neuen Satz von Testfällen 318 zu erzeugen, der verwendet werden kann, um die Kombination von Attributwerten zu erkennen und zu lokalisieren, die den n-fachen Fehler oder Fehler geringerer Rangordnung verursacht.
  • In beispielhaften Ausführungsformen der vorliegenden Erfindung umfasst eine Anwendung von inverser Kombinatorik auf den ausgewählten fehlerhaften Testfall 314 ein Generieren eines jeweiligen neuen Testfalls 318 in Bezug auf jedes Attribut. Somit kann die Anzahl von generierten neuen Testfällen gleich der Anzahl von Attributen sein. In beispielhaften Ausführungsformen wird in jedem neuen Testfall 318 der Attributwert in dem ausgewählten fehlerhaften Testfall 314 eines entsprechenden Attributs in einen Attributwert für dieses Attribut geändert, das nicht in irgendeinem anderen fehlerhaften Testfall vorhanden ist, und der jeweilige Attributwert für jedes andere Attribut bleibt unverändert von dem, das in dem ausgewählten fehlerhaften Testfall 314 vorhanden ist.
  • Unter erneuter Bezugnahme auf das in 4 dargestellte Beispiel, wobei angenommen wird, dass der fehlerhafte Testfall 402 an einem Block 610 ausgewählt wird, kann anschließend der beispielhafte Satz von neuen Testfällen 406 generiert werden. In beispielhaften Ausführungsformen der vorliegenden Erfindung kann jeder beispielhafte neue Testfall 406 durch Ändern des Attributwerts eines entsprechenden Attributs in dem ausgewählten fehlerhaften Testfall 402 auf einen anderen Wert generiert werden, der in keinem anderen fehlerhaften Testfall vorhanden ist. Zum Beispiel wird ein erster neuer Testfall erhalten, der dem CTD-Vektor <Andrew, blau, Dreieck> entspricht, indem der Attributwert des Attributs „Name“ in dem fehlerhaften Testfall 402 von „Dale“ in „Andrew“ geändert wird, wobei die Attributwerte für die anderen Attribute wie in dem fehlerhaften Testfall 402 beibehalten werden. Desgleichen wird ein zweiter neuer Testfall erhalten, der dem CTD-Vektor <Dale, grün, Dreieck> entspricht, indem der Attributwert des Attributs „Farbe“ in dem fehlerhaften Testfall 402 von „blau“ in „grün“ geändert wird, wobei die Attributwerte für die anderen Attribute wie in dem fehlerhaften Testfall 402 beibehalten werden. Schließlich wird ein dritter neuer Testfall erhalten, der dem CTD-Vektor <Dale, blau, Quadrat> entspricht, indem der Attributwert des Attributs „Form“ in dem fehlerhaften Testfall 402 von „Dreieck“ in „Quadrat“ geändert wird, wobei die Attributwerte für die anderen Attribute wie in dem fehlerhaften Testfall 402 beibehalten werden.
  • Es sollte klar sein, dass der jeweilige Attributwert, der geändert wird, um jeden neuen Testfall 406 zu erhalten, offensichtlich in dem ausgewählten fehlerhaften Testfall 402 nicht vorhanden ist. Des Weiteren ist ebenso jeder geänderte Attributwert in irgendeinem anderen fehlerhaften Testfall nicht vorhanden (z.B. fehlerhafter Testfall 404). Insbesondere ist der geänderte Attributwert „Andrew“ für den ersten neuen Testfall in keinem fehlerhaften Testfall vorhanden; der geänderte Attributwert „grün“ für den zweiten neuen Testfall ist in keinem fehlerhaften Testfall vorhanden; und der geänderte Attributwert „Quadrat“ für den dritten neuen Testfall ist in keinem fehlerhaften Testfall vorhanden.
  • Nach einem Generieren des Satzes von neuen Testfällen 318 durch ein Durchführen von inverser Kombinatorik an einem ausgewählten fehlerhaften Testfall 314 wird das bzw. werden die Testfall-Ausführungsmodule 108 verwendet, um die neuen Testfälle 318 an einem Block 612 des Verfahrens 600 auszuführen. Ferner erkennen und lokalisieren ein oder mehrere n-fache Fehlerlokalisierungsmodule an einem Block 613 einen n-fachen Fehler oder einen Fehler geringerer Rangordnung auf Grundlage der Attribute und ihren entsprechenden ursprünglichen fehlerhaften Attributwerten in dem ausgewählten fehlerhaften Testfall 314, die nach einem Ändern zu neuen Testfällen führten, die bestehen. Insbesondere werden durch einen Computer ausführbare Anweisungen des bzw. der n-fachen Fehler-Lokalisierungsmodule 322 ausgeführt, um Ausführungsergebnisse 320 für den Satz von neuen Testfällen 318 zu bewerten, um einen n-fachen Fehler oder einen Fehler geringerer Rangordnung auf Grundlage dieser neuen Testfälle zu erkennen und zu lokalisieren, die ein erfolgreiches Ausführungsergebnis erzielen. Wie hierin verwendet, verweist ein Fehler geringerer Rangordnung auf einen m-fachen Fehler, wobei m < n, wobei eine vollständige n-fache Abdeckung durch den Satz von CTD-Vektoren 306 angenommen wird.
  • Unter erneuter Bezugnahme auf das in 4 dargestellte Beispiel, das eine Erkennung und Lokalisierung eines paarweisen Fehlers annimmt, führt eine Ausführung des Satzes von neuen Testfällen 406 dazu, dass der erste neue Testfall, der dem CTD-Vektor <Andrew, blau, Dreieck> entspricht, besteht; dass der zweite neue Testfall, der dem CTD-Vektor <Dale, grün, Dreieck> entspricht, besteht; und dass der dritte neue Testfall, der dem CTD-Vektor <Dale, blau, Quadrat> entspricht, fehlerhaft ist. In beispielhaften Ausführungsformen bestimmt das bzw. bestimmen die n-fachen Fehler-Lokalisierungsmodule 322 auf Grundlage des fehlerhaften Ausführungsergebnisses für den dritten neuen Testfall, dass das Attribut „Form“ nicht zu einem paarweisen Fehler beiträgt, weil ein Ändern des Attributwerts von „Dreieck“ in dem fehlerhaften Test 402 in „Quadrat“ in dem dritten neuen Testfall weiterhin zu einem Fehler führt.
  • Andererseits kann das bzw. können die n-fachen Fehler-Lokalisierungsmodule 322 bestimmen, dass die Attribute, deren Attributwerte geändert wurden, um die neuen Testfälle zu erhalten, die die Ausführung bestanden haben, zu dem paarweisen Fehler beitragen. Insbesondere bestimmt das bzw. bestimmen die n-fachen Fehler-Lokalisierungsmodule 322 in beispielhaften Ausführungsformen der vorliegenden Erfindung auf Grundlage des erfolgreichen Ausführungsergebnisses für den ersten neuen Testfall, der dem CTD-Vektor <Andrew, blau, Dreieck< entspricht, dass das Attribut „Name“ und der ursprüngliche fehlerhafte Attributwert „Dale“ zu dem paarweisen Fehler beitragen. Desgleichen bestimmt das bzw. bestimmen die n-fachen Fehler-Lokalisierungsmodule 322 in beispielhaften Ausführungsformen auf Grundlage des erfolgreichen Ausführungsergebnisses für den zweiten neuen Testfall, der dem CTD-Vektor <Dale, grün, Dreieck< entspricht, dass das Attribut „Farbe“ und der ursprüngliche fehlerhafte Attributwert „blau“ ebenfalls zu dem paarweisen Fehler beitragen.
  • Somit kann das bzw. können die n-fachen Fehler-Lokalisierungsmodule 322 auf Grundlage der Ausführungsergebnisse 320 für den Satz von neuen Testfällen 318 in dem in 4 dargestellten Beispiel bestimmen, dass die Attribute „Name“ und „Farbe“, die jeweils die Attributwerte „Dale“ und „blau“ haben, für den paarweisen Fehler verantwortlich sind. Allgemeiner ausgedrückt kann das bzw. können die n-fachen Fehler-Lokalisierungsmodule 322 die spezifischen Attribut-Wert-Paare bestimmen, die einen n-fachen Fehler oder Fehler geringerer Rangordnung auf Grundlage einer Bewertung der Ausführungsergebnisse 320 für den Satz von neuen Testfällen 318 verursachen, und insbesondere die ursprünglichen Attributwerte, die in dem ausgewählten fehlerhaften Testfall geändert wurden, um bestehende neue Testfälle zu erhalten.
  • In dem in 4 dargestellten Beispiel wird ein anfänglicher Satz von CTD-Vektoren 400 angenommen, der eine umfassende paarweise Abdeckung bereitstellt, wobei in diesem Fall ein paarweiser Fehler oder Fehler geringerer Rangordnung (z.B. ein einzelner Attributwert, der einen Fehler verursacht) in einem einzigen Durchgang erkannt und lokalisiert werden kann, indem inverse Kombinatorik auf einen ausgewählten fehlerhaften Testfall angewendet wird, um den Satz von neuen Testfällen 318 zu erhalten. Wenn der anfängliche Satz von CTD-Vektoren 306 eine n-fache Abdeckung bereitstellt, deckt im Allgemeinen ein einzelner Durchgang einer Anwendung von inverser Kombinatorik auf einen ausgewählten fehlerhaften Testfall einen n-fachen Fehler oder Fehler geringerer Rangordnung auf. Zwar kann ein k-weiser Fehler, wobei k > n, durch Verwenden eines anfänglichen Satzes von CTD-Vektoren erkannt werden, der eine umfassende n-fache Abdeckung bereitstellt, dies wird jedoch nicht garantiert, da der anfängliche Satz von CTD-Vektoren 306 nicht alle k-weisen Interaktionen umfassen würde. Allerdings kann ein anfänglicher Satz von CTD-Vektoren 306, der eine umfassende n-fache Abdeckung bereitstellt (z.B. umfassende paarweise Abdeckung) einen gewissen Grad an k-weiser Abdeckung bereitstellen, wobei k > n (z.B. dreifache Abdeckung), und somit kann das Verfahren 600 auf Grundlage der bestimmten CTD-Vektoren, die ausgewählt wurden, einen k-weisen Fehler in einem einzigen Durchgang oder nach mehreren Durchgängen eines Anwendens von inverser Kombinatorik auf ausgewählte fehlerhafte Testfälle aufdecken.
  • Unter erneuter Bezugnahme auf 6 werden an einem Block 616 des Verfahrens 600 durch einen Computer ausführbare Anweisungen von einem oder mehreren Regressions-Bucket-Generierungsmodulen 326 ausgeführt, um ein Regressions-Bucket 212 von fehlerhaften Testfällen zu generieren und auszugeben, das alle möglichen Kombinationen in dem kartesianischen Produktraum umfasst, die die ursprünglichen fehlerhaften Attribut-Wert-Paare umfassen. Das Regressions-Bucket-Generierungsmodul 326 empfängt in beispielhaften Ausführungsformen der vorliegenden Erfindung eine Angabe des fehlererzeugenden untergeordneten Satzes von Attribut-Wert-Paaren 324 als Eingabe und bestimmt das Regressions-Bucket 212 und gibt dieses aus, das nur diejenigen Testfälle umfasst, die allen möglichen Kombinationen in dem kartesianischen Produktraum entsprechen, die die bestimmten Attributwerte umfassen, die den erkannten Fehler verursachen.
  • Unter erneuter Bezugnahme auf das Beispiel von 4 empfängt das Regressions-Bucket-Generierungsmodul 326 als Eingabe die Attribute „Name“ und „Farbe“ und die entsprechenden Attributwerte „Dale“ und „blau“, die den paarweisen Fehler verursachen, bestimmt alle Attribut-Wert-Kombinationen in dem kartesianischen Produktraum, die „Dale“ und „blau“ umfassen, und füllt das Regressions-Bucket 212 mit Testfällen auf, die allen von diesen Kombinationen entsprechen. In diesem Beispiel umfasst das Regressions-Bucket 212 die folgenden Testfälle: (Dale, blau, Dreieck); (Dale, blau, Kreis); und (Dale, blau, Quadrat). Da jeder der Testfälle in dem Regressions-Bucket 212 jeweils die Attributwerte „Dale“ und „blau“ für die Attribute „Name“ und „Farbe“ umfasst, die zusammen zu dem erkannten paarweisen Fehler beitragen, steht fest, dass jeder Testfall in dem Regressions-Bucket 212 fehlschlagen wird. In beispielhaften Ausführungsformen der vorliegenden Erfindung kann das Regressions-Bucket 212 zur Verwendung durch einen manuellen Tester oder einen anderen automatisierten Algorithmus zur Fehlerbehebung ausgegeben werden. Das Regressions-Bucket 212 von fehlerhaften Testfällen kann zum Überprüfen verwendet werden, ob der erkannte Fehler korrigiert worden ist, da alle in dem Regressions-Bucket 212 enthaltenen Testfälle nur bestehen, wenn der Fehler behoben ist. Wenn daher irgendein Testfall in dem Regressions-Bucket 212 weiterhin fehlschlägt, obwohl an dem SUT 214 in einem Versuch, den Fehler zu korrigieren, Modifizierungen vorgenommen wurden, wird dadurch angegeben, dass der Fehler nicht vollständig behoben worden ist.
  • Eine weitere technische Herausforderung beim Testen von Infrastruktur besteht darin, dass beim Überprüfen der Qualität des SUTs 214 eine unterschiedliche und robuste Sequenz von Tests verwendet werden muss, um so viele Szenarios wie möglich adäquat abzudecken, denen das SUT 214 ausgesetzt sein kann. Bestimmte Szenarios erfordern, dass eine spezifische Reihenfolge von Ereignissen auftreten muss, um zu garantieren, dass ein bestimmter Dienst oder Pfad wie hierin beschrieben ausgeführt wird. Für einige Szenarios ist es nicht notwendig, dass eine spezifische Reihenfolge von Ereignissen auftritt. Für diese Szenarios, die getestet werden sollen, besteht die technische Herausforderung darin, mehr Zufälligkeit in das Testsystem einzuführen, um eine Produktionsumgebung darzustellen, in der das SUT 214 wahrscheinlich arbeiten wird.
  • Eine oder mehrere Ausführungsformen der vorliegenden Erfindung befassen sich mit derartigen technischen Herausforderungen durch Verwenden von Markov-Ketten. Eine Markov-Kette ist ein mathematisches Konstrukt, das zum Modellieren von Zustandsänderungen in dem SUT 214 auf Grundlage beliebiger Wahrscheinlichkeiten eines spezifischen Ereignisses verwendet wird, das auftritt, während sich das SUT 214 in einem bestimmten Zustand befindet. Die Wahrscheinlichkeit eines Ereignisses, das für irgendeinen bestimmten Zustand auftritt, kann angepasst werden, um zu kontrollieren, wieviel Ordnung oder Willkürlichkeit das SUT 214 durch die Testfälle ausgesetzt wird, die durch die Test-Infrastruktur ausgeführt werden.
  • 7 stellt einen Ablaufplan für ein Bereitstellen einer deterministischen Reihenfolge von Tests dar, die für das SUT 214 in der Test-Infrastruktur gemäß einer oder mehreren Ausführungsformen der vorliegenden Erfindung auszuführen sind. Das dargestellte Verfahren 700 umfasst ein Modellieren der Attribut-Wert-Paare für das Testen an einem Block 702. Das Modellieren ähnelt dem, das im Verfahren 600 durchgeführt wurde. Das Verfahren umfasst ferner ein Zuweisen eines Wahrscheinlichkeitsfaktors zu einem Attribut-Wert-Paar an einem Block 704. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird jedes Attribut-Wert-Paar einem jeweiligen Wahrscheinlichkeitswert zugewiesen.
  • Der Wahrscheinlichkeitswert umfasst eine Wahrscheinlichkeit, dass der Attributwert für ein Generieren eines Testfalls ausgewählt wird. Alternativ oder zusätzlich gibt der Wahrscheinlichkeitswert eine Wahrscheinlichkeit eines Testfalls an, der demjenigen Attributwert zugehörig ist, der ausgewählt wird, um in dem Bucket 212 von Tests ausgeführt zu werden. Der Wahrscheinlichkeitswert kann manuell durch einen Testingenieur zum Ermöglichen einer höheren (oder geringeren) Chance konfiguriert werden, dass ein bestimmter Attributwert getestet wird. In einem Beispiel stellt ein Einrichten des Wahrscheinlichkeitswerts auf ,1' sicher, dass das Attribut-Wert-Paar getestet wird. Im Gegensatz dazu stellt ein Einrichten des Wahrscheinlichkeitswerts auf ,0' sicher, dass das Attribut-Wert-Paar nicht getestet wird.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden die ausgewählten Attribut-Wert-Paare und ihr jeweiliger zugewiesener Wahrscheinlichkeitswert an einem Block 706 in Form eines Hash-Werts gespeichert. Mit anderen Worten, ein Hash-Wert stellt ein Attribut-Wert-Paar und einen Wahrscheinlichkeitswert dar, der diesem Paar zugewiesen ist. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung werden eindeutige Hash-Werte für jedes der Attribut-Wert-Paare und deren Wahrscheinlichkeitswert generiert. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung können zum Sicherstellen von eindeutigen Hash-Werten Primzahlmodulus-, Multiplikations- usw. Operationen verwendet werden. Die Attribut-Wert-Paare und entsprechenden Wahrscheinlichkeitswerte werden dementsprechend als eine Hash-Tabelle gespeichert, die einem Prozessor ermöglichen, Techniken wie beispielweise Binärentscheidungsdiagramm oder dergleichen zu verwenden, um eine Reduzierung zum Identifizieren des reduzierten Satzes von CTD-Vektoren 306 durchzuführen, der eine umfassende n-fache Abdeckung bereitstellt. Das Binärentscheidungsdiagramm kann wie an anderer Stelle hierin beschrieben angewendet werden.
  • An einem Block 708 des Verfahrens 700 reduziert das CTD-Vektor-Generierungsmodul für eine n-fache Abdeckung 304 den gesamten kartesianischen Produktraum, der der Sammlung von Attribut-Wert-Paaren 302 zugehörig ist, durch ein Identifizieren und Ausschließen derjenigen Kombinationen, die sich nicht an die dem SUT 214 zugehörigen architekturbedingten Einschränkungen halten. Zum Beispiel können Ereignis-Sortierinformationen 220, eine Einschränkung in Bezug auf einen bestimmten Wert des Attributs und andere Typen von architekturbedingten Einschränkungen einem oder mehreren der Attribut-Wert-Paare zugehörig sein.
  • Nachdem der gesamte kartesianische Produktraum reduziert worden ist, um Kombinationen auszuschließen, die die architekturbedingten Einschränkungen auf dem SUT 214 nicht erfüllen, generiert das CTD-Vektor-Generierungsmodul für eine n-fache Abdeckung 304 an dem Block 710 des Verfahrens 700 den weiter reduzierten anfänglichen Satz von CTD-Vektoren 306. In beispielhaften Ausführungsformen wird jeder CTD-Vektor 306 nur aus dem reduzierten Testraum ausgewählt, der ungültige Kombinationen von Attributwerten ausschließt, die architekturbedingte Einschränkungen auf dem SUT 214 verletzen. Der CTD-Vektor 306 wird auf Grundlage des Wahrscheinlichkeitswerts ausgewählt, der dem Attribut-Wert-Paar zugewiesen ist. Um zu ermöglichen, dass sich der Wahrscheinlichkeitswert auf die Auswahl des Attribut-Wert-Paars auswirken kann, wird eine Markov-Kette verwendet, um jede Auswahl als einen Zustand darzustellen. Das mathematische Konstrukt der Markov-Kette modelliert anschließend Zustandsänderungen auf Grundlage der Wahrscheinlichkeiten eines spezifischen auftretenden Ereignisses (d.h. Auswahl eines bestimmten Attribut-Wert-Paars), während sich das System in einem bestimmten Zustand befindet (d.h. gegenwärtig ausgewähltes Attribut-Wert-Paar).
  • An einem Block 712 des Verfahrens 700 wird der anfängliche Satz von Testfällen 202 aus dem anfänglichen Satz von CTD-Vektoren 306 generiert und ähnlich wie der Block 606 des Verfahrens 600 ausgeführt. An einem Block 714 erfolgt ähnlich der Bestimmung am Block 608 des Verfahrens 600 eine Bestimmung, ob irgendeiner der Testfälle 202 fehlerhaft ist. In Reaktion auf eine negative Bestimmung am Block 714 endet das Verfahren 700, weil keiner der Testfälle 202 ein fehlerhaftes Ausführungsergebnis erzeugt. Andererseits fährt das Verfahren 700 in Reaktion auf eine positive Bestimmung am Block 714 mit einem Block 716 fort, wobei das inverse CTD-Testfall-Generierungsmodul 316 die neuen Testfälle 318 aus einem ausgewählten fehlerhaften Testfall generiert.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung wird ein jeweiliger Satz von neuen Testfällen für jedes Attribut generiert, indem der Attributwert für dieses Attribut in dem ausgewählten fehlerhaften Testfall auf jeden anderen Kandidaten-Attributwert für dieses Attribut geändert wird, das in keinem der fehlerhaften Testfälle vorhanden ist. Zum Beispiel wird ein einzelner neuer Testfall in Bezug auf jedes Attribut in einem ausgewählten fehlerhaften Testfall generiert, indem der Attributwert für das Attribut in einen anderen Attributwert geändert wird, der für das Attribut gewählt werden kann und der nicht in irgendeinem fehlerhaften Testfall vorhanden ist. Zwar kann es mehrere Attributwerte für ein Attribut geben, die nicht in irgendeinem fehlerhaften Testfall vorhanden sind, wobei jeder neue Testfall nur Tests mit einem derartigen Attribut generiert hat, und somit kann bei dieser Technik zum Erstellen neuer Tests jeder neue Testfall generiert werden, indem ein entsprechender Attributwert in dem ausgewählten fehlerhaften Testfall zu einem anderen Attributwert bewegt wird, der in keinem fehlerhaften Testfall vorhanden ist.
  • Alternativ wird in einer oder mehreren Ausführungsformen der vorliegenden Erfindung für jedes Attribut in einem ausgewählten fehlerhaften Testfall ein neuer Testfall für jeden möglichen Attributwert für dieses Attribut generiert, das nicht in irgendeinem fehlerhaften Testfall vorhanden ist. Wenn somit gemäß dieser zweiten Technik mehrere Attributwerte für ein Attribut vorhanden sind, die nicht in irgendeinem fehlerhaften Testfall vorhanden sind, wird ein neuer Testfall für jeden derartigen Attributwert generiert.
  • In dem in 4 dargestellten Beispiel wird zum Beispiel inverse Kombinatorik auf den fehlerhaften Testfall 402 angewendet, um den Satz von neuen Testfällen 406 gemäß der oben genannten ersten Technik zu erhalten. Das heißt, ein einzelner neuer Testfall wird gezeigt, der in Bezug auf jedes Attribut in dem ausgewählten fehlerhaften Testfall generiert wird, indem der entsprechende Attributwert für dieses Attribut in dem ausgewählten fehlerhaften Testfall 402 in einen anderen Kandidaten-Attributwert geändert wird, der nicht in irgendeinem fehlerhaften Testfall vorhanden ist. Wenn andererseits stattdessen der Satz von neuen Testfällen 406 gemäß der oben genannten zweiten Technik generiert wurde, umfasst der Satz von neuen Testfällen 406 die folgenden zusätzlichen Testfälle: (Ryan, blau, Dreieck) und (Rachel, blau, Dreieck), weil die Attributwerte „Ryan“ und „Rachel“ auch nicht in irgendeinem fehlerhaften Testfall vorhanden sind.
  • Ferner schließt das inverse CTD-Testfall-Generierungsmodul 316 jeden der neuen Testfälle aus, der eine architekturbedingte Einschränkung auf dem SUT 214 verletzt. Der Satz von neuen Testfällen 318, der über die inverse Kombinatorik-Erweiterung erhalten wurde, wird dementsprechend auf einen kleineren Satz reduziert, indem einer oder mehrere neue Testfälle, die eine oder mehrere architekturbedingte Einschränkungen verletzen, ausgeschlossen (und nicht ausgeführt) werden. Insbesondere, wenn ein ausgewählter Testfall, der einem anfänglichen CTD-Vektor 306 entspricht, fehlschlägt und zur Erweiterung ausgewählt wird, um den Satz von neuen Testfällen 318 zu erhalten, der dafür ausgelegt ist, einen n-fachen Fehler zu erkennen und zu lokalisieren, kann diese Erweiterung zuerst durchgeführt werden, ohne irgendwelche architekturbedingten Einschränkungen zu berücksichtigen. Anschließend können alle neuen Testfälle, die aus der Erweiterung generiert wurden, die eine architekturbedingte Einschränkung verletzen, aus dem Satz von neuen Testfällen 318 ausgeschlossen werden. Auf diese Weise kann sichergestellt werden, dass die Erweiterung so viel Abdeckung des Testraums wie möglich in der Nachbarschaft rund um den fehlerhaften Testfall bereitstellt.
  • Ferner umfasst das Verfahren 700 ein Ausführen des reduzierten Satzes von neuen Tests 318 an einem Block 718, ähnlich dem Block 612 des Verfahrens 600. An einem Block 720 des Verfahrens wird ein n-facher Fehler zumindest teilweise auf Grundlage der Attribute und ihren entsprechenden Attributwerten in dem ausgewählten fehlerhaften Testfall erkannt und lokalisiert, die nach einer Änderung einen neuen Testfall erzeugen, der beseht, ähnlich dem Block 614 des Verfahrens 600. Ferner wird an einem Block 722 das Regressions-Bucket 212 von fehlerhaften Testfällen ähnlich wie im Block 616 des Verfahrens 600 generiert. Jeder Testfall in dem Regressions-Bucket 212 entspricht einer bestimmten Kombination von Attributwerten, die den fehlererzeugenden untergeordneten Satz von Attribut-Wert-Paaren 324 umfasst, sodass das Regressions-Bucket 212 alle möglichen Kombinationen von Attribut-Wert-Paaren abdeckt, die sich an architekturbedingte Einschränkungen auf dem SUT 214 halten, und die die fehlererzeugenden Attributwerte umfassen. Weiter noch kann an einem Block 724 jeder fehlerhafte Testfall, der eine architekturbedingte Einschränkung verletzt, aus dem Regressions-Bucket 212 ausgeschlossen werden.
  • Dementsprechend vereinfacht das Verfahren 700, dass das Regressions-Bucket 212 von fehlerhaften Testfällen ohne Rücksicht auf architekturbedingte Einschränkungen generiert wird, und anschließend kann jeder Testfall, der eine architekturbedingte Einschränkung verletzt, aus dem Regressions-Bucket 212 ausgeschlossen werden. Das heißt, dass Testfälle, die allen möglichen Kombinationen des gesamten kartesianischen Produkt-Testraums entsprechen, der die bestimmte Kombination von Attributwerten umfasst, die einen n-fachen Fehler oder Fehler geringerer Rangordnung verursacht, zuerst generiert und anschließend reduziert werden können, und anschließend das Regressions-Bucket 212 reduziert werden kann, um jeden Testfall bzw. alle Testfälle auszuschließen, der bzw. die eine Einschränkung verletzen. In alternativen beispielhaften Ausführungsformen können die Testfälle, die in dem Regressions-Bucket 212 enthalten sind, aus dem reduzierten kartesianischen Raum ausgewählt werden, aus dem der anfängliche Satz von CTD-Vektoren ausgewählt wurde, wobei das Regressions-Bucket 212 in diesem Fall so generiert würde, dass es nur diejenigen Kombinationen von Attributwerten umfasst, die den untergeordneten Satz von Attributwerten enthalten, die den Fehler verursachen und die keine architekturbedingte Einschränkung verletzen.
  • Außerdem beruhen die ausgewählten Tests auf den Wahrscheinlichkeitswerten, die für jedes Attribut-Wert-Paar angepasst werden. Daher hat ein erstes Attribut-Wert-Paar mit einem höheren Wahrscheinlichkeitswert eine größere Chance getestet zu werden als ein zweites Attribut-Wert-Paar mit einem Wahrscheinlichkeitswert, der niedriger als der des ersten Attribut-Wert-Paars ist. Ein Testingenieur kann dementsprechend die Auswahl von Tests in der Test-Infrastruktur auf CTD-Grundlage steuern.
  • Unter folgender Bezugnahme auf 8 wird allgemein ein Systemschemaplan 800 gemäß einer Ausführungsform der vorliegenden Erfindung gezeigt. Das Computersystem 800 kann ein elektronisches Computer-Framework sein, das unter Einsatz von verschiedenen Datenübertragungstechnologien eine beliebige Anzahl und Kombination von Datenverarbeitungseinheiten und Netzwerken aufweist und/oder verwendet, wie hierin beschrieben. Das Computersystem 800 ist problemlos skalierbar, erweiterbar und ist modular mit der Fähigkeit, zu verschiedenen Diensten zu wechseln oder einige Funktionen unabhängig von anderen neu zu konfigurieren. Das Computersystem 800 kann zum Beispiel ein Server, Desktop-Computer, Laptop-Computer, Tablet-Computer oder Smartphone sein. In einigen Beispielen kann das Computersystem 800 ein Cloud-Computing-Knoten sein. Das Computersystem 800 kann in dem allgemeinen Kontext von Anweisungen beschrieben werden, die durch ein Computersystem ausführbar sind, wie beispielsweise Programmmodule, die von einem Computersystem ausgeführt werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen usw. enthalten, die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen umsetzen. Das Computersystem 800 kann in verteilten Cloud-Computing-Umgebungen betrieben werden, wobei Aufgaben von entfernt angeordneten Verarbeitungseinheiten ausgeführt werden, die über ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können Programmmodule sich sowohl in lokalen als auch entfernt angeordneten Computersystem-Speichermedien befinden, die Arbeitsspeicher-Speichereinheiten enthalten.
  • Wie in 8 gezeigt, hat das Computersystem 800 eine oder mehrere Zentraleinheiten (CPUs) 801a, 801b, 801c usw. (auf die insgesamt oder allgemein als Prozessor(en) 801 verwiesen wird). Die Prozessoren 801 können ein Einkernprozessor, ein Mehrkernprozessor, ein Datenverarbeitungs-Cluster oder jede Anzahl von anderen Konfigurationen sein. Die Prozessoren 801, die auch als Verarbeitungsschaltungen bezeichnet werden, sind über einen Systembus 802 mit einem Systemarbeitsspeicher 803 und verschiedenen anderen Komponenten verbunden. Der Systemarbeitsspeicher 803 kann einen Nur-Lese-Speicher (ROM) 804 und einen Direktzugriffspeicher (RAM) 805 umfassen. Der ROM 804 ist mit dem Systembus 802 verbunden und kann ein grundlegendes Eingabe/Ausgabe-System (BIOS) umfassen, das bestimmte grundlegende Funktionen des Computersystems 800 steuert. Der RAM ist ein Lese-Schreib-Arbeitsspeicher, der mit dem Systembus 802 zur Verwendung durch die Prozessoren 801 verbunden ist. Der Systemarbeitsspeicher 803 stellt einen temporären Arbeitsspeicherbereich für Operationen der Anweisungen während der Operation bereit. Der Systemarbeitsspeicher 803 kann einen Direktzugriffsspeicher (RAM), einen Nur-Lese-Speicher (ROM), einen Flash-Speicher oder beliebige andere geeignete Arbeitsspeichersysteme umfassen.
  • Das Computersystem 800 weist einen Eingabe/Ausgabe- (E/A) Adapter 806 und einen Datenübertragungsadapter 807 auf, die mit dem Systembus 802 verbunden sind. Der E/A-Adapter 806 kann ein Small-Computer-System-Interface- (SCSI) Adapter sein, der mit einer Festplatte 808 und/oder irgendeiner anderen ähnlichen Komponente Daten austauscht. Der E/A-Adapter 806 und die Festplatte 808 werden hierin gemeinsam als ein Massenspeicher 810 bezeichnet.
  • Software 811 zur Ausführung auf dem Computersystem 800 kann in dem Massenspeicher 810 gespeichert werden. Der Massenspeicher 810 ist ein Beispiel für ein konkretes Speichermedium, das von den Prozessoren 801 lesbar ist, wobei die Software 811 als Anweisungen zur Ausführung durch die Prozessoren 801 gespeichert ist, um das Computersystem 800 zu veranlassen zu arbeiten, wie hierin im Folgenden unter Bezugnahme auf die verschiedenen Figuren beschrieben. Beispiele für ein Computerprogrammprodukt und die Ausführung einer derartigen Anweisung wird hierin ausführlicher erörtert. Der Datenübertragungsadapter 807 verbindet den Systembus 802 mit einem Netzwerk 812, das ein externes Netzwerk sein kann, das ermöglicht, dass das Computersystem 800 mit anderen derartigen Systemen Daten austauschen kann. In einer Ausführungsform speichern ein Abschnitt des Systemarbeitsspeichers 803 und der Massenspeicher 810 zusammen ein Betriebssystem, das jedes geeignete Betriebssystem sein kann, wie zum Beispiel das Betriebssystem z/OS oder AIX der IBM Corporation, um die Funktionen der verschiedenen in 8 gezeigten Komponenten zu koordinieren.
  • Zusätzliche Eingabe/Ausgabe-Einheiten werden als mit dem Systembus 802 über einen Anzeigeadapter 815 und einen Schnittstellenadapter 816 verbunden gezeigt. In einer Ausführungsform können die Adapter 806, 807, 815 und 816 mit einem oder mehreren E/A-Bussen verbunden sein, die mit dem Systembus 802 über eine dazwischenliegende Busbrücke (nicht gezeigt) verbunden sind. Eine Anzeige 819 (z.B. ein Bildschirm oder Anzeigemonitor) ist mit dem Systembus 802 durch einen Anzeigeadapter 815 verbunden, der einen Grafik-Controller zum Verbessern der Leistung von grafikintensiven Anwendungen und einen Video-Controller umfassen kann. Eine Tastatur 821, eine Maus 822, ein Lautsprecher 823 usw. können mit dem Systembus 802 über den Schnittstellenadapter 816 verbunden werden, der zum Beispiel einen Super-E/A Chip umfassen kann, der mehrere Einheitenadapter in eine einzelne integrierte Schaltung integriert. Geeignete E/A-Busse zum Verbinden von Peripherie-Einheiten, wie beispielweise Festplatten-Controller, Netzwerkadapter und Grafikadapter, umfassen in der Regel gemeinsame Protokolle wie zum Beispiel die Peripheriekomponentenverbindung (PCI). Somit, wie in 8 konfiguriert, umfasst das Computersystem 800 eine Verarbeitungsfähigkeit in der Form der Prozessoren 801, und eine Speicherfähigkeit, die den Systemarbeitsspeicher 803 und den Massenspeicher 810, Eingabemittel wie beispielsweise die Tastatur 821 und die Maus 822 umfasst, und eine Ausgabefähigkeit, die den Lautsprecher 823 und die Anzeige 819 umfasst.
  • In einigen Ausführungsformen kann der Datenübertragungsadapter 807 Daten durch Verwenden jeder geeigneten Schnittstelle oder jedes geeigneten Protokolls übertragen, wie zum Beispiel unter anderem das Internet Small Computer System Interface. Das Netzwerk 812 kann unter anderem ein zellulares Netzwerk, ein Funknetzwerk, ein Weitverkehrsnetzwerk (WAN), ein lokales Netzwerk (LAN) oder das Internet sein. Eine externe Datenverarbeitungseinheit kann mit dem Computersystem 800 über das Netzwerk 812 verbunden sein. In einigen Beispielen kann eine externe Datenverarbeitungseinheit ein externer Web-Server oder ein Cloud-Computing-Knoten sein
  • Es sollte klar sein, dass das Blockschaubild von 8 nicht angeben soll, dass das Computersystem 800 alle in 6 gezeigten Komponenten umfassen soll. Das Computersystem 800 kann stattdessen weniger oder mehr geeignete Komponenten umfassen, die in 8 nicht veranschaulicht sind (z.B. zusätzliche Arbeitsspeicherkomponenten, eingebettete Controller, Module, zusätzliche Netzwerkschnittstellen usw.). Ferner können die hierin beschriebenen Ausführungsformen in Bezug auf das Computersystem 800 mit jeder geeigneten Logik umgesetzt werden, wobei die Logik, wie hierin angegeben, jede geeignete Hardware umfassen kann (z.B. unter anderem einen Prozessor, einen eingebetteten Controller oder eine anwendungsspezifische integrierte Schaltung, Software (z.B. unter anderem eine Anwendung), Firmware oder jede geeignete Kombination von Hardware, Software und Firmware in verschiedenen Ausführungsformen.
  • In einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann das Computersystem 800 die Umgebung 100 sein, wobei das SUT ein Computerprogramm oder eine Hardware-Komponente ist, die von dem Computersystem 800 verwendet wird. In einer oder mehreren Ausführungsformen der vorliegenden Erfindung kann das Computersystem 800 das SUT 214 sein, das Teil einer Server-Clusters ist.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt auf jeder möglichen technischen Detailintegrationsebene handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) enthalten, auf dem durch einen Computer lesbare Programmanweisungen gespeichert sind, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch eine Einheit zum Ausführen von Anweisungen beibehalten und speichern kann. Das durch einen Computer lesbare Speichermedium kann zum Beispiel eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiter-Speichereinheit oder jede geeignete Kombination aus dem Vorgenannten sein, es ist aber nicht darauf beschränkt. Zu einer nicht erschöpfenden Liste von spezifischeren Beispielen des durch einen Computer lesbaren Speichermediums gehören die Folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer CD-ROM, eine DVD, ein Speicher-Stick, eine Diskette, eine mechanisch codierte Einheit wie zum Beispiel Lochkarten oder erhabene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination des Vorgenannten. Ein durch einen Computer lesbares Speichermedium soll, wie hierin verwendet, nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder andere Übertragungsmedien ausbreiten (z.B. durch ein Lichtwellenleiterkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetzwerk und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten, Konfigurationsdaten für integrierte Schaltungen oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben sind, darunter objektorientierte Programmiersprachen wie Smalltalk, C++ o.ä. sowie prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letzteren Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jeden Typ von Netzwerk verbunden werden, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, feldprogrammierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die computerlesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der computerlesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung werden hierin unter Bezugnahme auf Veranschaulichungen von Ablaufplänen und/oder Blockschaubildern von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es sollte klar sein, dass jeder Block der Ablaufplanveranschaulichungen und/oder der Blockschaubilder und Kombinationen von Blöcken in den Ablaufplanveranschaulichungen und/oder den Blockschaubildern mittels durch einen Computer lesbare Programmanweisungen umgesetzt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die über den Prozessor des Computers bzw. eine andere programmierbare Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, sodass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, die Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Arbeitsschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen durch einen Computer umgesetzten Prozess zu erzeugen, sodass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder anderen Einheiten ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder den Blockschaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zum Umsetzen der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Umsetzungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt auftreten. Zum Beispiel können zwei nacheinander gezeigte Blöcke tatsächlich im Wesentlichen parallel ausgeführt werden, oder die Blöcke können manchmal in der umgekehrten Reihenfolge ausgeführt werden, was von der beteiligten Funktionalität abhängt. Es ist ferner anzumerken, dass jeder Block der Blockschaubilder und/oder der Ablaufplandarstellungen sowie Kombinationen von Blöcken in den Blockschaubildern und/oder der Ablaufplandarstellung durch spezielle auf Hardware beruhende Systeme umgesetzt werden können, welche die angegebenen Funktionen oder Handlungen durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen.
  • Die Beschreibungen der verschiedenen Ausführungsformen der vorliegenden Erfindung wurden zum Zweck der Veranschaulichung erstellt, sie sollen aber keineswegs erschöpfend oder auf die offenbarten Ausführungsformen eingeschränkt sein. Für Fachleute sind viele Modifizierungen und Variationen offenkundig, die nicht von dem Schutzumfang und Erfindungsgedanken der beschriebenen Ausführungsformen abweichen. Die hierin verwendete Terminologie wurde gewählt, um die Grundgedanken der Ausführungsformen, der praktischen Anwendung oder technischen Verbesserung gegenüber auf dem Markt gefundenen Technologien bestmöglich zu erklären oder anderen Fachleuten das Verständnis der hierin beschriebenen Ausführungsformen zu ermöglichen.
  • Verschiedene Ausführungsformen der Erfindung werden hierin unter Bezugnahme auf die zugehörigen Zeichnungen beschrieben. Alternative Ausführungsformen der Erfindung sind denkbar, ohne von dem Schutzumfang dieser Erfindung abzuweichen. Verschiedene Verbindungen und positionsbezogene Beziehungen (z.B. über, unter, neben usw.) zwischen Elementen werden in der folgenden Beschreibung und in den Zeichnungen dargelegt. Diese Verbindungen und/oder positionsbezogenen Beziehungen können, sofern nicht anders spezifiziert, direkt oder indirekt sein, und die vorliegende Erfindung ist in dieser Hinsicht keinesfalls als einschränkend zu verstehen. Dementsprechend kann eine Verbindung von Entitäten entweder auf eine direkte oder eine indirekte Verbindung verweisen, und eine positionsbezogene Beziehung zwischen Entitäten kann eine direkte oder indirekte positionsbezogene Beziehung sein. Des Weiteren können die hierin beschriebenen verschiedenen Aufgaben und Prozessschritte in eine umfassendere Prozedur oder einen umfassenderen Prozess mit zusätzlichen Schritten oder einer zusätzlichen Funktionalität integriert werden, die hierin nicht im Detail beschrieben werden.
  • Die folgenden Definitionen und Abkürzungen sind für die Auslegung der Ansprüche und der Patentschrift zu verwenden. Wie hierin verwendet, sollen die Begriffe „weist auf“, „aufweisend“, „umfasst“, „umfassend“, „besitzt“, „besitzend“, „enthält“ oder „enthaltend“ oder irgendeine Variation davon eine nicht ausschließende Einbeziehung abdecken. Zum Beispiel ist eine Zusammensetzung, ein Gemisch, ein Prozess, ein Verfahren, ein Artikel oder eine Vorrichtung, die eine Liste von Elementen umfasst, nicht notwendigerweise auf nur diese Elemente beschränkt, sondern kann andere Elemente umfassen, die nicht ausdrücklich aufgelistet oder derartigen Zusammensetzungen, Gemischen, Prozessen, Verfahren, Artikeln oder Vorrichtungen eigen sind.
  • Außerdem bedeutet der hierin verwendete Begriff „beispielhaft“, dass „etwas als Beispiel, Variante oder zur Veranschaulichung dient“. Jede hierin als „beispielhaft“ beschriebene Ausführungsform oder Auslegung muss nicht notwendigerweise als gegenüber anderen Ausführungsformen oder Auslegungen bevorzugt oder vorteilhaft aufgefasst werden. Der Begriff „mindestens ein/eine“ und „ein/e oder mehrere“ ist als jede ganzzahlige Anzahl größer oder gleich eins zu verstehen, d.h. eins, zwei, drei, vier usw. Der Begriff „eine Mehrzahl“ ist als ganzzahlige Anzahl größer oder gleich zwei zu verstehen, d.h. zwei, drei, vier, fünf usw. Der Begriff „Verbindung“ kann sowohl eine indirekte „Verbindung“ als auch eine direkte „Verbindung“ umfassen.
  • Die Begriffe „über“, „im Wesentlichen“, „ungefähr“ und Variationen davon sollen das Fehlermaß angeben, das einer Messung der bestimmten Menge auf Grundlage des Zeitpunkts der Anmeldungseinreichung auf der verfügbaren Ausrüstung zugehörig ist. Zum Beispiel kann „über“ einen Bereich von ±8 % oder 5 % oder 2 % eines bestimmten Werts umfassen.
  • Der Kürze halber werden herkömmliche Techniken in Bezug auf ein Erstellen und Verwenden von Aspekten der Erfindung hierin möglicherweise nicht ausführlich beschrieben. Insbesondere sind verschiedene Aspekte von Datenverarbeitungssystemen und bestimmten Computerprogrammen zum Umsetzen der hierin beschriebenen verschiedenen technischen Merkmale wohlbekannt. Dementsprechend werden der Kürze halber viele herkömmliche Umsetzungsdetails hierin nur kurz erwähnt oder vollständig weggelassen, ohne das wohlbekannte System und/oder Prozessdetails bereitzustellen.

Claims (28)

  1. Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) (zu testendes System), wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlgeschlagen ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  2. Verfahren nach Anspruch 1, wobei der kartesianische Produktraum ferner auf Grundlage einer architekturgebundenen Einschränkung des SUTs reduziert wird.
  3. Verfahren nach Anspruch 2, wobei die architekturgebundene Einschränkung mindestens eines aufweist von: einer Anforderung, dass ein erstes Attribut nicht einen oder mehrere Kandidaten-Attributwerte übernehmen kann, wenn ein zweites Attribut einen bestimmten Attributwert hat, einer Anforderung, dass das erste Attribut einen bestimmten Kandidaten-Attributwert übernehmen muss, wenn das zweite Attribut den bestimmten Attributwert hat, oder einer Anforderung, ein drittes Attribut einzuführen, wenn das zweite Attribut den bestimmten Attributwert hat.
  4. Verfahren nach Anspruch 1, wobei ein Attribut-Wert-Paar und ein entsprechender Wahrscheinlichkeitswert in einem Hash dargestellt werden.
  5. Verfahren nach Anspruch 1, wobei ein erstes Attribut-Wert-Paar, das getestet werden soll, einem ersten Wahrscheinlichkeitswert zugewiesen wird, der höher als ein zweiter Wahrscheinlichkeitswert eines zweiten Attribut-Wert-Paars ist.
  6. Verfahren nach Anspruch 1, wobei das Erkennen und das Lokalisieren des Fehlers, der zumindest teilweise auf dem zweiten Satz von Ausführungsergebnissen beruht, ein Bestimmen einer bestimmten Kombination von Attributwerten aufweist, die den Fehler verursacht.
  7. Verfahren nach Anspruch 6, das ferner ein Generieren eines Regressions-Buckets für fehlerhafte Testfälle zumindest teilweise auf Grundlage der bestimmten Kombination von Attributwerten aufweist, die den Fehler verursacht hat.
  8. Verfahren nach Anspruch 1, wobei das Generieren des Satzes von neuen Testfällen ein Generieren, in Bezug auf jedes Attribut in dem ausgewählten fehlerhaften Testfall, eines jeweiligen untergeordneten Satzes von neuen Testfällen aufweist, zumindest teilweise durch Ändern eines jeweiligen Attributwerts für das Attribut in dem ausgewählten fehlerhaften Testfall in jeden anderen Kandidaten-Attributwert für das Attribut, das nicht in dem einen oder den mehreren Testfällen vorhanden ist, deren Ausführung fehlerhaft ist.
  9. Verfahren nach Anspruch 1, wobei das Generieren eines anfänglichen Satzes von Testvektoren ein Generieren eines anfänglichen Satzes von Testvektoren aufweist, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt, der der Sammlung von Attribut-Wert-Paaren zugehörig ist, und wobei das Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall ein Ändern eines jeweiligen Attributwerts in dem ausgewählten fehlerhaften Testfall aufweist, um jeden neuen Testfall zu generieren.
  10. System, das aufweist: einen Arbeitsspeicher; und einen Prozessor, der mit dem Arbeitsspeicher verbunden ist, der konfiguriert ist, um ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT) durchzuführen, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  11. System nach Anspruch 10, wobei der kartesianische Produktraum ferner auf Grundlage einer architekturgebundenen Einschränkung des SUTs reduziert wird.
  12. System nach Anspruch 11, wobei die architekturgebundene Einschränkung mindestens eines aufweist von: einer Anforderung, dass ein erstes Attribut nicht einen oder mehrere Kandidaten-Attributwerte übernehmen kann, wenn ein zweites Attribut einen bestimmten Attributwert hat, einer Anforderung, dass das erste Attribut einen bestimmten Kandidaten-Attributwert übernehmen muss, wenn das zweite Attribut den bestimmten Attributwert hat, oder einer Anforderung, ein drittes Attribut einzuführen, wenn das zweite Attribut den bestimmten Attributwert hat.
  13. System nach Anspruch 10, wobei ein Attribut-Wert-Paar und ein entsprechender Wahrscheinlichkeitswert in einem Hash dargestellt werden.
  14. System nach Anspruch 10, wobei ein erstes Attribut-Wert-Paar, das getestet werden soll, einem ersten Wahrscheinlichkeitswert zugewiesen wird, der höher als ein zweiter Wahrscheinlichkeitswert eines zweiten Attribut-Wert-Paars ist.
  15. System nach Anspruch 10, wobei das Erkennen und das Lokalisieren des Fehlers, der zumindest teilweise auf dem zweiten Satz von Ausführungsergebnissen beruht, ein Bestimmen einer bestimmten Kombination von Attributwerten aufweist, die den Fehler verursacht.
  16. System nach Anspruch 15, wobei das Verfahren ferner ein Generieren eines Regressions-Buckets für fehlerhafte Testfälle zumindest teilweise auf Grundlage der bestimmten Kombination von Attributwerten aufweist, die den Fehler verursacht hat.
  17. Computerprogrammprodukt, das ein durch einen Computer lesbares Speichermedium mit darauf gespeicherten, durch einen Computer ausführbaren Programmanweisungen aufweist, die bei Ausführung durch einen Prozessor den Prozessor veranlassen, ein Verfahren zum Erkennen und Lokalisieren eines Fehlers in dem SUT durchzuführen, wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  18. Computerprogrammprodukt nach Anspruch 17, wobei der kartesianische Produktraum ferner auf Grundlage einer architekturgebundenen Einschränkung des SUTs reduziert wird.
  19. Computerprogrammprodukt nach Anspruch 18, wobei die architekturgebundene Einschränkung mindestens eines aufweist von: einer Anforderung, dass ein erstes Attribut nicht einen oder mehrere Kandidaten-Attributwerte übernehmen kann, wenn ein zweites Attribut einen bestimmten Attributwert hat, einer Anforderung, dass das erste Attribut einen bestimmten Kandidaten-Attributwert übernehmen muss, wenn das zweite Attribut den bestimmten Attributwert hat, oder einer Anforderung, ein drittes Attribut einzuführen, wenn das zweite Attribut den bestimmten Attributwert hat.
  20. Computerprogrammprodukt nach Anspruch 17, wobei ein Attribut-Wert-Paar und ein entsprechender Wahrscheinlichkeitswert in einem Hash dargestellt werden.
  21. Computerprogrammprodukt nach Anspruch 17, wobei ein erstes Attribut-Wert-Paar, das getestet werden soll, einem ersten Wahrscheinlichkeitswert zugewiesen wird, der höher als ein zweiter Wahrscheinlichkeitswert eines zweiten Attribut-Wert-Paars ist.
  22. Computerprogrammprodukt nach Anspruch 17, wobei das Erkennen und das Lokalisieren des Fehlers, der zumindest teilweise auf dem zweiten Satz von Ausführungsergebnissen beruht, ein Bestimmen einer bestimmten Kombination von Attributwerten aufweist, die den Fehler verursacht.
  23. Computerprogrammprodukt nach Anspruch 22, wobei das Verfahren ferner ein Generieren eines Regressions-Buckets für fehlerhafte Testfälle zumindest teilweise auf Grundlage der bestimmten Kombination von Attributwerten aufweist, die den Fehler verursacht hat.
  24. Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT), wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Zuweisen eines Wahrscheinlichkeitswerts zu jedem Attribut-Wert-Paar von der Sammlung von Attribut-Wert-Paaren; Reduzieren eines kartesianischen Produktraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall, wobei das Generieren des Satzes von neuen Testfällen ein Generieren, in Bezug auf jedes Attribut in dem ausgewählten fehlerhaften Testfall, eines jeweiligen untergeordneten Satzes von neuen Testfällen aufweist, zumindest teilweise durch Ändern eines jeweiligen Attributwerts für das Attribut in dem ausgewählten fehlerhaften Testfall in jeden anderen Kandidaten-Attributwert für das Attribut, der nicht in dem einen oder den mehreren Testfällen vorhanden ist, deren Ausführung fehlerhaft ist; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  25. Verfahren nach Anspruch 24, wobei ein Attribut-Wert-Paar und ein entsprechender Wahrscheinlichkeitswert in einem Hashwert dargestellt werden.
  26. Verfahren zum Erkennen und Lokalisieren eines Fehlers in einem System Under Test (SUT), wobei das Verfahren aufweist: Modellieren von Eingaben in das SUT als eine Sammlung von Attribut-Wert-Paaren; Reduzieren des Testraums, der alle möglichen Kombinationen der Attribut-Wert-Paare für einen reduzierten Testraum aufweist, wobei zumindest teilweise eine oder mehrere Kombinationen von Attribut-Wert-Paaren auf Grundlage entsprechender Wahrscheinlichkeitswerte ausgeschlossen werden; Generieren eines anfänglichen Satzes von Testvektoren, der eine umfassende n-fache Abdeckung des reduzierten Testraums bereitstellt, der der Sammlung von Attribut-Wert-Paaren zugehörig ist; Generieren eines anfänglichen Satzes von Testfällen aus dem anfänglichen Satz von Testvektoren; Ausführen des anfänglichen Satzes von Testfällen, um einen ersten Satz von Ausführungsergebnissen zu erhalten; Bestimmen, zumindest teilweise auf Grundlage des ersten Satzes von Ausführungsergebnissen, dass eine Ausführung von einem oder mehreren Testfällen fehlerhaft ist; Generieren eines Satzes von neuen Testfällen aus einem ausgewählten fehlerhaften Testfall, wobei das Generieren des Satzes von neuen Testfällen ein Ändern eines jeweiligen Attributwerts in dem ausgewählten fehlerhaften Testfall aufweist, um jeden neuen Testfall zu generieren; Ausführen des Satzes von neuen Testfällen, um einen zweiten Satz von Ausführungsergebnissen zu erhalten; und Erkennen und Lokalisieren des Fehlers zumindest teilweise auf Grundlage des zweiten Satzes von Ausführungsergebnissen.
  27. Verfahren nach Anspruch 26, wobei ein Attribut-Wert-Paar und ein entsprechender Wahrscheinlichkeitswert in einem Hash dargestellt werden.
  28. Computerprogramm, das Programmcodemittel aufweist, die angepasst sind, um das Verfahren nach einem der Ansprüche 1 bis 9 oder einem der Ansprüche 24 bis 27 durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
DE112021000240.6T 2020-02-28 2021-02-09 Ausführen von tests in deterministischer reihenfolge Pending DE112021000240T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/804,164 2020-02-28
US16/804,164 US11182282B2 (en) 2020-02-28 2020-02-28 Executing tests in deterministic order
PCT/IB2021/051033 WO2021171117A1 (en) 2020-02-28 2021-02-09 Executing tests in deterministic order

Publications (1)

Publication Number Publication Date
DE112021000240T5 true DE112021000240T5 (de) 2022-09-22

Family

ID=77463096

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112021000240.6T Pending DE112021000240T5 (de) 2020-02-28 2021-02-09 Ausführen von tests in deterministischer reihenfolge

Country Status (8)

Country Link
US (1) US11182282B2 (de)
JP (1) JP2023514999A (de)
KR (1) KR20220116330A (de)
CN (1) CN115176233B (de)
AU (1) AU2021227739B2 (de)
DE (1) DE112021000240T5 (de)
GB (1) GB2609110A (de)
WO (1) WO2021171117A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11442839B2 (en) * 2020-03-10 2022-09-13 International Business Machines Corporation Runtime metrics based test ordering

Family Cites Families (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7024589B2 (en) * 2002-06-14 2006-04-04 International Business Machines Corporation Reducing the complexity of finite state machine test generation using combinatorial designs
US10338993B1 (en) * 2018-04-22 2019-07-02 Sas Institute Inc. Analysis of failures in combinatorial test suite
US10754764B2 (en) * 2018-04-22 2020-08-25 Sas Institute Inc. Validation sets for machine learning algorithms
US8397104B2 (en) * 2009-04-22 2013-03-12 International Business Machines Corporation Creation of test plans
US9665350B1 (en) 2009-05-29 2017-05-30 The Mathworks, Inc. Automatic test generation for model-based code coverage
US8271950B2 (en) 2009-07-06 2012-09-18 Microsoft Corporation Test generation from captured user interface status
US8893086B2 (en) 2009-09-11 2014-11-18 International Business Machines Corporation System and method for resource modeling and simulation in test planning
US8627295B2 (en) 2009-10-09 2014-01-07 General Electric Company Methods and apparatus for testing user interfaces
US8732299B2 (en) 2010-08-23 2014-05-20 Intuit Inc. Scalability breakpoint calculator for a software product
US8260826B2 (en) * 2010-09-23 2012-09-04 Hewlett-Packard Development Company, L.P. Data processing system and method
US8832839B2 (en) 2011-01-04 2014-09-09 Siemens Aktiengesellschaft Assessing system performance impact of security attacks
US8756460B2 (en) * 2011-04-05 2014-06-17 International Business Machines Corporation Test selection based on an N-wise combinations coverage
US8649995B2 (en) 2011-04-07 2014-02-11 Infosys Technologies, Ltd. System and method for efficient test case generation using input dependency information
US9262307B2 (en) * 2011-10-05 2016-02-16 International Business Machines Corporation Modeling test space for system behavior with optional variable combinations
US9244819B2 (en) 2011-10-31 2016-01-26 International Business Machines Corporation Attribute value properties for test selection with cartesian product models
US8887112B2 (en) * 2012-11-14 2014-11-11 International Business Machines Corporation Test validation planning
US8990626B2 (en) * 2012-12-17 2015-03-24 International Business Machines Corporation Method and apparatus for determining relevance of assignments in combinatorial models
US9477566B2 (en) 2013-03-14 2016-10-25 National Instruments Corporation Power leveling of a system under test
US9122801B2 (en) * 2013-08-07 2015-09-01 International Business Machines Corporation Test planning with order coverage requirements
US9454466B2 (en) * 2013-10-02 2016-09-27 Globalfoundries Inc. Explaining partially illegal combinations in combinatorial models
JP5963316B2 (ja) 2014-02-20 2016-08-03 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 生成装置、生成方法、及び、プログラム
US9740505B2 (en) 2014-07-15 2017-08-22 The Mathworks, Inc. Accurate static dependency analysis via execution-context type prediction
GB2530516A (en) 2014-09-24 2016-03-30 Ibm Intelligent Software Test Augmenting
US9846633B2 (en) * 2015-10-06 2017-12-19 Ca, Inc. Generating tests for testing software applications
CN109952563A (zh) 2016-11-17 2019-06-28 伟视达电子工贸有限公司 ***测试方法和***测试套件
CN109726093B (zh) * 2017-10-27 2022-03-22 伊姆西Ip控股有限责任公司 用于执行测试用例的方法、设备和计算机程序产品
US10489280B2 (en) * 2017-11-21 2019-11-26 International Business Machines Corporation Method and apparatus for test modeling
US11061811B2 (en) * 2017-12-15 2021-07-13 International Business Machines Corporation Optimizing software testing via group testing
US20190327330A1 (en) * 2018-04-20 2019-10-24 Facebook, Inc. Building Customized User Profiles Based on Conversational Data

Also Published As

Publication number Publication date
GB2609110A (en) 2023-01-25
CN115176233A (zh) 2022-10-11
AU2021227739A1 (en) 2022-07-07
JP2023514999A (ja) 2023-04-12
WO2021171117A1 (en) 2021-09-02
KR20220116330A (ko) 2022-08-22
US20210271592A1 (en) 2021-09-02
AU2021227739B2 (en) 2023-11-23
US11182282B2 (en) 2021-11-23
CN115176233B (zh) 2023-07-21
GB202214168D0 (en) 2022-11-09

Similar Documents

Publication Publication Date Title
DE10392497T5 (de) Herstellungsverfahren und Herstellungsvorrichtung zum Vermeiden eines Prototypen-Aufschubs bei der ASIC/SOC-Herstellung
DE112012001048T5 (de) System und Verfahren zum wirksamen Erkennen fehlerhafter Komponenten in einem Mehrknotensystem unter Verwendung mehrerer Knotentopologien
US11436132B2 (en) Stress test impact isolation and mapping
DE102021116906A1 (de) Test- und messsystem zur analyse von zu testenden vorrichtungen
DE112014002960T5 (de) Ableitung verallgemeinerter Testfälle
DE102021130630A1 (de) Testen von software-anwendungskomponenten
DE112015006084T5 (de) Systemverwaltungsvorrichtung und systemverwaltungssystem
DE112021000240T5 (de) Ausführen von tests in deterministischer reihenfolge
DE112021003677T5 (de) Automatisierte unterstützte schaltkreisvalidierung
Jiang et al. Assuring the model evolution of protocol software specifications by regression testing process improvement
US11132286B1 (en) Dynamic reordering of test case execution
DE102013114558A1 (de) Ausschneiden-bei-der Diagnose (CID) - Ein Verfahren zur Verbesserung des Durchsatzes des Vorgangs für Anhebung der Ausbeute
US11023368B1 (en) Reduction of testing space for system testing infrastructure using combinatorics
US11609842B2 (en) System testing infrastructure for analyzing and preventing soft failure in active environment
US11194704B2 (en) System testing infrastructure using combinatorics
Nursimulu et al. Cause-effect graphing analysis and validation of requirements
DE102015102034A1 (de) Verfahren zum Analysieren von Ergebnissen in einem Entwurfsautomatisierungsablauf für elektronische Systeme, Computersystem und Computerprogrammprodukt
Clermont et al. Using information about functions in selecting test cases
Abreu The bumpy road of taking automated debugging to industry
US10769332B2 (en) Automatic simulation failures analysis flow for functional verification
US20200394126A1 (en) Reduction of test infrastructure
DE102017104049B4 (de) Verfahren und vorrichtung zum überprüfen der zuverlässigkeit eines chips
CN109800155B (zh) 一种基于Probe的QTE联锁应用软件测试方法及装置
DE102022134601A1 (de) Systeme und verfahren für das training und die bereitstellung von modellen für maschinelles lernen
DE102021128521A1 (de) Effiziente defektlokalisierung in neuen codeversionen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R084 Declaration of willingness to licence