Douyin ソフトウェア テストの面接の質問 (回答付き)
トピック
1...Selenium の hidden または display = none 要素を見つけることはできますか?
2...Selenium スクリプトの実行速度を向上させるにはどうすればよいですか?
3. Webドライバーのプロトコルは何ですか?
4. 自動テスト中にデータ検証のためにデータベースに接続する必要がありますか?
5. リンクをクリックした後、Selenium はページが読み込まれるまで自動的に待機しますか?
6. 自動テストの成果率についてどう思いますか?
7. セレンに元素が存在する必要があると判断するにはどうすればよいですか?
8. http インターフェイスと Web サービス インターフェイスの違いは何ですか?
9. Pytestとunittestの違いは何ですか?
10. Linux コマンドに精通している場合は、履歴書で、テスト環境を構築する方法を尋ねる必要があります。!!!!!!!!!!!
11. テスト システムは他のシステムに接続されていますか? Web オートメーションによって出力される魅力テスト レポートはありますか?
12. 内部接続と外部接続について簡単に説明してください。
13. パフォーマンス テスト データは誰が作成しましたか?
14. APP の自動化は行われましたか? 機能テスト、パフォーマンス テスト、セキュリティ テストをどのように行うかを簡単に説明してください。
15. Web 自動テストでバグが見つかりました。開発者は、コードの問題ではなく、スクリプトの問題だと考えました。トラブルシューティングを行って、開発者を説得するにはどうすればよいですか? (この質問は異なる面接官によって 3 回行われました)
16. あなたの会社のビジネスプロセスは何ですか? 当社に試験に来るメリットは何だと思いますか?あなたのほうが上手です
何?自分の強みを挙げてください。そしてあなたの短所は?
17. 当社に来られたら、テスト作業はどのように行いますか?
18. リクエストのリクエスト ライブラリをカプセル化しましたが、リクエストの送信後に対応するメッセージを取得するにはどうすればよいですか?
-
インターフェースに異常がある場合、どのように分析して問題を特定しますか
-
テストプロセスをどのように改善できるでしょうか? (履歴書は書いてあるのでこんな質問はできないはずです)
-
フルタイムで自動化を行っていますか? 自動化と機能テストは並行して実行されますか? 割合は何ですか?
答え
-
selenium
hidden
または内の要素でdisplay=none
、位置は特定できますが、操作することはできません。これらの要素は、JavaScript を通じてスタイルや属性を変更することでページ上に表示され、操作できます。 -
selenium
スクリプトの実行速度の向上は、次の側面から始める必要があります。- 待ち時間の合理的な使用: 適切な待ち時間を設定し、不必要なハードな待ち時間を避けます。
- ページ要素の配置の数を減らします。配置の繰り返しを避けるために、配置された要素をできるだけ再利用します。
- 高速な配置方法を選択する: アプリケーション シナリオに従って適切な要素検索方法 (ID、クラス名など) を選択し、Xpath などの低速な配置方法の使用を避けます。
-
webdriver
これは、HTTP リクエストによるさまざまなセッションの管理、指定されたセッションの現在の状態と特性の取得、コマンドによる DOM 操作の実行など、ブラウザー制御と自動テストのための Web API を定義するオープン プロトコルです。 -
データ検証のためにデータベースに接続する必要はありません。多くの場合、データ検証は、データベースに直接接続せずに、フロントエンド インターフェイスとバックエンド インターフェイスの概念に基づいて実行できます。データベース内のデータを検証する場合でも、データベースを直接操作する代わりに、JDBC や ORM などのテクノロジを使用して検証操作をコードにカプセル化できます。
-
selenium
ExpectedConditions
ページがロードされるか、特定の要素がロードされるのを待つために使用できます。たとえば、presence_of_element_located
リンク要素がクリックされて存在するのを待つことができます。また、手動で待つtime.sleep()
などのが、この方法では実際にページが読み込まれているかどうかを区別できないため、お勧めできません。 -
自動テストの出力は、テスト実行の品質やシステムの複雑さなどの要因に大きく依存します。さまざまなアプリケーション シナリオを十分に考慮し、ソリューションをさまざまな状況に合わせて継続的に最適化できれば、人間によるテストのコストと時間を大幅に削減し、再現性と持続可能な高品質のテスト結果を出力できます。ただし、適切なテスト計画、テスト ケースの設計、および適切なテスト ツール バリュー チェーンの選択がなければ、これらの要素は効果がない可能性があります。
-
selenium
待機条件は、たとえば、や などのメソッドを使用して、要素が存在するかどうかを判断することでクラス内にカプセル化WebDriverWait
できます。ExpectedConditions
presence_of_element_located
visibility_of_element_located
-
HTTP 接口
通信にはHTTPプロトコルが使用され、通信にはSOAPプロトコルWeb Service 接口
が使用されます。通常、インターフェース定義を記述するためにWSDLファイルを使用する必要があります。さらに、Web サービス インターフェイスは機能が多く、プロトコル オーバーヘッドが高くなりますが、HTTP インターフェイスはよりシンプルで、通常は軽量のサービスやデータ送信などのシナリオで使用されます。 -
Pytest
これは、より柔軟で簡潔な Python テスト フレームワークであり、モジュール化、パラメータ化、フィクスチャ インジェクション、プラグイン メカニズムなどの多くの高度な機能をサポートしています。unittest
は、Python 標準ライブラリに組み込まれたテスト フレームワークで、アサーション、テスト スイートなどの機能をサポートします。対照的に、Pytest
学習と使用が簡単で、より豊富なプラグイン エコロジーを備えています。 -
テスト環境を構築するには、特定のニーズに応じて適切なハードウェアおよびソフトウェア リソースを選択して構成する必要があります。一般に、物理マシンまたは仮想マシンを使用して、テスト環境をシミュレートし、必要なオペレーティング システム、開発環境、データベースやその他のコンポーネント、アプリケーション自体をインストールし、必要なバックアップ、リカバリ、負荷分散、およびパフォーマンスを構成できます。テストトレーサビリティスキーム監視ツールなどによる。
-
テスト システムは通常、製品管理システム、変更管理システム、欠陥管理システムなどの他のシステムと連携する必要があります。ドッキング要件とインターフェイス仕様については、データ交換とプロセスのコラボレーションを実現するために、特定のドッキング ロジックとインターフェイス プロトコルを開発および維持する必要があります。
-
内连接(INNER JOIN)
SQL の最も単純なタイプの結合であり、2 つのテーブルで一致するキー値を持つ行のみを返します。外连接
一方、少なくとも 1 つのテーブルに対応する値がない行を返します。 -
パフォーマンス テストのデータ セットは、システムのビジネス シナリオに従ってテスト担当者が作成したテスト スクリプトであり、これらのスクリプトを実行することで、さまざまな負荷シナリオの下でシステム パフォーマンス データが収集されます。パフォーマンス テストでは、さまざまな実用的なアプリケーション シナリオをカバーし、さまざまな圧力下でのシステムのパフォーマンス指標とボトルネックを反映するために、適切な負荷と同時実行性を生成する必要があります。
-
APP自動化機能テスト、パフォーマンステスト、セキュリティテストを実施済み。このうち、パフォーマンステストは主にログイン機能や決済機能などのAPP機能モジュールをテストし、パフォーマンステストは主にAPPの応答速度、メモリ使用率、消費電力に焦点を当て、動作を収集および分析します。セキュリティテストは、クロスサイトスクリプティング(XSS)やSQLインジェクションなど、APPに対する攻撃を中心に、強化の度合いや脆弱性の修復が有効かどうかをテストします。
-
開発者がバグの原因が自分のコード以外のリンクであると考える場合、次の方法を使用してトラブルシューティングを行い、開発者を説得できます。
- スクリプトを再実行して、一貫したエラーがないか確認します。
- テスト環境の構成とセットアップをチェックし、実稼働環境と同様であることを確認します。
- コード実行プロセスに影響を与えるすべてのミドルウェア コンポーネントのトラブルシューティングを行い、それらのいずれかを削除するか、構成を調整して解決策を決定します。
- 同じシナリオで、別のテスト フレームワークを使用するか、自動化されていないテスト方法を使用して、バグがスクリプトのみに関連しているかどうかを検証します。
- ビジネスとコードのロジックを注意深く分析し、開発チームや製品と話し合って、根本原因を迅速に特定します。
- 同社のビジネス プロセスは業界に関連しており、私が貴社でテストを行う利点は、テスト計画の作成、テスト ケースの設計、テスト作業の実行、テスト作業の実行など、ソフトウェア テストのさまざまな問題に対処するための一定の経験とスキルがあることです。いくつかの一般的なテストツールとテクニックが紹介されています。私は自動化テスト、パフォーマンス テスト、インターフェイス テストが比較的得意で、ニーズに合わせて他のスキルの向上にも努めています。
私の長所は責任感と学習能力が高く、色々な人と協力するのが得意です。私の欠点は、プロジェクト管理の経験が不足していることです。複雑なプロジェクトに取り組む場合は、より多くのトレーニングとサポートが必要になる場合があります。
-
新しい企業でテストを行う場合は、まずその企業のソフトウェア開発プロセス、プロジェクト計画、およびテスト基準を理解し、開発チーム、製品チーム、その他の関連担当者との接触とコミュニケーションを確立する必要があります。これに基づいて、テスト計画を開始し、テスト ケースとスクリプトを作成し、テスト環境をデバッグおよび構築できます。さまざまなプロジェクトのニーズに応じて、自動テスト、手動テスト、または混合テストを使用してテスト作業を実行し、欠陥レポートをタイムリーに追跡し、関連する会議に参加できます。
-
リクエスト ライブラリをカプセル化すると
requests.Response
、text
リクエストの送信後にオブジェクトのプロパティを通じて応答メッセージ文字列を取得できます。対応するメッセージを処理および解析した後のデータは、content
属性または などのメソッドを通じて取得することもできます。json()
-
インターフェース上で例外が発生した場合、状況に応じて以下のような解析手法を採用できます。
- HTTPステータスコード、エラーメッセージなどの異常情報を分析します。
- ネットワーク環境とテストシナリオに応じて適切なテストツールを選択します。
- テスト コードに詳細なログを追加して、主要なステップを記録し、操作をトリガーします。
- 他の API または監視プログラムを呼び出して、リンク全体を追跡および分析できます。
- テスト プロセスを改善するには、次の角度から始めることができます。
- テスト計画とテスト ケースを確認および更新し、自動化ソフトウェアとテスト フレームワークを使用してテスト効率を向上させます。
- コードカバレッジ、欠陥密度などの特定の品質指標を設定し、継続的統合と継続的デリバリーを通じて最終製品が望ましい品質要件を満たしていることを確認します。
- 開発者と協力し、通常は開発プロセスに参加して、初期段階で問題を発見します。
- アジャイル開発手法を使用すると、変化する要件に迅速に対応し、フィードバックや修正を迅速に行うことができます。
- 現在はフルタイムで自動テストを行っていますが、プロジェクトやチームの実情に応じてテストの種類を選択し、テストケースを設計・実行していきます。同時に、自動テストと手動テストは連携しており、それぞれに利点があると確信しています。私のテスト業務では自動化が大きな割合を占めており、その効果は大きいですが、手動テストを完全に置き換えることはできず、たとえば、GUI やコーナーユースケースのテストなどのシナリオでは、依然として人間の参加と検査が必要です。