SIKULIには大きな可能性が秘められているようです。これをテスト用のツールとして使用しようとした人はいますか? それとも、ユーザーのアクションを自動化するのに適していますか?
12 に答える
GUIの単体テストの見積もり(プロジェクトのドキュメント内):
Sikuliは、junitと統合することにより、GUIの単体テストをサポートするように設計されています。ユニットテストパネルは、[表示/ユニットテスト]をクリックするか、Macの場合はショートカットCmd-U(Windows / Linuxの場合はCtrl-U)で開くことができます。
したがって、SIKULIは最初はGUI自動化を目的としていると理解していますが、GUIテストにも確実に使用できます(GUIテスト= GUI自動化+検証フレームワークを考慮すると密接に関連しています)。完全な例については、GUIのユニットテスト(JEdit)を参照してください(assertXXX
画像を参照してください)。
実際、実際のアプリケーションを1行も記述しなくても(たとえば、最初のモックアップを使用するだけで)、テストの記述が非常に簡単になるように見えるため、SIKULIにはテストの大きな可能性があります。SIKULIは、さまざまな種類のテスト(BDD、受け入れテストなど)の優れたコンパニオンになる可能性があります。
それは本当に素晴らしいソフトウェアで、とても印象的です。
UI テストの自動化に Sikuli を広く使用しています。2011 年 1 月に発見した Sikuli パーティーに「遅れて」しまいました。 )は、ゴールデンタイムの準備ができていることがリリースされました.
以前は、UI テストの自動化に TestQuest と EggPlant を使用していました。私の意見では、Sikuli は 2 人とも完全に打ち負かしています。UI テストの自動化をより良いものにする方法を劇的に変える可能性があり、私の周りの人々にそれを広めることになると心から信じています。
Sikuli を正しく使用するということは、「記録と再生」モデルに従っていないことを意味します。むしろ、Sikuli を使用したテスト自動化の開発に取り組む必要があります (すべてのツールで必要とされるように)、ソフトウェア開発タスクとしてアプローチする必要があります。
現在、EggPlant 用に構築した UI 自動化 DSL (ドメイン固有言語) を Sikuli に移植中です。DSL で活用する重要な機能の 1 つは、Sikuli のテキスト認識機能です。これにより、製品のローカライズされたさまざまなバージョンで同じスクリプトを実行できます。
Sikuli はOpenCV (画像認識用)とtesseract-ocr (テキスト認識用) の上に構築されているため、信じられないほどのパワーと柔軟性を備えています。
@jordan、「Sikuliを正しく使用することは、「記録と再生」モデルに従っていないことを意味します。むしろ、Sikuli を使用したテスト自動化の開発に取り組む必要があります (すべてのツールで必要とされるように)、ソフトウェア開発タスクとしてアプローチする必要があります。
世界最大の PC メーカーが作成したビデオ会議アプリケーションをテストするためのエンド ツー エンドのテスト自動化ソリューションを作成しました。彼らは、それが完全な開発プロジェクトであり、サルが実行できるポイント アンド クリック操作ではないことを理解していませんでした。動的型付け言語でのコーディングの課題を説明しようとすることは不可能でした。
私の経験上、最大の課題はイメージ管理です。テスト自動化の最初の反復では、ファイル システムと configparser を使用しました。configparser の使用は機能しましたが、実装が困難でした。将来的には、ブロブを使用する予定です。回避策はありますが、Sikuli は DB からの画像の直接抽出を (まだ) サポートしていません。
Sikuli IDE には開発ツールがないため、IDE の使用は重要です。私が設定した 2 つの IDE、NetBeans と Eclipse/PyDev には、それぞれ独自の問題があります。コーディングには最適ですが、誤ったエラー、空白の挿入、およびコードの損失は、どちらも理想的なソリューションとは言えません。私は NetBeans でコーディングとテストを行い、SikuliIDE で実行し、すべてをメモ帳にバックアップとして保存しています。
どんな困難に遭遇しても、私は Sikuli の大支持者です。Sikuli はテストの自動化を変える可能性を秘めており、OO コーダーでなくても QA コミュニティ全体がアクセスできるようになります。
FlexWebアプリでワークフローを記録しました。スクリーンショットを作成するための信頼できる戦略を理解するのにしばらく時間がかかりましたが、一度作成すると、デスクトップの配色を変更した後もスクリプトは機能し続けました。同様のコントロールのコレクション、つまりチェックボックス、入力フィールドで特定のコントロールをクリックする必要がある場合でも、構文は少し厄介になります。それを行う唯一の方法は、find()
と組み合わせて使用する ことですright(); left(); inside()
。スクリーンショットが小さいほど、確実に検出されるようです。Imoの良い習慣は、スクリーンショットに重要なオブジェクトのみを含め、それらの一意性を損なうことなく、可能な限りアトミックにすることです。
開発者中心ではない Sikuli のテスト自動化については、RobotFramework.org もチェックしてください。Robot Framework 用の (カスタム) Sikuli テスト ライブラリを作成する方法に関するチュートリアルがあります。
http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.html
単純な汎用バージョンも作成しました
http://code.google.com/p/simplesikuli
また、ウィンドウ処理、GUI コントロール、マウスとキーボードの操作に関して Sikuli に制限があった場合は、別の優れた無料のテスト ツールである AutoIt でいつでも補完できます。AutoIt 自体にも制限があります。Sikuli と組み合わせると、各ツールの欠点が補われ、商用グレードの GUI テスト ツールが置き換えられます。
Sikuli は静止画像マッチングに基づいています。そのため、GUI が十分に安定している状況にのみ適しています。アニメーションなどの動的 GUI や何らかのランダム性を含む GUI の場合は、あまり適用できません。
そして、Sikuli はテスト対象の視覚的な部分のみをカバーします。内部状態が実際に期待どおりかどうかはわかりません。
Skikuli + RobotFramework を使用して、GUI アプリケーションのテスト用に独自のフレームワークを公開しました。
SikuliFramework は、Sikuli の上にオブジェクト指向の抽象化を提供し、GUI の自動化とテストのためのボタン、チェックボックス、ラジオ ボタン、ウィンドウ、ダイアログ階層のセットなど、GUI 要素の相互作用を支援します。また、RobotFramework と緊密に統合されています。
GUI テストに sikuli を使用しましたが、HUDSON と統合することもできました。
テスト自動化のための Sikuli の素晴らしさについての私の見解は次のとおりです。
Miro 用の信頼できるクロスプラットフォーム テスト スイートがあります。
私は実際にsikuliでGUIテスト/エラー処理のためのフレームワークを書いています。それは素晴らしい。