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
540
テストコードについて (仮)
社内の非エンジニア向けの発表
buntafujikawa
April 28, 2022
Tweet
Share
More Decks by buntafujikawa
See All by buntafujikawa
承認を意識したコードレビュー
buntafujikawa
0
430
スクラムとコーチングで作る心理的安全性
buntafujikawa
0
620
ちょっと便利になる自動補完と Ansible でのパッケージ管理について
buntafujikawa
0
690
社内技術広報のすすめ
buntafujikawa
0
160
テトリスでイメージする 技術的負債とリファクタリング
buntafujikawa
0
900
設計レビューのすすめ
buntafujikawa
1
550
Write Code Every Day
buntafujikawa
0
290
ドラゴン桜から学んだ勉強法
buntafujikawa
1
4.6k
How to do effective pair programming with junior engineers
buntafujikawa
1
650
Other Decks in Programming
See All in Programming
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
220
自動で //nolint を挿入する取り組み / Gopher's Gathering
utgwkk
1
150
振り返れば奴(Cline)がいる
keiyagi
0
110
ファインディの テックブログ爆誕までの軌跡
starfish719
1
690
HTML/CSS超絶浅い説明
yuki0329
0
200
チームの立て直し施策をGoogleの 『効果的なチーム』と見比べてみた
maroon8021
0
190
非ブラウザランタイムとWeb標準 / Non-Browser Runtimes and Web Standards
petamoriken
0
440
Оптимизируем производительность блока Казначейство
lamodatech
0
980
SRE、開発、QAが協業して挑んだリリースプロセス改革@SRE Kaigi 2025
nealle
1
3k
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
980
AWS Lambda functions with C# 用の Dev Container Template を作ってみた件
mappie_kochi
0
210
[JAWS-UG横浜 #80] うわっ…今年のServerless アップデート、少なすぎ…?
maroon1st
0
140
Featured
See All Featured
A Tale of Four Properties
chriscoyier
157
23k
VelocityConf: Rendering Performance Case Studies
addyosmani
327
24k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Being A Developer After 40
akosma
89
590k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
980
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.2k
Building Better People: How to give real-time feedback that sticks.
wjessup
366
19k
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