【自動テスト】自動テストは必要ですか?

ディレクトリ

I.はじめに

2. 自動化の目的

3. 自動分類

4.自動化の実現

 

I.はじめに

一部のテスト交換グループでは、小規模なパートナーが「自動テストの方法は? 自動テストの学習に関する情報はありますか? 自動テストは素晴らしいですか?」と質問しているのをよく見かけます。本当に淘汰されるのか?」

多くのトラフィック アカウント所有者は大衆の心理を把握していると言わざるを得ません。クリックした人はコース販売の広告であるか、WeChat 公式アカウントをフォローしてテスト教材の大きなギフト パッケージを受け取っているに違いありません。

正直に言うと、私も以前、不安を感じながらも同じ質問をしたことがあります。毎回、試験資料の入った大きなギフトパッケージを受け取りたくないのですが……

もちろん、私の認識力が継続的に拡大し、私自身のテストシステムが継続的に改善されるにつれて、これらの心配は徐々に消えていきました。各技術リファレンスは適用可能なシナリオ、それが自分のチームに適しているかどうかによって異なり、地域の状況に適応することによってのみ最大の価値を発揮できます。

したがって、この記事を通じて自動テストについての私の理解を共有したいと思います。

2. 自動化の目的

作業を自動化すると、手動操作のコストが大幅に節約され、手動による反復操作が減り、チーム全体の研究開発効率が向上します。ただし、自動化システムの構築に長い時間がかかり、多くの人的リソースが投入されるが、ユーザーが手動で解決するには 2 ~ 3 分しかかからず、その操作が頻繁ではない場合や、プラットフォームの変更が繰り返される場合など、自動化された操作を必要とする作業は非常に高速であり、法律によれば、自動化されたツールは面倒な作業のように後から追いかけてきます。では、やはり自動化は必要なのでしょうか?

以前所属していたチームでは、テストデータの作成が非常に難しく、研究開発全体の効率に深刻な影響を及ぼしていましたが、当時は良い解決策がなかったため、その後、基礎研究開発チームが数値作成プラットフォームを構築しました。さまざまなフィールドを独自に設定し、テーブルの各フィールドの関連付けを整理し、最初から最後までシーンを 1 つずつ構築し、うっかり設定ミスをしてしまった場合、プロンプトを見ても原因を見つけることができません。これにより、数値を作成するプロセスに別の障害が追加され、不十分なテスト時間のために多くの時間がかかります。

タスクを実行する前に、タスクのインプットと利点を評価できれば、より合理的にタスクを実行できるでしょうか。それでは、自動テストの投資と利点は何でしょうか?

投資: 自動化プラットフォームを自動化および保守するためのスクリプトまたはツールを使用するテスターを通じて。

利点: テストの効率が向上し、テスターの成長が促進されます。

自動テストは本当にテスト効率を向上させますか? 本当にテスターの成長を改善できるのでしょうか? 後者については、あると思います。次に、自動テストによってテスト効率が向上するかどうかについて説明します。

3. 自動分類

自動化は大きくインターフェースの自動化とUIの自動化に分かれますが、UIの自動化はさらにWeb UIの自動化とアプリのUIの自動化に分かれますが、これにデプロイの自動化も加えるべきだと私は理解しています。

  • インターフェースの自動化
  • 導入の自動化
  • Web UIの自動化
  • アプリの UI オートメーション

次に、これら 4 つの自動化シナリオについて説明します。私は UI の自動化にあまり詳しくなく、触れたことがないため入出力比があまり高くないと思います。そのため、インターフェイスの自動化とデプロイメントの自動化に焦点を当てて、後ほど簡単に紹介します。 。

4.自動化の実現

4.1. インターフェースの自動化

インターフェース

インターフェイス テストは主に、外部システムと内部サブシステム間の相互作用ポイントを検出するために使用されます。テストの焦点は、データの交換、転送プロセス、およびシステム間の相互論理依存関係を確認することです。

プロセス

インターフェイスに入力し、パラメータを入力し、出力パラメータをアサートし、毎日定期的にビルドして、テスト レポートを出力します。

入力パラメータの範囲: 必須、オプション、はい/いいえ/null、タイプ、値のサイズ/値の範囲、特殊文字。

出力パラメータ: json、データ。

インターフェイスの関連付け: インターフェイス間の依存関係、データ転送。

アサーション: 応答を確認するには、ステータス コードまたはメッセージを確認します。

アドバンテージ

インターフェイスのテストでは、より多くのシナリオをカバーできます。

インターフェイスのテストにより、サーバー側の問題をより迅速に発見できます。

インターフェイスのテストは、継続的インテグレーションを自動化するのが比較的簡単です

インターフェイス テストは、単体テストよりもビジネス シナリオに近いものです。

テクノロジーの選択

1、メータースフィア

MeterSphere は、ワンストップのオープンソースの継続的テスト プラットフォームであり、テスト トラッキング、インターフェイス テスト、パフォーマンス テスト、チームワークなどの機能をカバーしており、オープン ソースおよび JMeter、Postman、Swagger などの主流標準と完全な互換性があります。

MeterSphereはフル機能のプラットフォームでオープンソースなので、小規模なチームであれば無料版でも十分に利用でき、敷居も比較的低く、高い技術力も必要ないので良い選択です。MeterShpre で使用されるテクノロジー スタックは SpringBoot+vue といくつかのミドルウェアであり、これをベースにした二次開発にも使用できます。

以前のチーム メンバーが共有した MeterSphere 金融会社の着陸体験を参照してください。この体験では、MeterSphere によって解決されたテストの問題点と操作チュートリアルが詳しく紹介されています。

2、パイソン

Python によるインターフェイスの自動化の場合、共通コンポーネントには、実行ライブラリのリクエスト、アサーション ライブラリの Unittest、テスト レポートの HTMLTestRunner、および通常の構築のための Jenkins の継続的統合が含まれます。

フレームワークのアイデア: カプセル化、データ駆動型。

Python を使用する場合は、特定のコーディング スキルを習得する必要があります。もちろん、これは個人的なスキルの向上に非常に役立ちますが、時間が限られており、十分な技術スキルがない場合は、やはり MeterSphere をお勧めします。

4.2. 導入の自動化

配備

デプロイメントとは、ソース コードを jar パッケージや war パッケージなどの実行可能なソフトウェア パッケージにコンパイルし、そのソフトウェア パッケージをターゲット環境に配置して実行し、クライアントから呼び出せるようにすることです。

プロセス

リモート ウェアハウスを通じてコードを取得し、フロント エンドとバック エンドをコンパイルし、ソフトウェア パッケージをターゲット マシンに配信し、サービスを再起動し、起動に失敗した場合はアラームを出します。

アドバンテージ

従来の手動展開と比較して、迅速でエラーが発生しにくく、配信効率が向上します。

テクノロジーの選択

gitlab または gitee:コードホスティング

git: バージョン管理

ノード: フロントエンドコンパイル

Maven: バックエンドのコンパイル

ansible: ファイルを送信する

シェル: サービスを再起動します

パイプライン: パイプライン建設

Jenkins: CICD マネージャー。上記のツールを統合し、ユーザーが展開プロセスを操作するためのページを提供します。

4.3. Web UI の自動化

UIの自動化

ページ要素の配置によって要素を特定し、クリック、入力、ドラッグ アンド ドロップなどのユーザーの操作動作をシミュレートします。

プロセス

要素を特定し、ユーザーのアクションをシミュレートし、テスト レポートを送信します。

アドバンテージ

メインプロセスに戻り、頻繁に変更しないシナリオに適しています。繰り返しの機能テストと検証に使用できます。私が以前所属していたチームは Web UI の自動化を行っていましたが、要件が頻繁に変更され、エネルギーが限られていたため、このプラットフォームの維持コストが比較的高く、将来的に継続的なメンテナンスは行われませんでした。

テクノロジーの選択

パイソン、セレン。

4.4. アプリの UI 自動化

UIの自動化

ページ要素の配置によって要素を特定し、クリック、入力、ドラッグ アンド ドロップなどのユーザーの操作動作をシミュレートします。

プロセス

要素を特定し、ユーザーのアクションをシミュレートし、テスト レポートを送信します。

アドバンテージ

メインプロセスに戻り、頻繁に変更しないシナリオに適しています。

テクノロジーの選択

アプリ。

結論: インターフェースの自動化とデプロイメントの自動化はメリットをもたらし、効率を大幅に向上させ、テスターの成長ももたらすことができると思います。


最後に、私の「自動テストエンジニアの学習ルート」を紹介したいと思います。

1. 自動テストに不可欠な Python プログラミング コンテンツ

 2. Web UI自動テストの基本内容

 

3. Web UI自動テストコンテンツ

 

4. APP UI自動テストの基本内容

 

5. APP UI自動テストの実践的な内容

 

6. APIインターフェース自動テストの基本内容

 

7. APIインターフェース自動テストの実践内容 

 

8. CI/CD継続的インテグレーション特殊技術

 

9. 自動テストフレームワークの実践技術

 

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

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

情報取得方法:


 

おすすめ

転載: blog.csdn.net/qq_56271699/article/details/131263624