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
620
0
Share
テストコードについて (仮)
社内の非エンジニア向けの発表
buntafujikawa
April 28, 2022
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
500
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
720
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
810
社内技術広報のすすめ
buntafujikawa
0
190
テトリスでイメージする 技術的負債とリファクタリング
buntafujikawa
0
1.1k
設計レビューのすすめ
buntafujikawa
1
590
Write Code Every Day
buntafujikawa
0
310
ドラゴン桜から学んだ勉強法
buntafujikawa
1
4.9k
How to do effective pair programming with junior engineers
buntafujikawa
1
750
Other Decks in Programming
See All in Programming
一度始めたらやめられない開発効率向上術 / Findy あなたのdotfilesを教えて!
k0kubun
4
2.9k
Codex CLI でつくる、Issue から merge までの開発フロー
amata1219
0
340
Kubernetes上でAgentを動かすための最新動向と押さえるべき概念まとめ
sotamaki0421
3
460
GNU Makeの使い方 / How to use GNU Make
kaityo256
PRO
16
5.6k
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
890
CursorとClaudeCodeとCodexとOpenCodeを実際に比較してみた
terisuke
1
350
PHP で mp3 プレイヤーを実装しよう
m3m0r7
PRO
0
230
PHPのバージョンアップ時にも役立ったAST(2026年版)
matsuo_atsushi
0
300
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
1k
Mastering Event Sourcing: Your Parents Holidayed in Yugoslavia
super_marek
0
150
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
9
5.3k
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
3
150
Featured
See All Featured
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
430
Are puppies a ranking factor?
jonoalderson
1
3.3k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
720
Technical Leadership for Architectural Decision Making
baasie
3
320
Measuring & Analyzing Core Web Vitals
bluesmoon
9
810
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2k
We Have a Design System, Now What?
morganepeng
55
8.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
790
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
480
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
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