Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
パラメタライズドテスト
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
shigeru. nakajima
July 11, 2022
Programming
820
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
110
Introduce dRuby
ledsun
0
580
Watching Ruby in browsers
ledsun
0
370
Using Ruby in the browser is wonderful
ledsun
1
5.4k
Rubyで書いたテトリスをブラウザで動かしてみた
ledsun
0
2.8k
ruby.wasm に関する進捗報告
ledsun
0
1.6k
Hacking Guide of the ruby.wasm
ledsun
0
2.1k
私の作ったruby.wasm アプリケーション
ledsun
0
930
Load gem from browser
ledsun
2
2.3k
Other Decks in Programming
See All in Programming
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
340
Materialが消えた日 〜真っ白なFlutterキャンバスにRenderObjectで絵を描く〜
umigishiaoi
0
140
Inertia Rails: The One-Person Framework with React & Friends
skryukov
0
210
8年前のNode.jsを動かして分かった、npm installの裏側
keisukeikeda
0
120
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
1
250
AWS CDKを理解するために公式の定義を深掘って解説してみる / Understanding AWS CDK by Digging into Its Official Definition
akihisaikeda
1
110
graphql-ruby を Spinel で速くしようとした話
mtsmfm
0
140
3回つくってわかった、 定期実行ジョブ基盤の本質情報
takai
4
3.6k
Performance Optimization With LLMs
xleitix
0
240
コーディング自動化の次へ。人の介入をゼロにするファクトリーとサポートAIによる実践
timakin
5
5k
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
1.4k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
550
Featured
See All Featured
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Paper Plane (Part 1)
katiecoart
PRO
2
12k
Deep Space Network (abreviated)
tonyrice
0
400
Test your architecture with Archunit
thirion
2
2.5k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
600
Statistics for Hackers
jakevdp
799
230k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
870
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.4k
Rails Girls Zürich Keynote
gr2m
96
14k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
440
Building AI with AI
inesmontani
PRO
1
1.4k
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