これは
ソフトウェアテストあどべんとかれんだー2014 - connpass の4日目です
3日目
@ntddk さんの選択的シンボリック実行ツールS2E | 一生あとで読んでろ でした
4日目:Paraductでお手軽マトリクステスト
渋谷Ruby会議01でParaductをエクストリームリリースしました #428rk01 - くりにっき で書いたことの再編です
Paraductとは?
Paraduct = parallel + parameterize + product(掛け算の積)
複数のパラメータを組み合わせて平行してテストを実行するためのライブラリです
Jenkinsで複数のパラメータを組み合わせたマトリクステストしようとすると組み合わせの個数分だけジョブを作る必要があるので、Travis CI みたいにyamlでマトリクステストを実行できます。
Jenkinsだと
Paraductだと
script: ./build.sh work_dir: ./tmp/paraduct_workspace variables: ruby: - 2.0.0-p451 - 2.1.3 gemfile: - rails3_2.gemfile - rails4_0.gemfile - rails4_1.gemfile max_threads: 10 rsync_option: exclude_from: .paraduct_rsync_exclude.txt
variables
が組み合わせたいパラメータ
アーキテクチャ
- テストの組み合わせの個数分のディレクトリにrsyncでコピーする
- コピーしたくないファイルは
.paraduct_rsync_exclude.txt
で設定 - 各ディレクトリでテストを同時に実行
- テストが全部終わるまで待つ
インストール方法
gem install paraduct
- ruby 1.9以降で動きます
- paraductの実行に必要なのがrubyなだけで、シェルで実行できるテストであれば何でもマトリクステストできます
- paraductはパラメータを組み合わせてシェルを並列実行するためのラッパー
Paraductのメリット
- TravisCI以外でもマトリクステストを簡単にできるようになる
- gem installできる環境であればどこでも動く
Paraductのデメリット
- ローカルで実行するのでCPUやメモリのリソースを喰う
- テストスクリプト内からリモートサーバに接続しにいくようにすれば解決
- 排他制御も面倒
- 複数のテストで同一のDBを使うと排他ロックがかかるのでパラメータで動的にDB名を変える必要がある
- rbenv と相性が悪い
- 作ったばかりなので発展途上
Paradact を使う時のコツ
Railsアプリをビルドする時のサンプルスクリプト
5日目
id:igrep さんの igreque :: Info -> より「普通に」書くためのTest Doubleライブラリ「crispy」 #ruby #SWTestAdvent です