ctrn v0.1.4
Continuous Testing wRapper for NodeJS
概要
継続試験を簡易に実施するためのテストラッパー
試験実施の際には以下のようなフローを使用することが多いため、
その反復実行を容易にすることを目的とする
- テストデータ準備 (DB投入)
 - 試験実施
 - 結果取得 (DB, ログ)
 - 結果判定
 
使用方法
必要ファイル を用意し、以下の手順で実行する
npm install ctrn
npm run ctrn [config.yml]必要ファイル
config.yml 作成方法
config.ymlという形式で処理シナリオを定義する
以下のフォーマットに記載される処理を上から実施するため、実行するシナリオの通りに羅列する
config.yml 記載フォーマット
[処理名]:
  process: [機能名]
  args:
    [引数名]: [値]| 概要 | |
|---|---|
| 処理名 | 実行する処理の名前を設定 | 
| 機能名 | 機能 にある機能名を記載 | 
| 引数名 | 各 機能 にある機能に使用する引数を指定 | 
| 値 | 該当引数に設定する設定値を記載 | 
機能
Dump - DBダンプ取得
機能概要
データベース内 該当テーブルに存在するデータを取得、CSVとして出力する
Example
dump:
  process: dump
  args:
    tables: 
      - [table]
      - [table]
    out_path: [path]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| tables | 取得テーブル名 | リスト, 文字列 | - | - | 〇 | 
| out_path | 出力先パス | 文字列 | - | ※1 | 〇 | 
※1: 実際には出力先パス配下にテーブル名.csvの形式で出力されます
Echo - ログ出力
機能概要
引数に指定した値をログに出力する
Example
echo:
  process: echo
  args:
    [key]: [value]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| key | 出力キ― | 文字列 | - | - | 〇 | 
| value | 出力値 | 文字列 | - | - | 〇 | 
Explore Log - ログ収集
機能概要
対象区間におけるログを取得する
AWS CloudWatch / Datadog Logs を対象
Example
explore_log:
  process: explore_log
  args:
    application: [application]
    from: [from]
    to: [to]
    query: [query]
    out_path: [path]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| application | 取得対象アプリケーション名 | 文字列 | - | - | 〇 | 
| from | 取得区間 From | 日時 | - | - | 〇 | 
| to | 取得区間 To | 日時 | - | - | 〇 | 
| query | 取得条件 | 日時 | - | - | 〇 | 
| out_path | 取得ログ出力先 | 日時 | - | ※1 | 〇 | 
※1: 出力パス配下に log_typefromto.log の形式で出力されます
Export - 変数設定
機能概要
引数に指定した値をユーザ設定変数として設定する
Example
export:
  process: export
  args:
    [key]: [value]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| key | ユーザ設定変数名 | 文字列 | - | - | 〇 | 
| value | 設定値 | 文字列 | - | - | 〇 | 
Insert - DBデータ投入
機能概要
該当テーブルにデータを投入する
投入する対象のデータはCSV形式で指定する
Example
insert:
  process: insert
  args:
    in_dir: [path]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| in_dir | 取得データディレクトリ | 文字列 | - | ※1 | 〇 | 
※1: ディレクトリ配下 table.csvを取得し、該当テーブルに登録します
MatchCSV - CSV突合
機能概要
期待値と実績値のCSV間突合を行い、期待値通りの結果が得られていることを確認する
Example
match_csv:
  process: match_csv
  args:
    expect_path: [path]
    actual_path: [path]
    out_path: [path]
    check_type: [check_type]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| expect_path | 期待値データパス | 文字列 | - | ※1 | 〇 | 
| actual_path | 実績値データパス | 文字列 | - | ※1 | 〇 | 
| out_path | 結果出力パス | 文字列 | - | ※1 | 〇 | 
| check_type | 比較 | 文字列 | - | complete / contain ※2 | 〇 | 
※1: CSVファイル名、もしくはディレクトリ名を指定します
     ディレクトリ指定の場合には配下の同一CSVファイル間を突合します
※2: completeの場合、入出力の行数一致まで確認する / containの場合、実績値データ内に期待値がすべて含まれることを確認する
一致確認条件
以下条件を満たす場合に突合OKとなる
期待値・実績値がディレクトリ指定の場合
- 期待値ディレクトリ内に存在するファイルに該当する実績値データが存在する
ファイル名が期待値・実績値で一致すること - 各期待値ファイルに関して以下を満たすこと
- 期待値ファイル内各行について該当カラムが実績値ファイル内に存在するすること
 - 期待値ファイル内に存在しないカラムについては任意値をとる
 - check_typeがcompleteの場合、期待値ファイル内各行がすべて実績値ファイルに存在し、余剰な行が存在しないこと
 
 
期待値・実績値がファイル指定の場合
- 指定された期待値ファイルに関して以下を満たすこと
- 期待値ファイル内各行について該当カラムが実績値ファイル内に存在するすること
 - 期待値ファイル内に存在しないカラムについては任意値をとる
 - check_typeがcompleteの場合、期待値ファイル内各行がすべて実績値ファイルに存在し、余剰な行が存在しないこと
 
 
Send Request - APIリクエスト送信
機能概要
ツールを用いてのAPIリクエスト送信を実施する Newman(Postman)での実行形式をサポートする
Example
send_request:
  process: send_request
  args:
    request_json: [path]
    out_dir: [path]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| request_json | API実行リクエストjson | 文字列 | - | ※1 | 〇 | 
| out_dir | 結果ファイル保管用ディレクトリ | 文字列 | - | ※1 | 〇 | 
※1: ディレクトリ配下に結果ファイルを配置します 実行結果はjson,html形式の2つで出力されます
Wait - 指定時間待機
機能概要
指定時間だけ実行待機をする
単位はMS
Example
wait:
  process: wait
  args:
    time: [time]引数
| 引数名 | 概要 | 入力型 | デフォルト値 | 設定可能値 | 必須 | 
|---|---|---|---|---|---|
| time | 待機時間(ms) | 数値 | - | 0以上整数 | 〇 | 
環境変数
env.jsonを実行フォルダ直下に配置することで全体の環境変数を設定することが可能
設定できる変数の一覧は以下
API
{
    "api": {
        "request_type": "xxxx"
    }
}| 変数名 | 概要 | デフォルト値 | 
|---|---|---|
| request_type | APIリクエストに使用するツール | - | 
DB
{
    "db": {
        "db_type": "xxxx",
        "server": "xxxx",
        "port": "xxxx",
        "database": "xxxx",
        "user": "xxxx",
        "password": "xxxx"
    }
}| 変数名 | 概要 | デフォルト値 | 
|---|---|---|
| db_type | 接続先DB種別 | - | 
| server | 接続先server URL | - | 
| port | 接続先DBポート番号 | - | 
| database | 接続先DB名 | - | 
| user | 接続ユーザー名 | - | 
| password | 接続ユーザーパスワード | - | 
Log
{
    "log": {
        "log_type": "xxxx"
    }
}| 変数名 | 概要 | デフォルト値 | 
|---|---|---|
| log | ログ取得の対象となるサービス | - | 
AWS
{
    "aws": {
        "region": "xxxx",
        "access_key_id": "xxxx",
        "secret_access_key": "xxxx"
    }
}| 変数名 | 概要 | デフォルト値 | 
|---|---|---|
| region | アクセス先リージョン | - | 
| access_key_id | 使用IAMのアクセスキー | - | 
| secret_access_key | 使用IAMのシークレットキー | - | 
DataDog
{
    "datadog": {
        "apikey": "xxxx",
        "applicationkey": "xxxx"
    }
}| 変数名 | 概要 | デフォルト値 | 
|---|---|---|
| apikey | Datadogアクセスキー | - | 
| applicationkey | Datadogアプリケーションキー | - | 
変数設定
各パラメータには変数設定を行うことが可能${変数名} という形式で記載すると
システム変数 および ユーザ設定変数 に設定されている変数の実値を埋め込むことができる
システム変数
| 変数名 | 概要 | データ型 | 
|---|---|---|
| start_date | 処理実行時刻 | 日時 | 
| now | 現在時刻 | 日時 | 
ユーザ設定変数
ユーザ設定 に従う