Electronアプリのテスト方法 | 完全ガイド
Electronアプリテストの概要
Electronとは何でしょうか? すでに知っているWebテクノロジーを使ってデスクトップアプリを作成できることを想像してみてください。それがElectronです。JavaScript、HTML、CSSを使用してクロスプラットフォームのデスクトップアプリケーションを開発者が構築できる強力なフレームワークです。
なぜテストが重要なのか
すべてのシステムを確認せずにロケットを打ち上げることはしませんよね?Electronアプリも同じです。テストを行うことで:
ユーザーより先にバグを発見できます
異なるオペレーティングシステム全体で一貫したパフォーマンスを確保できます
問題を早期に特定・修正することでユーザー体験を向上できます
長期的に時間とリソースを節約できます
テストをアプリのセーフティネットと考えてください。ユーザーのデスクトップに届いたときに意図通りに動作するという自信を与えてくれます。
Electronアプリをプロのようにテストする方法を学ぶ準備はできていますか?始めましょう!
次のセクションでは、テスト環境のセットアップから最初の自動テストの実行まで、Electronアプリテストについて知っておく必要があることをすべてカバーします。ベテランの開発者の方でも初めての方でも、このガイドはElectronアプリのレベルアップを支援します。
準備を整える: Electronアプリのテストに必要な要件
テストの詳細に入る前に、必要なツールが揃っていることを確認しましょう。ハイキングトリップ前にバックパックを荷造りするようなものです。準備が大切です。
必要なもの:
TestComplete Webモジュールライセンス: これはElectronアプリテストの世界へのゴールデンチケットです。Webアプリケーションテストのスイスアーミーナイフのようなものです。有効なライセンスが準備できていることを確認してください。
必須プラグイン
Webテストプラグイン: Webベースのテストのための基本です。
Chromium Embedded Frameworkサポートプラグイン: ElectronはChromiumを基盤として使用しているため、このプラグインは重要です。
ご安心ください - これらのプラグインは通常TestComplete Webモジュールとともにプリインストールされています。ただし、常に再確認することをお勧めします!
バイナリ実行ファイルとしてのElectronアプリ: アプリをコンパイルして実行できる状態にする必要があります。デコレーションを始める前に完成したケーキが必要なようなものです。
サポートされているElectronバージョン: 最適なバージョンは?
次に、互換性について話しましょう。すべてのElectronバージョンがテストツールと同様にうまく機能するわけではありません。詳しく説明します:
Chrome DevTools Protocol(CDP)サポート
これは最新のサポートで、Electronバージョン11から32をサポートしています。
アプリの内部への直接ホットラインを持つようなものです。
レガシースクリプトインジェクションサポート
この古い方法はElectronバージョン1.8.2から11.0.0まで動作します。
ガレージにある古い自転車のようなものです。まだ機能しますが、新しいモデルの方が効率的かもしれません。
プロのヒント: テストセットアップと互換性のある最新の安定バージョンのElectronを使用するよう常に目指してください。レシピに最も新鮮な食材を選ぶようなものです。最良の結果が得られます!
テストはバグを見つけることだけでなく、アプリがユーザーに最高の体験を提供することを確保することでもあることを覚えておいてください。適切なツールとバージョンが整っていれば、成功への準備ができています。
カーテンを開ける: テストのためのElectronアプリの公開
ツールが揃ったので、Electronアプリの内部を見る時間です。テストが機能できるように内部の動作を公開する必要があります。方法を探りましょう。
モダンなアプローチ: Chrome DevTools Protocol(CDP)方式
CDPはテストツールにアプリのバックステージへのVIPアクセスを与えることと考えてください。新しいElectronバージョンに推奨される方法です。レッドカーペットを敷く方法をご説明します:
リモートデバッグポートで起動する
テストツール用の秘密のドアを開くようなものです。
アプリを起動するときにこのコマンドを使用します: --remote-debugging-port=<port_1> --inspect=<port_2>
<port_1>と<port_2>を1024から65535の間の利用可能なポート番号に置き換えます。
-cdpAutoSetPortコマンドラインパラメータを使用する
これは公開のための簡単なボタンです。
アプリをTestCompleteのテスト済みアプリケーションにGeneric Windowsアプリケーションとして追加します。
起動設定に-cdpAutoSetPortパラメータを追加します。
TestCompleteにポートのマジックを処理させましょう!
プロのヒント: -cdpAutoSetPortを使用することは、テストセットアップのバレーサービスを持つようなものです。便利で、ポート番号の頭痛から解放されます。
旧来の方法: レガシースクリプトインジェクション方式
もはやメインの方法ではありませんが、一部の古いElectronアプリはまだこの方法を使用しているかもしれません。概要は:
アプリをTestCompleteのテスト済みアプリケーションにGeneric Windowsアプリケーションとして追加します。
Simpleランモードで起動します。
警告: この方法は古い地図を使用するようなものです。目的地に到着できるかもしれませんが、新しいルート(CDPなど)の方が信頼性が高く機能が豊富です。
パスの選択
Electronバージョン11以上の場合: CDPを使用してください。フリップフォンからスマートフォンにアップグレードするようなものです。
古いバージョン(11以前)の場合: スクリプトインジェクションを使用する必要があるかもしれませんが、可能であればアップデートを検討してください。
アプリを正しく公開することは効果的なテストに不可欠であることを覚えておいてください。テストツールにアプリの可能性を引き出す正しい鍵を与えることです。
ライト、カメラ、アクション: テストの作成と記録
ステージが整いましたので、アプリのパフォーマンスを収録し始める時間です。テストの作成と記録に取り組みましょう。思ったより簡単です!
ユーザーアクションの記録: 自分のテストのスターになる
TestCompleteの記録ボタンをクリックします。
通常のユーザーのようにアプリを操作します。
ボタンをクリックし、フォームに入力し、メニューをナビゲートします。TestCompleteが見ています!
完了したら記録を停止します。
アプリテストのための自分のリアリティショーに出演するようなものです!
テスト構造101: スクリプトには何がありますか?
記録後、一連の操作が表示されます。以下のようなものが見つかることがあります:
ClickItem: ドロップダウンからの選択に使用
SetText: テキストボックスへの入力時
Click: ボタンおよびその他のクリック可能な要素に使用
アプリとのユーザー操作の詳細なレシピのようなものです。
テストに味付けする: 変更と強化
基本的なテストを取得しましたか?素晴らしいです!では、さらに改善しましょう:
新しい操作を追加する: 追加のステップやチェックを入れます。
並べ替えまたは変更する: 順序を変えたり、パラメータを調整したりします。
不要な部分を削除する: 不必要に記録されたアクションを削除します。
チェックポイントを追加する: アプリが正しく動作しているかどうかを確認します。
データ駆動型にする: 異なるデータセットで同じテストを実行します。
映画の編集のようなものです。退屈な部分をカットして、特殊効果を追加しましょう!
道を見つける: Electronアプリケーションのオブジェクトのアドレス指定
次に、テストでアプリのさまざまな部分を指定する方法について話しましょう。
名前マッピングとエイリアスの使用: VIPリスト方式
TestCompleteは記録中に自動的にオブジェクトをマッピングします。
各オブジェクトに分かりやすいエイリアスが付与されます。
テストでこれらのエイリアスを使用します。友人をニックネームで呼ぶようなものです!
例: Aliases.orders.pageOrders.formOrder.selectProduct.ClickItem("FamilyAlbum");
名前マッピングなしでオブジェクトをアドレス指定する: フルネームアプローチ
時には、決まったルートから外れる必要があります:
オブジェクトブラウザまたはオブジェクトスパイを使用してフルオブジェクト名を見つけます。
フルネームを使用してオブジェクトを直接参照します。
プロのヒント: 可能な限りエイリアスを使用してください。ニックネームの代わりに誰かのフルタイトルを使用するようなものです。より読みやすく、テストオブジェクトの優れたファイリングシステムのように保守しやすいです。
優れたオブジェクトアドレス指定によって、テストがより安定して更新しやすくなります。「そこにあるものをクリックして」と「注文フォームの送信ボタンをクリックして」の違いです。
アプリを踊らせる: テストでのユーザーアクションのシミュレーション
テスト構造とオブジェクトアドレス指定を理解しましたので、Electronアプリを動かす時間です。ユーザーアクションをシミュレートする方法と、操作できる要素を探りましょう。
TestCompleteのマジックワンド: Web要素のメソッド
TestCompleteはWeb要素を操作するためのツールボックス一杯のメソッドを提供します。アプリのユニバーサルリモコンを持つようなものです。人気のメソッドをいくつかご紹介します:
Click(): クラシック。ボタン、リンク、またはクリック可能な要素をクリックするために使用します。例: myButton.Click();
DblClick(): ダブルクリックアクションに使用します。例: myIcon.DblClick();
SetText(): テキストボックスへの入力に最適です。例: myTextBox.SetText("Hello, Electron!");
Keys(): キーボード入力をシミュレートします。ショートカットや特殊キーに最適です。例: myElement.Keys("[Enter]");
ClickItem(): ドロップダウンメニューとリスト選択に最適です。例: myDropdown.ClickItem("Option 2");
プロのヒント: これらのメソッドは実際のユーザーアクションのように機能しますが、より速く一貫性があります。超効率的なユーザーがアプリをテストしているようなものです!
サポートされているコントロールと要素のゲストリスト
TestCompleteは標準のWeb要素にかなり対応しています。操作できるものは以下の通りです:
<p>、<div>、<span>: テキストとコンテンツのコンテナ用
<table>: 表形式データの操作用
<input>: テキストフィールド、チェックボックス、ラジオボタン
<select>: ドロップダウンとリストボックス
<button>: クリック可能なボタン
<a>: ハイパーリンク
さらに!TestCompleteは以下にも対応しています:
カスタム要素: 標準的なWebテクノロジーで構築されていれば、おそらく操作できます。
複雑なUIコンポーネント: 日付ピッカー、スライダー、カスタムドロップダウンなど。
覚えておいてください: 人間が操作できるものは、TestCompleteもおそらく操作できます!
すべてを組み合わせる
Electronアプリのフォームを入力しているとします。テストは次のようになるかもしれません:
var orderForm = Aliases.orders.pageOrders.formOrder;
orderForm.textboxCustomerName.SetText("John Doe");
orderForm.selectProduct.ClickItem("Awesome Widget");
orderForm.textboxQuantity.SetText("5");
orderForm.buttonSubmit.Click();非常に細心なユーザーのためのスクリプトを書くようなものです!
プロのヒント: 要素を操作する最も効率的で信頼性の高い方法について常に考えてください。時には、複雑な一連のマウス移動より単純なClick()の方が優れています。
これらのメソッドをマスターして、どの要素を操作できるかを理解することで、Electronアプリの堅固で信頼性の高いテストを作成するための準備が整います。コードを使ってアプリを操作する人形遣いのようなものです!
テストゲームをレベルアップする: ベストプラクティスと落とし穴
Electronアプリテストのプロのヒントと潜在的なつまずきを詳しく見ていきましょう。これらを知ることで、頭を悩ませる時間を節約できます!
ベストプラクティス: 秘密のソース
正しいバイナリ実行ファイルの見つけ方
アプリの真の中心を見つけることと考えてください。方法は以下の通りです:
%APPDATA%\Local<Your_App_Name>\app-N.N.Nフォルダを確認します。
ランチャーだけでなく、実際のアプリ実行ファイルを使用します。
プロのヒント: 不明な場合は、TestCompleteをガイドとして使用してください:
Electronアプリを起動します。
TestCompleteのオブジェクトブラウザでアプリを見つけます。
プロセスノードを右クリックして「Add Process to TestedApps」を選択します。正しい実行ファイルが取得できます。
バックグラウンドElectronアプリのコントロール
バックグラウンドElectronアプリはテストに入り込んでくる写真爆弾犯のようなものです。対処方法は以下の通りです:
テスト前に、タスクマネージャーでElectronプロセスを確認します。
バックグラウンドのElectronアプリをすべて閉じます。
なぜか?これらのサイレントランナーはTestCompleteを混乱させ、奇妙なテスト結果につながる可能性があります。騒がしい部屋で会話しようとするようなものです。まず静かにするのが最善です!
制限と既知の問題: 注意点
クロスプラットフォームテストの制限
残念ながら: リモート環境でElectronアプリのクロスプラットフォームWebテストを実行することはサポートされていません。
これが意味すること: 各プラットフォームで個別にテストする必要があります。異なるドアに異なる鍵が必要なようなものです。少し手間がかかりますが、すべてがしっかりロックされていることを確認します。
バージョン固有の問題
Electronは速く動く列車のようなもので、テストツールが追いつく必要があることがあります。バージョン固有の癖を以下に示します:
Electron 9.x以上: Windows 7ではサポートされていません。
Electron 9.xと11.0.0のグローバルサンドボックスモード: サポートされていません。
Electron 12以降: テストの記録中にフリーズまたはクラッシュする可能性があります。
プロのヒント: 常にElectronバージョンの最新の互換性ノートを確認してください。旅行前の天気予報を読むようなものです。準備ができます!
Content Security Policy(CSP)の制限
アプリが厳格なCSPを使用している場合、TestCompleteのスクリプトインジェクションをブロックする可能性があります。修正方法は?緩和されたCSPで別のテストビルドを作成することです。ただし、このビルドを本番環境で使用しないでください!
JavaScriptライブラリの競合
人気のあるJSライブラリを使用していますか?起動時に「Uncaught ReferenceError」が表示されることがあります。修正方法: アプリをテスト用に起動するときに-tearOffNodeObjectsコマンドライン引数を使用します。
これらの制限は障害ではなく、スピードバンプのようなものであることを覚えておいてください。それらを知ることで、テストの旅をよりスムーズにナビゲートするのに役立ちます。
これらのベストプラクティスに従い、制限を認識することで、テストの成功への準備ができています。冒険に出発する前に地図を持ち、地形を知っているようなものです。何が来ても準備ができています!
時代に追いつく: 既存テストの移行
Electronアプリのテストをしばらく行ってきて、TestCompleteを更新した場合はどうなりますか?信頼できる古いテストはどうなりますか?ご安心ください、対処法をご説明します!
テストの移行: 古いものを出し、新しいものを入れる
良いニュース: TestComplete 14.93より前のバージョンから更新する場合、既存のテストが真夜中に突然カボチャになることはありません。まだ機能します。ただし、フリップフォンからスマートフォンにアップグレードするように、活用したい新しい機能がいくつかあります。
簡単な移行ガイドをご紹介します:
落ち着いてテストを続ける 古いテストはまだ実行されます。すべてを最初から書き直す必要はありません。古い車が新しい道路でまだうまく機能することがわかるようなものです。
CDPを採用する CDP(Chrome DevTools Protocol)は新しい注目の存在です。手紙からメールに切り替えるようなもので、より速く、より効率的で、より優れた機能があります。
マジックパラメータ テストをアップグレードするための秘密のソースをご紹介します:
テスト済みアプリケーションのコレクションでElectronアプリを見つけます。
このマジックスペルを追加します: -cdpAutoSetPort
アプリの起動設定にコマンドラインパラメータとして追加します。
古い犬に新しいトリックを教えるようなものです!
残りはそのままに 良いニュース: 他のテストコマンドに触れる必要はありません。新しいセットアップで問題なく動作します。
プロのヒント: 古いテストは機能しますが、TestComplete 14.93以降の新機能を最大限に活用するために、徐々に更新することを検討してください。クローゼットを一度に全部ではなく少しずつアップグレードするようなものです!
なぜ移行する必要があるのか?
「壊れていないなら修正するな」と思っているかもしれません。しかし、アップグレードが良い理由は以下の通りです:
パフォーマンスの向上: CDPは一般的に速く信頼性が高いです。
機能の追加: 新しいテスト機能へのアクセスが得られます。
将来への備え: 最新の状態を維持することで、新しいElectronバージョンでテストが機能し続けることを確保できます。
バグ修正: 新しいバージョンには既知の問題の修正が含まれていることが多いです。
車のチューンアップのようなものです。よりスムーズに動き、長持ちします!
注意事項
レガシースクリプトインジェクション方式(14.93より前)を使用している場合、一部の制限と潜在的な問題があることに注意してください。古い地図を使用するようなものです。目的地に到着できるかもしれませんが、新しいルートの方が多くの場合優れています。
移行のまとめ
テストの移行は頭痛の種である必要はありません。TestCompleteでは、それは未来への優しいナッジのようなものです。古いテストはまだ機能しますが、シンプルな調整で新しいテストの可能性の世界を引き出すことができます。
目標はテストをより効率的で効果的にすることです。テストを更新することで、時代に遅れずに進むだけでなく、将来のより簡単で堅固なテストへの準備ができています。
まとめ
おめでとうございます!Electronアプリをプロのようにテストするための知識が備わりました。環境のセットアップから堅固なテストの作成、古いテストの移行まで、あらゆるデスクトップでアプリを輝かせるためのツールが揃っています。
テストはバグを見つけることだけでなく、卓越したユーザー体験を提供することでもあることを覚えておいてください。Electronが進化するにつれて、テスト方法も進化します。好奇心を持ち続け、学び続け、新しいテクニックの実験を恐れないでください。
よくある質問
Qodex.aiを選ぶ理由は何ですか?
Qodex.aiはAI搭載のツールと自動化を活用して、APIテストプロセスを簡素化・加速します。その特徴は以下のとおりです:
- AI搭載の自動化
一行のコードも書かずに100%のAPIテスト自動化を実現します。Qodex.aiの最先端AIは手動作業を削減し、卓越した効率性と精度をお届けします。
- ユーザーフレンドリーなプラットフォーム
PostmanやSwagger、アプリケーションログからAPIコレクションを簡単にインポートし、数分でテストを開始できます。急峻な学習曲線や技術的な専門知識は不要です。
- カスタマイズ可能なテストシナリオ
AIによるテスト生成と手動でのテストケース作成のどちらでも、Qodex.aiはお客様のニーズに対応します。プロジェクトの要件に合わせた堅固なシナリオを構築できます。
- リアルタイムの監視とレポート
APIの健全性、テスト成功率、パフォーマンス指標に関するインサイトを即座に取得できます。統合ダッシュボードにより常に状況を把握し、問題を早期に特定・対処できます。
- スケーラブルなコラボレーションツール
あらゆる規模のチーム向けに設計されたQodex.aiは、シームレスなコラボレーションを促進するテストプラン、スイート、ドキュメントを提供します。スタートアップ、エンタープライズ、マイクロサービスアーキテクチャに最適です。
- コストと時間の効率化
手動テストのオーバーヘッドをなくすことで時間とリソースを節約します。Qodex.aiの自動化により、運用コストを削減しながらイノベーションに集中できます。
- CI/CD互換性
Qodex.aiをCI/CDパイプラインに簡単に統合して、開発ライフサイクル全体で一貫した自動テストを実現できます。
Pythonのregexを使用してメールアドレスを検証するにはどうすればよいですか?
メールアドレスの検証には次のregexパターンを使用できます: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
Go Regex Testerとは何ですか?
Go Regex Testerは開発者がGo言語環境で正規表現をテスト・デバッグするための専門ツールです。regexパターンのリアルタイム評価を提供し、効率的なパターン開発とトラブルシューティングをサポートします。
Discover, Test, & Secure your APIs 10x Faster than before
Auto-discover every endpoint, generate functional & security tests (OWASP Top 10), auto-heal as code changes, and run in CI/CD - no code needed.
Related Blogs





