Selenium 自動テストのインタビューの質問 [回答付き]

目次

1.セレンに元素が存在するかどうかを判断する方法は?

2. hidden または display = none 要素をセレンに配置できますか?

3. セレンの操作要素の成功率を確保するにはどうすればよいですか? 言い換えれば、クリックした要素がクリック可能でなければならないことを確認するにはどうすればよいですか?

4. Selenium スクリプトの実行速度を改善するには?

5. 実行中のユース ケースが不安定である、つまり、今回はパスできるが、次回はパスしないというユース ケースの安定性を向上させるにはどうすればよいですか?

6. 自動化ユースケースの実行戦略は何ですか?

7. 継続的インテグレーションとは?

8. 自動テスト中にデータ検証のためにデータベースに接続する必要はありますか?

9. id、name、class、xpath、css セレクターの属性のうち、どれを好みますか?その理由は?

10. ページ上で動的にロードされる要素を見つける方法は?

11.属性が動的に変化する要素を見つける方法は?

12. リンクをクリックした後、Selenium はページが読み込まれるまで自動的に待機しますか?

13. webdriver クライアントの原理は何ですか?

14. webdriver のプロトコルは何ですか?

15. ブラウザの起動時に使用される Web ドライバ プロトコルはどれですか?

16. ページ オブジェクトのデザイン パターンとは?

17. ドロップダウン ボックスで value=xx のオプションを選択する方法は?

18. 配置後に要素を強調表示する方法 (デバッグ目的)?

19. アサーションとは何ですか?

20. 自動化されたテスト ソリューションを選択する場合、java、js、python、または ruby​​ のどの言語を選択しますか?

21. ページオブジェクト設定モードで、ページ内の配置方法にアサーションを追加する必要はありますか?

22. ページ オブジェクト デザイン モードで、ページ ジャンプを実現するにはどうすればよいですか?

23. 自動化されたテスト ケースはどこから来るのですか?

24. 自動テストの最大の欠陥は何だと思いますか?

25. 層化テストとは何ですか?

26. インターフェイスのテストに webdriver を使用できますか?

27. get と post の違いは何ですか?

28. 社内で使用していたテストシステム(B/S体制)が急にアクセスできなくなり、点検・復旧したいのですが、どのような点検方法をとっていますか?

Selenium のインターフェースやメソッドのほとんどを習得したら、自動テスト (主に Selenium の自動テスト) の面接に行くことができます。これらの質問の次の要約が役立つ場合があります。


1.セレンに元素が存在するかどうかを判断する方法は?

答え: isElementPresent 

2. hidden または display = none 要素をセレンに配置できますか?

答え: 見つかりません 

3. セレンの操作要素の成功率を確保するにはどうすればよいですか? 言い換えれば、クリックした要素がクリック可能でなければならないことを確認するにはどうすればよいですか?

回答: (1) スマート待機時間要素を追加: driver.implicitly_wait(30)

(2) try メソッドを使用して、さまざまな方法で ID、名前、クラス、x パス、および css セレクターを見つけます。最初の方法が失敗した場合、自動的に 2 番目の方法を試すことができます。

(3) Selenium は要素の配置を通じて要素の成功率を保証します. もちろん、それには多くの配置方法があり、適切な方法があるはずです. しかし、自動化エンジニアリングの実装プロセスでは、高品質の自動テストはできません.開発者は、独自の名前や ID などをページ要素に追加するなど、開発の習慣を標準化する必要があります。これにより、要素の配置の精度が大幅に向上します。もちろん、開発者が標準化された方法で開発していない場合は、要素を配置するときに相対アドレス配置を使用しようとします。これにより、ページの変更に対する要素の配置の影響を減らすことができます。要素の配置が正確である限り、各操作が期待される結果を満たしていることを確認できます 

4. Selenium スクリプトの実行速度を改善するには?

回答: Selenium スクリプトの実行速度は、ネットワーク速度、操作手順の複雑さ、ページの読み込み速度、スクリプトで設定した待機時間、スクリプトを実行するスレッドの数など、多くの要因の影響を受けます。そのため、一方的に走行速度を追求することはできず、安定性を確保し、安定した回帰テストを実現することが最も重要です。

1) 次の点から速度を向上させることができます。

1. 操作ステップを減らす テストしたいページが 3 ~ 4 ステップでしか開けない場合は、URL から直接開くことで、不要な操作を減らすことができます。

2. ページの読み込みを中断する. ページの読み込みが多すぎる場合は、読み込みが遅い理由を確認できます. 読み込まれたコンテンツがテストに影響しない場合は、タイムアウトを設定してページの読み込みを中断します.

3. 待機時間を設定する場合は、スリープで時間を固定するか、要素が出現したことを検出して待機を中断して速度を上げることができます。

4 番目に、マルチスレッドを実現するように testNG を構成します。テストケースを書くときは、疎結合を実現する必要があり、サーバーが許可する場合は、実行速度を向上させるためにマルチスレッド操作をセットアップしてみてください。

5. 実行中のユース ケースが不安定である、つまり、今回はパスできるが、次回はパスしないというユース ケースの安定性を向上させるにはどうすればよいですか?

回答: time.sleep( ), driver.implicitly_wait(30), try を使用して例外をキャプチャして処理します.この時点で、不安定の原因を分析し、的を絞った方法で問題を解決する必要があります.

次に、主に次の側面があります。

1. ネットワーク速度の問題: Web ページの読み込みが遅い場合があり、プログラムを実行したときに操作対象の要素が表示されない場合があります。安定性を高めるためには、実行時間を犠牲にして、検出に失敗しがちな要素の前に待機時間を追加し、操作する要素が表示されてから次の操作を実行することしかできません。

次に、Selenium の理由: Selenium 1.0 と 2.0 はまだ異なり、2.0 で実行すると一部の機能が有効な場合と無効な場合があります。これは、避ける必要がある mouseover() 関数の場合です。

3. マルチスレッドの場合、テスト ケースは相互に影響します。マルチスレッドを使用すると実行速度は速くなりますが、ユース ケース間の結合が適切に設計されていないと、ユース ケース A がユース ケース B の前に実行されるとユース ケース B が影響を受け、それ以外の場合はユース ケース B が影響を受けます。問題ありません。この場合、自動テスト プロジェクトをマルチスレッド化する場合は、マルチスレッド化の実行順序が制御されないため、関係ありませんが、事前にテスト ケース テストの結合を緩めておく必要があります。

6. 自動化ユースケースの実行戦略は何ですか?

回答: 自動テスト ケースの実行戦略は、自動テストの目的によって異なります. 通常、次の戦略があります。

1. 自動テストケースを監視に使用する. この目的のために, 自動テストケースを定期的に実行するように設定します. 5分ごとまたは1時間ごとに実行する場合, 時限タスクをjenkins上に作成できます. .

2 つ目は、返さなければならないユース ケースです。BVT テスト ケースなどの一部のテスト ケースは、会社の製品の変更が有効になる前に、回帰して実行する必要があります。次に、実行をトリガーするテスト ケースを設定し、自動化されたテスト タスクをジェンキンスで開発されたビルド タスクにバインドします。開発者がシミュレーション環境でコードを作成すると、自動化されたテスト ケースがトリガーされて実行されます。

3. 頻繁に実行する必要のないテスト ケース。完全なテスト ケースのように、常に実行するために戻る必要はありません. 結局、それでも時間の消費があり、いくつかの非主要なビジネス ラインは頻繁に戻る必要はありません. このタイプのテスト ケースには手動実行を使用します. jenkins でタスクを作成し、実行する必要があるときに手動でビルドします.

7. 継続的インテグレーションとは?

回答: 継続的インテグレーションは、ソフトウェアの実践であるエクストリーム プログラミング (XP) から始まりました. ソフトウェア開発プロセスにおける統合ステップは、長くて予測不可能なプロセスです. 統合プロセス中に多数の問題が発生する可能性があるため、統合プロセスはできるだけ小さく、できるだけ多くする必要があります. 実際、継続的統合とは、継続的なソフトウェア統合を指します. 最も単純な形式の継続的統合には、バージョン管理 (SVN など) の変更を監視するためのツールが含まれます。このツールは、変更が検出されると、アプリケーションを自動的にコンパイルおよびテストできます。

8. 自動テスト中にデータ検証のためにデータベースに接続する必要はありますか?

回答: UI の自動化は必要ありませんが、インターフェイスのテストは必要です。

9. id、name、class、xpath、css セレクターの属性のうち、どれを好みますか?その理由は?

回答: css と xpath のほとんどすべての要素を見つけることができます

10. ページ上で動的にロードされる要素を見つける方法は?

回答: 動的要素が表示されるまで、動的に読み込まれた要素のイベントをトリガーし、それを見つけます。

11.属性が動的に変化する要素を見つける方法は?

回答: xpath または css は、ピア、親、および子を介して検索します 

12. リンクをクリックした後、Selenium はページが読み込まれるまで自動的に待機しますか?

回答: はい、ページが読み込まれるまで待ちます

13. webdriver クライアントの原理は何ですか?

回答: Webdriver の実装原理: selenium-webdriver のソース コードを調べると、Webdriver の実装原理は不可解でも予測不可能でもないことがわかります。ここでは、webdriver ruby​​ バインディングの firefox-webdriver 実装を例として、webdriver の動作原理を簡単に紹介します. テスト スクリプトが firefox (Firefox) を起動すると、selenium-webdriver は最初に新しいスレッドで firefox ブラウザを起動します. テスト スクリプトで Firefox のプロファイルが指定されている場合は、このプロファイルで開始します。それ以外の場合は、新しいプロファイルを開始して Firefox を開始します。Firefox は通常、リモート メソッドを使用せずに開始されます。開始後、selenium-webdriver は Firefox を特定のポートにバインドします。 、バインディングが完了すると、Firefox インスタンスが webdriver のリモート サーバーとして存在し、クライアント (つまり、テスト スクリプト) がセッションを作成し、セッション内の http 要求を介してリモート サーバーに安静要求を送信します。 、およびリモート サーバーは、リクエストを解析し、対応する操作を完了して応答を返します; クライアントは応答を受け入れ、その戻り値を分析して、手順 3 に進むか、スクリプトを終了するかを決定します. これが webdriver のワークフローです。複雑に見えますが、実は webdriver の実装を理解すれば 原理を理解すれば上記の問題は比較的簡単に理解できるはずです。webdriver は、サーバー クライアントの古典的な設計パターンに従って設計されています。サーバー側はリモート サーバーであり、任意のブラウザーを使用できます。スクリプトがブラウザを起動するとき、ブラウザはリモート サーバーであり、クライアントがリクエストを送信して応答するのを待つ役割を果たします。クライアント エンドは単なるテスト コードであり、コード内のいくつかの動作をテストします。ブラウザを開く、特定の URL にジャンプするなどの操作は、http リクエストの形式でテスト対象のブラウザ、つまりリモート サーバーに送信されます. リモート サーバーはリクエストを受け入れ、対応する操作を実行し、応答情報の実行ステータス、戻り値など。

14. webdriver のプロトコルは何ですか?

回答:WebDriver ワイヤ プロトコル 

15. ブラウザの起動時に使用される Web ドライバ プロトコルはどれですか?

答え: http プロトコル

16. ページ オブジェクトのデザイン パターンとは?

回答: ページ オブジェクトとは、UI インターフェイスでユーザーと対話するために使用されるオブジェクトを指します。ページ全体を参照することも、ページ上の領域を参照することもできます。ページ オブジェクトは、実際の UI の抽象モデリングである、テスト コードの対話型オブジェクトです。ページオブジェクトは繰り返しコードの書き込みを減らすことができます. 例えば, 多くのページには同じヘッダー, フッター, ナビゲーターなどがあります. これらを抽象化すると, 1回の書き込みで他の場所で使用できます.

17. ドロップダウン ボックスで value=xx のオプションを選択する方法は?

回答: 2 番目のポジショニングが必要です 

18. 配置後に要素を強調表示する方法 (デバッグ目的)?

回答: 要素の属性をリセットし、配置された要素に背景と境界線を追加します 

19. アサーションとは何ですか?

回答: アサーションの英語はアサーションであり、アサーション チェックの英語はアサーション チェックです。アサーションは、プログラムがすでに持っている必要がある状態、またはプログラム実行中のある時点で一連のプログラム変数が満たさなければならない条件を指定する論理式です。

20. 自動化されたテスト ソリューションを選択する場合、java、js、python、または ruby​​ のどの言語を選択しますか?

A: 使い慣れた言語を使用してください 

21. ページオブジェクト設定モードで、ページ内の配置方法にアサーションを追加する必要はありますか?

答え: 必要ありません

22. ページ オブジェクト デザイン モードで、ページ ジャンプを実現するにはどうすればよいですか?

答え: 取得、クリック (落とし穴があるかもしれません)

23. 自動化されたテスト ケースはどこから来るのですか?

回答: 手動のユース ケースから抽出された、自動化のユース ケースの実行戦略を参照できます。 

24. 自動テストの最大の欠陥は何だと思いますか?

回答: 不安定、信頼性が高く、保守が難しく、コストと利益は正比例しません。

25. 層化テストとは何ですか?

回答: UI テスト、統合/インターフェイス テスト、および単体テストはすべて、階層化されたテストとしてカウントできます。

26. インターフェイスのテストに webdriver を使用できますか?

回答: 難しいため、インターフェースのテストはお勧めしません

27. get と post の違いは何ですか?

回答: GET リクエストを使用してもアクションが発生しないためです。アクションなしとは、GET HTTP 要求がサーバー上で結果を生成しないことを意味します。ただし、安全な方法とは、アクションが発生しないという意味ではなく、ここでの安全な方法は、情報が変更されないことを意味するだけです。POST は、サーバー上のリソースを変更する可能性がある要求です。たとえば、CSDN のブログでは、ユーザーが記事を送信したり、読者が POST 要求を介してコメントを送信したりします。これは、記事またはコメントが送信された後にリソース (つまり、特定のページ) が異なるため、またはリソースが変更された場合に発生します。

2 つのリクエスト方法の違い:

1. GET リクエストの場合、リクエストされたデータは URL の後に追加され、URL と転送データを ? で区切り、複数のパラメータを & で接続します。URL エンコーディング形式は、uniclde ではなく ASCII エンコーディングを使用します。つまり、非 ASCII 文字はすべて送信前にエンコードする必要があります。POST 要求: POST 要求は、要求されたデータを HTTP 要求パケットの本文に配置します。上記 item=bandsaw が実際の送信データです。したがって、GET 要求のデータはアドレス バーに表示されますが、POST 要求のデータは表示されません。

2. 送信データサイズ HTTP 仕様では、URL の長さや送信データサイズに制限はありません。しかし、実際の開発プロセスでは、GET の場合、特定のブラウザーとサーバーには URL の長さに制限があります。したがって、GET リクエストを使用する場合、送信されるデータは URL の長さによって制限されます。POSTの場合はURL値の転送ではないので理論上は制限されませんが、実際には各サーバーでPOSTの送信データサイズに制限があり、ApacheやIISには独自の設定があります。

3. セキュリティ POST は GET よりも安全です 

28. 社内で使用していたテストシステム(B/S体制)が急にアクセスできなくなり、点検・復旧したいのですが、どのような点検方法をとっていますか?

答え:

1. ドメイン名を入力してすぐにWebサイトにアクセスできない 以前は正常だったWebサイトが、突然アクセスできなくなりました。

1) FTPが正常でログインできるかテストする.ログインできない場合はドメイン名提供者に直接問い合わせる.ドメイン名提供者に問題がある場合は直接問い合わせる.

2) スペースから与えられた第 3 レベル ドメイン名が Web サイトにアクセスして Web サイトを開くことができるかどうか (第 3 レベル ドメイン名はスペースの贈り物として提供されます)、アクセスできない場合は、スペースの問題である必要があります。 .

3) コンピューターのスタート メニューに cmd と入力し、ポップアップ ブラック ボックスに入力します: ドメイン名に ping を実行し、Enter キーを押します。IP が表示されない場合、または IP アドレスがホスト アドレスと一致しない場合は、次のことを意味します。ドメイン名の解決が間違っている , これはドメイン名の問題であり、ドメイン名を再分析する必要があります.

2. 訪問中に 404 エラー (ページが見つからない) が報告された場合、これは Web サイトのコンテンツは正常であり、プログラムに問題があることを意味します. プログラムが完全であるかどうかを確認します.

3. Web サイトにアクセスすると MySQL Server Error が表示される これはデータベース接続エラーです データベース接続ファイルとデータベースにエラーがないか確認してください。

4. Web サイトにアクセスすると 500 エラーが発生します。1. FTP にログインして、Web サイトが侵害されたことを示す異常なファイルやファイルの欠落がないかどうかを確認し、すぐに Web サイトの製造元に連絡してトラブルシューティングを行ってください。2. スペースと FTP プログラム ディレクトリに不足ファイルがない場合、またはインストール直後に 500 エラーが発生する場合は、スペースで scandir() 関数が有効になっているかどうかを確認し、この機能が無効になっていないかどうかを確認してください。

Selenium のインターフェースやメソッドのほとんどを習得したら、自動テスト (主に Selenium の自動テスト) の面接に行くことができます。これらの質問の次の要約が役立つ場合があります。

1. セレンとは何ですか?
Selenium は、主に Web UI 自動テストに基づいた、オープン ソースの Web 自動テスト フレームワークです。現在のバージョンでは、モバイル端末の自動テストが徐々に増加しています。Selenium は、Java、python、C#、Javascript など、自動化されたテスト スクリプトを開発するための複数の言語をサポートしています。Selenium は、クロスブラウザー プラットフォームのテストをサポートしています。

2. Selenium はデスクトップ アプリケーションの自動テストをサポートしていますか。
Selenium はデスクトップ ソフトウェアの自動テストをサポートしていません. Selenium は Web ページ要素の属性に基づいて要素を検索しますが, デスクトップ ソフトウェア用の他の自動テスト ツールはデスクトップ要素の場所に基づいて要素を検索します. もちろん, それらはまた、デスクトップ要素の属性。

3. Selenium はユース ケースの実行エンジンをサポートしていますか。
エンジンはエンジンのようなものです。Selenium は、テスト ケースとテスト スイートの管理と実行のためのモジュールではありません。ユースケース管理とユースケース実行を実装するには、サードパーティの単体テスト フレームワークが必要です。たとえば、Java には Junit や testNG があり、Python には unittest 単体テスト フレームワークがあります。

4. Seleinum には Excel ファイルを読み取るためのライブラリがありますか いいえ
、サードパーティのツールが必要です。たとえば、Apache POI プラグインです。

5. Selenium のコンポーネントは何ですか?
最も初期の Selenium IDE は、fiefox にインストールされたプラグインのみをサポートし、自動化スクリプトの記録をサポートします。
リモート RC と Grid と webdriverがあります。私たちが通常行っている最も重要なことは、webdriver を使用することです。

6. Selenium の制限または欠陥は何ですか
       ? Web ベースのソフトウェアおよびモバイル プログラムを除き、Selenium はデスクトップ ソフトウェアの自動化テストをサポートしていません。ソフトウェア テスト レポートとユース ケース管理は、
Junit/TestNG や unittest などのサードパーティ プラグインにのみ依存できます。フリーソフトウェアであるため、サポートやサービスを提供するサプライヤは存在せず、問題が発生した場合は、Selenium コミュニティに助けを求めるしかありません。もう 1 つのことは、セレンの開始しきい値が少し高い可能性があり、プレイするには特定のプログラミング言語の基礎が必要であるということです。


7.セレンでは、要素ID/className/Name/LinkText/PartialLinkText/Xpath/CSSセレクターを見つけるさまざまな方法は何ですか?

8. ImplicitlyWait とは
ImplicitlyWait は暗黙の待機であり、通常は要素を探すときに使用されます。たとえば、要素を見つけるのに最大時間を 10 秒に設定します
.implicitlyWait を使用した後、最初に要素が見つからない場合は、10 秒以内に要素を見つけるためにループを続けます.10 秒を超えると、タイムアウト エラーが報告されます。

9. explicitWait とは何ですか
? これは明示的な待機です. つまり, とにかく 10 秒待たなければなりません. 10 秒のタイムアウトを設定する場合, これは selenium2 の機能です. selenium3 では, このインターフェイスはまだ見つかりません
. .

10. スレッド待機とは?
強制的にスレッド待機を設定したい場合があります. Thread.sleep(2000), driver のインスタンスは現在のスレッドです.

11. pollingEvery とは?
これは、一定の時間が設定された後に 1 つのことを行うことです. たとえば、次の設定は 1 秒ごとに要素を検索します.
 WebDriverWait wait = new WebDriverWait(driver,30);
 wait.pollingEvery(1, TimeUnit.SECONDS);
 driver.findElement(By.xpath("xxxx"));


上の写真の知識とスキルをすべて習得し、柔軟に活用できるのであれば、月収2万以上でも問題ないと思います。
 

おすすめ

転載: blog.csdn.net/m0_68405758/article/details/130063537