目次: はじめに
序文
1. 面接形式
オンライン面接:
- ビデオインタビュー
- 電話インタビュー
オフラインインタビュー:
- 企業面接
面接での質問:
①技術的な質問
- 機能テスト
- 自動テスト
- 性能試験
- アプリの自動テスト
- ui自動テスト
- インターフェースの自動テスト
②人事問題
ペンでの質問:
- Pythonの基本的な質問
- オペレーティング システム Linux の共通コマンド
- データベース関連の問題
- テストの理論と方法
- 筆記試験の主な問題種類
- アルゴリズム問題、選択問題、判断問題、一問一答問題
2. 最近の面接での質問の復習
1) フロントエンド インターフェイスが変更されると、バックエンド インターフェイスのユースケースに影響します。たとえば、バックエンドに 20 個のユースケースがある場合、それをどのように解決しますか?
フロントインターフェイスがリアインターフェイスに影響を与える場合は、フロントインターフェイスの変更内容を確認し
、変更内容に基づいてリアインターフェイスへの影響を分析してください。
変更が小さい場合は、背面インターフェイスの影響を受ける部分のみを変更するだけで済みます。
変更が大きい場合は、バックエンド インターフェイスのユースケースを再設計して作成する必要がある場合があるため、
対応する調整と変更をできるだけ早く行ってください。
2) UI 自動化を主にどのように位置付けていますか? 要素が見つからない場合はどうすればよいですか?
8つの主要な測位方法
id
class
xpath
css
link text
partial link text
tag name
name
要素の読み込みが完了していません。待機、強制待機、暗黙的待機、明示的待機 2. この要素は、iframe またはフレーム内のサブページを切り替えます。
要素は無効、読み取り専用、非表示 (非表示、style='disply:none') WebDriver が提供しない一部のメソッドまたは実装できない関数については、WebDriver が実行する driver.execute_script() メソッドを提供します。
JavaScript コード。入力ボックスは id='text' を通じて配置できるが、テキスト コンテンツは send_keys() を通じて入力できないと仮定します。これは JavaScript コードを使用して実現できます。
text = "input text" driver.execute_script("var obj=document.getElementById('text'); obj.value' " + text + "';")
新しいタブ ページにジャンプするか、警告ボックスが表示されます。ドロップダウン ボックスを選択してページを切り替え、警告ボックスを切り替えてドロップダウン選択ボックスを切り替えます。
動的属性または動的 DIV レイヤー
auto-id-E7NOva6B4ky0NzK7
auto-id-JaBOLRNXdMdgx29R
# xpath中提供了三个⾮常好的⽅法来为我们定位部分属性值
driver.find_element_by_xpath ("//div[contains(@id, 'auto-id')]")
driver.find_element_by_xpath ("//div[starts-with(@id, 'auto-id')]")
driver.find_element_by_xpath ("//div[ends-with(@id, 'auto-id)]")
contains(a, b) # 如果a中含有字符串b, 则返回true,否则返回false
starts-with(a, b) # 如果a是以字符串b开头, 返回true,否则返回false
ends-with(a, b) # 如果a是以字符串b结尾, 返回true,否则返回false
スクロールバー、スクロールを追加
3) 要素が深くネストされており、xpath を使用して見つけることができない場合、どうすればよいでしょうか?
CSS 配置方法など、他の配置方法を試してください。
CSS を使用しても見つからない場合は、開発者と通信して HTML の構造を変更する必要がある場合があります。
4) 自動化の実行中に重大なバグに遭遇したことがありますか? どうやって解決すればいいでしょうか?
具体的な例: 要素が見つからない、ページの読み込みがタイムアウトになる、インターフェイスが異常なデータを返すなど。
解決策: まず、ログとエラー メッセージを確認して問題の原因を調査し、チームおよび開発者と連絡します。
位置決め方法の変更、待ち時間の増加、操作の再試行、インターフェイスの問題のトラブルシューティングなど、問題を一緒に分析して解決します。
5) 普段どのようにインターフェースデータをチェックしていますか?
返されたステータス コードを確認し、
返されたデータ構造を確認し、
返されたデータの内容を確認します。
6) たとえば、一部のインターフェイス トークンは期限切れになりますが、インターフェイス パラメーターでそれらをどのように処理しますか?
自動スクリプトにロジックを追加して、最初にトークンの有効期限が切れているかどうかを判断します。
トークンの有効期限が切れた場合は、スクリプトでトークンを再取得し、元のトークン パラメータを置き換えてリクエストを送信できます。
7) テスト対象のシステムの機能は何ですか?
履歴書で担当するモジュールとコア事業に基づいて説明してください。
8) 治験プロセス中に異常なシナリオが考慮されますか?
異常なシナリオのテストではシステムの弱点が明らかになることが多いため、テスト プロセス中に異常なシナリオを考慮する必要があります。
要件とユーザーの行動を分析することで、起こり得る異常な状況を判断し、テスト用のテストケースを作成します。
一般的な異常シナリオ: 不正なデータの入力、範囲外のデータの入力、ネットワークの異常など。
9) 完全なモックを自分で書いたことがありますか?
プロジェクトでの単体テストにモック フレームワークを使用したことがある
使用法と原理: テスト プロセス中に、必要に応じて仮想オブジェクトまたはシミュレートされたオブジェクトを作成して、
テスト対象のオブジェクトの動作をシミュレートし、独立した単体テストの結果を返すことができます。
関連するテスト ケースを作成し、モック オブジェクトを使用して、予想される動作と結果を検証します。
10) 信用システムにおける資金の流れを説明する
プロジェクトには金融関連のプロジェクトが書かれており、資金源、
ローン発行、
返済回収、
利息回収、資金配分、
資金調達などの具体的なビジネスシナリオが問われます。
11) コードでツールキットを書いたことがありますか?
たとえば、自動テストでは、
ブラウザ ドライバーの初期化、同期、その他の操作を処理するためのカプセル化されたツールキットをいくつか作成しました。
インターフェイス テストでは、インターフェイスのリクエストと応答を処理するためのデータ処理、暗号化および復号化操作を記述します。
ツールキットの主なコア機能は、テスト効率の向上とコードの再利用性の向上です。
12) サードパーティが関与するシステムをテストするにはどうすればよいですか?
問題を解決するために対応する措置を講じます
サードパーティ システムをシミュレートする: モック テクノロジを使用して、独立したテストのためにサードパーティ システムの応答をシミュレートします。この方法により、サードパーティ システムへの悪影響を回避できます。
依存関係により、テストの制御性と安定性が向上します
統合テスト: 実際のサードパーティとの統合テストが許可されている場合、サードパーティのシステムを介して直接アクセスしてエンドツーエンドのテストを実行でき、システム全体が正常であることを検証できます。サードパーティとの整合性 システムの相互作用は正常であるが、テスト環境とテストデータの準備に注意を払う必要があるかどうか
静的分析: サードパーティ システムのインターフェイス ドキュメントに対して静的分析を実行して、その機能、パラメーター、戻り値などを理解し、テスト用の対応するテスト ケースを作成します。
この方法は、3 番目のシステムとの直接統合が達成できない状況に適しています。
13) ユーザーがローン金額を取得した後、どのステップで null ポインター例外の消費が必要になりますか?
融資額獲得後の消費環境としては、
返済、
日常消費、
投資、住宅ローンなどがあります。
Null ポインタ例外: コード内での null オブジェクトまたは null 参照の使用が原因です。
コード内の null 参照を確認してください。オブジェクトを使用する前に、オブジェクトが null であってはいけないことを確認してください。
判定条件を使用します。実行前に判定を行うと、NULL 参照を避けるために NULL ポインタ例外が発生する可能性があります。
Null 値処理ツール クラスを使用します。
14) インデックス列の適切なデータ構造の構築に失敗したことに加えて、クエリが遅くなる原因として他にどのような理由が考えられますか?
データベースクエリデータが遅い理由は何ですか?
クエリ条件が複雑すぎる、
データベース テーブルの設計が不合理である、
データベース サーバーのリソースが不足している、
ネットワークの遅延、
データベースの統計が不正確である、
些細な競合、
ハードディスク IO のボトルネック、データベース サーバーのリソースが不足している
15) クエリが遅いという問題はどのような方法で最適化できますか?
クエリ ステートメントを最適化し、クエリ条件を可能な限り単純化し、関連テーブルやサブクエリの使用を減らします。
データベース テーブルを適切に設計し、冗長フィールドを標準化および最適化してください
。データベースのリソース構成を確認して、十分な CPU、メモリ、およびディスク領域を確保してください。
ネットワークが待機時間と帯域幅の要件を満たすために正常な状態を維持していることを確認します
。データベースがクエリ プランを最適化できるように
、データ統計を収集および更新します。ロックの競合やブロックを回避するためにロック戦略を調整します
。ハードディスクのパフォーマンスを確認し、IO 操作を最適化します。
16) pytest フレームワークに関連する問題
ユースケースをスキップするにはどうすればよいですか?
ユースケースをスキップするには、pytest フレームワークのマーク マーク デコレータのスキップを使用します。
ユースケースの上にスキップ デコレータを記述します。
条件付きでスキップします。
無条件でスキップします。
Pytest の事前機能と事後機能を簡単に紹介します。
pytest のフィクスチャ デコレーターは、事前関数と事後関数の定義によく使用されます。
前操作: データの初期化、テスト環境の作成、データベースのクエリ
後操作: データベース接続のクローズ、削除などのクリーンアップ作業の実行テストファイル、およびドライバーを閉じます。
Pytestでテストケースを再実行するにはどうすればよいですか?
pytest プラグインの繰り返しを使用して、ユース ケースの繰り返し実行を実装できます
。プラグインが正常にインストールされた後、コマンド ラインに -n 3 パラメーターを追加すると、これを 3 回繰り返すことができます。
pytestでパラメータ化するにはどうすればよいですか?
デコレータのパラメータ化は、パラメータ化を実装するために pytest マークで提供されます。
デコレータのパラメータは変数名と値のリストであり、ユースケースはリストに基づいて自動的に複数回実行されます。
ユースケースの仮パラメータと実際のパラメータパラメータ化された括弧内に記述する必要があります。
実際のパラメータに使用されるデータ型はリスト、ネストされたリスト、またはタプルです。
仮パラメータは文字列型を使用します。
Pytest フィクスチャ fixture() について簡単に説明します。
pytest のフィクスチャ デコレーターは、前関数と後関数を定義するためによく使用されます。
操作前: データの初期化、テスト環境の作成、データベースのクエリ
操作後: データベース接続の終了、テスト ファイルの削除、ドライバーの終了などのクリーンアップ作業の実行
以下は、私がまとめた 2023 年の最も包括的なソフトウェア テスト エンジニア学習ナレッジ アーキテクチャ システム図です。 |
1. Python プログラミングの入門から習熟まで
2. インターフェース自動化プロジェクトの実践
3. Web自動化プロジェクトの実戦
4. アプリ自動化プロジェクトの実践
5. 一流メーカーの履歴書
6. DevOps システムのテストと開発
7. 一般的に使用される自動テストツール
8. JMeter パフォーマンス テスト
9. まとめ(最後にちょっとしたサプライズ)
たとえ道は険しいとしても、信念を持ち、勇敢に前進し、夢を追い続ける限り、限界を超え、奇跡を起こし、決して諦めずに前進し続ける恐れを知らない戦士になれるでしょう。
人生の舞台では、夢を追い続け、困難や課題を乗り越えてこそ、真の成長と成功を得ることができます。自分を信じて勇敢に前進し、あなた自身の壮大な章を書きましょう。
たとえどんな浮き沈みや困難に遭遇しても、信念を持って闘い続ける限り、あらゆる努力は夢に一歩近づきます。自分の能力を信じて果敢に追いかけて、あなただけの輝かしい人生を創造してください。