自動テストフレームワークについてどのくらい知っていますか?これを読んでください!(Pythonの記事)

序文


自動化されたテストは、コスト削減、効率の向上、手動介入の削減などの利点により、徐々にテスターの「トレンド」になりました。実践者は、自動化フレームワークの実現が成功の重要な要因の1つであることをますます明確に理解しています。ソフトウェア自動化プロジェクト。この記事では、実際の自動テストフレームワークとは何か、自動スクリプトがどのように機能するか、自動テストフレームワークがテストプロセス中に競争上の優位性をどのように提供するかについて、3つの側面について説明します。この記事を通じて、自動テストに踏み込むことができます。フレームの。

自動テストの利点

自動テストの人気と多くの利点は、それが万能薬であることを意味するものではありません。カスタマイズされたプロジェクト、短いサイクル時間、およびテストの容易さは、自動テストには適していません。ただし、自動テストフレームワークを慎重に計画して実行すると、ソフトウェア開発およびテスト会社に次のようなメリットがもたらされることは否定できません。

最小時間-最大のメリット

実行可能な自動テストフレームワークと自動スクリプトを構築すると、テストの作成と実行にかかる時間を最小限に抑えることができるため、短時間で最大の出力を得ることができます。さらに、優れた自動テストフレームワークにより、同期、エラー管理、ローカル構成、レポート生成、解釈などの一般的な問題から人員を解放できます。

再利用可能で読み取り可能な自動化コード

既存のコンポーネントライブラリに記載されているコードを使用すると、今後も読み取りと再利用が可能であり、関連するすべてのタスク(レポート、同期、トラブルシューティングなど)がよりアクセスしやすくなるように変更されますのでご安心ください。

リソースの最適化

自動化されたテストのメリットは、それを採用する柔軟性に依存するため、一部の企業は、想定されている自動化の実装のメリットを享受していません。自動化システムが柔軟で、各コンポーネントで作業するさまざまなチームと互換性がある場合、リソースの最適化と知識の共有に関して大きなメリットが得られます。

自動テストフレームワークの定義

他の多くの業界では、「自動化」とは、インテリジェントアルゴリズムによるプロセスの自動処理を指し、プロセスは手動による介入をほとんどまたはまったく行わずに実行されます。ソフトウェア業界では、自動テストとは、自動ツールを使用したソフトウェアアプリケーションのさまざまなテストを指します(ライセンスバージョンまたはオープンソースバージョンが利用可能です)。技術的な観点から、自動テストフレームワークは、スクリプト化されたテストを実行し、テスト結果を包括的に報告するために使用できる、カスタマイズされたインタラクティブコンポーネントのセットです。
自動テストフレームワークを正常に構築するには、ソフトウェア品質保証の専門家の推奨事項を考慮する必要があります。専門家は、テストプロセス全体の監視と制御を支援し、テスト結果の精度を向上させることができます。適切に設計された自動テストフレームワークにより、テスターは実用的で簡素化された方法で自動テストを実行できます。

自動テストフレームワークの種類

ツール中心のフレームワーク

商用自動化ツールであろうとオープンソース自動化ツールであろうと、レポート、テストスイート、およびテスト環境での分散テスト実行の生成に役立つシステムインフラストラクチャがあります。たとえば、Selenium自動化フレームワークにはメインコンポーネントWebDriverがあります。これはWebブラウザーベースのプラグインであり、WebブラウザーでアプリケーションのDOMモデルを制御および操作するために使用されます。Seleniumテスト自動化フレームワークには、実用的なコーディングライブラリとレコード再生ツールもあります。

ツール専用のもう1つの重要なフレームワークは、SeleniumWebドライバーを中心に構築されたアクセラレーターであるSerenityです。この場合、テスト自動化の実装プロセスを高速化するために、コミュニティは特定のコンポーネントを共通のエンティティに結合します。

TestCompleteやRanorexHP QTPなどのツール固有のフレームワークを使用する場合、それらはすべてアクションシミュレーター、レポート、およびスクリプトIDEを備えた展開済みインフラストラクチャで事前に構築されているため、明確な判断を下すのは困難です。

アプリケーション中心のフレームワーク

このタイプのフレームワークは、特定のアプリケーションプロジェクトを自動化するようにカスタマイズされています。アプリケーション中心のフレームワークは、オープンソースライブラリから構築されたコンポーネントによって駆動されるテスト自動化を実現するための特定のターゲットアプリケーションのニーズをサポートします。このフレームワークは、SUTの周りに使いやすいテスト環境を作成して、開発されたアプリケーションのデプロイ、アプリケーションの実行、テストケースの実行、直接のテスト結果レポート、コーディングしやすいラッパーコントロールなどの基本的な機能を実行できます。アプリケーション中心のフレームワークには、さまざまなオペレーティングシステムとブラウザー上のさまざまなクラウド環境でのテスト実行をサポートするコンポーネントも含まれます。

キーワード駆動型フレームワーク

キーワード駆動型フレームワークは、主にコーディングの経験が不足している初心者の開発者やテスターを引き付けることができます。ツール中心のフレームワークでもプロジェクト中心のフレームワークでもかまいません。キーワード駆動型フレームワークにより、コーディングに熟練していない従業員は、自動化されたスクリプトの作成と理解に参加できます。コーディングに使用されるキーワードセット(Login、NavigateToPage、Click、TypeTextなど)は、コードライブラリにキーワードリポジトリとしてインストールされ、提供されたキーワード参照に基づいてスクリプトを作成するためのスプレッドシートが、テスト用のキーワードインタープリターに渡されます。

理想的な自動テストフレームワークの主なコンポーネント

強力で高性能なテスト自動化フレームワーク(オープンソースか商用かを問わず)を実装する場合は、そのコアを構成する特定のコンポーネントを考慮する必要があります。一部のフレームワークにはすべてのコンポーネントが含まれている場合があり、一部のフレームワークには一部しか含まれていないため、各フレームワークに以下で説明するすべてのコンポーネントを含める必要はありません。

1.基本コンポーネントをテストします

a)ユニットテスト

ユニットテストの基本コンポーネントは、自動テストフレームワークの基本部分として使用できます。次の状況で使用できます。

●@ testや[test]などの特定のフォームを使用して、使用するテスト方法を定義し
ます
自動テストの最終結果に影響を与えるアサーションを実行します●シンプルで明確なテストを実行します

コマンドライン、IDE、特別なツール、またはCI(継続的インテグレーション)システムからテストを実行するかどうかにかかわらず、単体テストが簡単な方法で実行されることを保証するために、単体テストライブラリはテストランナーを提供します。

ユニットテストライブラリは、Java用のJUnitとTestNG、.NET用のNUnitとMSTest、Python用のunittest(以前のPyUnit)など、ほぼすべてのプログラミング言語をサポートしています。

b)統合とエンドツーエンドのテスト

統合とエンドツーエンドのテスト自動化を実行する一方で、既存のテストライブラリによって提供される機能を練習することも非常に適しています。アプリケーションUIによって駆動されるAPIレベルのテストには、テスト対象のアプリケーションとの対話が容易になるように、不要なコーディングの負担を排除するコンポーネントが必要です。したがって、テスターは、アプリケーションに接続し、要求を送信し、結果の応答を受信するというコーディング作業に悩まされることはありません。

このタイプのいくつかの重要なテストコンポーネントは、Selenium(メイン言語で使用可能)、分度器(JavaScriptに固有)、Karate DSL(Java固有のAPIレベルの統合テスト)です。

c)ビヘイビア駆動開発(BDD)

BDD専用のコンポーネントは、動作仕様を対象とし、実行可能コードの形式で実行可能仕様を作成します。このパートでは、テスターは予測動作のさまざまな特性とシナリオをコードに変換できます。テスト対象のアプリケーションと直接対話する他のテストツールとは異なり、自動テストの範囲と目的に一致するアクティブなドキュメントを作成するためのBDDプロセスのサポートとして使用できます。BDDコンポーネントの典型的な例は、Cucumber(主要言語をサポート)、Jasmine(JavaScript)、SpecFlow(.NET用)です。

2.テストデータ管理

ソフトウェアテストの自動化とテスト作成の過程で、最大の難しさはテストデータ管理システムの使い方です。自動テストの数が増えると、特定のテストを実行するために必要な特定のテストデータが利用可能であるか、テストの実行時に作成できるかを確認するという問題が常にあります。現在、この状況に対する絶対確実な解決策はありません。自動化を正常に機能させるには、信頼性の高いテストデータ管理方法が必要です。
したがって、使用する自動テストフレームワークは、実行するテストデータを入力または作成してクリアするための基本的な修復手段を提供するように完全に構​​成する必要があります。この問題の解決策は、適切なシミュレーションツールを使用して、データをより単純化、明確化、および理解しやすくすることです。

3.モック、スタブ、仮想資産

自動テストの実践と調査の過程で、次の状況が発生する可能性があります。

●ユニットテストの経験がある接続されたコンポーネントからモジュールを分離したい

●最新のアプリケーション統合またはエンドツーエンドのテストで一般的な、面倒で重要な依存関係に対処します

このような状況では、接続されたコンポーネントの動作を反映するためにモック、スタブ、仮想アセットを作成する必要があると感じるでしょう。また、モックとスタブの処理は大規模かつ大規模なタスクであることに気付くかもしれません。いずれにせよ、テスターは、自動テストフレームワークの開発中に有用な仮想化ツールを選択することが非常に重要であることに気付くでしょう。

パターンを実装するための一般的なメカニズム

上記の自動化フレームワークコンポーネントに加えて、次のような自動化テストの作成、使用、および保守に役立ついくつかの便利なメカニズムがあります。

ラッパーメソッド:Selenium WebDriverコンポーネントを使用する場合、カスタムラッパーを作成すると、エラーの処理が容易になります。Selenium API呼び出しのカスタムラッパーを作成した後、タイムアウト、例外処理、および障害レポートをより適切に処理できます。その後、自動テストを作成した人がそれを再利用できるため、複雑なプロセスの懸念を回避し、貴重なテストに集中できます。

抽象化方法:抽象化メカニズムは、読みやすさの向上と冗長な詳細の隠蔽を意味します。たとえば、Selenium WebDriverテストを作成するときにページオブジェクトを使用する目的は、資格情報の入力やページのどこかをクリックするなど、Webページでのユーザー入力操作を公開することです。目標は、必要性を超えるかバイパスすることで高度なレベルを達成することです。ページテスト方法の特定の要素を調査します。この方法は、多くの同様のアプリケーションや自動テストに適しています。

テスト結果レポート

テスト結果を自動化フレームワークに報告するライブラリまたはメカニズムを選択するときは、レポートを表示する対象読者を考慮する必要があります。この点に関して、以下の予防措置に従う必要があります。

●JunitやTestNGなどの単体テストフレームワークによって生成されるレポートは、主にCI(継続的インテグレーション)サーバーなどの受信システム用であり、最終的にはそれらを解釈して、他のソフトウェアで使用できるXML形式で表示します。

●ほとんどの人がレポートツールとして理解できる言語を使用する場合は、UFT-Pro for Junit、NUnit、TestNGなどの単体テストフレームワークと互換性のある商用ツールの使用を検討する必要があります。

●もう1つのオプションは、ExtentReportsなどのサードパーティライブラリを利用することです。このライブラリは、円グラフ、グラフ、または画像による視覚的な解釈を含む、わかりやすい形式でテスト結果レポートを作成します。

補助プラットフォーム

自動テストフレームワーク自体に加えて、継続的インテグレーションに関連するいくつかの補助プラットフォームも自動テストに大いに役立ちます。たとえば、CIは成果物のデプロイとテストのスケジューリングを実行できます。ソースコードプラットフォームは製品のコードとテストスクリプトを管理できます。依存関係マネージャーは通常、によって開発された一般的なJavaタイプなど、特定の言語クラスライブラリの依存関係管理ツールです。ネクサス管理会社の従業員; ZenTao ZTFには、継続的インテグレーション、単体テスト、バージョンライブラリ管理などの機能が含まれています。

CIプラットフォーム

より高速で一貫性のある方法でアプリケーションテストを実施するために、継続的インテグレーションプラットフォームは、ソフトウェアを定期的に構築し、新しいバージョンのさまざまなテストを実行するのに役立ちます。新しい機能を開発および展開し、既存の機能を更新する場合、この方法により、開発者とテスターは、アプリケーションの品質に対する定期的なフィードバックと迅速な応答を得ることができます。現在、いくつかの著名な継続的インテグレーションプラットフォームには、TeamCity、CircleCI、Jenkinsなどが含まれています。

ソースコード管理

手動テストと同様に、自動テストにもソースコードバージョンの記述と保存が含まれます。各開発会社には、ソースコードを保存および保護するために、選択されたソースコードとバージョン管理システムがあります。自動テストには完全なソースコード管理システムが必要です。これは、本番コードを処理するときに非常に便利です。典型的なソースコード管理の例は、GitとSubversionです。

依存関係マネージャーを作成する

依存関係マネージャーの主な目的は、自動化ソフトウェアソリューションの機能に適用されている既存の依存関係とライブラリーの収集と管理を支援することです。特定のツール(MavenやGradleなど)は、依存関係マネージャーとしても機能し、ツールの構築に役立ちます。ビルドツールは、自動化されたソフトウェアを開発し、ソースコードとサポートライブラリからテストを実行するのに役立つように設計されています。この領域のツールには、Ant、npm、NuGetが含まれます。

禅タオZTF

ZTFはZenTaoとのシームレスな統合をサポートしており、ZenTaoのユースケースと自動テストスクリプトを1つずつバインドできます。実行結果はテスト結果としてZenTaoに送信でき、実行に失敗したスクリプトも自動的にバグを作成できます。ZTF自動テストフレームワークは、Jenkinsとの継続的インテグレーションを実現します。ユーザーがタスクを開始すると、テストスクリプトがZTFを介して自動的に実行され、単体テストの結果がZenTaoに返されます。2人が協力して継続的インテグレーションループを開きました。

フレームワークの構築と実装のプロセス

自動テストソリューションを計画および実装する方法は次のとおりです。

●お客様の視点から自動化の実際の適用可能性について話し合い、その外観があらゆる角度から良好であるかどうかを確認し、十分に活用されていないテクノロジーをテストします。対照的に、自動開発の努力が期待される利点を大幅に超える場合、自動テストは不要です。

●ユーザーの行動を完全にシミュレートできる最適な自動テストツールを見つけるには、テスト対象のシステムのテクノロジーに細心の注意を払うことが非常に重要です。

●フェーズベースの実装方法を採用することをお勧めします。この方法では、各フェーズで自動テストスクリプトを提供すると同時に、フレームワーク関数を追加して、期待されるスクリプトの実行を実現します。

●ソフトウェア自動化テストを開始する前に、自動決定の正しい実装を保証するために、実装後の投資収益率、概念実証、手動回帰またはスモークテストを実行する時間、および各バージョンの動作サイクル数を見積もる必要があります。

結論として

今日のペースの速い残忍なソフトウェア開発エコシステムでは、自動テストフレームワークは、ソフトウェアテストサイクルの速度、効率、および明快さを維持する上で不可欠な役割を果たします。ソフトウェアテストに人工知能が導入されたことで、自動テストフレームワークの使用を検討している組織は、この分野に参入する前に、最終的なフレームワークの設計を掘り下げる必要があります。優れたフレームワーク設計とコンポーネントを使用する戦略は、最終的な自動テストフレームワークの基盤を築きます。

成熟した、洗練された、柔軟な自動テストフレームワークを構築する最良の方法は、小規模から始めて、頻繁なテストと監査を実施し、徐々に拡張バージョンをより高いレベルに構築することです。早い段階から多数の自動テストを準備しておくと便利です。自動テストフェーズでは、作業フレームワークをより迅速に確認し、競合や損傷を回避できます。

上記のガイドラインは、ソフトウェアテスターや企業が自動テストプロジェクトの実装の成功から学ぶのに役立つように設計されています。


最後に:メリット

テクノロジー業界では、技術スキルを向上させ、自動化プロジェクトでの実践的な経験を充実させる必要があります。これは、今後数年間のキャリア計画とテストテクノロジーの深さに非常に役立ちます。

ゴールデン9日とシルバー10日の面接シーズン、転職シーズンでは、面接の質問を整理することが長年の私の習慣になっています!以下は、近年の私のコレクションと並べ替えです。全体は[ソフトウェアテスト]を中心に構成されています。メインコンテンツには、Python自動化テストの独占ビデオ、Python自動化の詳細、インタビューの質問のフルセット、その他の知識コンテンツが含まれます。

ソフトウェアテストの友人にとっては、最も包括的で完全な面接準備ウェアハウスである必要があります。各モジュールをより適切に整理するために、インターネット上の多くの高品質のブログ投稿やプロジェクトも参照し、すべての知識ポイントを見逃さないように努めています。友人はこれらのコンテンツを利用してレビューを行い、BATJなどの大規模な工場からオファーを受け取りました。このウェアハウスは多くのソフトウェアテスト学習者にも役立ちました。あなたにも役立つことを願っています。

あなたと私が会い、あなたが何かを見つけることができますように!WeChatパブリックアカウントをフォローすることを歓迎します:[Sad Spicy Article] 216ページのソフトウェアテストエンジニアのインタビューブックを無料で受け取ります。そして、対応するビデオ学習チュートリアルは無料で共有できます!

おすすめ

転載: blog.csdn.net/weixin_50829653/article/details/112869270