Modell basiertes Testen bzw. MDA fürs Testen



  • Gast++ schrieb:

    Ein paar Ideen dazu

    - Alle Prüfgrössen zusammen bilden ein Alphabet.
    - Ale Worte die sich mit diesem Alphabet bilden lassen und deren Länge kleiner ist als die maximale Anzahl von Tests über einem Wort bilden die Prüfsemantik.
    - Die Erzeugung der Semantik durch Permutation kann maschinell erfolgen
    - Die Worte lassen sich auf Bäume abbilden un dso zusammen mit den Ergebnissen z.B. in XML speichern und auswerten.

    Allerdings irritiert mich die Verzweigung nach "antwort" so wie Du sie zeigst; wird "antwort" in den Blöcken manipuliert? Sonst dürften einige Zweige redundant sein.

    Es lassen sich natürlich bestimmte Verzweigungstest gruppieren/klassifizieren, dennoch verstehe ich nicht ganz was du mit Alphabet meinst 😉
    Es wird der Baum ansich getestet, ob sein Inhalt mit dem des Modells übereinstimmt. Somit ist z.b. jeder mögliche Weg durch den Baum ein Test.
    Die Generierung der Tests soll automatisiert werden, das siehst du richtig.
    Nur weiss ich jetzt nicht, was du mit Worten auf Bäumen willst :p 😃

    antwort ist nur ein Platzhalter, wie gesagt enthält der Baum verschiedene Stati, je nach Status wird entschieden in welche Verzweigung gesprungen wird. (ja/nein Verzweigungen z.b.)

    Und ich würde diesen Thread gerne frei von Vulkaniern halten... :p



  • phlox81 schrieb:

    Es lassen sich natürlich bestimmte Verzweigungstest gruppieren/klassifizieren, dennoch verstehe ich nicht ganz was du mit Alphabet meinst 😉

    Alphabet Sigma = {"ja","1","2","?",...}

    Semantik P'(Sigma) = { "ja", "1", "2", "?", "ja ja", "ja 1", "ja 2", "ja ?", "1 ja",...}

    phlox81 schrieb:

    Es wird der Baum an sich getestet,

    Das "an sich" hat man schon Kant als unhaltbar vorgeworfen; wichtig ist nicht was er ist, sondern wie er wirkt.
    Das soll jetzt nicht zur Philosophie (schon gar nicht der vulkanischen *SCNR*) führen sondern hat ganz konkrete Bedeutung, nämlich

    phlox81 schrieb:

    was du mit Worten auf Bäumen willst :p 😃

    dadurch kann man das Problem formalisieren, unabhängig davon was die Worte konkret repräsentieren.

    Grüsse

    *this



  • Gast++ schrieb:

    phlox81 schrieb:

    Es lassen sich natürlich bestimmte Verzweigungstest gruppieren/klassifizieren, dennoch verstehe ich nicht ganz was du mit Alphabet meinst 😉

    Alphabet Sigma = {"ja","1","2","?",...}

    Semantik P'(Sigma) = { "ja", "1", "2", "?", "ja ja", "ja 1", "ja 2", "ja ?", "1 ja",...}

    Gut, Alphabet = Klassifizierung, Semantik P' = Gruppierung, allerdings gehts mir weniger um die Problemlösung, als um die Vorgehensweise.
    Die Codeerstellung ist dann sowieso auf die einzelnen Entscheidungsblöcke+Verzweigungen angewiesen.



  • phlox81 schrieb:

    Vorgehensweise.Die Codeerstellung ist dann sowieso auf die einzelnen Entscheidungsblöcke+Verzweigungen angewiesen.

    Dann schreibst Du eine Funktion die alle Worte der Semantik einmal durch den "Dispatcher" (lass uns das komplette if-else-Konstrukt mal so nennen) schickt un die Rückgabe und ggf. Exceptions zusammen mit dem übergebenen "Wort" in einen (XML)Baum logged.



  • Gast++ schrieb:

    phlox81 schrieb:

    Vorgehensweise.Die Codeerstellung ist dann sowieso auf die einzelnen Entscheidungsblöcke+Verzweigungen angewiesen.

    Dann schreibst Du eine Funktion die alle Worte der Semantik einmal durch den "Dispatcher" (lass uns das komplette if-else-Konstrukt mal so nennen) schickt un die Rückgabe und ggf. Exceptions zusammen mit dem übergebenen "Wort" in einen (XML)Baum logged.

    Es soll aus dem Modell Testcode generiert werden, z.b. ein einzelner durchlauf durch eine Baumroute.
    Ein (stark vereinfachtes) Beispiel:

    function testcase1(testobject to)
    {
       to.Send("ja");
       check(to.Recv());//auf mögliche antwort testen.
       // und in die nächste verzweigung springen:
       to.Send("1");
       check(to.Recv());//auf mögliche antwort testen.
       // ende des generierten testfalls
    }
    

    Aber ich glaube wir reden irgendwie aneinander vorbei.
    Mir geht es auch mehr um den Ansatz des MbT bzw. MDA, und ob diese sich für das Konkrete Beispiel eignet.



  • phlox81 schrieb:

    Aber ich glaube wir reden irgendwie aneinander vorbei.

    Meinst Du? Das glaube ich eigentlich nicht:

    - Du hast das Modell in irgendeiner Form vorliegen; z.B. als (UML) XMI
    - Du bildest das Modell auf Code ab, also generierst Code.
    - Jetzt bildest Du das Modell nochmals ab, und zwar auf das beschriebene Alphabet und nutzt eine Funktion, die dynamisch mit dem Resultat dieser Abbildung operiert um das Generat zu testen.

    Das ist doch konzeptionell völlig konsistent mit MDA/MBT.
    Damit sowas geht macht man doch MDA.

    phlox81 schrieb:

    Mir geht es auch mehr um den Ansatz des MbT bzw. MDA, und ob diese sich für das Konkrete Beispiel eignet.

    Dto.!

    Grüsse

    *this



  • Gast++ schrieb:

    phlox81 schrieb:

    Aber ich glaube wir reden irgendwie aneinander vorbei.

    Meinst Du? Das glaube ich eigentlich nicht:

    - Du hast das Modell in irgendeiner Form vorliegen; z.B. als (UML) XMI
    - Du bildest das Modell auf Code ab, also generierst Code.

    - Jetzt bildest Du das Modell nochmals ab, und zwar auf das beschriebene Alphabet und nutzt eine Funktion, die dynamisch mit dem Resultat dieser Abbildung operiert um das Generat zu testen.

    jo. Das Modell wird aus einem Format (MOF/UML/XMI) geladen, und mit hilfe von vorgefertigten Mustern/Klassifizierungen/Gruppierungen
    in Testfälle übersetzt, welche dann los gelöst von diesem Prozess den eigentlichen Test fahren.







  • Prof84 schrieb:

    http://www.sigs-datacom.de/sd/publications/pub_article_show.htm?&AID=2061&Table=sd_article

    Der Artikel ist nicht mehr öffentlich zugänglich. Und 2.50€ für eine PDF Datei finde ich dann doch was viel 😉
    Kannst du denn sonst noch was zu dem Thema beitragen/sagen?


Anmelden zum Antworten