自動テストを徹底理解する【実践まとめ】を集めておくことをおすすめします~

1. 自動テストの基礎知識

自動テストとは何ですか

1. 人間主導のテスト動作を機械実行に変更する 設計されたテストケースを通じて、機械はテストケースの実行手順に従って自動的に動作し、結果を出力し、テスターと比較します。

2. 自動テストでは、多くの場合、いくつかのテスト ツールまたはフレームワークを使用して自動テスト ケースを作成し、手動テストをシミュレートします。

3. 自動テストにより、人的資源、時間、ハードウェア リソースが大幅に節約され、テスト効率が向上します。

自動テストの利点

1. 自動テストツールは必要に応じて大量のテストデータを準備できます。

2. 関連するスクリプト技術を使用して、多数のテスト ケースを準備できます。

3. テスト結果は、場合によってはそれに応じて処理する必要があります。

4. 大量のデータやデータ形式を素早く比較できます。

自動テストのデメリット

1. 手動テストと比較して、自動テストではテスターの能力に対する要件が比較的高くなります。

2. 自動テスト ケースはバージョンの反復に従って更新する必要があり、一定のメンテナンス コストがかかります。

3. 自動テストでは、より多くの新しいバグが見つかることは期待できません。自動テストでは、手動テストよりもはるかに少ない欠陥が見つかります。

4. 自動テストの出力値は長期的な回帰テストにあることが多く、短期的にはその役割が明らかではない場合があります。

5. 自動テストはテストの効率を向上させることはできません。テストの効率を向上させるためにのみ使用できます。

自動テストに関する誤解

1. 自動テストにより、手動テストは不要になります。

2. 自動テスト ローカリゼーション テスト、ユーザー エクスペリエンス テスト、探索的テストなどの一部のテストでは、テスト環境の構築だけでは手動テストを完全に置き換えることはできません。

3. 自動テストは製品の動作であり、テスト ポイントの手動テストには一定の根拠が必要であり、自動テストと手動テストは相互に補完します。

4. 自動テストは、自動で実行されるテスト製品だけを指すのではなく、データ処理も非常に重要なリンクです。

自動テストの前提条件と原則

1. プロジェクトサイクルが長く、需要が安定しており、近い将来も変化しない。

2. フロントエンド開発ではページを何度も修正する必要がなく、欠陥のあるモジュールが残されることもありません。

3. 自動化されたテスト スクリプトを再利用でき、回帰テストをより頻繁に実行できます (モジュールの数が多いため、回帰テストの範囲は一時的にモジュールのメイン プロセスに限定されます)。

4. 手動テストは実装が難しく、複数のプラットフォームで同じテスト ケースと多数の反復タスクを実行する必要があります。

5. 早期の自動化実装は、非常に複雑なモジュールを避ける必要があります

自動テストの実装方法

1. 情報の取得とテスト要件の分析: システム全体のアーキテクチャと設計を把握し、システムのテスト要件を分析します。

2. 設計: テスト ケースを設計し、自動化する必要があるテスト ケースを選択します。

3. 実装: テスト スクリプトを作成、デバッグ、実装します。

4. 実行: スクリプトの実行プロセスでは、実行プロセス内の例外を継続的に分析する必要があります。

5. テスト結果の分析: どれがバグでどれがテスト フレームワーク自体の問題であるかを分析します。

6. メンテナンス: テスト スクリプトの自動メンテナンスは、解決が必要な困難な問題です。

7. 要約: 自動テストのプロセスにおける自動化実践の入出力比率を要約します。  

自動テストの階層

1. 上に行くほど QA、ビジネス/エンド ユーザーに近づき、下に行くほど開発に近づきます。

2. 上になるほどテストの実行は遅くなり、下になるほどテストの実行は速くなります。

3. 値を高くすると、テストのコストが高くなります (時間がかかり、障害情報が曖昧になり、追跡が難しくなります)。値を低くすると、テストのコストが低くなります。

同時に、すべての人向けにソフトウェア テストのビデオ チュートリアルも用意しました。これは記事の最後にあります。必要な場合は、直接視聴するか、ページの最後にある小さなカードをクリックしてください。情報ドキュメントを無料で入手するには記事をご覧ください。

2. 自動テストツールとフレームワーク

一般的な自動テストツール

自動テストツール開発言語:Java、Pythonなど

基本的なテストツール

(1) 単体テスト: junit (java)、unittest (python)

(2) インターフェーステスト: httpclient (java)、restassure (java)、request (python)

(3) UI テスト: Selenium Webdriver (Web)、appium (アプリ)

一般的な自動テストツール

(1) インターフェーステスト: Jmeter、soapui、postman

(2) UIテスト:katalon、Robotframework、Android

自動テストスクリプトテクノロジー

1. リニアスクリプト: 録音、再生

2. 構造化スクリプト: スクリプトの実行を制御する命令が含まれ、シーケンス、選択、ループをサポートします。 3. 共有スクリプト: 複数のテスト ケースで使用でき、スクリプトは相互に呼び出すことができます。

3. データ駆動型スクリプト: データ駆動型スクリプトはテスト入力を別のファイルに保存し、制御情報のみがスクリプトに保存されます。

4. キーワード駆動型スクリプト: キーワード駆動型スクリプトは、実際には、より反復的なデータ駆動型テクノロジの論理的拡張です。つまり、テスト ケースの実行ステップ (操作、操作オブジェクト、操作値) がファイルに保存されます。そして直接実行されました

自動テスト運用の基礎

1.インターフェース自動テスト運用

(1) ドキュメントの有無にかかわらず、リクエスト URL とメッセージをシミュレートし、テスト データを準備し、パケットをキャプチャしてインターフェイス情報を取得し、インターフェイスを分析します。

(2) HTTP リクエスト (get、post) を送信するクライアントをシミュレートします。

(3) サーバーからの返信メッセージを受信するクライアントをシミュレートします。

(4) 返された結果が期待どおりであることを確認する

2. UI自動テストの運用

(1) ID、名前、xpath、cssSelector などでページ要素 (findelement、findelements) を見つけます。

(2) 配置されたページ要素に対して対応する操作を実行します (クリック、入力など)。

(3) 操作後の結果と期待した結果を比較する(アサート)

自動テストツールの基本原則

Selenium (フロントエンド コードを解析し、ブラウザを制御)

 

自動テスト用の PO モード

1. PO モードでは、Webdriver インスタンスのみを実装するプロパティを持つ BasePage クラスに抽象的にカプセル化されます。

2. 各ページは BasePage を継承し、ドライバーを通じてこのページ内の要素を管理し、ページ内の操作を個別のメソッドにカプセル化します。TestCase はページ クラスに依存して、対応するテスト ステップを実装します。

 

自動テストフレームワーク

1. キーワード主導型

(1) テスト ケースを 4 つの異なる部分に分割します。1 つ目はテスト ステップ (Test Step)、2 つ目はテスト ステップ内のオブジェクト (Test Object)、3 つ目はテスト オブジェクトによって実行されるアクション (Action)、4 つ目はテスト オブジェクトに必要なデータです(テストデータ)。

(2) データとキーワードを組み合わせて、テストの実行方法を説明します。つまり、テスト ケース スクリプト内のステップが抽出され、独立したデータ ファイルに配置されるため、簡単な記述方法になります。このアプローチには、データ駆動型であると同時に、プログラマーでなくてもテストを作成できるという利点があります。

(3) キーワード駆動モデルはデータ駆動アプローチに基づいており、キーワード駆動ファイルにはデータだけでなく命令 (キーワード) が含まれています。

(4) このテスト フレームワークは、非常に少ないコードで多数のテスト ケースを生成できます。データ テーブルを使用して各テスト ケースを生成するときに、同じコードが再利用されます。

2. データドリブン

(1) データ ファイル (Excel ファイル、Xml ファイル、Json ファイル、データベースなど) から入力テスト データを読み取り、作成したテスト スクリプトに変数を介して渡します。

(2) データ ファイルの読み取り、テスト ステータス、およびすべてのテスト ステップがテスト スクリプトに書き込まれます。テスト データはデータ ファイルにのみ含まれ、スクリプトには含まれず、テスト スクリプトは単なる「ドライバー」です、またはデータの送信メカニズム。

(3) データ駆動型手法は主に、テスト対象システムのビジネス ロジックが固定されているか、ほとんど変更されない、つまりテスト ケースのステップは固定されているが、テスト カバレッジを保証するために異なるデータが必要なシナリオで使用されます。必要なテスト データ 状況は変わりつつありますが、一般的に、データは外部ファイルまたはデータベースに保存され、実行時に自動的に取得されます。つまり、テスト フレームワークはデータとスクリプトの分離をサポートする必要があり、1 つのテスト スクリプトで複数の同様のテスト シナリオの実行を推進できます。

(4) このフレームワークは、すべてのテスト ケースを実行するために必要なテスト スクリプトの総数を削減することを目的としており、データ駆動型では、多数のテスト ケースを生成するために必要なコードは非常に少なくなります。

3. 自動テストフレームワークの選定と構築

技術的ソリューション

Selenium(Webdriver) + Python(unittest) + cx_Oracle + HTMLTestRunner

Selenium の WebDriver はオープンソース ツールです。自動テストには比較的シンプルなPython言語を使用する方が人員の学習コストの面で現実的であり、学習時間も短いというメリットがあります。

Python に付属する Unittest 単体テスト フレームワークを使用すると、自動化されたユース ケースの設計と実行、自動化されたユース ケース スイートの管理などのタスクを簡単に実装できます。Python は純粋なオブジェクト指向言語であり、将来的にはより充実した自動テストを行うために Java + Selenium に移行することもできます。さらに、Python + Selenium ソリューションで自動スモーク テストを実行するための継続的統合サーバーとして Jenkins を選択することもできます。 。

このソリューションでは、ページ オブジェクト デザイン パターンを使用して、ページ、ユースケース、およびデータを分離します。このようにして、テスト ケースではインターフェイスの詳細ではなくビジネスにもっと注意を払うことができ、テスト ケースの読みやすさが向上し、コードの冗長性が減り、メソッドの再利用性が向上します。

環境の選択

テストグループの自動テスト要件の議論結果に従って、自動テストテクノロジを使用して UAT およびステージ環境で回帰テストを実行します。(正常に利用できる環境であることを確認してから実行してください)

UAT およびステージ環境は頻繁にリリースされるため、自動テスト フレームワークのデバッグとスクリプト作成に影響を与えるため、デバッグと書き込みのための安定した環境を申請してください。

自動テストプロセス

(1) モジュールを選択します

(2) ユースケース(メインプロセスのユースケース)を選択します

(3) 操作方法をページごとに記述する

(4) ユースケースごとにユースケース処理スクリプトを記述する

(5) ユースケースに応じた書き込みデータのクエリ方法

(6) ユースケースの実行

(7) レポートを出力します (後で拡張し、欠陥を追跡するために実行ログと例外スクリーンショットを追加します)。

要約すると、スクリプトの内容が記述され、ビジネス要件とテスト要件が変更されていない場合は、最後の 2 つの手順を実行するだけです。レポートの内容を確認し、不具合が見つかった場合は、ユースケースの内容に従って不具合を再現し、Zentao管理システムに提出する必要があります。

その後のメンテナンス

(1) ビジネス要件の変化

ビジネス要件が変更された場合、変更されたコンテンツのユースケースは、ユースケースの実行時にスキップされ、変更されたコンテンツの起動後にそれに応じてスクリプトとユースケースが調整される必要があります。調整が完了したら、ユースケースの安定性を確保するために再度実行する必要があります。

(2) テスト対象モジュールのリファクタリング

テスト対象モジュールのリファクタリングが完了したら、そのモジュールの自動テストケースを実行して正常に実行されるか確認する必要があり、問題がなければ調整は必要ありません。時間内にデバッグして解決する必要があります。

(3) 技術的な変更

自動テスト フレームワークの継続的な最適化と拡張に伴い、基本モジュールとカプセル化されたページもそれに応じて変更されます。さらに、回帰テストが正常に進行するように、チューニングや拡張後のフレームワークの安定性を確保するために、自動テストを定期的に実行する必要があります。

資源の配分

(1) 環境:

a. プロジェクト環境はオンライン プロジェクトと同様です。独立して公開されています。バージョンの内容は比較的安定しています。データベースは独立しており、他の環境の影響を受けません。

 b. ローカル環境、win7&win10 Chrome 72 32bit。

(2) ユーザー:独立したユーザー。特定の機能ポイントにアクセスするユーザー権限の影響を受けないよう、またユースケースの漏れを減らすために、権限を可能な限り高く調整する必要があります。

(3) 人員:理想的には 3 ~ 4 人の人員、テスト開発、中級および上級自動テスト エンジニア、およびジュニア自動テスト エンジニアからなる自動テスト グループを設立します。

(4) トレーニング:若手自動化エンジニアのトレーニング、設計フレームワークおよびパッケージ化推進など。

第 4 に、自動テストは段階的に実装されます。

1. 基本フレームワークを構築し、モジュールの自動テスト デモを完成させる

ページ オブジェクト デザイン パターンを採用して、ページ要素、ユース ケース プロセス、およびデータをカプセル化して分離し、Web ドライバーを共通モジュールまたは基本モジュールに再カプセル化し、自動テスト実行の結果を分析するためのテスト レポートを自動的に生成します。

2. 基本バージョンのフレームワークに従って、テスト範囲を拡大します

フレームワークの基本的な考え方に基づいて、自動テストに適した機能モジュールを選択し、スクリプトやユースケースなどを記述し、フレームワークを拡張することで、データドリブンなテストのスケジュール実行やレポートメールの送信など、使いやすい機能を実現します。 -コア機能。

3. ほとんどのモジュールをカバーする回帰テスト

人員などのリソースの調整に従って、自動化されたテスト ケースは、モジュール回帰テストのほとんどをカバーする範囲まで拡張されます。回帰テストの効率向上と回帰テストの人員削減の目的を達成するために、自動テストを実行することで回帰テストが完了します。

まとめ

自動テスト技術には最新のテスト技術の中で一定の利点がありますが、いかなる場合でも自動テストが必要というわけではありません。適切な、またはコスト効率の高い投資を行うには、適切なタイミングで自動テストを導入し、手動テストと自動化を行う必要があります。テストは完璧な組み合わせを実現します。 。

以下で無料のビデオチュートリアルをご覧ください。

非常に変態ですが、自動テスト (Web/インターフェイス自動化/APP/Selenium/パフォーマンス テストなど) をすぐにマスターできる 、【自動テスト】自動テストフレームワークの設計アイデア、ソフトウェアテスト教材と学習ルートのフルセットなど、UPマスターからのよりエキサイティングなビデオについては、UPアカウントに注目してください。https://www.bilibili.com/video/BV1hj411z71j/?vd_source=74d0257ec7066cc4f9013524f0bb7013適切な年齢で、適切なポジションを選択し、自分の長所を最大限に発揮するように努めてください。

自動テスト開発への私の道のりは、途中の各段階での計画と切り離すことができません。私は計画を立てて要約するのが好きなので、友人と時間をかけて次の「ソフトウェア テスト学習ルート」を整理して作成しました。大量の[ネットワークディスクリソース]を整理しました

 PS:どうすれば入手できますか?とても簡単です。下の小さなカードをクリックするだけで無料で入手できます。


 

 

おすすめ

転載: blog.csdn.net/HUA1211/article/details/132249488