自動テストで良い仕事をする方法、アリババの階層化された自動化の道を明らかにする

自動テストはソフトウェアテストテクノロジーの大きな進歩です。自動テストによって作業効率が向上し、繰り返し作業が削減されることは誰もが知っていますが、実際には常にさまざまな問題が発生し、自動テストのブラインドゾーンにつながります。 。自動テストを行う方法は、多くの企業が緊急に解決したい問題です。AlibabaのワンストップR&D効率強化プラットフォームであるYunxiaoは、12月8日16:00に「Alibaba継続的インテグレーションおよび継続的デリバリーレイヤードオートメーション」のライブブロードキャストを開始し、企業に自動テストソリューションを提供します。今日はまずアリババのゲストのいくつかの解釈を見てみましょう。

ゲスト紹介:Jin Tong:Alibaba B2Bビジネスグループのシニアプロダクトマネージャー。長年インターネットシステムの研究開発とテストに従事。現在、彼は主にクラウド効率の階層化自動テストの製品設計を担当しています。

自動テスト

いわゆる自動テストは、プログラムによるユーザーの手動操作をシミュレートするテスト方法であり、テスターが反復的で退屈な手動テストから解放されるのに役立ちます。しかし、自動化の実践の過程で、テスターはしばしば理想と現実の間に大きなギャップがあることに気づきます。
ここに画像の説明を挿入
上の画像は、今週のアリの部門の自動化の失敗の数が、見つかったバグの数に比例しないだけでなく、テスターが41回の自動化の失敗を調査するための時間を浪費していることを確認することも難しくありません。意味がなく、不必要で、技術的ではありません。

外部環境、ビジネスの変更、アプリケーション環境の問題、実行マシンの問題、データの問題、フレームワークの問題のすべてがなぜ多くの障害を引き起こすのですか?しかし、バグを見つける確率はそれほど低いのでしょうか。

長年にわたる自動化の実践と要約を組み合わせると、自動化には次のような欠点があります
ここに画像の説明を挿入

人件費が高い:特定の自動化フレームワークのコード言語を基本的に理解し、特定のコーディング能力を持ち、コードロジックを明確にする必要があります。それ以外の場合は、自動化の成功率に大きく影響する合理性、ロジック、ビジネス、堅牢性を確保する方法因子?自動テストスクリプト自体にバグがないことをどのように確認できますか?

環境コストが高い:開発環境、動作環境、スケジューリング環境など、コードに触れた経験のある学生は、環境のインストールを半日または1日未満で完了できないことを知っています。同時に、自動化がプロジェクト自動化プロセスまたはスケジュールされたモニタリングに接続されている場合、スケジューリングプラットフォームを開発する必要があります。テストグループがゼロから特定の会社、または会社に至るまでにかかる費用はどのくらいですか?これらを完了するには何人の工数が必要ですか?

効果:

図1の分析から、その影響を知ることができます。ただし、図1は、1週間のアリの特定の部門のサンプルにすぎず、41の調査が無駄になりました。そのような自動テストを1年間実行すると、どのような影響がありますか?そのような干渉障害がないことを確認できますか?失敗の数はバグの数に比例しますか?

カバー率:

自動化のカバレッジが低く、多くのブランチとロジックをカバーできないと不満を言う学生がよくいます。これは、主にこれらの学生の誤解によるものです。多くの人々は、UI自動化を自動化テスト全体と見なしています。ただし、システムのすべての機能ポイントのテストをカバーできる自動テストフレームワークがないため、「自動化」のカバー率は低いとの見方があります。自動化のカバレッジを増やす方法は?

適時性:

実際、図1の10のビジネス変更によって引き起こされた自動化の失敗は、この欠点の証拠です。いわゆるビジネス変更とは、通常のプロジェクト変更を指しますが、スクリプトが時間内に更新されないために発生した自動化の失敗です。この失敗は、自動化されたテストが有用であることを証明するだけであり、テストの対象となるコンテンツが変更されれば、自動化をテストできます。スクリプトの適時性を向上させる方法は?

これらの問題に直面したとき、私たちは自分自身に問いかけるのを手伝うことはできません。自動テストを行うことは本当に必要ですか?必要に応じて、これらのコストを削減する方法とテスト結果を改善する方法は?継続的な練習の後、私たちは階層化された自動テスト戦略を導入しました。

階層的自動化の概念は何ですか?

階層的な自動化を理解する前に、自動化テストのピラミッドを見てみましょう。自動テストピラミッドはテスト分野でよく知られており、uiはページレベルのシステムテスト、サービスはサービスビジネステスト(インターフェーステスト)、ユニットはユニットテストを表します。ピラミッドが高いほど、必要な労力と作業負荷が大きくなります。
ここに画像の説明を挿入
単体テスト(unit):

モックフレームワークを介して、さまざまな異常シナリオをシミュレートできます。外部依存性が最も少なく、最小のテスト粒度を実現できるテストメソッドを使用できます。依存性が低いため、いつでもどこでも簡単に実行でき、トラブルシューティングも簡単です。これはすべてのテストの基礎です。

インターフェイステスト(サービス):

テスターは、システムの構造とシステム間のスケジューリングについて非常に明確である必要があり、同時にインターフェースの論理関係を理解する必要があります。そうしないと、インターフェーステストコードでいくつかの異常なシナリオを見逃しがちです。このレイヤーには、単体テストと比較して、いくつかのビジネスロジックと複数のインターフェイスの統合が含まれているため、外部依存関係が多くなり、問題の位置付けが単体テストレイヤーほど正確ではありません。したがって、投資は単体テスト以上のものになります。

ページテスト(UI):

これは一般的なブラックボックス自動テストシナリオです。これはユーザーの実際のシーンに最も近く、問題を見つけるのは簡単ですが、その実装コストは最も高く、外部に依存するのは簡単すぎるため、スクリプトの成功率に影響するため、ピラミッドの上部にありますが、ピラミッド全体ではありません。自動テストの欠点の80%は、UI自動化によるものです。

上記は、階層自動化の主要な3つのレイヤーです。階層自動テストは、システムをレイヤーに分割し、適切な自動化メソッドを使用してさまざまなレベルでテストするテスト戦略を提唱していることがわかります。プロジェクトを自動化でカバーできるかどうかは、テストリーダーの階層化戦略が合理的かつ包括的であるかどうかによって異なります。

実践により、単純に階層化された自動テストを使用する場合、R&Dテストの比率を最大で4:1に増やすことができ、Alibaba R&Dテストの平均比率は8:1になることがわかりました。

アリババのレイヤードオートメーションプラクティス

アリババの階層的自動化の長期的な実践において、自動化のコストと効果に関する2つの重要な欠点

画期的な成果を上げるには、レイヤー化された自動化ツールとプロジェクトプロセスの二重革命を実行し、最終的に業界をリードするR&Dテスト比率を達成します。

まず、レイヤードオートメーションツールの革命

UI、インターフェース、ユニットなどの自動テストフレームワーク、外部オープンソースフレームワーク、有償ソフトウェアなどには、多くの長所と短所があります。Alibaba Testは、複数のフレームワークの実践を統合し、それらを改善および革新し、従来の自動化フレームワークの多くの問題を解決し、自動化のコストを大幅に削減し、自動化の効果を向上させます。次の図に示すように、4つの重要なツール、AUIはUIオートメーションに焦点を当て、SATはインターフェースオートメーションに焦点を当て、Amonはユニットテストに焦点を当て、Perfはパフォーマンスに焦点を当てています。従来のテストフレームワークの弱点は完全に克服および変更され、最後にショットガンが置き換えられています。テスト効率を包括的に改善します。
ここに画像の説明を挿入
ここに画像の説明を挿入
それだけでなく、Alibaba Cloudは、図に示すように、Demand-Development-testing-releaseからプロジェクトプロセス全体でツールベースおよびプラットフォームベースの手動作業も実装します。

ここに画像の説明を挿入
開発リンクは、すべてのプラットフォームツールである分岐から、デプロイメント環境とセルフテストの単体テストに始まります。ワンクリックでの分岐、ワンクリックでの導入、ワンクリックでの単一のテスト統合。環境導入の結果や、findbugs、PMD、Sonarなどのコードスキャン結果を1杯のコーヒーで見ることができます。

テストプロセスでは、手動テストの有用なケースと欠陥という2つの主要な製品があります。プラットフォームが沈殿し、ファイル転送を行う必要がありません。上記で紹介した階層化された自動化関連のテストプラットフォームとツールに加えて、自動テストの効率が向上し、最終的に実現されますテスト作業全体のプラットフォームとツール。

第二に、プロジェクトプロセス革命

単一のツールのコスト削減と有効性の向上に加えて、クラウドの効率はプロジェクトプロセスも最適化します。

次の図は、私たちの一般的なプロジェクトプロセスを示しています。このプロセスでは、多くの場合、自動テスト作業にはテスト用の単一の自動テストフレームワークしかありません。
ここに画像の説明を挿入
これまでの分析では、階層的な自動化でプロジェクトの全機能をカバーできるため、次の図に示すプロセスに変更しました。

ここに画像の説明を挿入
このようなプロセスにより、長期的な実践の結果、R&Dテストの比率が最大で3:1に増加したことがわかりました。

これらのプロセスをもう一度見ると、テスト、特に自動テストが開発プロジェクトのプロセスとは無関係であることがわかります。このプロセスによって引き起こされる最も直接的な問題は、問題の自動検出がタイムリーではなく、セルフテストプロジェクトの開発に対する適切な介入保証がないことです。同時に、手動でトリガーされ、人的要因の影響が非常に大きくなります。これは、開発とテストの比率を制限するために重要です。理由。

私たちのプロジェクトが階層化された自動テスト戦略を使用し、そのトリガートラブルシューティング結果フィードバックを需要開発テストリリースプロジェクトプロセス全体に統合すると仮定すると、どのような効果が得られますか?何?

自動化された結果のフィードバックはリリースの必要な部分になりました、そしてすべての自動化されたテスト結果はリリースの重要な開発の部分になりました。

自動テストは、テストに関連するプロジェクトのテストにのみ使用できますか、それともテストに関連するリリースにのみ使用できますか?それを日常のビジネス保護に引き続き使用できますか?プロジェクトのバグの初期段階で問題を発見することは可能ですか?

テストツールの革命であろうと、テストプロセスの改善であろうと、私たちには多くの疑問があります。自動化されたテストを両刃の剣にするのは、これらの質問です。うまく使用すると、効率が大幅に向上し、コストが削減されます。うまく使用しないと、両刃の剣になる可能性があります。チキンリブは効率の改善を妨げます。したがって、自動テストの実施方法、階層自動化の階層戦略の把握方法、および階層自動化をプロジェクトプロセスに統合する方法を習得することは、企業が習得しなければならないテストスキルです。

良い記事をお勧めします:

自動テスト実施者はどのように仕事を選ぶのですか?将来のキャリア開発とは何ですか?

自動テストの基本、知っていることも知らないこともすべてここにあります!

悲しいスパイシーなストリップのパックで、トップ10の最高の自動テストツールを共有

ソフトウェアテストについて!あなたが知りたいすべてがここにあります、Xiaobaiは必見です!

自動テストを行う前に知っておくべきこと

10年間のソフトウェアテストエンジニアの認識-まだ混乱している友人へ

ソフトウェアテストにはどのような人が適していますか?

Python自動テストを理解するための知識(3)

PythonとJavaのどちらが自動テストに適していますか?

ソフトウェアテスターの日常業務

Python + Selenium自動テストを10分でプレイして、すぐに始めましょう!

最後に:エディターをフォローして、300ページのPDFドキュメントでPython自動テストエンジニアのコア知識の概要を受け取ることを歓迎します!ソフトウェアテスト技術交換グループ:(313782132)これらの資料の内容は、インタビュアーが面接中に尋ねる必要があるすべての知識ポイントです。この章には、基本的な知識、Linuxの基本、シェル、インターネットプログラムの原則、Mysqlを含む多くの知識ポイントが含まれますデータベース、パッケージキャプチャツールのトピック、インターフェイステストツール、高度なテスト-Pythonプログラミング、Web自動化テスト、APP自動化テスト、インターフェイス自動化テスト、高度な継続的統合テスト、テストアーキテクチャ開発テストフレームワーク、パフォーマンステスト、セキュリティテストなど。

おすすめ

転載: blog.csdn.net/weixin_50271247/article/details/108520388