2010-01-24 17 views

Antwort

19

Zitiert Unit Testing for GUI (im Projekt Documentation):

Sikuli gestaltet wird durch Integration mit junit Komponententests für GUI zu unterstützen. Das Einheitentestfeld kann geöffnet werden, indem Sie auf View/Unit Test klicken oder auf dem Mac auf Cmd-U (oder unter Windows/Linux auf Strg-U) klicken.

So, während mein Verständnis, dass Sikuli zunächst auf GUI Automatisierung ausgerichtet ist, kann es auf jeden Fall für die GUI-Tests verwendet werden (die eng verwandt ist, wenn Sie diese GUI-Tests = GUI Automatisierung + Verifikation Rahmen berücksichtigen). Sehen Sie sich Unit testing for GUI (JEdit) für ein vollständiges Beispiel an (und sehen Sie sich die assertXXX auf Bildern an). In der Tat sehe ich ein großes Potential in SIKULI zum Testen, da es Schreib-Tests sehr einfach zu machen scheint, sogar ohne eine einzige Zeile der realen Anwendung geschrieben zu haben (nur mit einigen anfänglichen Modellen). SIKULI könnte ein großartiger Begleiter für verschiedene Geschmacksrichtungen (BDD, Akzeptanztests usw.) werden.

Es ist wirklich ein erstaunliches Stück Software, sehr beeindruckend.

0

Diese video erwähnt, dass "es ein wenig Änderungen in ihrem Aussehen toleriert." Ich bin vorsichtig mit dem Aufwand, wenn Änderungen "ein wenig" überschreiten. Die Schnittstelle ist beeindruckend, aber übermäßige Fehlalarme können den Test leicht verlangsamen.

+0

Nun, mein Verständnis ist, dass es Mustererkennung verwendet, so denke ich, dass mehr als eine "kleine" Änderung erfordert, den entsprechenden GUI-Screenshot entsprechend zu ändern. Ich würde nichts anderes erwarten. (Ich stimme zu, dass Refactoring keine Stärke des Werkzeugs sein wird). –

+6

In dem Tool ist es sehr einfach, die Toleranz zu ändern, klicken Sie einfach auf das Bild und verwenden Sie die GUI, um die Anzahl der Übereinstimmungen anzupassen und den Schieberegler für die Toleranz von 1 (perfekte Übereinstimmung) bis 0, was außergewöhnlich unscharfe Anpassung ist. Ein 0.82 ignoriert beispielsweise den Hot-Track-Effekt der Windows 7-Taskleiste. –

+2

Die Standard-Übereinstimmungsstufe ist 0.7. Sie können dies jedoch während eines gesamten Tests ändern, indem Sie die globale Einstellung "Settings.MinSimilarity = 0.9" oben in Ihrem Code hinzufügen. Weitere Informationen [hier] (http://sikuli.org/docx/globals.html#Settings). –

3

einen Workflow mit einer Flex-Web-App aufgezeichnet. Ich brauchte eine Weile, um eine verlässliche Strategie für die Erstellung der Screenshots zu finden, aber als ich das getan hatte, funktionierte das Skript auch noch, nachdem ich mein Desktop-Farbschema geändert hatte! Die Syntax wird jedoch etwas umständlich, wenn Sie auf ein bestimmtes Steuerelement in einer Sammlung ähnlicher Steuerelemente, z. B. Kontrollkästchen, Eingabefelder, klicken müssen. Sieht so aus, als ob der einzige Weg dazu besteht, find() in Kombination mit right(); left(); inside() zu verwenden. Scheint so, je kleiner die Screenshots sind, desto zuverlässiger werden sie erkannt. Eine gute Übung wäre es, nur signifikante Objekte auf Screenshots zu speichern und sie so atomar wie möglich zu machen, ohne ihre Einzigartigkeit zu gefährden.

10

Ich verwende Sikuli ausgiebig für die UI-Testautomatisierung. Ich bin "spät" zur Sikuli-Partei, nachdem ich es im Januar 2011 entdeckt habe. Ich bin froh, dass ich es spät entdeckt habe, denn während es früher vielversprechend war, denke ich erst nach Sikuli x1.0-rc1 (was im Dezember passiert ist) wurde veröffentlicht, dass es zur Primetime fertig war.

Zuvor habe ich TestQuest und EggPlant für die UI-Testautomatisierung verwendet. Meiner Meinung nach schlägt Sikuli beide Hände nach unten. Ich glaube wirklich, dass es das Potenzial hat, dramatisch zu verändern, wie Leute UI-Testautomatisierung zum Besseren durchführen und es Leuten um mich herum evangelisieren.

Mit Sikuli richtig bedeutet, dass Sie nicht nach einer „Aufnahme und Wiedergabe“ -Modell sind. Vielmehr müssen Sie die Entwicklung der Testautomatisierung mit Sikuli - wie Sie es mit allen Tools benötigen - als Softwareentwicklungsaufgabe angehen.

Wir sind gerade dabei, eine UI Automation DSL (Domain Specific Language) zu portieren, die wir für EggPlant nach Sikuli gebaut haben. Eine der Schlüsselfunktionen, die wir in unserer DSL nutzen werden, sind die Texterkennungsfunktionen von Sikuli. Dadurch können wir dasselbe Skript für verschiedene lokalisierte Versionen unseres Produkts ausführen.

Da Sikuli auf OpenCV (for image recognition) und tesseract-ocr (for text recognition) aufbaut, hat es unglaublich viel Kraft und Flexibilität.

3

@jordan, Absolutley Spot 'Wenn Sie Sikuli richtig verwenden, bedeutet das, dass Sie kein "Aufnahme- und Wiedergabe" -Modell befolgen. Vielmehr müssen Sie die Entwicklung der Testautomatisierung mit Sikuli - wie Sie es mit allen Tools benötigen - als Softwareentwicklungsaufgabe angehen.

Ich habe eine End-to-End-Testautomatisierungslösung für den Test einer Videokonferenzanwendung des weltgrößten PC-Herstellers entwickelt. Sie haben nicht verstanden, dass es sich um ein vollständiges Entwicklungsprojekt handelt, nicht um eine Point-and-Click-Operation, die ein Affe ausführen könnte. Der Versuch, die Herausforderungen des Codierens mit einer dynamisch typisierten Sprache zu erklären, war unmöglich.

Aus meiner Erfahrung besteht die größte Herausforderung in der Bildverwaltung. Ich habe das Dateisystem und den Configparser für die erste Iteration der Testautomatisierung benutzt. Die Verwendung von configparser funktionierte jedoch war es schwierig zu implementieren. In der Zukunft plane ich Blobs zu verwenden. Sikuli unterstützt die direkte Extraktion von Bildern aus einer DB (noch) nicht, obwohl ich eine Arbeit habe.

Die Verwendung einer IDE ist kritisch, da die Sikuli IDE keine Entwicklungswerkzeuge hat. Die 2 IDEs, die ich konfiguriert habe, NetBeans und Eclipse/PyDev haben ihre eigenen Probleme. Die sind ideal für die Codierung, aber falsche Fehler, Injektion von Leerzeichen und Code-Verlust machen beide weniger als ideale Lösungen. Ich code und teste in NetBeans, führe in SikuliIDE aus und speichere alles in Notepad als Backup.

Trotz aller Schwierigkeiten bin ich ein großer Unterstützer von Sikuli. Sikuli hat das Potenzial, die Testautomatisierung zu verändern, sodass es für die gesamte QS-Community zugänglich ist, ohne dass es ein OO-Coder sein muss.

0

Ich schreibe eigentlich ein Framework für GUI-Tests/Fehlerbehandlung mit sikuli. Es ist großartig.

+1

Welchen Status hat dieses Framework? –

3

Für weniger Entwickler-zentrierte Testautomatisierung für Sikuli, überprüfen Sie auch RobotFramework.org. Es gibt eine Anleitung, wie man eine (benutzerdefinierte) Sikuli Testbibliothek für Robot Framework

http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html

zu machen und ich erstellt eine einfache generische Version als auch

http://code.google.com/p/simplesikuli

Und wenn es jemals Einschränkungen Für Sikuli in Bezug auf Fenster-Handhabung, GUI-Steuerung, Maus- und Tastatur-Interaktion können Sie es immer mit einem anderen großen kostenlosen Test-Tool ergänzen: AutoIt. AutoIt selbst hat auch Einschränkungen, wenn Sie es mit Sikuli kombinieren, machen sie für jedes Werkzeug Unzulänglichkeiten aus, um handelsübliche GUI-Testwerkzeuge zu ersetzen.

0

Ich habe Sikuli für GUI-Tests verwendet, auch ich konnte es mit HUDSON integrieren.

0

Ich habe gerade mein eigenes Framework für GUI-Anwendungstests mit Skikuli + RobotFramework veröffentlicht.

SikuliFramework bietet eine objektorientierte Abstraktion über Sikuli zur Unterstützung von interaktiven GUI-Elementen wie Schaltflächen, Kontrollkästchen, Optionsfeldern, Fenstern und Dialoghierarchien für GUI-Automatisierung und Tests. Es hat auch eine enge Integration mit RobotFramework.

https://github.com/smysnk/sikuli-framework

0

Sikuli auf statische Bildanpassung basiert. Daher ist es nur für Situationen geeignet, in denen die GUI ausreichend stabil ist. Für dynamische GUI wie Animation oder GUI, die irgendeine Art von Zufälligkeit enthält, ist es nicht so anwendbar.

Und Sikuli deckt nur den visuellen Teil des getesteten. Es hat keine Ahnung, ob der innere Zustand tatsächlich wie erwartet ist.

Verwandte Themen