ロボットフレームワークを活用してマルチプラットフォームの自動テストを実現

Robot Framework、Jenkins、Appium、Selenium、Requests、AutoIt などのオープンソース フレームワークとテクノロジーに基づいて、一般的な自動テスト継続的統合管理プラットフォーム (以下、「プラットフォーム」と呼びます) の構築に成功しました。テストの品質とテスト ケースの実行効率が大幅に向上しました。

01. デザインの目標

プラットフォームはユニバーサルで、さまざまな種類の自動テストをサポートします。

プラットフォーム フレームワークは軽量、オープン、柔軟で、強力で豊富なテスト ライブラリを備えており、PC デスクトップ アプリケーション (コア カウンターやオンライン取引システムなど)、Web アプリケーション (ショッピング モールのオンライン ホールなど)、APP アプリケーション (モバイル証券など)、インターフェイス(カウンタ周辺インターフェイスなど)、データベース(Oracle など)、その他の自動テストにより、その後の継続的なテスト開発と集中的かつ統合的な管理が容易になります。

プラットフォームは自動テストのプロセス全体をサポートします

プラットフォームの表示インターフェイスは統一されており、明確かつ簡潔で、テスト ケースの設計、テスト スクリプトの開発、テストの実行、テスト レポートの生成のプロセスをカバーしています。テストプロセスの一元管理により、テスト担当者がプラットフォームを利用する敷居が下がります。

プラットフォームは優れた拡張性と容易なメンテナンスを備えています

このプラットフォームは、共同作業と分散テストの実行をサポートし、バージョン管理ツール、ソフトウェア欠陥管理システム、エンタープライズ電子メール システムと統合することができ、同時に、自動化されたテスト スクリプトを柔軟に調整し、テストの反復プロセス中にコードを再利用できます。プロジェクト。

02. アーキテクチャ設計

このプラットフォームはコンポーネント化と階層化アーキテクチャの考え方を採用しており、4 つの層に分割でき、各層は特定の機能を実装し、他の層が呼び出すためのインターフェイスを提供します。
ここに画像の説明を挿入

最下層はテスト対象システムで、主にテスト対象オブジェクトの形式を定義します。このプラットフォームは、APP、Web、PC アプリケーションのテストに加え、インターフェイスやデータベースのテストもサポートしています。

上がテストライブラリです。このプラットフォームは、プロセス、文字列、コレクション、スクリーンショット処理などの基本的なテスト ライブラリを提供するだけでなく、Web、APP、インターフェイスなどの特殊なテスト用の拡張テスト ライブラリも提供し、テスト対象のさまざまなシステムをサポートして対応するテスト ライブラリを選択します。

真ん中はテストフレームワークで、その機能にはユースケース管理、テストデータ管理、テスト運用、テストレポートなどが含まれます。

最上層は連続構築層で、タスク、マシン、キューイングなどの制御とスケジューリングを担当し、テスト運用プロセス全体を自動的に完了します。

03. プラットフォームの実現

自動化フレームワークの選択では、自動化テスト プラットフォームの中核となる基盤フレームワークとして Robot Framework (以下、「RF」と呼びます)、継続的統合およびタスク スケジューリング プラットフォームとして Jenkins、そして AppiumLibrary、Selenium2Library、RequestsLibrary、AutoItLibrary、など、さまざまなテスト要件を満たすための拡張テスト ライブラリとして機能します。

ここに画像の説明を挿入
(1) RFフレームワーク

RF は、機能が豊富で拡張可能なオープンソースの自動テスト フレームワークで、主に多くのラウンドによる回帰テストに使用されます。このフレームワークは、キーワードの組み合わせを通じてテスト ロジックを形成し、最終的にさまざまな基礎となるテスト ライブラリを通じてテスト対象システムと対話してテスト作業を完了します。

RF フレームワークは、APP、Web、インターフェイス、データベース テストなどの標準の基礎となるキーワード API を提供します。テスターは、これらのキーワードに基づいてカスタム スクリプトを開発するだけで、独自のテスト要件を満たすことができます。

ここに画像の説明を挿入

(2)AppiumLibrary

Appium は、オープン ソースのマルチプラットフォームおよび多言語テスト フレームワークです。他のフレームワークと比較して、iOS および Android プラットフォームでのネイティブ、Web、ハイブリッド アプリケーションの自動テストをサポートしています。プラットフォーム間でコードを再利用し、テスト スクリプトを作成し、テストを実行できます。ソース コードを再コンパイルする必要がなく、スクリプトの作成と実装にプログラミング言語の要件があまりなく、テストが軽量かつ柔軟です。

AppiumLibrary は、RF フレームワークの Appium に基づくサードパーティの拡張アプリケーション テスト ライブラリであり、証券会社向けのモバイル証券 APP の自動テストと開発をサポートできます。

ここに画像の説明を挿入

(3)Selenium2ライブラリ

Selenium は、スケーラビリティ、クロスプラットフォーム、マルチブラウザのサポートなどの機能を備えた、マルチプラットフォーム Web アプリケーション テストを実装するために特別に設計された自動テスト ツール スイートです。Selenium 2 は WebDriver を統合します。WebDriver は、ネイティブ ブラウザ サポートまたはブラウザ拡張機能を通じてブラウザを直接制御します。テスターは、さまざまなプラットフォームやブラウザに応じて、さまざまな WebDriver を選択してテストを実行できます。

Selenium2Library は、証券モールやインターネットホールなどの Web アプリケーションの自動テスト開発を支援できる、Selenium2 for RF フレームワークをベースとした Web テスト ライブラリです。

ここに画像の説明を挿入

(4)リクエストライブラリ

インターフェイス テストは、通常、複数のシステム間の対話型開発、または複数のサブシステムを使用したアプリケーション システム開発のテストに使用されます。リクエストは urllib に基づいて Python 言語で記述され、HTTP インターフェイス テストの要件を満たすことができる Apache2 ライセンスのオープン ソース プロトコルの HTTP ライブラリを採用しています。RequestsLibrary は、RF フレームワークに基づく API テスト ライブラリであり、証券会社 IFS またはその他のカスタム開発インターフェイスの自動テスト開発をサポートできます。

(5) AutoIt デスクトップ アプリケーションのテスト

AutoIt は、Windows GUI を自動化するためのソフトウェアであり、キーボードのキー、マウスの動き、ウィンドウまたはコントロールの操作をシミュレートして自動化されたタスクを実現できます。AutoItLibrary は、RF フレームワーク用の AutoIt に基づく Win32 デスクトップ アプリケーション テスト ライブラリであり、証券会社のコア カウンターやオンライン トランザクションなどのデスクトップ アプリケーション システムの自動テスト開発をサポートできます。

ここに画像の説明を挿入

(6) Jenkins の継続的インテグレーション

Jenkins は、svn や Git などの複数の SCM 構成管理ツールをサポートするオープン ソースの継続的統合ツールであり、スケジュールされたビルド (時間ごと、間隔ごと、毎晩何時など) を設定したり、プロジェクトの要件に応じてビルドをトリガーしたりできます。 (ソース コード送信トリガーなど)、シェル スクリプト、Windows バッチ処理、Ant 構築およびその他の構築方法をサポートし、さまざまなオペレーティング システムでの実行要件を満たすことができます。

Jenkins は、マルチホスト・マルチタスク並列実行を実現できる分散構築 (Selenium Grid と同様) をサポートしています。Jenkins は豊富なプラグイン サポートも提供しており、Robot Framework プラグイン プラグインをインストールした後、RF 自動化テスト ケースを実行できます。

ここに画像の説明を挿入

04. プラットフォームの革新ポイント

1. 幅広いシナリオに適応し、さまざまな自動テストに対応する柔軟なプラットフォーム構造

このプラットフォームは軽量の RF オープンソース フレームワークに基づいており、優れた拡張性を備えており、さまざまなオープンソースの拡張テスト ライブラリを統合することで、さまざまなタイプ、さまざまなプラットフォーム、アプリケーションのテストに対応できます。

RF+AppiumLibrary は、APP の自動テストを実現し、iOS と Android の間でコードを再利用できます。異なるプラットフォームで実行する統合テスト スクリプトを作成するだけで済みます。この方法により、自動テスト スクリプトの使用効率が大幅に向上し、作成時間を節約できます。テストスクリプトのデバッグ。

RF+Selenium2Library は、Chrome、IE、Firefox などの複数のブラウザ上で Web アプリケーションの自動テストを実現できます。

RF+AutoItLibrary は、一般的な Win32 デスクトップ アプリケーションの自動テストを実現できます。

RF+RequestsLibraryはインターフェース自動テスト等を実現できます。

したがって、このプラットフォームは強力な柔軟性、互換性、使いやすさを備えており、特にコアカウンター、オンライン取引、モバイル証券、その他のインターフェイスの自動テストに適しており、変更がほとんどなく、ソフトウェアライフサイクルが長く、新しいバージョンが頻繁にリリースされます。

2. エンドツーエンドの自動テスト管理とワンストップのグラフィック表示を実現するプラットフォーム

このプラットフォームは、ユースケース管理、スクリプト開発とデバッグ、タスクの分散スケジューリングと実行、テストレポートのプレゼンテーションのプロセス全体をサポートします。

ここに画像の説明を挿入
ここに画像の説明を挿入

3. データとキーワードによる自動テストをベースに、テスト対象システムの変更に柔軟に対応

このプラットフォームは、従来の自動化フレームワークの記録および再生モードにおけるスクリプトの結合度が高いという欠点を克服し、高い堅牢性、高い再利用性、優れた保守性を備えています。

データ駆動型モードをサポートし、テスト データとスクリプトを分離し、スクリプトを変更せずにテスト データを変更することで、自動テスト スクリプトの再利用性が向上します。

インターフェイス要素の統合管理が実現され、インターフェイス要素とテスト スクリプトが分離され、アプリケーション インターフェイスの変更は無効なインターフェイス要素を変更するだけで済み、スクリプトの大幅な変更が不要になり、スクリプトの保守性が向上します。

ビジネスプロセステストは柔軟に組み合わせ可能なキーワードスクリプトに基づいて制御されており、キーワードの追加によりテストフレームワークの機能拡張が実現できます。

スクリプト構造は階層化された設計思想を採用しており、自動テスト スクリプトはユース ケース層、プロセス層、ページ要素層、変数コレクション層に分割されており、高い凝集性と低結合性のテスト スクリプト設計の実現が容易になります。

ここに画像の説明を挿入

05. プラットフォームの導入効果

1. テストケース設計の品質とビジネスシナリオの網羅性を向上させる

東莞証券自動テストプロジェクトの導入以来、ユースケースの粒度とカバレッジが大幅に向上し、モバイルAPP取引、インターフェース、Web(ネットホール/モール/youcailai)、コアカウンター、オンライン取引のテストケースに到達しました。 1645、153、76、569、1168 件と、ユースケースの規模は平均して 8 倍近く増加しており、基本的にすべてのトランザクション ビジネスをカバーしています。平均自動化率は 65% 以上で、製品開発チームの品質に対する信頼が大幅に向上しました。

2. テストケースの実行効率を向上させ、製品の発売を迅速化します

自動テストにより、テスト ケースの実行の効率と精度が向上し、運用アプリケーション システムの障害率が減少します。さらに、継続的統合が可能な限り早期に介入されるため、バージョンのリリースが遅れる可能性が低くなります。東莞証券のモバイルアプリ取引自動化テストを例に挙げると、前バージョンの反復サイクルは 2 ~ 3 か月でしたが、自動化テスト実施後は 1 か月に短縮され、前回は 15 人日かかりました。手動テストは自動実行後、2人未満に変更されました。平均月次反復で計算すると、年間を通じてほぼ 150 人日のテスト リソースを節約できます。独立したテスト カウンタ (7*24 実行をサポート) に接続し、複数のデバイスを追加して並列実行すると、自動テストの効率が大幅に向上します。プロジェクトでは、20 ラウンド近くの反復テストに投資し、17 件の欠陥が発生しました。発見されています。

06. 概要

東莞証券は、オープンソースの RF フレームワークに基づいて、0 から 1 までの一般的な自動テスト システムを確立し、モバイル APP、コア カウンター、オンライン取引、インターフェイス、モール、オンライン ホールなどのプロジェクトに実装し、Jenkins と組み合わせて、自動テストの継続的統合と分散を実現 モデル構築は、機敏で高速な反復プロセスを効果的にサポートします。

スペースの制限のため、この記事では、APP、Web、デスクトップ アプリケーション、インターフェイスなどの自動テスト開発方法については詳しく説明しませんが、一般的な自動テスト継続的統合管理プラットフォームを確立するアイデアを提供します。他の証券会社からインスピレーションを受け、学ぶことの重要性。

最後に、私の記事を注意深く読んでくださった皆さんに感謝します。互恵性は常に必要です。それはそれほど価値のあるものではありませんが、必要な場合はそれを取り上げることができます。

ここに画像の説明を挿入

ソフトウェアテストインタビューアプレット

ソフトウェア テストの質問バンクには、何百万人もの人が参加しました。誰が知っているのか!ネットワーク全体で最も包括的なクイズ ミニ プログラムです。携帯電話を使用して、地下鉄やバスの中でもクイズに答えることができます。

次の面接の質問セクションが取り上げられます。

1. ソフトウェアテストの基礎理論、2. Web、アプリ、インターフェース機能テスト、3. ネットワーク、4. データベース、5. Linux

6. Web、アプリ、インターフェイスの自動化、7. パフォーマンス テスト、8. プログラミングの基本、9. 時間面接の質問、10. 公開テストの質問、11. セキュリティ テスト、12. コンピューターの基本

これらの資料は、[ソフトウェア テスト] の友人にとって最も包括的で完全な準備倉庫となるはずです。この倉庫は、最も困難な旅を乗り越える何万人ものテスト エンジニアにも同行してきました。あなたにも役立つことを願っています。     

おすすめ

転載: blog.csdn.net/2301_78843735/article/details/132475519