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
570
テストコードについて (仮)
社内の非エンジニア向けの発表
buntafujikawa
April 28, 2022
Tweet
Share
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
460
スクラムとコーチングで作る心理的安全性
buntafujikawa
1
660
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
740
社内技術広報のすすめ
buntafujikawa
0
170
テトリスでイメージする 技術的負債とリファクタリング
buntafujikawa
0
960
設計レビューのすすめ
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
690
Other Decks in Programming
See All in Programming
今ならAmazon ECSのサービス間通信をどう選ぶか / Selection of ECS Interservice Communication 2025
tkikuc
21
4k
おやつのお供はお決まりですか?@WWDC25 Recap -Japan-\(region).swift
shingangan
0
140
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
560
Systèmes distribués, pour le meilleur et pour le pire - BreizhCamp 2025 - Conférence
slecache
0
120
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
270
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
13
4.7k
Flutterで備える!Accessibility Nutrition Labels完全ガイド
yuukiw00w
0
160
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
2.2k
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
400
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
530
0626 Findy Product Manager LT Night_高田スライド_speaker deck用
mana_takada
0
180
Featured
See All Featured
Writing Fast Ruby
sferik
628
62k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Into the Great Unknown - MozCon
thekraken
40
1.9k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Become a Pro
speakerdeck
PRO
29
5.4k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Scaling GitHub
holman
460
140k
Adopting Sorbet at Scale
ufuk
77
9.5k
Six Lessons from altMBA
skipperchong
28
3.9k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
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