MeterSphere テクノロジーの共有: UI 自動化テストの必要性とソリューション

UI 自動テスト システムを構築する価値は、テスターがさまざまなレベルでテストを作成して実行することを推奨するテスト ピラミッド モデルに従います。UI テストでは、テスト スクリプトの作成と設計、アプリケーション全体の実行、アプリケーションとのユーザー操作のシミュレーションが必要なため、UI テストのテスト速度は比較的遅くなります。ただし、UI テストはビジネスの範囲が広く、実際のシナリオでユーザーの動作をシミュレートし、UI コンポーネントの機能と安定性を詳細に測定することで、手動テストで直面する反復的なテストの問題の多くを効果的に排除できます。

2022 年 4 月に MeterSphere オープンソース プロジェクト チームが実施した UI 自動テスト コミュニティの調査では、219 の調査フォームのうち、回答者の 82.19% が自分のチームが Web サイドの UI 自動テスト システムを構築していると回答したことがわかりました。

▲図1 テストピラミッドモデル

 テスト ピラミッドの最下層は単体テストです。単体テストは、コード内の小さなロジック部分のテストです。これらの小さなロジック部分には、関数、クラス、またはクラス内のメソッドが含まれます。単体テストを作成することで、開発者は他のコンポーネント、サービス、UI に依存せずに、テスト対象のコードを直接呼び出して、その出力が期待どおりであるかどうかを評価できます。

 テスト ピラミッドの中間層は、インターフェイス テストまたは統合テストです。インターフェイス テストは主にアプリケーション プログラム インターフェイス (API) をテストし、異なるモジュール間のインターフェイスが有効かどうか、送信される情報が正しいかどうか、インターフェイス標準を満たしているかどうかなどに焦点を当てます。統合テストの主な目的は、次のことをテストすることです。システム全体が連携して動作します。

 テスト ピラミッドの最上位は UI テストです。UI テストは最も直観的な観点から実行され、手動での実行に加えて、完全に自動化に依存することもできます。UI テストでは、ボタンのクリック、情報の入力、フォームへの記入など、各ユーザーのアプリケーションとの対話をシミュレートし、アプリケーションを実行して期待される結果を満たすかどうかを確認できます。

これら 3 つのテスト タイプの範囲が異なることがわかります。単体テストは主に、最も基本的なレベルで論理エラーを見つけるために使用されます。単体テストは高速で、実行時に必要なリソースが少なくなります。インターフェイス テストまたは統合テストは主に、アプリケーションのサービスとデータベースの間のインターフェイスが適切に連携できるかどうかを検証し、異なるコンポーネント間の相互作用に焦点を当てます。アプリケーションを起動できます。UI テストは最も包括的なタイプのテストであるため、実行時に最も多くのコンピューティング リソースと時間を消費する傾向があります。

1. UI自動テストの必要性

ソフトウェアテストの分野では、UI自動テストの重要性がますます高まっており、テスト効率の向上、コスト削減、テストの正確性と一貫性の確保にその必要性が反映されており、ソフトウェアの品質と開発効率の向上に重要な役割を果たしています。

1. 手動の繰り返しを置き換える

従来の手動テストでは、テスト エンジニアは反復的な操作の実行に多くの時間を費やす必要があり、非効率であるだけでなく、エラーが発生しやすくなります。UI 自動化ツールを使用することで、テスト エンジニアは反復的なテスト タスクをプログラムに引き渡すことができるため、時間とエネルギーが節約され、包括的なテスト ケースの設計や新機能のテストにより多くの時間を費やすことができます。

2. 回帰効率の向上

回帰テストは、ソフトウェア コードに変更を加えた後に、変更が既存の機能に悪影響を及ぼさないことを確認するために実行されるテストです。回帰テストは頻繁に実行する必要があるため、手動で回帰テストを実行すると多くの時間と人的リソースが無駄になります。UI 自動化により回帰テストを効率的に実行できるため、テストの正確性と包括性を確保しながら人件費を大幅に削減できます。

3. 勤務時間外のテスト

従来の手動テストでは、テスト エンジニアは勤務時間内にのみテスト タスクを実行できます。UI 自動テスト ツールを使用することで、テスト エンジニアは勤務時間外にテスト タスクの実行を手配できるため、時間リソースを有効に活用でき、失敗したユースケースの分析や問題解決により多くの作業時間を費やし、テストの品質を向上させることができます。

4. 運用の一貫性と追跡可能な結果を​​確保します。

手動テストでは、人的要因により、操作手順が省略または無視されやすく、不正確なテスト結果につながります。UI 自動テスト ツールを使用すると、各テストで実行される手順と検証が一貫していて再現可能であることを保証し、人的エラーの発生を回避できます。

2. UI 自動テストに介入するタイミング

UI 自動化テストにはどのようなプロジェクトが適しているのかとよく尋ねられます。UI 自動テストは、プログラムを介してページ上の手動テストと操作コントロールをシミュレートすることと同等です。実際のテストプロセスでは、コントロールが見つからない、コントロール定義の変更によるメンテナンスコストが発生するなどの問題に遭遇することがよくあります。UI 自動化テスト介入に適したいくつかの時間ノードまたはシナリオをまとめました。

1. 製品は比較的安定しており、需要が頻繁に変化することはありません。

2. 頻繁な回帰検証が必要なコアビジネスとコアインターフェイス。

3. 安定したビジネス プロセスを選択する 検討期間にあり、頻繁に変更する必要があるビジネス モジュールを選択することはお勧めできません。

4. メンテナンスサイクルが長いプロジェクトに適していますが、短期プロジェクトには適していません。

5. コードを記述して実装された自動テスト ツールを使用する場合、テスト チームのメンバーのほとんどがスクリプト開発能力を持っている必要があります。

3. UI 自動テストが直面する 2 つの主要な問題

UI 自動化テストでは、テスト チームは通常、UI 自動化のメンテナンス コストと学習コストという 2 つの主要な問題に直面します。

 メンテナンス費用

UI 自動テストはインターフェイス要素の位置と操作に依存しており、インターフェイスの変更に敏感であるため、インターフェイスの設計が変更されると、テスト スクリプトが無効になる可能性があります。したがって、テスト スクリプトをタイムリーに更新する必要があるため、UI 自動テストのメンテナンス コストが増加します。

 学習コスト

UI 自動テストでは、特定のテスト フレームワークとツールを使用する必要があります。多くのツールの学習曲線は比較的急です。対応するプログラミング言語とツールの使用法を習得する必要があるだけでなく、テスト設計スキルも習得する必要があり、学習時間が増加します。テスターのコスト。

4. UI 自動テストの効率を向上するにはどうすればよいですか?

UI 自動化テストでは手動操作インターフェイスをシミュレートする必要があるため、タスクを完了するまでに比較的長い時間がかかります。特にテストケースの数が多い場合、UI自動テストの実行時間は長くなります。これは、UI 自動化テストの原則により、インターフェイス自動化ほど迅速に実行できないと判断されているためです。UI 自動テストの効率を向上させる主な方法は次のとおりです。

1. ユースケースの選択戦略を改善する

コアビジネスや安定したビジネスのユースケースについては、明確な優先順位を最初に定義して、これらのユースケースが最初に実行されるようにすることができます。明らかにされていないユースケースについては、ビジネスの重要性とリスクの優先順位に基づいて選択し、テストの範囲を徐々に拡大できます。

2. ユースケースの作成を簡素化する

繰り返されるテスト ステップを抽象化し、変数とループ構造を使用して実装することで、異なるテスト データごとに独立したテスト プロセスを作成する必要がなくなります。テストプロセス制御機能により、条件判断による実行分岐を制御し、テストプロセス中の無駄な処理を回避し、冗長な操作を削減します。

3. アサーション設定を減らす

アサーションの使用方法は、できる限り簡潔かつ効率的である必要があり、ユースケース設計の初期段階でアサーションの必要性を考慮し、不要なアサーションの設定を減らし、アプリケーションとの通信頻度を減らすことで実行速度を向上させます。

4. テストステップのスクリーンショットを減らす

同じコンテンツのスクリーンショットを繰り返し撮影することを避けるために、必要な手順でのみスクリーンショットを撮影してください。大きなサイズの画像ファイルの傍受を減らし、リソースの使用量を削減します。

5. 適切なテスト待ち時間を設定する

テスト環境の特性を分析し、安定性や応答速度に基づいて待ち時間を設定します。インテリジェントな待機メカニズムを使用して、操作を実行する前に UI 要素がロードされるのを待機し、過度の待機時間を回避します。

6. マルチスレッドを有効にする

テスト ケースの依存関係を分析し、独立したテスト ケースを異なるスレッドで同時に実行します。システムリソースを効果的に利用し、並列実行により全体的な速度を向上させます。

7. サーバー構成を改善する

サーバーの処理能力とメモリ容量を増やして、UI 自動テストに十分なリソースを確保します。負荷分散テクノロジーを使用してリクエストを複数のサーバーに分散し、全体的な実行速度とパフォーマンスを向上させます。

5.MeterSphere自然言語UIの自動テスト

MeterSphere オープンソースの継続的テスト プラットフォームは、テスト トラッキング、インターフェイス テスト、パフォーマンス テスト、UI テストなどの機能モジュールをカバーします。MeterSphere の UI テスト モジュールは、Selenium ブラウザ自動化ソリューションに基づいて構築されており、再利用性の高いテスト スクリプトが組み込まれているため、テスト チームは複雑なコードを記述することなく、ローコードの自動テストを実行できます。

1. 自然言語で書かれており、メンテナンスコスト、学習コストが低い

① 維持費が安い

どのようなテストツールであっても、メンテナンスコストをゼロにすることはできません。製品がToBであるかToCであるかに関係なく、顧客と対話する必要があります。したがって、製品のリリース、インターフェイスの更新、特定の休日の運用活動などはすべて、製品に変更を加える原因となります。したがって、一定のメンテナンス コストは避けられませんが、適切なテスト ツールを選択し、良いテスト習慣を身に付けることで、UI 自動テストのメンテナンス コストを効果的に削減できます。

MeterSphere オープンソースの継続的テスト プラットフォームの UI テスト モジュールは、要素、命令、シナリオの自由な組み合わせと自由な参照をサポートしています。要素は最も基本的なコンポーネントであり、指示は一般的なテスト ステップの集合を表し、シナリオは通常、完全なビジネス プロセスです。MeterSphere プラットフォームでは、命令およびシーン内で要素を参照でき、また命令とシーンが相互に参照することもできます。製品のインターフェースが変更されると、それに応じてインターフェース要素も変更されますが、このとき要素を更新することで、その要素を参照している命令やシーンの要素情報も自動的に更新され、過剰なメンテナンスコストや作業負荷を軽減できます。要素を維持すること。同様に、ビジネス プロセスが変更され、既存の命令やシナリオが追加、削除、修正、編集された場合、すべての参照関係が同時に更新され、柔軟なリファレンス設計により、その後のテストのメンテナンス コストが大幅に削減されます。

図 2 は、MeterSphere ページ オブジェクト モードに基づいて作成された「急ぎ購入」UI 自動化シナリオのテスト モデルです。

▲図2 MeterSphereベースの「急ぎ購入」UI自動化シナリオのテストモデル

②学習コストが低い

市場には、ブラウザー インターフェイス、モバイル アプリケーション、デスクトップ アプリケーションなどに基づくものなど、多くの自動テスト フレームワークが存在します。選択するときは、まず、豊富なプロジェクトによってテストされている一般的な自動テスト フレームワークを選択する必要があります。次に、Java や Python などの主流の開発言語で書かれたテスト フレームワークを選択する必要があります。汎用性が高いだけでなく、将来的にも使用できるため、使用中に問題が発生した場合に適切な解決策を見つけやすくなります。

MeterSphere オープンソース継続的テスト プラットフォームの UI テスト モジュールは、Selenium オープンソース フレームワークと完全な互換性があります。UI テスト スクリプトは自然言語プログラミングを使用して実装されており、操作命令はビジュアル コントロールの形式でカプセル化されており、テスターはコードを記述することなく、インターフェイス ベースのクリック、ドラッグ アンド ドロップ操作によってテスト スクリプトを完成させることができます。

■ 従来のコーディング実装

▲図3 従来のコーディング実装

■MeterSphere自然言語オーケストレーションの実装

▲図4 MeterSphereの自然言語オーケストレーションの実装

2. コード実装と比較した自然言語 UI 自動テストの利点

従来のコーディングで実装された UI 自動テストと比較して、自然言語で記述された UI 自動テストの利点は次のとおりです。

■ 高効率化

自然言語 UI 自動化により、テスト ケースを迅速に作成し、手書きコードの時間とエラー率を削減し、テスト効率を向上させることができます。

■下限閾値

プログラミング言語に慣れていないテスターに​​とっては、自然言語で書く方が簡単に始められ、学習や使用の敷居が低くなります。

■より直感的な操作が可能

インターフェイスベースのオーケストレーションを通じて、テスト担当者はテスト ケースの操作プロセスをより直観的に理解できるため、エラーの発見と修正が容易になります。

■ メンテナンスが容易になります

視覚的なインターフェイスのレイアウト設計により、テスターはテスト ケースを簡単に保守および更新できます。共通のテスト要素を変更してテスト ケースを同期的に更新し、アプリケーションや要件の変更に迅速に対応します。

一方、コードを使用する方法では、テスターはプログラミング言語やフレームワークの知識を習得する必要があり、細部まで慎重に考慮してコードを記述する必要があり、比較的間違いが発生しやすいです。同時に、コードの実装方法は維持および変更が比較的難しく、コードのロジックと構造をより深く理解する必要があります。したがって、UI 自動テストの観点からは、自然言語オーケストレーションを使用することがより効率的で直感的な方法です。

Lei Jun: Xiaomi の新しいオペレーティング システム ThePaper OS の正式版がパッケージ化されました。Gome App の抽選ページのポップアップ ウィンドウは創設者を侮辱しています。Ubuntu 23.10 が正式にリリースされました。金曜日を利用してアップグレードするのもいいでしょう! Ubuntu 23.10 リリース エピソード: ヘイトスピーチが含まれていたため、ISO イメージが緊急に「リコール」されました 23 歳の博士課程の学生が Firefox で 22 年間続いた「ゴーストバグ」を修正しました RustDesk リモート デスクトップ 1.2.3 がリリースされましたWayland を強化して TiDB 7.4 をサポート リリース: MySQL 8.0 と正式互換. Logitech USB レシーバーを取り外した後、Linux カーネルがクラッシュしました. マスターは Scratch を使用して RISC-V シミュレータをこすり、Linux カーネルを正常に実行しました. JetBrains が Writerside ツールを開始しました技術文書の作成に。
{{名前}}
{{名前}}

おすすめ

転載: my.oschina.net/u/4736111/blog/10116739