Modellbasierte Tests

Allgemeine modellbasierte Testeinstellung

Modellbasierte Tests ist eine Anwendung von Modellbasiertes Design Zum Entwerfen und optional auch Artefakte zur Aufführung ausführen Softwaretest oder Systemtests. Modelle können verwendet werden, um das gewünschte Verhalten von a darzustellen System zu Test (SUT) oder um Teststrategien und eine Testumgebung darzustellen. Das Bild rechts zeigt den früheren Ansatz.

Ein Modell, das eine SUT beschreibt, ist normalerweise eine abstrakte, teilweise Präsentation des gewünschten Verhaltens der SUT. Testfälle aus einem solchen Modell sind Funktionstests auf derselben Abstraktionsebene wie das Modell. Diese Testfälle sind gemeinsam als als bekannt Zusammenfassung Testsuite. Eine abstrakte Testsuite kann nicht direkt gegen eine SUT ausgeführt werden, da sich die Suite auf der falschen Abstraktionsebene befindet. Ein Ausführbare Testsuite muss von einer entsprechenden abstrakten Testsuite abgeleitet werden. Die ausführbare Testsuite kann direkt mit dem zu testenden System kommunizieren. Dies wird erreicht, indem die abstrakten Testfälle auf konkrete Testfälle abgebildet werden, die für die Ausführung geeignet sind. In einigen modellbasierten Testumgebungen enthalten Modelle genügend Informationen, um ausführbare Testsuiten direkt zu generieren. In anderen Zusammenfassung Testsuite muss in die Software auf bestimmte Aussagen oder Methodenaufrufe zugeordnet werden, um eine konkrete Testsuite zu erstellen. Dies nennt man das Lösen des "Mapping -Problems".[1] Bei Online -Tests (siehe unten) existieren abstrakte Testsuiten nur konzeptionell, aber nicht als explizite Artefakte.

Tests können auf unterschiedliche Weise von Modellen abgeleitet werden. Da das Testen normalerweise experimentell ist und auf Heuristiken basiert, gibt es keinen einzigen besten Ansatz für die Testableitung. Es ist üblich, alle Parameter der Testableitungen in ein Paket zu konsolidieren, das häufig als "Testanforderungen", "Testzweck" oder sogar "Anwendungsfall) bezeichnet wird. Dieses Paket kann Informationen zu diesen Teilen eines Modells enthalten, auf die sich konzentriert werden sollte, oder auf die Bedingungen für das Abschluss von Tests (Teststörungskriterien).

Da Testsuiten aus Modellen und nicht aus Quellcode abgeleitet sind, werden modellbasierte Tests normalerweise als eine Form von angesehen Black-Box-Tests.

Modellbasierte Tests für komplexe Softwaresysteme sind immer noch ein sich entwickelnder Bereich.

Modelle

Besonders in Modellgetriebene Engineering oder in der Objektverwaltungsgruppe (OMG's) Modellgetriebene Architektur, Modelle werden vor oder parallel zu den entsprechenden Systemen erstellt. Modelle können auch aus abgeschlossenen Systemen konstruiert werden. Typische Modellierungssprachen für die Testgenerierung umfassen Uml, Sysml, Mainstream -Programmiersprachen, Finite -Maschinen -Notationen und mathematische Formalismen wie z. Z, B (Event-B), Legierung oder Coq.

Bereitstellung modellbasierter Tests

Ein Beispiel für einen modellbasierten Test-Workflow (Offline-Testfallgenerierung). Ixit bezieht sich auf Implementierung zusätzliche Informationen und bezieht sich auf Informationen, die zur Umwandlung einer abstrakten Testsuite in eine ausführbare Umwandlung erforderlich sind. In der Regel enthält IXIT Informationen zum Testkabelbaum, zum Datenzuordnungen und zum SUT -Konfiguration.

Es gibt verschiedene bekannte Möglichkeiten, modellbasierte Tests bereitzustellen, einschließlich Online -Tests, Offline -Generierung von ausführbaren Tests, und Offline -Generation manuell einsetzbarer Tests.[2]

Online-Tests bedeuten, dass ein modellbasiertes Testwerkzeug direkt mit einer SUT verbunden und dynamisch testet.

Die Offline-Generierung ausführbarer Tests bedeutet, dass ein modellbasiertes Testwerkzeug Testfälle als computerlesbare Vermögenswerte generiert, die später automatisch ausgeführt werden können. Zum Beispiel eine Sammlung von Python Klassen, die die generierte Testlogik verkörpert.

Die Offline-Generation manuell einsetzbarer Tests bedeutet, dass ein modellbasiertes Testwerkzeug Testfälle als menschlich-lesbare Vermögenswerte generiert, die später bei manuellen Tests unterstützen können. Zum Beispiel ein PDF -Dokument in einer menschlichen Sprache, das die generierten Testschritte beschreibt.

Ableiten von Tests algorithmisch

Die Wirksamkeit modellbasierter Tests ist hauptsächlich auf das Potenzial für die Automatisierung zurückzuführen, die sie bietet. Wenn ein Modell maschinenlesbar und formal ist, sofern es eine gut definierte Verhaltensinterpretation hat, können Testfälle im Prinzip mechanisch abgeleitet werden.

Aus endlichen Staatsmaschinen

Oft wird das Modell in übersetzt oder interpretiert als Finite State Automaton oder ein Statusübergangssystem. Dieser Automat stellt die möglichen Konfigurationen des zu testenden Systems dar. Um Testfälle zu finden, wird der Automat nach ausführbaren Pfaden gesucht. Ein möglicher Ausführungspfad kann als Testfall dienen. Diese Methode funktioniert, wenn das Modell ist deterministisch oder kann in eine deterministische verwandelt werden. Wertvolle Off-Nominal-Testfälle können durch Nutzung nicht spezifizierter Übergänge in diesen Modellen erhalten werden.

Abhängig von der Komplexität des zu testenden Systems und des entsprechenden Modells kann die Anzahl der Pfade aufgrund der großen Menge möglicher Konfigurationen des Systems sehr groß sein. Um Testfälle zu finden, die eine angemessene, aber endliche Anzahl von Pfaden abdecken können, sind Testkriterien erforderlich, um die Auswahl zu leiten. Diese Technik wurde erstmals von Offutt und Abdurazik in der Arbeit vorgeschlagen, die modellbasierte Tests startete.[3] Es wurden mehrere Techniken zur Erzeugung von Testfall entwickelt und von Rushby befragt.[4] Testkriterien werden in Bezug auf allgemeine Grafiken im Testlehrbuch beschrieben.[1]

Theorem beweisen

Theorem beweisen wurde ursprünglich zum automatisierten Nachweis logischer Formeln verwendet. Für modellbasierte Testansätze wird das System durch einen Satz von modelliert Prädikatedas Verhalten des Systems angeben.[5] Um Testfälle abzuleiten, wird das Modell unterteilt in Äquivalenzklassen über die gültige Interpretation des Satzes der Prädikate, die das zu testende System beschreiben. Jede Klasse beschreibt ein bestimmtes Systemverhalten und kann daher als Testfall dienen. Die einfachste Partitionierung ist mit dem disjunktiven Normalformansatz, bei dem die logischen Ausdrücke, die das Verhalten des Systems beschreiben, in die transformiert werden disjunktive normale Form.

Einschränkung der Logikprogrammierung und symbolische Ausführung

Einschränkungsprogrammierung Kann verwendet werden, um Testfälle auszuwählen, die spezifische Einschränkungen erfüllen, indem eine Reihe von Einschränkungen über eine Reihe von Variablen gelöst werden. Das System wird durch die Mittel der Einschränkungen beschrieben.[6] Das Lösen der Einschränkungen kann von booleschen Solvers erfolgen (z. B. Sat-Solver basierend auf der Boolesche Zufriedenheitsproblem) oder von numerische Analyse, wie Gaußsche Eliminierung. Eine Lösung, die durch Lösen des Satzes von Einschränkungen Formeln als Testfälle für das entsprechende System dienen kann.

Die Einschränkungsprogrammierung kann mit symbolischer Ausführung kombiniert werden. In diesem Ansatz wird ein Systemmodell symbolisch ausgeführt, d. H. Das Sammeln von Datenbeschränkungen über verschiedene Steuerpfade und dann die Einschränkungsprogrammiermethode zur Lösung der Einschränkungen und zur Erzeugung von Testfällen verwenden.[7]

Modellprüfung

Modellprüfer kann auch für die Testfallgenerierung verwendet werden.[8] Ursprünglich wurde die Modellprüfung als Technik entwickelt, um zu überprüfen, ob eine Eigenschaft einer Spezifikation in einem Modell gültig ist. Bei Verwendung zum Testen wird dem Modellprüfer ein Modell des zu testenden Systems und eine zum Testen vorgesehene Eigenschaft zur Verfügung gestellt. Wenn diese Eigenschaft im Modell gültig ist, erkennt der Modellprüfer Zeugen und Gegenbeispiele innerhalb des Beweisverfahrens. Ein Zeuge ist ein Weg, auf dem die Eigenschaft erfüllt ist, während ein Gegenbeispiel ein Weg bei der Ausführung des Modells ist, in dem die Eigenschaft verletzt wird. Diese Pfade können erneut als Testfälle verwendet werden.

Testfallerzeugung unter Verwendung eines Markov -Ketten -Testmodells

Markov -Ketten sind eine effiziente Möglichkeit, modellbasierte Tests zu behandeln. Mit Markov -Ketten realisierte Testmodelle können als Verwendungsmodell verstanden werden: Es wird als Verwendungs-/statistische modellbasierte Tests bezeichnet. Verwendungsmodelle, also Markov -Ketten, sind hauptsächlich aus 2 Artefakten hergestellt: die Endliche Zustandsmaschine (FSM), das alle möglichen Nutzungsszenario des getesteten Systems und der operativen Profile (OP) darstellt, die das FSM qualifizieren, um darzustellen, wie das System statistisch verwendet wird oder wird. Der erste (FSM) hilft zu wissen, was getestet werden kann oder wurde, und der zweite (OP) hilft, Betriebstestfälle abzuleiten. Verwendungs-/statistische modellbasierte Tests beginnt mit den Fakten, die nicht möglich sind, um ein System ausführlich zu testen, und dass ein Fehler mit einer sehr geringen Rate erscheinen kann.[9] Dieser Ansatz bietet einen pragmatischen Weg, um Testfälle statisch abzuleiten, die sich auf die Verbesserung der Zuverlässigkeit des zu testenden Systems konzentrieren. Nutzung/statistische modellbasierte Tests wurden kürzlich auf eingebettete Softwaresysteme erweitert.[10][11]

Siehe auch

Verweise

  1. ^ a b Paul Ammann und Jeff Offutt. Einführung in Softwaretests. Cambridge University Press, 2008.
  2. ^ Praktische modellbasierte Tests: Ein Tools-Ansatz Archiviert 2012-08-25 in der Wayback -Maschine, Mark Utting und Bruno Legern, ISBN978-0-12-372501-1, Morgan-Kaufmann 2007
  3. ^ Jeff Offutt und Aynur Abdurazik. Generieren von Tests aus UML -Spezifikationen. Zweite Internationale Konferenz über die einheitliche Modellierungssprache (UML ’99), Seiten 416-429, Fort Collins, CO, Oktober 1999.
  4. ^ John Rushby. Automatisierte Testgenerierung und verifizierte Software. Verifizierte Software: Theorien, Tools, Experimente: First IFIP TC 2/WG 2.3 Konferenz, VSTTE 2005, Zürich, Schweiz, 10. bis 13. Oktober. S. 161-172, Springer-Verlag
  5. ^ Brucker, Achim D.; Wolff, Burkhart (2012). "Auf Theorem Prover-basierte Tests". Formale Aspekte des Computers. 25 (5): 683–721. Citeseerx 10.1.1.208.3135. doi:10.1007/s00165-012-0222-y. S2CID 5774837.
  6. ^ Jefferson Offutt. Einschränkende automatische Testdatenerzeugung. IEEE Transactions on Software Engineering, 17: 900-910, 1991
  7. ^ Antti Huima. Implementierung von Konformiq Qtronic. Testen von Software- und Kommunikationssystemen, Vorlesungshinweise in Informatik, 2007, Band 4581/2007, 1-12, doi: 10.1007/978-3-540-73066-8_1
  8. ^ Gordon Fraser, Franz Wotawa und Paul E. Ammann. Tests mit Modellprüfern: Eine Umfrage. Softwaretests, Überprüfung und Zuverlässigkeit, 19 (3): 215–261, 2009. URL: [1]
  9. ^ Helene Le Guen. Validierung d'un logiciel par le test statistique d'eage: de la modelisierungsentscheidung à la livraison, 2005. URL:ftp://ftp.irisa.fr/techreports/thesen/2005/leguen.pdf
  10. ^ Böhr, Frank (2011). "Modellbasierte statistische Tests von eingebetteten Systemen". 2011 IEEE Vierte internationale Konferenz zu Software -Test-, Überprüfungs- und Validierungsworkshops. S. 18–25. doi:10.1109/icstw.2011.11. ISBN 978-1-4577-0019-4. S2CID 9582606.
  11. ^ https://www.amazon.de/model-basierte-statistische-continuent-current-environment/dp/3843903484/ref=sr_1_1?ie=utf8&qid=1334231267&sr=8-1

Weitere Lektüre