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
書きながら考えないRSpec
Search
Tetsu Nishimura
January 24, 2025
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
書きながら考えないRSpec
Tetsu Nishimura
January 24, 2025
More Decks by Tetsu Nishimura
See All by Tetsu Nishimura
Railsフロントエンド移行効率化 ためAエージェント利用方法
kitsunecat
0
24
生成AIで仕事をどうにかして怠ける話
kitsunecat
0
53
update_columnsについて無知だった話
kitsunecat
0
51
懺悔LT
kitsunecat
0
40
rake taskでメソッド定義したらテストが不安定になった
kitsunecat
0
98
ツクリンクで実践している 画像処理
kitsunecat
0
15
ツクリンクで実践している画像処理(フロー部分)
kitsunecat
0
210
Other Decks in Technology
See All in Technology
AIとハーネスで育てるトランスコンパイラ / 20260722 Yasushi Katayama
shift_evolve
PRO
3
780
GoでCコンパイラを作った話
repunit
0
150
全社でのソフトウェアサプライチェーン攻撃対策をやってみた with Takumi Guard
z63d
0
270
ダッシュボード"開発"について 〜使われるダッシュボードのつくりかた〜
kimichan
0
200
AI時代のPlaywright活用(システムテストを自動化する ー 実行エンジンにPla ywrightを選んだ理由)
ynisqa1988
2
930
副作用のある Lambda でも Lambda Power Tuning は使えるのか / lambda-power-tuning-side-effects
koukihosaka
1
140
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
890
アップデートで何が変わった?デモで学んで使いこなすIBM Bob2.0
muehara
0
230
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
270
Type-safe IaC for Dart
coborinai
0
180
AIが当たり前の組織で エンジニアはどう育つか
nishihira
1
970
AI Native なプロダクト組織の立ち上げ方 : 生産性 100 倍への挑戦
mikesorae
0
1.2k
Featured
See All Featured
Ethics towards AI in product and experience design
skipperchong
2
330
Rails Girls Zürich Keynote
gr2m
96
14k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6k
GraphQLとの向き合い方2022年版
quramy
50
15k
The Cost Of JavaScript in 2023
addyosmani
55
10k
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
240
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
380
Everyday Curiosity
cassininazir
0
260
Balancing Empowerment & Direction
lara
6
1.2k
Building AI with AI
inesmontani
PRO
1
1.1k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Transcript
© Tsukulink Inc. 書きながら考えないRSpec
自己紹介 なまへ:にしむらてつ 趣味:スノーボード、クライミング、スキューバダイビング すんでるとこ:長野県 おしごと:Webエンジニア(ツクリンクでは非機能面の改善を担当) 好きな言語・技術:Rust, TypeScript, TCP/IP(Routing, Swiching,
QoS)
リリース テスト テストコードはいつ書きはじめてますか? 実装 設計 要件定義
リリース テスト テストコードはいつ書きはじめてますか? 実装 設計 要件定義 さすがに早すぎ かけそう?
TDD 多そう 🔥🔥🔥
リリース テスト テストコードはいつ書きはじめてますか? 実装 設計 要件定義 さすがに早すぎ どっすか?
TDD 多そう 🔥🔥🔥
テスト設計やってみませんか
テスト項目書いてみよう あなたは「りんご銀行」ATMのテスト担当者です。 「りんご銀行」に口座を持っているお客様のATM引き出し手数料(以下、「手数料」)の条件は下記のとおりです。 • 平日の0:00~8:44は手数料が110円です。 •
平日の8:45~17:59は手数料が0円です。 • 平日の18:00~23:59は手数料が110円です。 • 土日祝日は終日手数料が110円です。 • 特別会員 のお客様は曜日や時間に限らず手数料が0円です。 手数料の出力を保証するために、どのようなテストケースが必要? ※「ソフトウェアテスト技法練習帳 ~知識を経験に変える40問~」 より抜粋
None
テスト技法
テスト技法どうですか テスト技法:ソフトウェアテストのテストケースを作成するための技法 1. テスト漏れを防げる • テスト技法を使うことで、条件や組み合わせを網羅的に洗い出せる 2. 曖昧な要件が明確になる
• テストケースを設計する過程で、どの条件でどの結果になるべきかを明示的に考える必要がある ため、要件が整理される 3. テストの信頼性が向上する • 系統立ったアプローチでテストケースを設計するため、手探りで作ったテストよりも一貫性と正確性 が高くなる
テスト技法のひとつ:デシジョンテーブルをためしてみる デシジョンテーブル 条件とそれに対応するアクションを整理・網羅的にテストケースにする手法。 条件とその組み合わせを表形式で表します。 無料で使えるツール • デシジョンテーブル作成支援ツール(β版) ◦
https://testcase-tool.vercel.app/decision_table • GIHOZ ◦ https://gihoz.com/ 参考「デシジョンテーブルテスト」テスト技法解説 https://www.veriserve.co.jp/helloqualityworld/media/20240125002/
あなたは「りんご銀行」ATMのテスト担当者です。 「りんご銀 行」に口座を持っているお客様のATM引き出し手数料(以下、 「手数料」)の条件は下記のとおりです。 • 平日の0:00~8:44は手数料が110円です。 • 平日の8:45~17:59は手数料が0円です。
• 平日の18:00~23:59は手数料が110円です。 • 土日祝日は終日手数料が110円です。 • 特別会員のお客様は曜日や時間に限らず手数料が0 円です。 デシジョンテーブルの条件を整理
デシジョンテーブル作成
デシジョンテーブル作成
デシジョンテーブルからテストケース一覧を出力
RSpecのコードにおとすとこうなる • セルフチェック漏れできる ◦ ここで適当なspecファイルにしてcommitもあり ◦ itの中身を { expect(true).to eq
false }にして failsさせるなど
RSpecのコードにおとすとこうなる だいたいcontext → ビジネスロジックの最小単位 であることがおおいのでコードにも落としやすい、かも。
あらためて... • 要件定義 • 設計 ◦ context単位はここで書いたほうがよくないすか •
実装 • テスト • リリース
他のテスト技法 • ペアワイズ法 • 状態遷移図 • 境界値分析と同値分割 参考になりますよ ソフトウェアテスト技法練習帳
~知識を経験に変える 40問~
もちろん万能ではない - デシジョンテーブルは記載した条件の妥当性までは確認できない - 要件が不明確なまま取り掛かると十分に発揮できない - あくまでテストケースの網羅であり、どの種類のRSpecにするかはタッチしない
Request spec or Model spec, View spec … - ちがう技法・手法を採用すべきだった キレイなコードを保証するものではない。あくまで条件と動作の整理 便利なテスト設計のツールがあっても、設計スキルは必要 それでも実装に進む前に設計したほうがいいよ、 と同じくらいには成果に差がでると思います。
ありがとうございました