Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
パラメタライズドテスト
Search
shigeru. nakajima
July 11, 2022
Programming
0
640
パラメタライズドテスト
社内向けにパラメタライズドテストを紹介したときの資料です。
おもにRubyist向けで、RSpecでのテストの書き方をわかっている人向けです。
shigeru. nakajima
July 11, 2022
Tweet
Share
More Decks by shigeru. nakajima
See All by shigeru. nakajima
Introduce dRuby
ledsun
0
460
Watching Ruby in browsers
ledsun
0
150
Using Ruby in the browser is wonderful
ledsun
1
3.7k
Rubyで書いたテトリスをブラウザで動かしてみた
ledsun
0
2.5k
ruby.wasm に関する進捗報告
ledsun
0
1.2k
Hacking Guide of the ruby.wasm
ledsun
0
1.6k
私の作ったruby.wasm アプリケーション
ledsun
0
730
Load gem from browser
ledsun
2
1.9k
ゆっくり動くと速く動ける / If you move slowly, you can move more fast
ledsun
0
1.1k
Other Decks in Programming
See All in Programming
DroidKnights 2025 - 다양한 스크롤 뷰에서의 영상 재생
gaeun5744
3
290
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
370
ktr0731/go-mcpでMCPサーバー作ってみた
takak2166
0
170
Benchmark
sysong
0
210
Cursor Meetup Tokyo ゲノミクスとCursor: 進化と制約のあいだ
koido
2
1k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
140
AIコーディング道場勉強会#2 君(エンジニア)たちはどう生きるか
misakiotb
1
230
Prism.parseで 300本以上あるエンドポイントに 接続できる権限の一覧表を作ってみた
hatsu38
1
110
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
140
從零到一:搭建你的第一個 Observability 平台
blueswen
1
950
GoのGenericsによるslice操作との付き合い方
syumai
2
640
都市をデータで見るってこういうこと PLATEAU属性情報入門
nokonoko1203
1
510
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.4k
Speed Design
sergeychernyshev
31
1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
Why Our Code Smells
bkeepers
PRO
337
57k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
4
190
Typedesign – Prime Four
hannesfritz
42
2.7k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
BBQ
matthewcrist
89
9.7k
Designing for Performance
lara
609
69k
Transcript
パラメタライズドテスト 2022/07/08 株式会社ラグザイア 中島 滋
パラメタライズドテストとは? テストコードの書き方 名前がかっこいい 2 2
FizzBuzz 3 3
1から100までの数に対して 3で割り切れる数はFIZZ 5で割り切れる数はBUZZ 3でも5でも割り切れる数はFIZZBUZZと表示する。 それ以外の数は数字のまま表示する。 4 4
どんなテストをかきますか? 5 5
まず 3、5、15は入力します。 他にはなにかいれますか? 6 6
3、5、15のまわりの数字はどうでしょうか? 2, 4, 6, 14, 16 ... 7 7
1から100までの数 以外はどうなるでしょう? 0、1と100、101 も確認したいです。 8 8
RSpecで 9 9
context '数が1より小さいとき' do it { expect(fizzbuzz 0).to eq '' }
end context '数が100より大きいとき' do it { expect(fizzbuzz 101).to eq '' } end context '数が3で割り切れるとき' do it { expect(fizzbuzz 3).to eq 'FIZZ' } it { expect(fizzbuzz 6).to eq 'FIZZ' } it { expect(fizzbuzz 9).to eq 'FIZZ' } end 10 10
context '数が5で割り切れるとき' do it { expect(fizzbuzz 5).to eq 'BUZZ' }
it { expect(fizzbuzz 10).to eq 'BUZZ' } it { expect(fizzbuzz 20).to eq 'BUZZ' } end context '数が15で割り切れるとき' do it { expect(fizzbuzz 15).to eq 'FIZZBUZZ' } it { expect(fizzbuzz 30).to eq 'FIZZBUZZ' } it { expect(fizzbuzz 45).to eq 'FIZZBUZZ' } end 11 11
context '数が3でも5でも割り切れないとき' do it { expect(fizzbuzz 1).to eq '1' }
it { expect(fizzbuzz 2).to eq '2' } it { expect(fizzbuzz 4).to eq '4' } it { expect(fizzbuzz 7).to eq '7' } it { expect(fizzbuzz 8).to eq '8' } it { expect(fizzbuzz 11).to eq '11' } it { expect(fizzbuzz 13).to eq '13' } it { expect(fizzbuzz 14).to eq '14' } it { expect(fizzbuzz 16).to eq '16' } end 12 12
expect(fizzbuzz 3).to eq 'FIZZ' が、一杯でてくるのが気になる。 13 13
Don't repeat yourself 14 14
アサーション(expect~)の重複を解消する パラメタライズドテスト 15 15
[ [0, ''], [1, '1'], [2, '2'], [3, 'FIZZ'], [4,
'4'], [5, 'BUZZ'], # 中略 [101, ''] ].each do | number, answer | it { expect(fizzbuzz number).to eq answer } end 配列で、入力値と期待する結果をまとめる expect(fizzbuzz number).to eq answer をひとつに 16 16
パラメタライズドテストを サポートしている テスティングフレームワーク 17 17
NUnit 18 18
[TestCase(0, ExpectedResult = "")] [TestCase(1, ExpectedResult = "1")] [TestCase(2, ExpectedResult
= "2")] [TestCase(3, ExpectedResult = "FIZZ")] [TestCase(4, ExpectedResult = "4")] [TestCase(5, ExpectedResult = "BUZZ")] // 中略 [TestCase(14, ExpectedResult = "14")] [TestCase(15, ExpectedResult = "FIZZBUZZ")] [TestCase(16, ExpectedResult = "16")] [TestCase(100, ExpectedResult = "BUZZ")] [TestCase(101, ExpectedResult = "")] public string FizzBuzzTest(int number) { return FizzBuzz(number); } 属性でパラメーターと期待する値を指定 テストケースはひとつ 19 19
自分でeachやブロックを書かなくてよい 誰が書いても同じ書き方になる テストコードが読みやすい 20 20
.NET の世界のから 21 21
自慢 情報共有 22 22