2008-08-25 10 views
12

Welche Strategien haben Sie beim modellbasierten Testen verwendet?Modellbasierte Teststrategien

  • Haben Sie es für Integrationstests ausschließlich verwenden, oder es aus auf andere Bereiche verzweigen (Einheit/functional/system/spec Prüfung)?
  • Sie bauen fokussierte "versiegelte" Modelle oder entwickeln Sie im Laufe der Zeit komplexe Onibus-Modelle?
  • Wenn Sie im Produktzyklus in die Erstellung von MBTs investieren?
  • Welche Art von Basistestbibliotheken erstellen Sie ausschließlich für MBTs?
  • Welchen Unterschied machen Sie in Ihren funktionalen Basistestbibliotheken, um MBTs besser zu unterstützen?

Antwort

1

Wir haben keine/sehr ich & T und Verwendung Unit-Tests fast ausschließlich getan, mit einem wenig Systemtests gewürzt. Unser Fokus liegt jedoch klar auf Unit Testing. Ich bin ziemlich streng auf die APIs, die wir erstellen/bereitstellen, also die Annahme ist, wenn es für sich selbst funktioniert, wird es zusammen arbeiten und es war nicht viel falsch darin.

Unsere Modelle konzentrieren sich auf einen einzelnen Zweck/ein Modul mit so wenig Abhängigkeiten wie möglich.

Der Fokus ist immer so früh wie möglich zu beginnen (TDD-irgendwie), aber leider kommen wir nicht immer dazu. Das Problem ist, man muss es immer an das Management verkaufen, und dann ist es schwer, weil während des Tests die Stabilität (Gesamt-QA) verbessert wird, können die Leute von außerhalb (außerhalb der Technik) sich nicht wirklich darauf beziehen, bis etwas Schlimmes passiert ist.

Da wir PHP verwenden, verwenden wir PHPUnit für die Komponententests. Alles in allem machen wir CI mit verschiedenen Tools. :)

14

[Es gibt mehrere lesenswerte Texte dazu. Stack Overflow lässt mich nicht mehr als einen Artikel posten, daher habe ich sie in einem Blog-Post zusammengefasst, der am Ende dieser Antwort verlinkt ist.]

Zuerst eine kurze Notiz zu den Begriffen. Ich neige dazu, James Bachs Definition von Testing als "ein Produkt in Frage zu nehmen, um es zu bewerten" zu verwenden. Alle Tests beruhen auf/mental/Modellen der zu testenden Anwendung. Der Begriff Modellbasiertes Testen wird jedoch typischerweise verwendet, um die Programmierung eines Modells zu beschreiben, das durch Automatisierung untersucht werden kann. Zum Beispiel könnte man eine Anzahl von Zuständen angeben, in denen sich eine Anwendung befinden kann, verschiedene Pfade zwischen diesen Zuständen und bestimmte Aussagen darüber, was beim Übergang zwischen diesen Zuständen geschehen soll. Dann können Skripte halb-zufällige Permutationen von Übergängen innerhalb des Zustandsmodells ausführen und möglicherweise interessante Ergebnisse protokollieren.

Hier sind echte Kosten: ein nützliches Modell zu erstellen, Algorithmen für die Erkundung zu erstellen, Systeme zu protokollieren, die es ermöglichen, interessante Fehler zu durchforsten usw. Ob die Kosten vernünftig sind, hat viel mit was zu tun sind die Fragen, die Sie beantworten möchten? Beginnen Sie im Allgemeinen mit "Was möchte ich wissen? Und wie kann ich das am besten lernen? "Anstatt nach einer interessanten Technik zu suchen.

Alles, was gesagt wurde, einige ausgezeichnete Tester haben eine Menge Laufleistung aus automatisierten modellbasierten Tests bekommen. Manchmal haben wir wichtige Fragen zu der zu testenden Anwendung, die am besten durch automatisierte, semi-randomisierte Tests in großem Umfang untersucht werden.Harry Robinson (einer der führenden Theoretiker und Befürworter modellbasierter Tests) beschreibt ein sehr farbenfrohes Beispiel, bei dem er viele interessante Fehler in Google-Wegbeschreibungen mit einem modellbasierten Test entdeckte (geschrieben mit Rubys Watir-Bibliothek). 1

Robinson hat MBT erfolgreich bei Unternehmen wie Bell Labs, Microsoft und Google verwendet und hat eine Reihe hilfreicher Aufsätze. [2]

Ben Simo (ein anderer großartiger Denkdenker und Autor) hat auch viel zu schreiben über modellbasiertes Testen geschrieben. [3]

Abschließend noch ein paar Vorsichtshinweise: Um eine Strategie gut zu nutzen, muss man sowohl ihre Stärken als auch ihre Schwächen erforschen. Zu diesem Zweck spricht James Bach hervorragend über die Grenzen und Herausforderungen von Model-Based Testing. Dieser Blogbeitrag von Bachs Links zu seinem stundenlangen Vortrag (und den zugehörigen Folien). [4]

Ich schließe mit einer Notiz über, was Boris Beizer das Pestizid-Paradox nennt: "Jede Methode, die Sie verwenden, um Fehler zu verhindern oder zu finden, hinterlässt einen Rückstand von subtileren Fehlern, gegen die diese Methoden unwirksam sind." Skript-Tests (ob ausgeführt von ein Computer oder eine Person) sind besonders anfällig für das Pestizidparadoxon und neigen dazu, immer weniger nützliche Informationen zu finden, wenn das gleiche Skript ausgeführt wird. Die Leute gehen manchmal zu modellbasierten Tests über, die denken, dass sie das Pestizidproblem umgehen. In einigen Kontexten kann das modellbasierte Testen sehr viel mehr Bugs enthalten als ein vorgegebener Satz von Tests ... aber man sollte bedenken, dass es durch das Pestizid-Paradox immer noch grundlegend eingeschränkt wird. Sich an seine Grenzen erinnernd - und beginnend mit Fragen, die MBT gut anspricht - hat das Potential, eine sehr leistungsfähige Teststrategie zu sein.

Links zu allen Aufsätzen oben erwähnt sind hier zu finden: http://testingjeff.wordpress.com/2009/06/03/question-about-model-based-testing/

0

Der beste Weg, selbst ein Modell basiertes Test-Tool, um zu versuchen ist. Es ist der beste Weg zu wissen, ob das modellbasierte Testen in Ihrem Kontext angepasst wird. Und welche Art von Strategien ist die gute?

Ich rate Ihnen, die "MaTeLo" Werkzeug von All4Tec (www.all4tec.net)

„MaTeLo ein Testfälle Generator ist für Blackbox Funktions- und Systemtests. Angepasst an das Model Based Testing Ansatz, Anwendungen MaTeLo Markov - Ketten zur Modellbildung des Tests Dieses statistische Add - in erlaubt die Produktvalidierung in einer systematischen Art. Die Effizienz wird durch eine Reduzierung der benötigten Personalressourcen, eine Erhöhung der Wiederverwendung von Modellen und durch die Verbesserung der Relevanz der Teststrategie erreicht Zuverlässigkeitsziel) MaTeLo ist unabhängig und benutzerfreundlich und bietet den Validierungsaktivitäten die Möglichkeit, vom Test-Scripting zum echten Test-Engineering überzugehen und sich auf den echten Mehrwert des Testens zu konzentrieren: die Testpläne "

Sie können eine Evaluierungslizenz anfordern und selbst ausprobieren.

können Sie einige exemples finden Sie hier: http://www.all4tec.net/wiki/index.php?title=Tutorials