npm.io
0.1.4 • Published 2 years agoCLI

ctrn

Licence
MIT
Version
0.1.4
Deps
12
Size
119 kB
Vulns
1
Weekly
0

Continuous Testing wRapper for NodeJS

概要

継続試験を簡易に実施するためのテストラッパー
試験実施の際には以下のようなフローを使用することが多いため、
その反復実行を容易にすることを目的とする

  1. テストデータ準備 (DB投入)
  2. 試験実施
  3. 結果取得 (DB, ログ)
  4. 結果判定

使用方法

必要ファイル を用意し、以下の手順で実行する

npm install ctrn
npm run ctrn [config.yml]
必要ファイル
  1. config.yml 設定方法
  2. 実行ファイル
  3. env.json 設定方法

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_type][from][to].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となる

期待値・実績値がディレクトリ指定の場合
  1. 期待値ディレクトリ内に存在するファイルに該当する実績値データが存在する
    ファイル名が期待値・実績値で一致すること
  2. 各期待値ファイルに関して以下を満たすこと
    1. 期待値ファイル内各行について該当カラムが実績値ファイル内に存在するすること
    2. 期待値ファイル内に存在しないカラムについては任意値をとる
    3. check_typeがcompleteの場合、期待値ファイル内各行がすべて実績値ファイルに存在し、余剰な行が存在しないこと
期待値・実績値がファイル指定の場合
  1. 指定された期待値ファイルに関して以下を満たすこと
    1. 期待値ファイル内各行について該当カラムが実績値ファイル内に存在するすること
    2. 期待値ファイル内に存在しないカラムについては任意値をとる
    3. 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 現在時刻 日時
ユーザ設定変数

ユーザ設定 に従う