ホームページ  >  記事  >  バックエンド開発  >  Python 自動化テストの面接に関するよくある質問と回答

Python 自動化テストの面接に関するよくある質問と回答

王林
王林転載
2023-04-27 15:31:072275ブラウズ

1. 自動テストにはどのようなプロジェクトが適していますか?

キーワード: 変更されていない、反復的、標準化された

1) タスクのテストが明確であり、要件が頻繁に変更されることはない

2) プロジェクトのサイクルは十分に長い必要があります

3) 自動化されたテスト スクリプトは、次のように再利用できます。より頻繁な回帰テスト

4) テスト対象のソフトウェア システムの開発は比較的標準化されており、システムのテスト容易性を保証できます

5 ) ソフトウェア システム インターフェースは安定しており、変更はほとんどありません

6) プロジェクトの進行プレッシャーはそれほど高くありません

2. PO モデルとは何ですか?

は、特定のページをプログラミング言語のオブジェクトに変換し、ページ特性をオブジェクト プロパティに変換し、ページ操作をオブジェクト メソッドに変換することを指します。

1) 一般的には各ページをオブジェクトとして捉え、ページ層に位置決め要素のメソッドとページの操作メソッドを記述します。

2) ユースケース層は操作メソッドを呼び出します。

3) 位置決め要素とスクリプトを分離できます

4) 主にページ操作とテスト ロジックの分離を実現するために使用されます

3. PO モードのカプセル化原則は次のとおりです。

1) ページ内の機能またはサービスをカプセル化するには、たとえば、ページ要素をクリックして新しいページに入る場合、このサービスの「新しいページに入る」メソッドをカプセル化できます

2) カプセル化の詳細。メソッド名またはインターフェイスのみを外部に提供し、ページの内部を公開しないようにします。

3) カプセル化された操作の詳細ではアサーションを使用せず、アサーションを別個に配置します。 modules,

4) ボタンをクリックすると新しいページが開きます。return メソッドを使用してジャンプできます。たとえば、return MainPage() はホームページにジャンプすることを意味します

5) 全体PO. ページ全体の動作をカプセル化する必要はありません。必要なロジックを使用できます。カプセル化する内容

6) アクションは異なる結果を生成する可能性があります。たとえば、ボタンをクリックした後、 2 つの結果に対して 2 つのメソッドをカプセル化します: click_success と click_error

4. Python *args と **kwargs の役割は何ですか?

はすべて可変長パラメーターであるため、非固定パラメーターの問題は解決されます。

args はタプルに使用される非キーワード パラメータ、kwargs はキーワード パラメータ (辞書)

つまり、args は複数の名前のないパラメータを表しますが、kwags は対応する関係を表します キーワード引数。

使用する場合、*args は **kwags より前になければならないことに注意してください。そうでないと構文エラーが発生します。

5. Python のガベージ コレクション メカニズムとは何ですか?

ガベージ コレクション (ガベージ コレクション) は GC と呼ばれ、Python インタープリターに付属するメカニズムであり、特にガベージ コレクションに使用されます。

変数を定義する際にはメモリ空間が適用され、変数が使い果たされると、その変数が占有していたメモリ空間も解放され、Python は GC メカニズムによってそれを再利用します。

どのような種類のガベージ コレクション メカニズムであっても、一般にガベージ検出とガベージ コレクションの 2 つの段階に分けられます。

ガベージ検出は、割り当てられたメモリ内の「リサイクル可能な」メモリと「リサイクル不可能な」メモリを区別することです。

ガベージ コレクションを使用すると、オペレーティング システムは、ガベージ検出フェーズ中に特定された再利用可能なメモリ ブロックの制御を取り戻すことができます。

いわゆるガベージ コレクションは、このメモリ内のデータを直接クリアするのではなく、アプリケーションがメモリを占有しないように、そのデータを使用する権利をオペレーティング システムに返します。

ガベージとは

1) 変数が呼び出され、不要になった場合、その変数はガベージになります。

2) 変数アドレスを指す変数名が別のアドレスを指している場合、元の変数メモリアドレスにアクセスできなくなり、この時点で変数もゴミとなります。

6. Selenium の隠し要素を見つけるにはどうすればよいですか?

まず、seleniumでは隠し要素の操作はできません(通常の配置は可能です) フレームワーク自体はこのように設計されています 隠し要素を操作する必要がある場合は、jsメソッドを使用して操作してください。入り口ではjsスクリプトを実行できます。

Python 自動化テストの面接に関するよくある質問と回答

要素の属性の非表示と表示は、主に type="hidden" 属性と style="display: none;" 属性によって制御されます。

7. ブラウザを閉じるときの quit と close の違い

簡単に言えば、どちらもブラウザ セッションを終了する機能を実現できます。

close はブラウザを閉じるだけですが、quit はすべてのブラウザを閉じるときにドライバー プロセスも強制終了します

8. 発生した例外の例を示します

  • ElementNotSelectableException: 要素を選択できません。

  • ElementNotVisibleException: 要素が表示されません。

  • NoSuchAttributeException: そのような属性例外はありません

  • NoSuchElementException: そのような要素の例外はありません

  • NoSuchFrameException: そのようなフレームの例外はありません

  • TimeoutException: タイムアウト例外

  • 要素はこの時点では表示されません: 要素は現在の時点では表示されません

9. アラート ポップの対処方法上の窓?

1) まず switch_to_alert() メソッドを使用してアラート ポップアップ ボックスに切り替えます

2) text メソッドを使用してポップアップ テキスト情報を取得できます

3) accept() 確認ボタンをクリックします。

4) dismiss() をクリックしてキャンセルボタンをクリックし、ポップアップボックスをキャンセルします。

5) ポップアップのテキストを取得します。 window through text()

10. Selenium でそれを行う方法 複数のウィンドウを扱うには?

ハンドル: ウィンドウの一意の識別子

1) まず、現在のウィンドウのハンドルを取得します driver.current_window_handle

2) 次に、すべてのウィンドウ ハンドルを取得します driver.window_handle

3) ループして、それが目的のウィンドウであるかどうかを判断します表示されている場合はそのウィンドウを操作できますが、そうでない場合は driver.switch_to_window メソッドを使用して新しいウィンドウにジャンプします。

11. 要素が Selenium に存在するかどうかを確認するにはどうすればよいですか?

Selenium には、要素が存在するかどうかを判断するネイティブ メソッドが提供されていません。通常、要素を配置して例外をキャッチすることで判断できます。

Python 自動化テストの面接に関するよくある質問と回答

#12. 自動化における待機の 3 つのタイプは何ですか?彼らの特徴は何でしょうか?

1) time.sleep(2) などのスレッド待機(強制待機):スレッドを 2 秒間強制的にスリープさせ、2 秒後に後続のコードを実行します。控えめに使用することをお勧めします。

2) imlicitlyWait (暗黙的待機) は、要素が見つかるかタイムアウトになるまで、指定された時間範囲内で要素の検索を続けます。特徴は、ページ全体が読み込まれるまで待たなければならないことです。

3) WebDriverWait (明示的待機) は、通常、カスタマイズした関数コードであり、後続のコードの実行を続ける前に、特定の要素がロードされるのを待つために使用されます。

13. Selenium で要素の操作の成功率を確保するにはどうすればよいですか?言い換えれば、クリックされた要素がクリック可能であることを確認するにはどうすればよいでしょうか?

1) WebDriverWait() を使用して明示的に待機し、要素の操作を実行する前に要素がロードされるのを待ちます。

2) 不要な操作を減らすようにしてください。ページに直接アクセスできる場合は、クリック操作でアクセスしないでください。

3) 一部のページは読み込みに時間がかかりすぎるため、ページを中断することを検討してください。 reading

4) 開発者は、一意の名前や ID などをページ要素に追加するなど、開発習慣を標準化します。

14. Selenium スクリプトの実行速度を向上させるにはどうすればよいですか?

1) 明示的な待機を使用して、強制待機または暗黙的な待機の使用を減らします。

2) 不要な手順を減らします。

3) ページに読み込まれるコンテンツが多すぎる場合は、タイムアウトを設定し、ページの読み込みを中断します。

15. ユースケースは運用中に不安定になることがよくあります。つまり、今回は通っても次回は通らないということです。ユースケースの安定性を高めるにはどうすればよいでしょうか?

1) 頻繁に検出に失敗する要素の前に明示的な待ち時間を追加し、操作対象の要素が出現するまで待ってから以下の操作を実行するようにしてください。

2) 例外のキャプチャと処理に try を使用します。

3) 他の種類のテストが同時に実行されてデータに干渉が生じるのを避けるために、専用のテスト環境を使用してください

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

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

1) 自動テスト ケースはモニタリングに使用されます。この目的のために、次のことができます。自動テストケースを定期的に実行するように設定し、5 分ごとまたは 1 時間ごとに実行する場合は、Jenkins 上でスケジュールされたタスクを作成するだけです。

2) 返される必要があるユースケース。実行をトリガーするテスト ケースを設定し、自動テスト タスクを Jenkins 上の開発ビルド タスクにバインドします。開発者がシミュレーション環境でコードを作成すると、自動化されたテスト ケースがトリガーされて実行されます。

3) 頻繁に実行する必要のないテスト ケース。完全なテスト ケースと同様に、常に実行に戻る必要はありません。また、一部の非本業部門では、時々実行に戻る必要はありません。このタイプのテスト ケースは手動で実行されます。Jenkins でタスクを作成し、実行する必要があるときに手動でビルドします。

17.継続的インテグレーションとは何ですか?

継続的インテグレーションは、チーム開発メンバーが頻繁にコードをトランクに統合するソフトウェア開発手法です。つまり、毎日複数のインテグレーションが発生する可能性があります。

これには 2 つの主な利点があります:

1) エラーを迅速に検出します。更新が完了するたびにバックボーンに統合されるため、エラーがすぐに発見され、エラーの場所を特定しやすくなります。

2) 枝が幹から大きく逸脱しないようにしてください。統合が頻繁に行われず、バックボーンが常に更新されている場合、統合はさらに困難になるか、将来的には困難になる可能性があります。

目的:

継続的インテグレーションの目的は、高品質を維持しながら製品を迅速に反復できるようにすることです。その中心的な対策は、コードがトランクに統合される前に、自動テストに合格する必要があるということです。 1 つのテスト ケースが失敗する限り、それを統合することはできません。

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

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

19. 要素の一般的な配置方法にはどのようなものがありますか?どれがあなたのお気に入りですか?そしてその理由は何ですか?

8 種類、つまり ID、名前、クラス名、タグ名、リンク テキスト、部分リンク テキスト、xpath、css

私が最もよく使用するのは xpath (または CssSelector)

多くの場合、HTML タグの属性は十分に標準化されておらず、単一の属性で配置することができないためです。現時点では、xpath は重複を削除し、唯一の要素を見つけるためにのみ使用できます。

実際、ID は一意であるため、最も速い位置特定は ID ですが、ほとんどの開発者は ID を設定しません。

20. ページ上で動的に読み込まれる要素を見つけるにはどうすればよいですか?

属性の動的な変更は、要素が固定の属性値を持たないことを意味します。そのため、要素の親ノードまたは子ノードを見つけるには、xpath の軸などの相対位置によってのみ配置できます。要素など

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

そのため、Selenium がページの読み込みが完了せずにページ リソースを要求すると、この要素が存在しないと誤って報告されることがあります。

したがって、最初に、Selenium がこのページの読み込みを完了したかどうかを判断することを検討する必要があります。次に、関数を通じて要素を見つけます。 (要素を操作する前にページの読み込みを待機するには、display wait を使用します)


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

Selenium が開始されると、ドライバーはサーバーとして機能し、クライアントおよびブラウザーと通信し、クライアントは Web ドライバー プロトコルに従ってドライバーにリクエストを送信します。ドライバーはリクエストを解析し、ブラウザ上で対応する操作を実行し、実行結果をクライアントに返します。

23. Webdriver のプロトコルは何ですか?

WebDriver Wire Protocol

24. ブラウザの起動時にどの WebDriver プロトコルが使用されますか?

http プロトコル

25. ドロップダウン ボックスで value=xx のオプションを選択するにはどうすればよいですか?

1) select クラスで提供されるメソッド: select_by_value ("xxx")

2) xpath の構文も


26 にあります。Python の一般的な変数パラメーターのタイプ不変パラメータのタイプとは何ですか?

不変のデータ型には、整数、浮動小数点数、負の数値、ブール値、文字列、タプルが含まれます。

可変パラメータの型には、辞書、リスト、セットが含まれます

27。 (デバッグ目的で) 要素を配置した後に要素を強調表示するにはどうすればよいですか?

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

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

アサート、テスト結果が期待される結果と一致するかどうかを判断します

目的は、ソフトウェア開発者が期待する結果を表現し検証することです。プログラムがアサーション位置まで実行されると、対応するアサーションは true である必要があります。アサーションが true でない場合、プログラムは実行を終了し、エラー メッセージを表示します。

29/自動テストプロセス中にどのような問題に遭遇しましたか?また、それらをどのように解決しましたか?

1) 頻繁にページを変更し、ページ オブジェクト クラスのコードを頻繁に変更する

2) 自動テストで時々誤検知が発生する

3) 自動テストの結果が上書きされる状況: Jenkins は時間に基づいてフォルダーを作成します

4) 自動テスト コードのメンテナンスが面倒です

5) 自動テストではデータベース比較データが実行されます

30. ブラウザーをシミュレートする方法前方、後方、更新操作

    driver.navigate().forward() //進む
  • driver.navigate().back( ) //戻る
  • driver.navigate0.efresh() //リフレッシュ

以上がPython 自動化テストの面接に関するよくある質問と回答の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。