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
buntafujikawa
April 28, 2022
Programming
0
580
テストコードについて (仮)
社内の非エンジニア向けの発表
buntafujikawa
April 28, 2022
Tweet
Share
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
470
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
670
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
750
社内技術広報のすすめ
buntafujikawa
0
170
テトリスでイメージする 技術的負債とリファクタリング
buntafujikawa
0
970
設計レビューのすすめ
buntafujikawa
1
570
Write Code Every Day
buntafujikawa
0
300
ドラゴン桜から学んだ勉強法
buntafujikawa
1
4.7k
How to do effective pair programming with junior engineers
buntafujikawa
1
700
Other Decks in Programming
See All in Programming
ソフトウェアテスト徹底指南書の紹介
goyoki
1
110
実践!App Intents対応
yuukiw00w
1
350
コンテキストエンジニアリング Cursor編
kinopeee
1
710
マイコンでもRustのtestがしたい その2/KernelVM Tokyo 18
tnishinaga
2
2.3k
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
2.6k
TDD 実践ミニトーク
contour_gara
0
150
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
1.4k
開発チーム・開発組織の設計改善スキルの向上
masuda220
PRO
15
8k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
180
ゲームの物理
fadis
5
1.5k
Flutter로 Gemini와 MCP를 활용한 Agentic App 만들기 - 박제창 2025 I/O Extended Seoul
itsmedreamwalker
0
150
あのころの iPod を どうにか再生させたい
orumin
2
2.5k
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.6k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.6k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Making Projects Easy
brettharned
117
6.3k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
YesSQL, Process and Tooling at Scale
rocio
173
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Transcript
テストコードについて(仮) コーチェット チェックイン 2022/04/28 Bunta Fujikawa
※ Speaker Deck にアップロードするにあたり、一部 社内の情報は非表示にするなど変更をしてます
今日わかること - テストコードが何かわかる - テストコードの重要性
話そうと思った背景 - そろそろキューちゃんに必要になってくる - チーム内でテストコードの話をする機会が増えてきた - エンジニアの仕事内容をより知って欲しい
新しい機能を作ったら どのように正しく動いていると確認しますか?
None
ログイン機能に対するテスト
ログイン機能に対するテスト - すぐにこれだけテストケースが思いつく - メールアドレスとパスワードが正しい場合にログインができるか - ログイン後のリダイレクト先は正しいか - ログイン状態を維持できるか -
メールアドレスが間違っていた場合 - メールアドレスの大文字小文字は区別するか - パスワードが間違っていた場合 - 退会済みのユーザーの場合 - セキュリティのあれこれ (詳細は省く) などなど
None
基本プログラムは共通化されている
基本プログラムは共通化されている このファイルどこに影響出るかわかります? 社内事例
None
例えば、社内ツールの変更 - 〇〇を必須で追加して! 社内事例
例えば、社内ツールの変更 - 〇〇を必須で追加して!→ 〇〇も対応しないとバグ 社内事例 社内事例
None
プログラムの影響範囲を全て把握して 手動で全てテストするのは辛い
なるべくテストも自動化させたい
テストコードとは - 書いたプログラムをテストするためのプログラム - 例えばブラウザ操作を自動でやってくれる - プログラムに変更があるたびに自動でテストが実行される(ようにするの一般的)
テストコードとは - 書いたプログラムをテストするためのプログラム - 例えばブラウザ操作を自動でやってくれる - プログラムに変更があるたびに自動でテストが実行される(ようにするの一般的) 自分たちの代わりに 自動でテストをしてくれるもの
自動でブラウザを動かしてみよう
Chrome DevTools から操作を記録
テストって工数が減るだけ?
例1: グーグルドライブのフォルダ構成変更 - フォルダ構成を大きく変更する場合 - ファイルの権限を間違えたらインシデントにつながる
例1: テストコードがあったら? Admin 管理者 ぶん
例1: テストコードがあったら? Admin 管理者 ぶん テストコード① 管理者はアクセスできる
例1: テストコードがあったら? Admin 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない
例1: テストコードがあったら? Admin Admin Admin 管理者 ぶん テストコード① 管理者はアクセスできる テストコード②
管理者以外はアクセスできない
例1: テストコードがあったら? Admin Public 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない
Admin
例1: テストコードがあったら? Admin Public 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない
Admin
例1: テストコードがあったら? Admin Public 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない
Admin 意図しない変更を防げる(安心感)
例2: 口座の残高を倍にするプログラム書いてって言われたら
例2: 口座の残高を倍にするプログラム書いてって言われたら - 倍にするプログラムを書く (残高 × 2 すれば良い?)
例2: 口座の残高を倍にするプログラム書いてって言われたら - 倍にするプログラムを書く (残高 × 2 すれば良い?) - 残高と同じ金額を入金させる
- プログラムの正しさを検証するプログラム(テストコード)を書く - 10,000円 → 20,000 円 - 最終的な残高と入金のレコードを確認 - 0円 → 0円 - -10,000円(総合口座) → ??
例2: 口座の残高を倍にするプログラム書いてって言われたら - 倍にするプログラムを書く (残高 × 2 すれば良い?) - 残高と同じ金額を入金させる
- プログラムの正しさを検証するプログラム(テストコード)を書く - 10,000円 → 20,000 円 - 最終的な残高と入金のレコードを確認 - 0円 → 0円 - -10,000円(総合口座) → ?? テストを考える過程で 仕様が明確になる & テストが仕様書になる
メリット - 正しく動くことを証明する資産になる - テストコードがドキュメントになる - 手動でのテストを減らせる - 安心して変更ができる -
バグが減る などなど
デメリット - テストコードを書く・変更する時間が必要になる - テストコードがあるからといってバグがないわけではない
テストがないコードはレガシーコード
まとめ - テストは大事、でも大変 - テストコードは自分たちの代わりに自動でテストをしてくれるもの - テストコードがあると安心して変更ができる(リファクタリングしやすい)
Author Bunta Fujikawa Twitter @buntafujikawa Qiita @buntafujikawa Github @buntafujikawa