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
800
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
パラメタライズドテスト
社内向けにパラメタライズドテストを紹介したときの資料です。
おもにRubyist向けで、RSpecでのテストの書き方をわかっている人向けです。
shigeru. nakajima
July 11, 2022
More Decks by shigeru. nakajima
See All by shigeru. nakajima
.NETでruby.wasmを動かしてみた
ledsun
0
94
Introduce dRuby
ledsun
0
570
Watching Ruby in browsers
ledsun
0
360
Using Ruby in the browser is wonderful
ledsun
1
5.3k
Rubyで書いたテトリスをブラウザで動かしてみた
ledsun
0
2.7k
ruby.wasm に関する進捗報告
ledsun
0
1.5k
Hacking Guide of the ruby.wasm
ledsun
0
2.1k
私の作ったruby.wasm アプリケーション
ledsun
0
910
Load gem from browser
ledsun
2
2.2k
Other Decks in Programming
See All in Programming
Cloudflare is Agents
chimame
0
190
AI駆動開発にグラフDBを重ねてみた
satoshi256kbyte
2
620
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
650
ソフトウェアラスタライザ
fadis
1
770
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.4k
AI時代に学ぶ 好きなルール 嫌いなルール Linter編
shorty5121
0
760
数年滞っていたダークモード対応をおよそ2週間で完了させる
chigichan24
0
210
[DroidKaigi 26] How We Moved from Android Studio to Slack
thisaay
0
150
LL言語やWebフレームワークのPostgreSQL対応 〜DBの機能がユーザーに届くまで〜
kentaroutakeda
0
120
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
260
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
レビュー履歴をAIに食わせて、 Compose移行を加速するs
shihochan
0
260
Featured
See All Featured
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
370
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
67
57k
Exploring anti-patterns in Rails
aemeredith
3
490
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Between Models and Reality
mayunak
4
440
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
360
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
510
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.2k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
260
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
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