自動テストについて説明するには 1 分しかかかりません

現在、自動テストは新しいものではなく、さまざまな自動テスト方法論が後を絶たずに登場しています。しかし、自動テストを理解し、うまく実装できるチームは多くありません。一般的なテスト方法に自動化を導入しましょう… …

まずは、職務要件から始めましょう。最近の求人を見てみると、「ソフトウェアテストエンジニア」となると、基本的には自動テストが求められます。例えば:

  • Selenium、appium、またはその他の自動テスト フレームワークについて学ぶ
  • 少なくとも 1 つのオブジェクト指向開発言語に精通しており、ある程度のコード スキルがあることが好ましい
  • Java または Python に精通しており、一定のテスト自動化の経験とコードの読み取り能力がある
  • インターフェイス統合テストを理解し、JMeter、Postman、SoapUI、およびその他のインターフェイス テスト ツールを使用する

待ってください。上記の内容は 1 つずつリストされるわけではありません。突然、テストエンジニアの自動テスト機能が標準になったかのように、自動テストがあらゆる場所で花開きました。この記事では、自動テストの要件から始めて、自動テストのリテラシーを簡単に説明し、誰もが 1 分以内に自動テストを理解できるようにします。

それでは「自動テスト」という5つの言葉から分析していきます。

テスト

テスト: これについてはよく知っています。最も古典的な説明の 1 つは、「プログラム テストはエラーを見つけるために実行されるプロセスである。」GJMyers の古典的な書籍「The Art of Software Testing」にあるこの定義は、テストの本質であるプロセスを示しています。

テストは、次のようなソフトウェア エラーを見つけるために実行されるプロセスです。

  • テスト対象のソフトウェアを実行し、ソフトウェアの機能を実行します。
  • 他のツールを実行してソフトウェアの内部と外部をチェックする

全体として、それはプロセスであり、実行のプロセスです。次に、最も一般的なテストの概略図を示します。

例: テスト監督者はテスト エンジニアにソフトウェアのすべての機能を確認するように依頼し、テスト エンジニアはマウス、キーボード、マイク、携帯電話のタッチ スクリーンなどを使用してソフトウェアのすべての機能を確認しました。 ? このテストに詳しい子供靴であれば、これが伝説の「手動目視検査」、つまり「人体検査」であることを理解しています。

この絵はよく描きましたが、実際はこんな感じです。

オートメーション

ここまでの説明と組み合わせると、自動テストとは、テスト対象のソフトウェアを単独で実行させてソフトウェアの機能を実行させたり、他のツールを単独で実行させてソフトウェアの内部と外部をチェックしたりすることを指します。

  • テストはプロセスであるため、自動テストは自動的に実行されるプロセスです。

次に、中心的な問題である自動について説明します。自動とは何ですか? 機械は自動的に動きます、それは自動です。人間の要件に従ってソフトウェアのすべての機能を機械に実行させる、これが自動化です。これで分かりやすくなりましたか?

ここで重要なのはマシンです。機械を動かしましょう。これは「鶏肉を食べる」のではなく、人間が機械に動作を命令するのです。子供用の靴がそれを考えたかどうかはわかりませんが、機械はどのようにして人間の要求を知るのでしょうか? 上記の例では、試験監督者が試験技術者に伝えるだけでオーダー送信が完了します。しかし、人間と機械の直接的なコミュニケーションは、人間と機械のコミュニケーションよりもはるかに簡単です。

  • まず、機械は中国語でも英語でも「人間の言葉」を理解できません…。
  • 第二に、マシンがデフォルトで認識する「アセンブリ言語」は、ほとんどの子供には理解できないはずであり、短期間で習得することはできません。

さて、「プログラミング言語」について。別のグラフを取り出してみましょう。

機械によるプログラミング言語の学習は、とんでもないほど簡単かつシンプルです。インストールすれば、機械がそれを学習します。幸いなことに、人間がプログラミング言語を学ぶことは特に難しいことではありません。これは機能するようです。

プログラミング言語には人間とコンピューターのコミュニケーションの橋渡しがあり、残りは機械がツールを選択できるようにするだけです。対応するテストを実行するには、自動化が自動的に行われるように、対応するツールを見つける必要があります。ここに来て、子供たちの靴の基本的な「自動」原理を理解していただければ幸いです。

同様に、この自動テストの概略図を描きます。

次に、自動テストについての議論を続けるために、さまざまな一般的なツールを紹介します。先に進む前に、一般的に使用されるテストのカテゴリを見てみましょう。ここでは、さまざまな分類次元の下で、それらをさまざまなテストに分割でき、ここではそれらを注意深く分析します。

  • ソフトウェアテストの実践プロセスから、単体テスト、結合テスト、確認テスト、システムテスト、受け入れテスト…。
  • ソフトウェアのテスト方法と戦略の観点から: ホワイト ボックス テスト、ブラック ボックス テスト、グレー ボックス テスト...
  • ソフトウェアテストのテストの観点から: 機能テスト、パフォーマンステスト、互換性テスト、セキュリティテスト、探索的テスト...
  • ソフトウェアテストの技術レベルから: 手動テスト、自動テスト、テスト開発...

これらの次元での分類は、広義の「人体検査」のうち「人による目視検査」で完了できる検査は一部のみで、残りは実際には機械を必要とします。テストのこの部分を抽出します: システム テスト -ブラック ボックス テスト- 機能テスト - 手動テスト。現在、この範囲がソフトウェア テスト担当者の主要なカバー領域であることは否定できません。この範囲外の場所では自動テストが役に立ちます。

自動テスト

次に、主流の自動テスト ソリューションについて説明しますが、それらは例外なく、人間とコンピューターの通信のためのプログラミング言語と、機械を操作するためのツールで構成されています。

  • 機能自動テスト
  • VBScript + QTP (HP UFT)、商用機能自動テスト ソリューション
  • Python/PHP/Java/C#/JavaScprit/Ruby + Selenium/Appium + 単体テスト フレームワーク、オープンソースの機能自動テスト ソリューション
  • ここでもう少し詳しく紹介すると、Selenium/Appium自体はテストツールではなく、マシンがブラウザを操作するために使用するツールであり、このツールは複数の言語を理解できます。
  • Java、C#、これら 2 つの重い (zhòng) 言語
  • Python、Ruby、2 つの軽量スクリプト言語
  • PHP、JavaScript、Webを扱うことに特化した2つの言語
  • このツールと指定された言語を追加すると、マシンがブラウザを操作できるようになりますが、現時点ではテストすることはできないため、この機能自動化テスト ソリューションの構築を一緒に完了するには、各言語独自の単体テスト フレームワークが必要です。
  • また、業界では暫定的なソリューションとして、  Python 2 + Robot Framework + Selenium Libraryプラグイン+単体テストフレームワーク で構成されるテストソリューションも存在しますが、このソリューションは主に2つの点に基づいて著者によって推奨されません。 :
  • アイデア: これはキーワードベースのソリューションであるため、キーワードは QTP (HP UFT) の専門分野であり、Selenium の本来の目的ではありません。
  • テクノロジー: Python 2 はいずれ歴史の舞台から退きます。自動テストを最初から始める場合は、直接 Python 3 から始める必要があります。ただし、Robot Framework は Python 3 をサポートしていません...
  • Python/Java/C#/JavaScprit/Ruby + Gauge、もう 1 つのオープンソース機能自動テスト ソリューション
  • BDD コンセプトに基づいた Thoughtworks の自動テスト ツール
  • ゲージはそれ自体が完全なテスト ソリューションです
  • Gaugeは要件アナリスト(BA)からテストエンジニア(QA)までをカバーするテストソリューションです
  • Java/Python + Macaca、アリババの機能自動テストソリューション、ドキュメントが少ないのが欠点
  • JavaScript + TestCafe、DevExpress のオープンソース機能自動テスト ソリューション
  • pure node.js  - TestCafe は Selenium を使用せず、実際のブラウザーでテストを実行するためのプラグインを必要としません。Node.js 上に構築されているため、最新の開発ツールと統合して適切に動作します。
  • 追加のセットアップや構成は必要ありません - TestCafe はすべてセットアップされ、npm インストール直後にテストを実行します
  • 完全なテスト ツール - 単一の起動コマンドで、TestCafe はブラウザを起動し、テストを実行し、結果を収集し、レポートを生成します。
  • JavaScript + Postman、Web インターフェイス機能の無料の自動テスト ソリューション
  • オープンソースのWebインターフェース機能自動テストソリューション Groovy + SoapUI
  • パフォーマンスの自動テスト
  • Java/C + HP LoadRunner、商用バージョンのパフォーマンス テスト ソリューション
  • Java + JMeter、オープンソース版パフォーマンステストソリューション
  • Python + locust、オープンソース版パフォーマンステストソリューション

ここでは、アジャイル開発手法の創始者の 1 人である Martin Fowler から写真を借用しています。彼はテストのレベルを示すためにピラミッドの概念を借用しています。

実際、自動テストは UI (機能テスト) からコントラクト (インターフェイス テスト)、および基礎となるコード メソッド (単体テスト) までのプロセス全体をカバーします。自動テストをしっかりマスターしたい場合は、次の 3 つの領域の経験が必要です。

  • 多くのオープンソース テクノロジ ソリューションがオブジェクト指向プログラミングに基づいているため、プログラミング言語、オブジェクト指向プログラミングが推奨されます。
  • サードパーティのテスト ツールとテスト フレームワーク。主に公式 Web サイトのドキュメントを通じて学習します。
  • テストの概念と設計、ツール、言語はテストの手段にすぎず、テスト データの準備方法、テスト チェックポイントとテスト ステップの設定方法、これらがテストの成功または失敗を決定します。

さらに、包括的なフロントエンドおよびサーバー バックエンド テクノロジーにより、テストの実行が保証されます。さあ、子供靴、一分経ちましたか?

さて、自動テストについて学びましたか? ご不明な点がございましたら、著者の交換グループ (735745871) にご参加いただき、さらにコミュニケーションをとってください。

最後に、ささやかな努力

私の記事を注意深く読んでくださった皆さんに感謝します。あまり価値のあるものではありませんが、使用できる場合は持ち帰っても構いません。

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

情報取得方法:

おすすめ

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