ソフトウェア テスト自動化の面接での質問 (回答付き)

目次

1. 社内で自動テストを導入および促進するにはどうすればよいですか?

2. 自動テスト ケースを作成するにはどうすればよいですか?

3. 自動テストでは多くのバグが見つかりますか?

4. 前の会社では自動テストにどのようなフレームワークを使用していましたか?

5. 継続的インテグレーションとは何ですか? 何のために?

UIの自動化

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

2. Selenium*における位置決め方法

3. xpath と css の位置決めはどちらも比較的強力ですが、両者の違いは何ですか?

4. 作成したテスト スクリプトはさまざまなブラウザで実行できますか?

5. 自動化プロセス中に問題が発生しましたか? 例えば

6. PO モードとは何ですか? なぜそれを使用する必要があるのですか?

インターフェースの自動化

1. インターフェイスはどのようにテストしますか?

2. インターフェイスのドキュメントなしでインターフェイスのテストを行うにはどうすればよいですか?

3. インターフェイスのテスト ケースを作成する際の重要なポイントは何ですか?

4. インターフェーステストにおける暗号化パラメータの扱い方

5. インターフェースアプリケーションに関する質問

5. 同期と非同期の違い

6. pytest でケースを組み立てる方法

7. pytest のフック関数について話しましょう

er2

1. アピウムの仕組み

1.1 appuim は uiautomator2 の原理に基づいています

1.2 Appium は uiautomator1 の原理に基づいています

1.3 Appium は chromedriver の原理に基づいており、H5 をテストするときに使用されます

1.4 IOS携帯電話:

2. インターフェイスの応答形式は json ですが、コードを使用してこれを解析するにはどうすればよいですか? そうでない場合

サードパーティのライブラリを使用して解析するにはどうすればよいですか?

3. Testng のリスナーの使い方は? TestNg のデータドリブンな成果

とは?

4. 自動化プロジェクトの全体的なフレームワークの構造を簡単に紹介します

5. 自動化における明示的な待機と暗黙的な待機の類似点と相違点は何ですか?

6. Testng にはどのような注釈がありますか?

7. Jmeter ツールはインターフェイス間をどのように関連付けますか? 簡単に説明します。

8. あなたの会社のビジネスに占める自動化と手作業の割合はどれくらいですか? それぞれ使用される

どのようなビジネスを行っていますか?

9. 自動テストの安定性を確保する方法

10.Cookieとセッションの違いは何ですか?

11. 自動テストでユースケースに依存するデータを構築する方法

12. マルチブラウザまたはマルチ携帯電話テストの実装方法

13. インターフェイスのテスト中にインターフェイスのリダイレクトが発生したかどうかをテストするにはどうすればよいですか?

14. インターフェイスはサードパーティのインターフェイスに依存していますが、サードパーティのインターフェイスに問題があります。どうすればよいですか?

管理?

15.Restful 標準インターフェースでは、リクエスト メソッドは何ですか? それらはそれぞれを表します

それはどういう意味ですか

16. Web オートメーションのどのシナリオで特別な処理が必要ですか?

17. アプリ内でジェスチャーロック解除用のアイコンが見つからない場合はどうすればよいですか?

セレン

1. セレンに元素が存在するかどうかを確認するにはどうすればよいですか?     

2. 自動テストとは何ですか?また自動テストの利点は何ですか?     

3. どのようなプロジェクトが自動テストに適しており、どのようなプロジェクトが自動テストに適していませんか?     

4. あなたの会社の自動化作業の主なプロセスは何ですか?     

5. 自動テスト計画を策定する際に一般的に考慮すべき点は何ですか?     

6. 自動化スクリプトを作成する際の仕様は何ですか?     

7. 通常、1 日にどれくらいの自動スクリプトを作成できますか?     

8. 自動テストを実行する際に注意すべき指標は何ですか?     

9. 自動テストを実行する際に注意すべき指標     

10. 自動テストは 100% のカバレッジを達成できますか?     

11. 自動テストを実行する際に、あなたの会社ではどのような問題が発生しますか?     

12. Selenium 駆動のブラウザで使用されるプロトコルは何ですか     

13. Selenium ツールにはどのようなコンポーネントが含まれていますか?     

14. Selenium で Web ページ要素を見つける方法はいくつかあります     

15. 要素の xpath 式をどのように記述するか     

16. Webdriver は一般的なブラウザー ステートメントを開始します     

17. ページ上に要素が表示されているかどうかの判断方法     

18. ドロップダウン リストでのドロップダウン オプションの選択方法     

19. Selenium はポップアップ ウィンドウをどのように処理しますか?     

20. Selenium は Windows ポップアップを処理できますか?     

21. Selenium での一般的な待機時間はどれくらいですか?     

22. 一般的な自動テスト フレームワークは何ですか?     

23. ポムとは     

24. Selenium の hidden または display = none 要素が見つかるかどうか     

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

26. Selenium スクリプトの実行速度を向上させる方法     

27. ユースケースは運用中に不安定になることが多い、つまり今回通っても次は通らない ユースケースの安定性を高めるには?

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

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

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

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

32. ページ上で動的に読み込まれる要素を見つける方法     

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

34. リンクをクリックした後、Selenium はページがロードされるまで自動的に待機しますか?     

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

36. ページオブジェクトのデザインパターンとは何ですか?     

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

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

39. 自動テストソリューションを選択する場合、Java、js、python、または Ruby のどの言語を選択しますか     

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

41. ページオブジェクトデザインモードでページジャンプを実現する方法     

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

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

44. Webdriver はインターフェイスのテストに使用できますか?     

45. 社内で使用していたテストシステム(B/Sアーキテクチャ)が突然アクセスできなくなり、トラブルシューティングと復旧が必要になった場合の確認方法を教えてください。     


 

1.社内で自動テストを導入および促進するにはどうすればよいですか?

1. 安定したモジュールを備えた長期プロジェクトを選択する
2. プロジェクトチームは自動化ツールの調査・選定とデモ事例の打ち合わせを行い、主にSeleniumとロボットフレームワークのデモを行いました。
親切。
3. 自動テスト フレームワークを構築し、プロジェクトに自動化を段階的に実装します。
4. プロジェクトの自動化プロセスとフレームワークを文書化する
5. 社内の他のプロジェクト チームにアプリケーションを宣伝する

2.自動テスト ケースを作成するにはどうすればよいですか?

自動テストは主に回帰テストに使用されるため、自動化されたユースケースは、インターフェーステストであろうとビジネステストであろうと、私たちが作成した機能的ユースケースから来ています。
使用例を試してみました。したがって、元のユースケースをフィルタリングして、自動テストが必要なものを選択しますが、この実装プロセスでは、
これはステップバイステップであり、自動化されたユースケースは元のユースケースに基づいて設計される必要があり、たとえば、ニックネームの変更などの機能は自動化されたユースケースに実装される必要があります。
各変更は前回とは異なります。そうでないと、変更が正しいかどうかを検証できません。このようなデザインを追加した後、スクリプトに従います
自動動作のプロセスを実現し、結果判断、つまりアサーションを実現

3.自動テストでは多くのバグが見つかりますか?

あまりない
では、自動テストの価値は何でしょうか ? それが誤った要件ではないことを証明するにはどうすればよいでしょうか ?
1. 自動テストは、バグの発見に比べて、古い機能をバグのない状態に保つのに優れています。
2. 自動テストを導入すると、大量の退屈な回帰テスト作業が置き換えられ、ビジネス テスターが解放され、ビジネス テストが可能になります。
人々は複雑なビジネス機能モジュールに注目する
3. 一般に、比較的安定した機能は自動化に適しています。
4. 機能の自動化では可能な限りインターフェイスを使用し、承認の自動化ではエンドツーエンドを使用します
5.回帰テストの効率と頻度の向上
....

4.前の会社では自動テストにどのようなフレームワークを使用していましたか?

次のうち、自分が得意なことを 1 つ挙げてください。
1.pytest+リクエスト+魅力
2.python+selenium+pytest+allure
3.ロボットフレームワーク+Selenium2ライブラリ

5.継続的インテグレーションとは何ですか? 何に使われますか

CI 継続的 インテグレーション は主に、ビルド > 単体テストを含む開発の範囲内であり、主に新しいコードの統合時に発生する問題に対応します。
(別名:「統合地獄」)。
主に Git テクノロジーやコード管理に関連する
最新のアプリケーション開発の目標は、複数の開発者が同じアプリケーションの異なる機能に同時に取り組むことです。ただし、会社がその日のスケジュールを設定した場合、
すべてのブランチのソース コードを 1 日以内にマージする (「マージ 1 日」と呼ばれる) と、最終的には退屈で時間のかかる手動作業になる可能性があります。
仕上げる。これは、独立して作業している開発者がアプリに変更を加えると、他の開発者が同時に変更を加えている可能性があるためです。
競合を変更します。各開発者がチームに任せるのではなく、独自のローカル統合開発環境 (IDE) をカスタマイズしたらどうなるでしょうか。
クラウドベースの IDE では問題がさらに悪化します。
継続的インテグレーション (CI) は、開発者がより頻繁に (場合によっては毎日) コード変更を共有ブランチまたは「マスター」にマージするのに役立ちます
開発者がアプリケーションに加えた変更がマージされると、システムは自動的にアプリケーションを構築し、さまざまなレベルの自動実行を実行します。
自動テスト (通常は単体テストと統合テスト) は、これらの変更を検証し、これらの変更によってアプリケーションが中断されないことを確認するために使用されます。これ
これは、テスト内容がクラスや関数からアプリケーション全体を構成するさまざまなモジュールに至るまですべてをカバーすることを意味します。自動テストで新しいコードと既存のコードが発見された場合
コード間に競合が存在しますが、CI を使用すると、それらのバグを迅速に修正することが容易になります。
CD の 継続的デリバリーには 、開発、テスト、運用および保守の協力が含まれます。これには、ビルド > テスト環境の展開 > テストが含まれます (自動運用環境は含まれません)。
展開)
CI の構築と単体テストおよび統合テストの自動化プロセスが完了すると、継続的デリバリーによって検証されたコードがリポジトリに自動的にリリースされます。
効率的な継続的デリバリー プロセスを実現するには、CI が開発パイプラインに組み込まれていることを確認することが重要です。継続的デリバリーの目標は、
コードベースを実稼働環境にデプロイします。
継続的デリバリーでは、コード変更のマージから運用準備が整ったビルドの配信までの各フェーズに、テストの自動化とコード生成が含まれます。
コードリリースの自動化。プロセスの最後に、運用チームはアプリケーションを実稼働環境に迅速かつ簡単にデプロイできます。
この段階はインターフェースの自動テストに関連付ける必要があります\ui

UIの自動化

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

1. time.sleep(2) などのスレッド待機(強制待機):スレッドを 2 秒間強制的にスリープさせ、2 秒後に次のコードを実行します。いくつかの提案
使用。
2.imlicitlyWait (暗黙的待機) は、要素が見つかるかタイムアウトになるまで、指定された時間範囲内で要素の検索を続けます。
性的設定はいつでも変更でき、検索要素に対してのみ有効になります。
3.WebDriverWait (明示的待機) は通常、要素のロードを待機するためにカスタマイズされた関数コードです。
成功した場合は、後続のコードの実行を続行します。このコードは、JS ポップアップ ボックス、iframe、新しいウィンドウなどに実装できます。

2. Selenium*における位置決め方法

id: id に基づいて要素を取得し、単一の要素を返します。id 値は通常一意です。
name: 要素の name 属性に基づいて配置します。
tagName: 要素のタグ名に基づいて配置します。
className: 要素のスタイル クラス値に基づいた配置。
linkText: ハイパーリンクのテキスト値に基づいて配置します。
PartialLinkText: ハイパーリンクの部分テキスト値に基づいて配置します。
cssSelector: CSS セレクターの位置;
xpath: 要素のパスで検索します。
最も高い優先度: ID
2 番目の優先順位: 名前
再度優先順位を付ける: CSS セレクター
再度優先順位を付ける: Xpath

3. xpathcss の位置決めはどちらも比較的強力ですが両者の違いは何ですか?

①CSS ロケーターは、CSS が HTML と連携して動作し、実装される原理がオブジェクトの一致の原理であるため、XPath ロケーターよりも高速です。
xpath は xml で動作し、実装される原理はトラバーサルの原理であるため、設計の点では css の方がパフォーマンスが優れています。
②CSSはクラス属性の一部と直接一致することができますが、Xpathはクラスの通常の属性と一致します。
③xpath は祖先要素と一致しますが、css は一致できません
④兄弟要素の検索 CSSでは後ろの要素(弟)のみ検索できますが、前方(兄)の検索はできません。

4.作成したテスト スクリプトは別のブラウザで実行できますか?

もちろん、私が書いたユースケースは、IE、Firefox、Google ブラウザーで実行できます。実装の考え方は、メソッドをカプセル化し、それを分割することです。
ブラウザ文字列を渡さないでください。IE を渡す場合は、IE を使用します。FireFox を渡す場合は、FireFox を使用します。Chrome を渡す場合は、
Chrome ブラウザを使用するだけで、どのブラウザを使用するかは、ini 設定ファイル全体で設定できます。なお、ブラウザごとに
ブラウザによって使用されるドライバーが異なります。

5.自動化プロセス中に問題が発生しましたか? 例えば

この質問は、自動化であっても、他の仕事であっても尋ねられるでしょう。主に、質問したことを推測するために、問題をどのように解決したかを知りたいのです
問題分析と解決能力。もちろん、主に次のような問題や課題が発生します。 UI の頻繁な変更とページ オブジェクトの頻繁な変更
テスト ケース内のコードは、要素が表示されない、要素が見つからないなどのエラーを報告および処理します。テスト スクリプトは再利用され、可能な限り多くのコードが繰り返されます。
ck エディター、動的テーブルなどのいくつかの新しいフレームワークによって生成されたページ要素の位置の問題。

6. POモードとは何ですか? なぜそれを使用する必要があるのですか?

POとはPage Object patternの略で、ページをオブジェクトやページの要素として扱うことを意味するデザイン思想です。
要素間の操作方法は、ページ オブジェクトの属性と動作です。PO モードでは、通常、次の 3 層のアーキテクチャが使用されます。
BasePage、PO ページ オブジェクト レイヤー、TestCase テスト ケース レイヤー。
単純な Selenium 自動テストの場合、私たちがしなければならないことは、ページ要素を見つけて、これらの要素に値を渡すことだけです。しかし、もし
同じページ要素を同時に呼び出すスクリプトが 10 個あります。この要素が変更されると、10 個のスクリプトを変更する必要があります。スクリプト付き
コードを学ぶ生徒の数が増えると、作業にかかる時間の複雑さも急速に増加します。現時点では、ページ要素の検索専用のクラスを設計することを検討できます。
値を見つけて渡し、修正します。このようにして、ページ要素が変更されたときに、同時に 10 個のスクリプトを変更するのではなく、1 つのクラスのみを変更する必要があります。
本。
ページオブジェクトは、プロセス指向をオブジェクト指向( ページオブジェクト )に変換し、テストオブジェクト(ボタン、入力)を変換する プログラミングパターンです
フレーム、タイトルなど)と個々のテストステップは、各 Page オブジェクトにカプセル化され、ページ単位で管理されます。
このように、Selenium テスト ページでは、ページ クラスを呼び出すことでページ要素を取得できるため、賢く回避できます。
ID や場所が変更された場合は、テスト ページのコードを変更する必要があります。ページ要素 ID が変更された場合、テスト ページ クラス内のページを変更するだけで済みます。
プロパティ。コードを再利用し、メンテナンスコストを削減し、プログラムの読みやすさと書き込み効率を向上させることができます。
POM によって解決される問題 :
要素のオブジェクトとメソッドをページごとに一元管理します。ページ要素またはプロセスが変更された場合、関連するページ メソッドを変更するだけで済みます。
はい、対応するスクリプトを変更する必要はありません
スクリプトの作成は簡単で、ビジネス ロジックに従ってスクリプトを記述するだけです。ページ オブジェクト モードは、ビジネス ロジックの各ステップを差別化ポイントとして使用します。
ページメソッドはこのページの業務操作を表し、この操作の後続の処理を厳密に制御します。
後のメンテナンスが簡単
PO を作成する前に、次の知識ポイントを習得することをお勧めします。
Seleniumライブラリの基本的な使い方
xpath 構文
pytestまたはunittest
オブジェクト指向におけるクラスと継承
前に述べたように、 PO モードは設計上のアイデアであり、実際のコーディングで実装するにはいくつかの方法があります。実はこちらもおすすめです
全員が自分のプロジェクトの状況に応じて動的にコーディングします。具体的には、一般的な PO モデルには次のようなものがあります。
1) 3 つのレイヤー: オブジェクト ライブラリ レイヤー + ケース レイヤー + ページ レイヤー
2) 4 つの層: オブジェクト ライブラリ層 + ケース層 + ページ層 + パブリック クラス

インターフェースの自動化

1.インターフェイスはどのようにテストしますか?

テストポイント:
①. インターフェーステストの実務経験はありますか?
②. インターフェースのテストプロセスをご存知ですか?
③. インターフェーステストの具体的な手順を理解していますか?
④. インターフェースのテストケース設計についてご存知ですか?
参考回答:
まず、インターフェイスのビジネス機能、入出力パラメーター、インターフェイスに対応するデータ ストレージを理解してから、インターフェイス テスト ケースの設計方法に従ってインターフェイス テストを完了します。
テスト設計、ユースケース設計は、ビジネスシナリオから始まり、パラメータの境界値、形式、組み合わせなどのパラメータの判断を経て、最後にテストケースに基づいて行われます。
コーディングの学生は、インターフェイス テスト ツールを使用してインターフェイス テストを完了し、テスト プロセス中にログとデータをチェックして、インターフェイス テスト結果の正確性を確認します。

2.インターフェイスのドキュメントなしでインターフェイスのテストを行うにはどうすればよいですか?

テストポイント:
インターフェースのテストに精通している
ソフトスキルをテストする
1. インターフェース文書がない場合は、まず開発者とコミュニケーションをとり、次にインターフェース文書を整理する必要があります (もともと開発者が作成したものであり、聴衆を騙すために方法はありません)。
面接官、まず自分で解決したと言ってください)
2. インターフェイス ドキュメントはありません。パケットをキャプチャしてインターフェイスのリクエスト パラメーターを確認し、理解できない場合は開発者と通信できます。

3.インターフェイスのテスト ケースを作成する際の重要なポイントは何ですか?

テストポイント:
インターフェースのテストケース設計
参考回答:
1) 必須フィールド: リクエストパラメータは必須およびオプション
2) 合法性: 合法的および違法なパラメータの入力と出力
3) Boundary: リクエストパラメータの境界値など。
4) 耐障害性:大容量データの処理、頻繁なリクエスト、繰り返しのリクエスト(命令など)、異常なネットワークなど。
5) 応答データの検証: アサーションとデータ抽出は次のレベルのインターフェイスに渡されます...
6) 論理検証: 要求された 2 つのインターフェイスに厳密な順序がある場合は、逆の順序をテストする必要があります。
7) パフォーマンス: インターフェイスの同時テストをシミュレートし、徐々に圧力を上げ、ボトルネック ポイントを分析します。
8) セキュリティ: SQL インジェクション、XSS、機密情報、ビジネス ロジック (特定の重要な手順のスキップなど) などの悪意のある文字リクエストを構築します。
手順、検証なしの機密データの操作)

4.インターフェーステストにおける暗号化パラメータの扱い方

テストポイント:
①. 暗号化と復号化の方法について詳しく知っていますか?
②. 暗号化パラメータの処理能力の有無
③.実際に適用されているかどうか
参考回答:
まず、パラメータの暗号化と復号化の方法を理解します。一般的なものには、md5、aes、rsa などが含まれます。aes の場合は、開発者に秘密鍵を問い合わせる必要があります。
rsa は、開発者から公開キーと秘密キーを見つけて、インターフェイス テスト ツールの暗号化および復号化コードを参照して、パラメーターの暗号化および復号化プロセスを実装する必要があります。
データの暗号化と復号化の処理。企業がカスタム暗号化アルゴリズムを使用している場合は、暗号化および復号化するコードを見つけて開発し、テスト ツールで実行する必要があります。
使用。

5.インターフェースアプリケーションに関する質問

質問 1: インターフェイス テスト ケースを設計するときは、製品、販売者、店舗などの多くの変更を含む電子商取引システムが関係します。
これらのデータの変更には多くのパラメータが必要になります。商品名、商品のサイズ、商品の色など。それはデザイン上
インターフェイスを「変更」する場合、どのパラメータを渡すかをどのように決定すればよいですか? 変更したいパラメータのみを渡す必要があるのでしょうか、それともすべてのパラメータを渡す必要があるのでしょうか?

5.同期と非同期の違い

テストポイント:
①. 企業におけるインターフェース通信メカニズムの理解を調査する
②. 同期通信と非同期通信の原理を調べる
参考回答:
同期と非同期は通信方式です
同期: 操作を実行するときは、その処理が完了するまで待ってから、次の操作に進む必要があります。
非同期: 操作を実行するときに、戻りを待つ必要がなく、次の操作に進むことができます。通常、メッセージ ミドルウェアが必要です。
例:
注文インターフェイスでは、在庫判断を行うために在庫インターフェイスを呼び出す必要があるため、次のステップに進む前に在庫インターフェイスからデータが返されるのを待つ必要があります。
それは同期です。
注文インターフェイスでは、注文が正常に行われた後に電子メール通知インターフェイスを呼び出す必要があります。インターフェイスが成功を返すのを待つ必要はなく、直接次のステップに進むことができます。
これは非同期です

6. pytestケースを組み立てる方法

テストポイント:
pytest を使用してケースを整理する機能を調べる
参考回答:
1. デフォルトでは、test_.py または **test.py という名前のファイル名が、ファイル内の test で始まるメソッドまたは関数を確認、検索して実行するために使用されます。
わかりました
2. カスタム マーカー (ラベル) を使用できます。たとえば、pytest が実行されている場合、次のようなこのマーカーを持つテスト ケースのみが実行されます。
@pytest.mark.P0
3. pytest.ini 設定ファイルでは、pytest を実行する場合の処理​​を行うことができます。たとえば、特定のディレクトリでユースケースを実行したい場合は、
スクリプトファイルなど

7. pytestのフック関数について話しましょう

テストポイント:
pytestの基本
参考回答:
よく使用されるいくつかのフック:
pytest_runtest_makereport(item,call): 失敗のスクリーンショットなどのテストレポートの処理
pytest_collection_modifyitems(items): ケース収集後に呼び出され、項目または他の関数の順序をカスタマイズできます。
pytest_addoption(parser): ブラウザー名の指定など、カスタム パラメーターをコマンド ラインに追加します。
 

er2

 

1.アピウムの仕組み

この質問は、appium の動作原理を調べます。
アピウムの動作原理は多くの側面から説明する必要があります。
アンドロイド:

1.1 appuimはuiautomator2の原理に基づいています

Appium サービスが開始されると、デフォルトで http サービスがポート 4723 に作成され、スクリプトはサービス アドレス http://xxxx:4723/wd/hub を渡します。
アピウムと通信する
初期化スクリプトと appium を接続するプロセス中に、appium は補助アプリ uiautomator2.server.apk をインストールし、
uiauTomator2.server.test.apk を実行し、ポート転送 adb forward tcp 8200 tcp 6790 を実行すると、インストール後に携帯電話に表示されます。
uiauTomator2 のサーバーを起動します。このサーバーが起動すると、携帯電話上に netty サーバーが作成されます。ポートは 6790 です。
Appium は、携帯電話上の uiauTomator2 サーバーの 6790 ポートと通信し、4723 ポートから受信したスクリプト命令を渡します。
携帯電話のポート 8200 をポート 6790 に転送します。

1.2 Appiumはuiautomator1の原理に基づいています

Appium サービスが開始されると、デフォルトで http サービスがポート 4723 に作成され、スクリプトはサービス アドレス http://xxxx:4723/wd/hub を渡します。
アピウムと通信する
初期化スクリプトと appium を接続するプロセス中に、appium は AppiumBootstrap.jar を携帯電話に送信し、ポート転送を実行します。
adb forward tcp 4724 tcp 4724. インストール後、携帯電話上で AppiumBootstrap.jar が起動されます 起動後、携帯電話上に AppiumBootstrap.jar が作成されます。
ソケット サービスを構築します。ポートは 4724 です。appium は携帯電話のソケット サービスの 4724 ポートと通信し、ポートを 4723 から 4723 に変更します。
受信したスクリプト命令は、ポート 4724 を介して携帯電話のポート 4724 に転送されます。

1.3 Appiumはchromedriverの原理に基づいており、 H5をテストするときに使用されます

Appium サービスが開始されると、デフォルトで http サービスがポート 4723 に作成され、スクリプトはサービス アドレス http://xxxx:4723/wd/hub を渡します。
アピウムと通信する
初期化スクリプトと appium を接続するプロセス中に、chromedriver が開始されて http サービスが作成されます。ポートは 8000、appium
ポート 8000 を介して chromedriver サービスと通信し、chromedriver サービスは appium コマンドを受信した後に携帯電話を操作します。
操作が完了したら、appium に戻り、appium はスクリプトに戻ります。

1.4 IOS携帯電話:

Appium サービスが開始されると、デフォルトで http サービスがポート 4723 に作成され、スクリプトはサービス アドレス http://xxxx:4723/wd/hub を渡します。
アピウムと通信する
スクリプトと appium 接続を初期化するプロセスで、webdriveragent アプリがコンパイルされて携帯電話にインストールされ、携帯電話で wda が開始されます。
8100 に基づいて http サービスを作成し、appuim はポート 4723 を介してスクリプトによって渡された命令を受け取り、appium はローカル ポートを通過します。
ポートの 8100 ポートは、受信したコマンドを携帯電話の 8100 wda サービスに転送します。wda サービスはコマンドを受信し、テスト対象のアプリを操作します。操作の完了後、
完了後に appium 操作の結果に戻り、appium は結果をスクリプトに返します

2.インターフェイスの応答形式はjsonですが、コードを使用してこれを解析するにはどうすればよいですか? そうでない場合

サードパーティのライブラリを使用して解析するにはどうすればよいですか?

Code Classmate には、fastjson、gson など、Java 自動テストで json を解析するためのサードパーティ パッケージが多数あります。サードパーティを使用しない場合は、
Java のネイティブ文字列処理メソッドを使用する必要があります。たとえば、json 文字列は次のようになります。
{"name":"shamo","age":18,"job":"tester"}は、文字列の分割や置換などにより逆アセンブルしていずれかの文字を取得できます。
セグメントに対応する値

3. Testng のリスナーの使い方は? TestNgのデータドリブンなリターン

とは?

自動化における Testng のリスナーの使用は、主に失敗のスクリーンショットと失敗の再試行に焦点を当てています。
失敗した再試行には、IRetryAnalyzer と IAnnotationTransformer の 2 つのインターフェイスを実装する必要があります
失敗したスクリーンショットには ITestListener を実装する必要がある
実装後、testng 構成ファイルに listen タグを追加する必要があります。
Testng のデータドリブンの戻り結果は 2 次元配列であるため、データドリブンを実行する場合、データが Excel または XML に存在するかどうかは関係ありません。
データベースなどの記憶媒体では、最終的には 2 次元配列に変換する必要があります。

4.自動化プロジェクトの全体的なフレームワークの構造を簡単に紹介します

自動テスト フレームワークは、基本メソッドのカプセル化、カスタム例外のカプセル化、ツール クラスのカプセル化、要素管理のカプセル化、ページ オブジェクト パターンのカプセル化をカバーします。
パッケージ化、ログパッケージ化、データ管理パッケージ化、失敗リトライパッケージ化、ブラウザ/携帯電話対応パッケージ化、データベース操作パッケージ化、テストケース管理
包装、検査報告書など

5.自動化における明示的な待機と暗黙的な待機の類似点と相違点は何ですか?

1. 一定の時間範囲内で要素を検索し続け、要素が見つかるとすぐに検索を終了し、コードの実行を継続するインテリジェント待機も同様です。
タイムアウトになるまで検出されます。
2. 違いは、暗黙的な待機はグローバル設定であり、いつでも変更でき、変更後は後続の findxxx メソッドに有効になることです。
クリック、入力、スライドなどの操作には機能しません。
明示的な待機は、単一の要素またはグループに対してのみ有効であり、検索だけでなく、箇条書きボックスやフレームなどの特殊なアイテムに対しても有効です。
特殊な場合に機能し、要素の特定の属性に対してカスタム判断を行うこともできます。

6. Testngにはどのような注釈がありますか?

Testng 単体テスト フレームワークには、BeforeSuit/AfterSuit、BeforeTest/AfterTest という 9 つの基本的なアノテーションがあります。
BeforeClass/AfterClass、BeforeMethod/AfterMethod、Test、より特別なアノテーションが追加されます。
BeforeMethod/AfterMethod、その意味は、各 @Test アノテーションが実行される前後に実行されることです。

7. Jmeterツールはインターフェイス間をどのように関連付けますか? 簡単に説明します。

インターフェイスの関連付けとは、インターフェイスが別のインターフェイスの戻り値をパラメータとして使用することを意味し、jmeter ではこれを関連付けと呼びます。
関連付けを実装するにはさまざまな方法があります。
正規表現抽出機能を使用して、前のリクエストの応答結果から特定の値を取得し、変数に格納して、次のインターフェイスを使用します。
変数を使った参照
json エクストラクターを使用して、前のリクエストの応答結果から特定の値を取得し、それを変数に格納し、その変数を次のインターフェイスで使用します。
参考にする
Beanshell ポストプロセッサを使用して応答結果を解析し、変数に格納し、その変数を次のインターフェイスでの参照に使用します。
スレッド間のグループ関連付けには、関連付けフィールドをグローバル属性として設定する必要があります。

8.あなたの会社のビジネスに占める自動化と手作業の割合はどれくらいですか? それぞれ使用される

どのようなビジネスを行っていますか?

まず、各企業の自動化と手動作業の割合は、自動テストへの投資に依存します。この質問に答えるには、適切なデータを準備することが推奨されます。たとえば、当社の場合
の機能テスト
合計1,000のユースケースがあり、実装する自動化ユースケース300件を分析し、自動化の割合を決定します。それで、どのテストが
ユースケースは次のとおりです
自動化、安定したモジュールのユースケース、および機能優先度の高いユースケースに使用されます。手動テストは一般的に新機能テスト業務、自動化に使用されます。
一般的に行うために使用される
古い機能を使用してビジネスに戻る

9.自動テストの安定性を確保する方法

自動テストの安定性は主に 2 つの側面に反映されます。1 つは要素の配置の問題、もう 1 つはユース ケース間の依存関係の問題です。要素が決まる
ちょっとした質問ができます
これをできる限り回避するには、スマート待機を使用します。ユース ケースの依存関係により、ユース ケース間の関係が切り離され、各ユース ケースが共通のページから開始されるようになります。
面と向かって
OK、ホームページなどです。これには、各ユースケースが実行後にホームページに戻るように、テスト フレームワークでの後処理が必要です。

10.Cookieセッションの違いは何ですか?

セッション トラッキングは、ユーザーのセッション全体を追跡するために Web プログラムで一般的に使用されるテクノロジです。
Cookie はクライアント側で情報を記録することでユーザーの身元を特定し、Session はサーバー側で情報を記録することでユーザーの身元を特定します。
違い:
1. データの保存場所が異なります。
Cookie データはクライアントのブラウザに保存され、セッション データはサーバーに保存されます。
2. さまざまなレベルのセキュリティ:
Cookie はあまり安全ではありません。ローカルに保存されている Cookie を他人が分析して Cookie を騙す可能性があるため、セキュリティ上の理由から使用する必要があります。
セッション。
3. さまざまなパフォーマンス使用レベル:
セッションはサーバー上に一定期間保存されます。アクセスが増加するとサーバーのパフォーマンスが低下するため、サーバーの負荷を軽減することを検討してください。
パフォーマンスを向上させるために、Cookie を使用する必要があります。
4. データストレージのサイズは異なります。
1 つの Cookie によって保存されるデータは 4K を超えることはできません。多くのブラウザでは、セッションが保存される間、サイトで保存できる Cookie は最大 20 個に制限されています。
これはサーバー側に保存され、ブラウザーには制限がありません。

11.自動テストでユースケースが依存するデータを構築する方法

インターフェースの自動化であっても、UIの自動化であっても、自動化のケースがデータ構造にどのように依存するかという問題があり、それは3つの側面から考えることができます。
考えてみましょう、最初のものは
インターフェイスを使用して、テスト前に必要なデータを構築します。2 番目は、初期化 SQL を使用してデータを初期化しますが、テーブル構造が複雑な場合は、
単語、SQLエディタ
コードを記述するのも比較的作業負荷が大きいため、3 番目の方法は、事前にデータ一式を用意し、そのデータに対応するデータベースをバックアップする方法です。
それ以降は毎回
テストを実行する前に、現在のデータベースのデータをバックアップし、以前のテスト データをインポートしてテストを実行し、テスト実行後に元のデータを復元します。
によると

12.マルチブラウザまたはマルチ携帯電話テストの実装方法

Web 側の自動化では通常、Selenium のグリッド メソッドを使用してマルチブラウザ テストを実装します。また、Testng のマルチスレッド構成も使用できます。
達成するための方法
さまざまなブラウザのローカル テスト。appium 自体も、モバイル端末上の複数のデバイスのテストをサポートしています。1 つのデバイスが 1 つのブラウザに対応している必要があることに注意してください。
応用
サービスは、グリッド メソッドまたはローカル マルチデバイスを使用してテストすることもできます。または、それらのすべては jenkins のマルチノード メソッドを使用して実装されます。

13.インターフェイスのテスト中にインターフェイスのリダイレクトが発生したかどうかをテストするにはどうすればよいですか?

まず、インターフェイスのテスト方法によって処理方法が異なりますが、jmeter を使用すると特別な処理は必要なく、デフォルトでは jmeter が自動的にリセットを処理します。
からのインターフェースへ
リダイレクトされたインターフェイス アドレスへのアクセスを開始し、結果を返します。コード フレームワークが使用されている場合は、特別な処理が必要です。
インターフェースの応答
ヘッダーの場所フィールドに対応するインターフェイス アドレスによって、このアドレスへのリクエストが開始されます。

14.インターフェースはサードパーティのインターフェースに依存していますが、サードパーティのインターフェースに問題があります。

管理?

この場合、モック メソッドを使用してサードパーティ インターフェイスの戻りをシミュレートしますが、この種のモックには通常、開発構成が必要であることに注意してください。
一緒に、会社のインターフェイス呼び出しをモックされたインターフェイス サービスに向けます。

15. RESTful 標準インターフェースにはどのような種類のリクエスト メソッドがあり、それらは何を表しますか

それはどういう意味ですか

RESTful仕様のインターフェースでは通常、URLがリソースを表し、リソースの操作はhttpリクエストメソッドを通じて実現されます。
ゲットもあるし、
post、put、deleteの4つのメソッドがあり、getはデータの取得、postは新規データの追加、putはデータの変更、deleteは削除を意味します。
データの削除

16. Webオートメーションのどのシナリオで特別な処理が必要ですか?

1. iframe 要素、操作対象の要素が iframe 内にある場合、操作を実行する前にドライバーを iframe に切り替える必要があります。切り替え方法は次のとおりです。
4 つ目は、ID、名前、インデックス、iframe 要素オブジェクト、および複数の iframe 間で切り替えるときにさまざまな変換が必要な場合です。
2. 新しいウィンドウが開きます 操作対象の要素が新しいウィンドウで開かれたページ上にある場合は、まずドライバーを新しいウィンドウに切り替える必要があります。
操作可能
3. 時間コントロール。通常、時間コントロールは選択のみで入力はできません。その場合、js を使用して時間コントロールの読み取り専用プロパティを変更してから、
もう一度入力するか、js を使用して時間コントロールの値を直接変更します。
4. 現在の視野にない要素を表示するにはスクロールする必要があります。js を使用してスクロールできますが、インターフェイスに複数のスクロール バー js が存在する場合があります。
は無効になります。まずスクロール バー領域にカーソルを置き、次にキーボードの上下左右のキーをシミュレートして操作する必要があります。

17.アプリ内のジェスチャーロック解除アイコンが見つからない場合の対処方法

通常であれば、携帯電話でロックを解除した大きな要素を見つけることができるので、最初に大きな要素を見つけてから、その要素の始点座標と長さを取得できます。
そして広く、そして
コードクラスメート座標は、ジェスチャのロック解除に必要な 9 点の座標を計算し、TouchAction の press.moveTo.moveTo メソッドを呼び出して実装します。
ジェスチャーによるロック解除
 

セレン

1. セレンに元素が存在するかどうかを確認するにはどうすればよいですか?     

isElementPresent

2. 自動テストとは何ですか?また自動テストの利点は何ですか?     

ツールやスクリプトによる手動テストの実行プロセスを置き換えるテストは自動テストと呼ばれます。自動テストの利点: 1. 回帰テストのコストの削減 2. 互換性テストのコストの削減 3. テストのフィードバック速度の向上 4. テスト カバレッジの向上 5. テスト エンジニアに任せるより有意義なテストを実行する

3. どのようなプロジェクトが自動テストに適しており、どのようなプロジェクトが自動テストに適していませんか?     

適したプロジェクト: 1. プロジェクト サイクルが長く、比較的安定している 2. 頻繁なスモーク テストが必要である 3. 頻繁な回帰テストが必要である 4. 大量のデータを使用したデータ駆動型テストが必要である 適さないプロジェクト: 1. プロジェクト サイクルが短いユース ケースでは、 2. テスト対象のプロジェクトが不安定で、変更が多すぎます。

4. あなたの会社の自動化作業の主なプロセスは何ですか?     

1. 適切なテスト ツールの選択 2. 自動テストの対象範囲の定義 3. テスト計画の作成 4. 自動テスト環境の構築 5. スクリプトの開発 6. テストの実行 7. テスト スクリプトのメンテナンス

5. 自動テスト計画を策定する際に一般的に考慮すべき点は何ですか?     

1. 適切なテスト ツールを選択するか、現在のツールが新しいプロジェクトに適しているかどうかを分析します。 2. 適切な自動テスト フレームワークを選択します。 3. 自動テストの範囲と非自動テストの範囲を決定します。 4.テスト環境 5. 大まかなスクリプト開発スケジュールを作成します。 6. スモーク テストの頻度、回帰テストの時点と頻度など、スクリプト実行に関するいくつかの戦略を作成します。 7. スクリプトなどの自動テストの出力を定義します。 、テストデータ、発見された欠陥、テストレポートなど。

6. 自動化スクリプトを作成する際の仕様は何ですか?     

1. 統一された命名規則 (ユースケース名、メソッド名など) 2. 適切なスクリプト コメント 3. コード仕様に従い、適切なインデントを使用する 4. 例外を処理する

7. 通常、1 日にどれくらいの自動スクリプトを作成できますか?     

これはテスト ケース シナリオの複雑さによって異なります。通常、1 日に作成できるテスト ケースは 2 ~ 5 個ですが、複雑な場合は 1 日に 1 つしか作成できません。

8. 自動テストを実行する際に注意すべき指標は何ですか?     

1. 自動テスト ケースのカバレッジ = 自動テスト ケースの数 / 使用されたユース ケースの合計数 比率が高いほど、テスト フィードバックが速くなり、コスト削減が大きくなります 2. 時間の節約 = 手動テストに費やした時間 - 時間自動テストに費やされた時間 3. 自動テストへの投資 = スクリプト開発への投資 + スクリプト保守への投資 + ツールの価格 4. 自動テストによって発見された欠陥の数 各期間中に自動テストによって発見された欠陥の数とテスト漏れの数回帰テストは自動化されたユースケースの有効性を反映します。

9. 自動テストを実行する際に注意すべき指標     

自動テストの入出力比: ROI = (手動テストのコスト - 自動テストのコスト) / 自動テストのコスト ROI がマイナスの場合は、自動テストのコストが回収されていないことを意味し、ROI がプラスの場合は、自動テストのコストが回収されていないことを意味します自動テストのコストが回収され、値が より大きいことを意味します。大きいほど、より良い利益が得られます。

10. 自動テストは 100% のカバレッジを達成できますか?     

これが難しいのは、一部のユース ケース シナリオは自動化できないためです。使いやすさや使いやすさを検証する一部のユース ケースは自動化に適していません。一部の限界的なユース ケースはほとんど繰り返されず、入出力比の観点から自動化に適していません。

11. 自動テストを実行する際に、あなたの会社ではどのような問題が発生しますか?     

1. プロジェクトのプロセスが標準化されておらず、プロジェクトの頻繁な変更により、自動化されたユースケースのメンテナンスコストが高くなる 解決策: ユーザーのニーズを深く理解し、開発プロセスを標準化し、自動化されたユースケースを使用して、すでに安定した機能を最初にカバーします。2. 自動化への期待が大きすぎる 自動化も徐々に改善していくプロセスであり、手作業を一度に完全に置き換えることはできない 3. 自動化エンジニアの中には技術力が低い人もいる プログラミングスキルの向上、使用能力の向上自動化ツールを使用し、新しい人材をトレーニングします。

12. Selenium 駆動のブラウザで使用されるプロトコルは何ですか     

jsonwireプロトコル

13. Selenium ツールにはどのようなコンポーネントが含まれていますか?     

Selenium IDE、WebDriver、Selenium GRID

14. Selenium で Web ページ要素を見つける方法はいくつかあります     

ID は 8 つあります。 NAME CLASSNAME LINKTEXT PARTIALLINKTEXT TAGNAME XPATH CSS SELECTOR

15. 要素の xpath 式をどのように記述するか     

一般に、Xpath 式を自分で作成し、try xpath ガジェットを使用して xpath 式が正しいかどうかを確認します。また、Google や Firefox を使用して F12 キーを押してコピーを右クリックすることもできます。

16. Webdriver は一般的なブラウザー ステートメントを開始します     

ドライバー = webdriver.FirefoxFDriver() ドライバー = webdriver.ChromeDriver() ドライバー = webdriver.internetExplorerDriver()

17. ページ上に要素が表示されているかどうかの判断方法     

webelement クラスの isdisplayed() メソッド

18. ドロップダウン リストでのドロップダウン オプションの選択方法     

//selectByVissbleTextを選択

19. Selenium はポップアップ ウィンドウをどのように処理しますか?     

driver.switchTo().alert() を使用する必要があります。alert.accpt() は、ポップアップ ウィンドウの [OK] ボタンをクリックするのと同等です。alert.dismiss() は、ポップアップ ウィンドウの [キャンセル] ボタンをクリックするのと同等です。

20. Selenium は Windows ポップアップを処理できますか?     

Selenium 自体は Windows ポップアップ ウィンドウを処理できませんが、Selenium は Autolt ガジェットを使用して Windows ポップアップ ウィンドウの操作を完了できます。

21. Selenium での一般的な待機時間はどれくらいですか?     

強制固定待機 グローバル暗黙待機 特定の要素またはステータスの表示を待機 driver.quit() と driver.close() の違いを待機 driver.close() は現在のユーザーが操作しているページのみを閉じる driver.quit () ブラウザ全体とすべてのページを閉じます

22. 一般的な自動テスト フレームワークは何ですか?     

リニアスクリプトフレームワーク、データドリブンフレームワーク、キーワードドリブンフレームワーク、ハイブリッドフレームワークなど。

23. ポムとは     

コードを再利用できるため、重複コードの記述が減り、メンテナンスコストが削減できるというメリットがあり、ページUIが変更された場合でも変更は1回だけで済むデザインパターンです。

24. Selenium の hidden または display = none 要素が見つかるかどうか     

できない

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

     - 要素インテリジェント待機時間 driver.implicitly_wait(30) を追加 - ID、名前、クラス、X パス、CSS セレクターをさまざまな方法で配置するメソッドを試してください。最初のメソッドが失敗した場合は、自動的に 2 番目のメソッドを試すことができます - Selenium は、要素の成功率は 要素の配置には、もちろんさまざまな配置方法があり、適切な配置方法があるはずです。しかし、自動化エンジニアリングの実装プロセスにおいて、高品質な自動テストが保証されるのはテスターだけではありません。開発者は、ページ要素に一意の名前や ID などを追加するなど、開発習慣を標準化する必要があります。これにより、要素の配置の精度が大幅に向上します。もちろん、開発者が開発を標準化していない場合は、要素を配置するときに相対アドレス配置を使用するように努めるべきです。これにより、ページ変更に対する要素の配置の影響を軽減できます。要素が正確に配置されていれば、実行するすべての操作が期待どおりであることを確認できます。

26. Selenium スクリプトの実行速度を向上させる方法     

Selenium スクリプトの実行速度は、ネットワーク速度、操作手順の複雑さ、ページの読み込み速度、スクリプトに設定した待機時間、スクリプトを実行するスレッドの数など、多くの要因の影響を受けます。そのため、一方的に動作速度を追求することはできず、安定性を確保する必要があり、いかに安定して回帰テストを実施できるかが鍵となります。1. 操作手順を削減する テストしたいページを開くのに3~4手順かかる場合、URLから直接開くことで無駄な操作を削減できます。次に、ページの読み込みを中断します。ページに読み込まれるコンテンツが多すぎる場合は、読み込みが遅い理由を確認できます。読み込まれたコンテンツがテストに影響しない場合は、タイムアウトを設定してページの読み込みを中断します。第三に、待機時間を設定する場合、一定時間スリープしたり、特定の要素の出現を検出して待機を中断して速度を上げることができます。4 番目に、マルチスレッドを実装するように testNG を構成します。テスト ケースを作成するときは、必ず疎結合を実現し、サーバーで許可されている場合は、実行速度を向上させるためにマルチスレッドの実行をセットアップしてください。

27. ユースケースは運用中に不安定になることが多い、つまり今回通っても次は通らない ユースケースの安定性を高めるには?

- time.sleep() - driver.implicitly_wait(30) - try を使用して例外をキャッチして処理する - この時点で、不安定の原因を分析し、対象を絞った方法で問題を解決する必要があります。主な側面は次のとおりです。 1. インターネット速度の問題: Web ページの読み込みが遅く、プログラムの実行時に操作対象の要素が表示されないことがあります。この状況は比較的よくあり、一度実行するとネットワーク速度が良好であれば通過しますが、再度実行するとページが開かないため通過しません。安定性を向上させるには、実行時間を犠牲にし、検出に失敗しやすい要素の前に待ち時間を追加し、操作対象の要素が出現するのを待ってから次の操作を実行するしかありません。第 2 に、Selenium の理由: Selenium 1.0 と 2.0 の間にはまだ違いがあり、2.0 で実行すると一部の機能が有効になる場合もあれば、無効になる場合もあります。これは、mouseover() 関数の場合に当てはまります。そのような関数の使用を避ける必要があります。3 番目に、マルチスレッドの場合、テスト ケースは相互に影響します。マルチスレッドは高速に動作しますが、ユース ケース間の結合が適切に設計されていない場合、ユース ケース A がユース ケース B よりも前に実行された場合、ユース ケース B に影響が生じますが、その逆の場合は問題ありません。この場合、自動テスト プロジェクトがマルチスレッドになる場合は、マルチスレッドの実行順序が制御されないため、事前にテスト ケースの結合を緩め、無関係になるようにする必要があります。

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

自動テストケースの実行戦略は、自動テストの目的に応じて異なりますが、通常は次のような戦略があります: 1. 自動テストケースは監視のために使用されます。そのために、自動テストケースを定期的に実行するように設定します。 5 分ごとまたは 1 時間ごとに、Jenkins でスケジュールされたタスクを作成するだけです。2 番目に、返さなければならないユースケースです。BVT テスト ケースなどの一部のテスト ケースでは、会社の製品に変更を加える前に回帰を実行する必要があります。次に、実行をトリガーするテスト ケースを設定し、自動テスト タスクを Jenkins 上の開発ビルド タスクにバインドします。開発者がシミュレーション環境でコードを作成すると、自動テスト ケースがトリガーされて実行されます。3 番目は、頻繁に実行する必要のないテスト ケースです。完全なテスト ケースと同様に、常に実行に戻る必要はありませんが、やはり時間はかかりますし、一部の主要な業務以外の部門では、時々実行に戻る必要はありません。このタイプのテスト ケースでは手動実行を使用し、Jenkins でタスクを作成し、実行する必要があるときに手動でビルドします。

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

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

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

- UIの自動化は不要です

-インターフェーステストが必要になります

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

css と xpath のほぼすべての要素を見つけることができます

32. ページ上で動的に読み込まれる要素を見つける方法     

動的要素が表示されるまで動的読み込み要素のイベントをトリガーし、配置します。

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

兄弟、親、子による xpath または css の位置決め

34. リンクをクリックした後、Selenium はページがロードされるまで自動的に待機しますか?     

します

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

http

36. ページオブジェクトのデザインパターンとは何ですか?     

同様の機能を持つ箇所は基本的にコードは同じ インターフェース要素の検索方法を変更 本来のxpath方式をid検索方式に変更 各ユースケーススクリプトの修正が必要 ワークロードは無いが使用例はほとんどありませんが、findElement コードを繰り返すとコードが面倒に感じられます。一部の位置が変更された場合、テスト コード全体で要素の位置を調整する必要があり、後でスクリプトを保守することが困難になります。したがって、ページ オブジェクト モデルを通じて、より堅牢なコードを作成し、重複するテスト コードを削減または排除することができ、それによってコードの可読性が向上し、スクリプトの作業負荷も軽減されます。ページ オブジェクト モデルの実装は、テスト オブジェクトとテスト スクリプトの抽象化を分離することによって実現されます。

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

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

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

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

39. 自動テストソリューションを選択する場合、Java、js、python、または Ruby のどの言語を選択しますか     

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

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

不要

41. ページオブジェクトデザインモードでページジャンプを実現する方法     

入手、クリック

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

- 手動ユースケースからの抽出 - 自動化ユースケースの実行戦略を参照できます

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

-不安定

-信頼性

- メンテナンスが難しい

- コストと利点

44. Webdriver はインターフェイスのテストに使用できますか?     

難しいのでおすすめしません

45. 社内で使用していたテストシステム(B/Sアーキテクチャ)が突然アクセスできなくなり、トラブルシューティングと復旧が必要になった場合の確認方法を教えてください。     

1. ドメイン名を入力しても直接Webサイトにアクセスできない 以前は正常にWebサイトにアクセスできたのに、突然アクセスできなくなりました 1. FTPが正常に動作し、ログインできるかテストします ログインできない場合はスペースに直接問い合わせてくださいスペースプロバイダーに問題があることを伝え、直接問い合わせてください。2. スペースで与えられた第 3 レベル ドメイン名で Web サイトにアクセスして Web サイトを開くことができるか (スペースで与えられた第 3 レベル ドメイン名)、アクセスできない場合はスペースの問題と考えられます。3. コンピュータのスタート メニューに「cmd」と入力し、ポップアップ ブラック ボックスに「ドメイン名を ping してください」と入力し、Enter キーを押します。IP が表示されない場合、または IP アドレスがホスト アドレスと一致しない場合は、ドメインが名前解決が正しくありません。これはドメイン名の問題であり、ドメイン名を再分析する必要があります。2. アクセスすると 404 エラーが報告されます (ページが見つかりません)。Webサイトの内容は正常だが、プログラムに問題があるため、プログラムが完全か確認してくださいとの説明です。3. Web サイトにアクセスすると、MySQL サーバー エラーが発生します。これはデータベース リンク エラーです。データベース接続ファイルとデータベースにエラーがあるかどうかを確認してください。4. Webサイトにアクセスすると500エラーが発生します。1. FTP にログインして、異常なファイルや欠落ファイルがないか確認してください (Web サイトが侵入されたことを意味します)。すぐに Web サイトの制作会社に連絡して問題を解決してください。2. スペースおよび FTP プログラムディレクトリに不足ファイルがない場合、またはインストール直後に 500 エラーが発生する場合は、スペースで scandir() 関数が有効になっていることを確認し、この機能が無効になっているかどうかを確認してください。

 

 

おすすめ

転載: blog.csdn.net/weixin_60870637/article/details/126974874