01 ゲージとは
Gauge は、受け入れテストを作成および実行するための BDD フレームワークであり、次の機能があります。
-
Markdown のシンプルで柔軟な構文を使用して動作を記述する
-
複数のプラットフォーム (Windows、Linux、macOS) と複数の言語 (C#、Java、JavaScript、Python、Ruby) をサポート
-
プラグイン拡張機能のサポート
-
データ駆動型および外部データ ソース (CSV ファイル) をサポート
-
VSコードのサポート
Markdown 構文を使用して動作を記述するのが Gauge の最も特徴的な点ですが、次に環境の準備、プロジェクトの初期化、ユースケースの作成、データドライブ、運用、テストレポートなどを含めて詳しく説明します。
02 環境整備
1.Pythonをインストールする
Python のインストールは比較的簡単なので、ここでは説明しません。唯一注意すべき点は、Python バージョンが 2.7 以上である必要があることです。
2. ゲージ-1.1.1-windows.x86_64.exe をダウンロードします。
ダウンロードアドレス: https://github.com/getgauge/gauge/releases
インストールは比較的簡単で、「次へ」をクリックし、最後にゲージ.exe が配置されているパスの環境変数を構成するだけです。cmderにgauge -vと入力し、バージョン情報が出力されればインストールは成功です。
3. VS Code プラグインをインストールする
VS Codeにゲージプラグインをインストールする
03 プロジェクトの初期化
ドライブ E の virtual_workshop ディレクトリに、gauge_study プロジェクト ディレクトリを作成し、このディレクトリに切り替えて、gauge init python コマンドを使用してプロジェクトを初期化します。
初期化では、ディレクトリの階層化、環境構成などが行われ、英単語の母音の統計に関するプロジェクトの例 (example.spec、step_iml.py を参照) が示されました。
各ディレクトリの役割を以下に説明します。
-
env: 環境設定ディレクトリ
-
ログ: ログディレクトリ
-
spec: 動作を記述するディレクトリ ここに格納されるスペック ファイルは MarkDown 構文を使用して記述されます。
-
step_impl: ディレクトリを実装し、Python または他の言語を使用して仕様ファイルに記述されている動作を実行します
04 ユースケースの作成
1. 記述ファイルの書き込み
動作主導型であるため、最初に動作を説明し、次に動作を実装する必要があります。したがって、動作を記述する仕様ファイルの作成方法と、これらの動作を実装する方法が重要です。さて、次のような要件があります。
要件の説明
名前のタイプと長さをテストするには、通常、名前のタイプは文字列で、名前の長さは各文字の合計です。
テスト名の種類
名前「xxxx」の種類は「文字列」です
テスト名の長さ
名前「xxxx」の長さは「4」です
spec ディレクトリに name.spec 記述ファイルを作成し、MarkDown 構文を使用して次のように実装します。
まず、説明ファイルを記述するためのルールを説明します。
これまでのテスト ケースでは、テスト スイート、テスト セット、テスト シナリオ、テスト ステップという概念がありましたが、この概念はゲージにも当てはまります。Specs ディレクトリはテスト スイートと考えることができます。その下の各スペック ファイルはテスト セットです。各テスト セットには 1 つ以上のテスト シナリオが含まれ、各テスト シナリオには 1 つ以上のテストが含まれます。このように理解すると、多くのことが一目瞭然になります。
次に、記述ファイルspecファイルの基本的な書き方を例を挙げて説明します。
(1) テストセットの仕様
spec ファイルの開始マークは 1 つだけです。各仕様には少なくとも 1 つのテスト シナリオが含まれます。具体的な記述方法は「# 記述」です。もちろん、以下にコメントを追加することもできます。
-
ここでは主に、名前関数などのテストの機能モジュールについて説明します。
# 名前
これは名前のタイプと長さを記述する仕様ファイルです
(2)テストシナリオ シナリオ
各シナリオには少なくとも 1 つのテスト ステップ Step が含まれており、具体的な記述方法は「## description」です。
-
これは主に名前の種類や長さのテストなどのテストシナリオを記述したもので、機能モジュールを分解したものです。
## テスト名の種類
※「ベック」の種類は「文字列」である必要があります
(3)テストステップ ステップ
テストステップには、テストデータ「Beck」と期待される結果「string」を含めることも、含めないこともできます。具体的な記述方法は「* description」です。
-
各ステップはテスト シナリオの内訳です。
## テスト名の種類
※「ベック」の種類は「文字列」である必要があります
2. 実装方法の記述
記述ファイルを用意したら言語の実装、記述ファイルと実装方法の関係を簡単にまとめると以下のようになります。
上の図に示すように、各テスト メソッドはテスト ステップの記述を実装したもので、このステップを実装するためのメソッドを定義するだけで済みます。しかし、ここで問題となるのは、テスト データと期待される結果を使用してステップをどのように表現すべきかということです。
-
非常にシンプルです。すべての実パラメータの位置は <変数名> で表現できます。ステップは説明のみです。データの取得、データの処理、実際の結果の抽出、およびアサーションの具体的なロジックはテスト メソッドによって実装されます。ここにはデータが分離されているという感覚があります。
このアイデアに基づいて、step_impl ディレクトリに name_impl.py モジュールを作成し、getgauge.python モジュールから step メソッドを導入し、テスト メソッド test_name_type と test_name_length を記述し、デコレータ内でテスト メソッドに@step デコレータを追加します。パラメータは説明の内容ですが、<パラメータ名>を使用してパラメータ化されており、デコレータ内のパラメータはテスト メソッドに渡すことができます。
05 データドリブン
複数の名前をテストしたいとします。明らかに、行ごとにステップの説明を書いてテスト メソッドを 1 つずつ定義するのは非現実的であるため、データ ドライバーを使用する必要があります。Gauge はテーブルと CSV ファイルをサポートしています。まずテーブルを見てみましょう。
01フォーム
テーブルは記述ファイル name.spec で定義する必要があります。フォームをステップとして扱い、最初に対応するシナリオとステップを準備する必要があります。
name.spec にテーブル バッチ トラバーサル メソッド test_all_names_by_table を実装し、デコレータ @step() を追加します。デコレータ パラメータには、ステップ「タイプと長さを持つすべての名前」の内容も記述されますが、変数 < を追加する必要もあります。変数 table はテーブル オブジェクトを表すため、パラメータは「型と長さ <table> を持つすべての名前」になります。
では、テーブル内の各値をどのように調べればよいのでしょうか?
table.get_column_values_with_name (列名) を使用すると、対応する列の各値で構成される反復可能なオブジェクトを取得し、for ループを使用してそれを順番に走査できます。
02 CSVファイル
ゲージ_スタディ プロジェクトの下に新しいリソース ディレクトリを作成し、csv ファイルを保存します。テスト データを保存するための names.csv ファイルを定義できます。
次に、説明ファイル name.spec に説明を追加します。表と同様に、シナリオと手順を設定する必要があります。次に、csv ファイルのアドレス <table:resources/names.csv> への参照を追加する必要があります。ステップの説明。
最後に、name_impl.py に csv データ記述ステップを実装し、メソッド test_all_names_by_csv_file を作成し、デコレータ @step を追加します。パラメータは記述「<table> によって提供されるすべての名前」の一部です。
ここで注意する必要があるのは次のことです。
Table は csv オブジェクトを表します。テーブルを走査することによって取得されるデータは、最初の行の ["Beck", "string", "4"] などの各行のデータです。この反復可能なオブジェクトの要素は分解されて割り当てられます。順番に名前を付け、タイプ、長さを指定し、csv ファイル内のすべての値を取得します。
06 走る
これまでのところ、私たち自身で 4 つのユースケースを作成しました。それらをまとめてみましょう。
例 |
方法 |
データの保存場所 |
述べる |
単一の名前の型をテストする |
test_name_type(名前, タイプ) |
説明ファイル名.spec |
|
単一の名前の長さをテストする |
test_name_length(名前, タイプ) |
説明ファイル名.spec |
|
複数の名前のタイプと長さのテスト (表) |
test_all_names_by_table(テーブル) |
説明ファイル名.spec |
table.get_column_values_with_name (列名) の使用 |
複数の名前のタイプと長さをテストする (csv ファイル) |
test_all_names_by_csv_file(テーブル) |
リソースディレクトリ内の names.csv |
1. 記述ファイル内のcsvパスの参照 2. テーブルを走査して各行のデータを取得します。 |
これらのユースケースを実行するにはどうすればよいでしょうか?
-
Gauge は、すべてのスペック ファイルをバッチで実行する、特定のスペック ファイルを実行する、特定のスペック ファイルで特定のシナリオを実行するなど、多くの方法を提供します。
1. すべての仕様ファイルを実行します。
方法:gauge run
またはゲージランスペック
ここに 6 つのユースケースがあるのはなぜですか?
公式サンプルも動作するのであと2点あります。
2. 特定の仕様ファイルを実行する
name.spec の下で 4 つのユースケースのみを実行したい場合は、指定された spec ファイル名を追加する必要があります。
方法:gauge run specs/name.spec
4 つのユースケースのみが実行されたことがわかります。
3. 特定の仕様ファイルで特定のシナリオを実行する
name.spec には 4 つのユースケースに対応した 4 つのシナリオがありますが、テーブルデータを読み込むシナリオなど、現時点ではそのうちの 1 つのシナリオだけを実行したい場合は、この時点でどのように記述すればよいでしょうか。
方法:gauge run specs/name.spec:13
この13は何ですか?
実際には、name.spec ファイル内の対応するシーンの行番号です。
ご覧のとおり、テーブルごとに複数の名前をテストするシナリオが 1 つだけ実行されました。
07 試験報告書
実行後、レポート ディレクトリが自動的に生成されます。Index.html が最終テスト レポートであり、その相対パスはreports/html-report/index.htmlです。
ブラウザを使用してレポートを開くと、「外観」は悪くなく、すべてが正常に実行されていると感じます。どうでしょうか?そんな便利で高速なBDD自動テストフレームワークを試してみませんか?
最後に:以下の完全なソフトウェア テスト ビデオ チュートリアルが編集され、アップロードされています。必要な友人は自分で入手できます[100% 無料保証]
ソフトウェアテスト面接文書
私たちは高給の仕事を見つけるために勉強しなければなりません。以下の面接の質問は、アリババ、テンセント、バイトなどの一流インターネット企業の最新の面接資料からのものであり、バイトの上司の中には権威ある回答をしている人もいます。 set 面接情報に基づいて、誰もが満足のいく仕事を見つけることができると思います。