Gewichtung der Wiedererkennungsmerkmale bei aufgenommenen Komponenten

Um die gesuchte Komponente zu finden, ermittelt QF-Test für jede Komponente im SUT die Wahrscheinlichkeit, mit der sie der gesuchten Komponente entspricht. Die Komponente mit der höchsten Wahrscheinlichkeit wird dann verwendet, sofern diese Wahrscheinlichkeit über einer frei wählbaren Schwelle liegt. Zunächst werden die Wahrscheinlichkeiten der Fenster im SUT untersucht. Anschließend wird die Suche in dem Fenster mit ausreichend hoher Wahrscheinlichkeit fortgesetzt.

Analog wird auf jeder weiteren Ebene verfahren, d.h. für jede direkten und indirekten Parentknoten des gesuchten 'Komponente' Knotens, allerdings von oben nach unten. Auf jeder Ebene werden die zum Attribut 'Klasse' passenden Komponenten ermittelt und ihre Wahrscheinlichkeit bestimmt. Unsichtbare Komponenten kommen nicht in Betracht.

Auf jeder Ebene wird die Wahrscheinlichkeit einer Komponente in mehreren Stufen ermittelt:

  • Ausgegangen wird von einer Wahrscheinlichkeit von 99 Prozent, welche durch Abweichungen von den Geometrievorgaben reduziert wird. Daraus wird die Basiswahrscheinlichkeit für das weitere Vorgehen ermittelt.
  • Die folgenden drei Stufen können entweder einen "Treffer" oder keinen "Treffer" liefern oder übersprungen werden. Ist für eine Stufe kein Wert angegeben, wird sie übersprungen. Die Wahrscheinlichkeit bleibt unverändert. Für jeden dieser drei Schritte gibt es einen frei wählbaren Bonus für den Fall eines Treffers oder eine Herabsetzung für den Fall einer Abweichung. Der Bonus bewirkt, dass die Wahrscheinlichkeit auf mehr als diesen Wert angehoben, die Herabsetzung, dass sie auf unter diesen Wert reduziert wird.
  • Als erstes wird die Struktur von 'Komponenten'überprüft, (nicht von 'Fenstern', für die diese Information nicht existiert). Alle Komponenten der aktuell betrachteten Container-Komponente, deren Klasse dem gegebenen 'Klasse' oder einer abgeleiteten Klasse entsprechen, werden in einer Liste gesammelt (einschließlich unsichtbarer Komponenten). Für einen Treffer muss sowohl die Zahl der zuvor ermittelten Komponenten mit der passenden Klasse, als auch der Index der Komponente in dieser Liste mit den Vorgaben übereinstimmen.
  • Im zweiten Schritt wird das 'Merkmal' und eventuelle 'Weitere Merkmale' überprüft. Wenn der Test eines 'Weiteren Merkmals' mit dem Status 'Muss übereinstimmen' fehlschlägt, wird die Komponente verworfen.
  • Im dritten und letzten Schritt wird der 'Name' der Komponente getestet. Falls ein 'Name' vorhanden ist, ist dies der entscheidende Test, da der Bonus und der Malus hier die höchsten Werte haben.

Für Dialoge gibt es noch einen weiteren Schritt, der die Modalität des Dialogs überprüft. Normalerweise ist ein Dialog entweder modal oder nicht modal, so dass eine Abweichung standardmäßig die Erkennung verhindert. Es kann allerdings vorkommen, dass der selbe Dialog je nach Kontext modal oder nicht modal ist. Wenn Ihr SUT einen solchen Dialog enthält, müssen Sie die "Herabsetzung für Modal" auf einen Wert oberhalb der Mindestwahrscheinlichkeit setzen.

Wenn die errechnete Wahrscheinlichkeit einen Mindestwert nicht erreicht, wird die Komponente verworfen. Die Komponente mit der höchsten Wahrscheinlichkeit wird verwendet. Wenn in der Komponente eine Abweichung bei der Struktur, dem Merkmal oder dem Namen besteht, wird eine Meldung in das Protokoll geschrieben, da dies darauf hinweisen könnte, dass es sich doch nicht um die richtige Komponente handelt. Meistens deutet dies jedoch nur darauf hin, dass sich das SUT leicht verändert hat. Die Komponente sollte dann aktualisiert werden bevor die Änderungen kumulieren und die Komponente nicht mehr erkannt wird.

Obwohl in diesem Prozess bereits die Suche nach dem Namen dominiert, können Sie dessen Bedeutung noch vergrößern, indem Sie die Optionen Gewichtung von Namen (Wiedergabe) und Gewichtung von Namen (Aufnahme) auf "Name übertrifft alles" setzen. In diesem Fall vereinfacht QF-Test die Suche nach einer Komponente, sofern sie einen Namen besitzt. Statt, wie oben erklärt, alle Parentcontainer von außen nach innen abzuarbeiten, werden diese übersprungen und im Fenster direkt nach einer Komponente mit passenden Namen und Klasse gesucht. Dadurch erhöht sich die Unabhängigkeit von der Struktur des GUI, die Komponente wird auch dann noch erkannt, wenn Sie eine neue Ebene zwischen Fenster und Komponente einführen oder eine solche entfernen. Als Voraussetzung für diese Methode müssen Sie sicherstellen, dass wenn ein Name vergeben wird, dieser zumindest für die gleichzeitig sichtbaren Komponenten der selben Klasse innerhalb eines Fensters eindeutig ist.

Ist eine derartige Eindeutigkeit nicht gegeben, ist "Hierarchie von Namen" die nächstbeste Einstellung für die beiden Optionen. Sie erfordert, dass zwei gleichnamige Komponenten zumindest unterschiedlich benannte Parentcontainer haben. Diese Einstellung bewahrt den Großteil der Vorteile und der Flexibilität von Namen. Die Wiedererkennung wird damit allerdings scheitern, wenn eine benannte Komponente aus ihrem Parentcontainer verschoben wird.