LoginSignup
10
9

More than 5 years have passed since last update.

【RSpec】テストケース(it)をまとめてRSpecを高速化する。

Last updated at Posted at 2015-10-02

大規模になればなるほど、テストが大切になります。
しかし、大規模になればなるほど、テスト実行時間は長くなりテストを回すのは億劫になります。
今回は、タイトル通りitのケースをまとめて多少の高速化をしましょうという内容です。

方法

ただ、itをまとめる。
まずは、10個のテストケースを1つのブロックの中に入れて実行してみます。

before

スクリーンショット 2015-10-01 19.41.57.png
これを、、

after

スクリーンショット 2015-10-01 19.42.08.png
こうするだけ。

結果

before

スクリーンショット 2015-10-01 19.52.50.png

項目 単位
ケース数 100[個]
実行時間 74.27[s]
1ケースあたり実行時間 0.74[s/個]

※補足

files took 11.8 seconds

とは、specを回す前にファイル読み込みにかかった時間です。
つまり、合計時間は実行時間+ファイル読み込み時間です。

after

スクリーンショット 2015-10-01 19.53.22.png

項目 単位
ケース数 10[個]
実行時間 10.09[s]
1ケースあたり実行時間 1.1[s/個]

実際に回してみるとわかりますが、かなり速くなっています。

分析

項目 before after
1ケースあたり時間 100% 148%
ケース数 100% 10%
実行時間 100% 15%

85%も実行時間を減らすことが出来ました。

しかし、現実問題10個のテストケースを1つにまとめるのは流石に出来ないでしょう。
そこで、次は、テストケース2つを1つにまとめた場合を実行してみます。

2つのテストケースを1つにまとめた場合

before

スクリーンショット 2015-10-01 20.20.02.png

項目 単位
ケース数 20[個]
実行時間 16.94[s]
1ケースあたり実行時間 0.85[s/個]

after

スクリーンショット 2015-10-01 20.20.53.png

項目 second
ケース数 10[個]
実行時間 10.28[s]
1ケースあたり実行時間 1.03[s/個]

分析

項目 before after
1ケースあたり時間 100% 121%
ケース数 100% 50%
実行時間 100% 61%

実行時間を85%削ることは出来ませんでしたが、それでも40%も減らすことが出来ました。

まとめ

テストケース 実行時間
100% 100%
50% 61%
10% 15%

だいたい、2つを1つにまとめると、実行時間を40%削減
3つを1つにまとめると、実行時間を60%くらい削減できそうです。
是非、試してみてください。

10
9
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9