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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
buntafujikawa
April 28, 2022
Programming
0
610
テストコードについて (仮)
社内の非エンジニア向けの発表
buntafujikawa
April 28, 2022
Tweet
Share
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
490
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
700
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
790
社内技術広報のすすめ
buntafujikawa
0
180
テトリスでイメージする 技術的負債とリファクタリング
buntafujikawa
0
1k
設計レビューのすすめ
buntafujikawa
1
580
Write Code Every Day
buntafujikawa
0
310
ドラゴン桜から学んだ勉強法
buntafujikawa
1
4.8k
How to do effective pair programming with junior engineers
buntafujikawa
1
740
Other Decks in Programming
See All in Programming
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
2026年 エンジニアリング自己学習法
yumechi
0
120
Architectural Extensions
denyspoltorak
0
260
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
180
QAフローを最適化し、品質水準を満たしながらリリースまでの期間を最短化する #RSGT2026
shibayu36
2
4.2k
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
組織で育むオブザーバビリティ
ryota_hnk
0
160
CSC307 Lecture 07
javiergs
PRO
0
540
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
5.9k
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
17
5.8k
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.7k
AIエージェントの設計で注意するべきポイント6選
har1101
7
3.4k
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
170
The Language of Interfaces
destraynor
162
26k
Music & Morning Musume
bryan
47
7.1k
My Coaching Mixtape
mlcsv
0
45
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
52
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
270
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
320
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
300
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
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