テストコードについて (仮)
by
buntafujikawa
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
テストコードについて(仮) コーチェット チェックイン 2022/04/28 Bunta Fujikawa
Slide 2
Slide 2 text
※ Speaker Deck にアップロードするにあたり、一部 社内の情報は非表示にするなど変更をしてます
Slide 3
Slide 3 text
今日わかること - テストコードが何かわかる - テストコードの重要性
Slide 4
Slide 4 text
話そうと思った背景 - そろそろキューちゃんに必要になってくる - チーム内でテストコードの話をする機会が増えてきた - エンジニアの仕事内容をより知って欲しい
Slide 5
Slide 5 text
新しい機能を作ったら どのように正しく動いていると確認しますか?
Slide 6
Slide 6 text
No content
Slide 7
Slide 7 text
ログイン機能に対するテスト
Slide 8
Slide 8 text
ログイン機能に対するテスト - すぐにこれだけテストケースが思いつく - メールアドレスとパスワードが正しい場合にログインができるか - ログイン後のリダイレクト先は正しいか - ログイン状態を維持できるか - メールアドレスが間違っていた場合 - メールアドレスの大文字小文字は区別するか - パスワードが間違っていた場合 - 退会済みのユーザーの場合 - セキュリティのあれこれ (詳細は省く) などなど
Slide 9
Slide 9 text
No content
Slide 10
Slide 10 text
基本プログラムは共通化されている
Slide 11
Slide 11 text
基本プログラムは共通化されている このファイルどこに影響出るかわかります? 社内事例
Slide 12
Slide 12 text
No content
Slide 13
Slide 13 text
例えば、社内ツールの変更 - 〇〇を必須で追加して! 社内事例
Slide 14
Slide 14 text
例えば、社内ツールの変更 - 〇〇を必須で追加して!→ 〇〇も対応しないとバグ 社内事例 社内事例
Slide 15
Slide 15 text
No content
Slide 16
Slide 16 text
プログラムの影響範囲を全て把握して 手動で全てテストするのは辛い
Slide 17
Slide 17 text
なるべくテストも自動化させたい
Slide 18
Slide 18 text
テストコードとは - 書いたプログラムをテストするためのプログラム - 例えばブラウザ操作を自動でやってくれる - プログラムに変更があるたびに自動でテストが実行される(ようにするの一般的)
Slide 19
Slide 19 text
テストコードとは - 書いたプログラムをテストするためのプログラム - 例えばブラウザ操作を自動でやってくれる - プログラムに変更があるたびに自動でテストが実行される(ようにするの一般的) 自分たちの代わりに 自動でテストをしてくれるもの
Slide 20
Slide 20 text
自動でブラウザを動かしてみよう
Slide 21
Slide 21 text
Chrome DevTools から操作を記録
Slide 22
Slide 22 text
テストって工数が減るだけ?
Slide 23
Slide 23 text
例1: グーグルドライブのフォルダ構成変更 - フォルダ構成を大きく変更する場合 - ファイルの権限を間違えたらインシデントにつながる
Slide 24
Slide 24 text
例1: テストコードがあったら? Admin 管理者 ぶん
Slide 25
Slide 25 text
例1: テストコードがあったら? Admin 管理者 ぶん テストコード① 管理者はアクセスできる
Slide 26
Slide 26 text
例1: テストコードがあったら? Admin 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない
Slide 27
Slide 27 text
例1: テストコードがあったら? Admin Admin Admin 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない
Slide 28
Slide 28 text
例1: テストコードがあったら? Admin Public 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない Admin
Slide 29
Slide 29 text
例1: テストコードがあったら? Admin Public 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない Admin
Slide 30
Slide 30 text
例1: テストコードがあったら? Admin Public 管理者 ぶん テストコード① 管理者はアクセスできる テストコード② 管理者以外はアクセスできない Admin 意図しない変更を防げる(安心感)
Slide 31
Slide 31 text
例2: 口座の残高を倍にするプログラム書いてって言われたら
Slide 32
Slide 32 text
例2: 口座の残高を倍にするプログラム書いてって言われたら - 倍にするプログラムを書く (残高 × 2 すれば良い?)
Slide 33
Slide 33 text
例2: 口座の残高を倍にするプログラム書いてって言われたら - 倍にするプログラムを書く (残高 × 2 すれば良い?) - 残高と同じ金額を入金させる - プログラムの正しさを検証するプログラム(テストコード)を書く - 10,000円 → 20,000 円 - 最終的な残高と入金のレコードを確認 - 0円 → 0円 - -10,000円(総合口座) → ??
Slide 34
Slide 34 text
例2: 口座の残高を倍にするプログラム書いてって言われたら - 倍にするプログラムを書く (残高 × 2 すれば良い?) - 残高と同じ金額を入金させる - プログラムの正しさを検証するプログラム(テストコード)を書く - 10,000円 → 20,000 円 - 最終的な残高と入金のレコードを確認 - 0円 → 0円 - -10,000円(総合口座) → ?? テストを考える過程で 仕様が明確になる & テストが仕様書になる
Slide 35
Slide 35 text
メリット - 正しく動くことを証明する資産になる - テストコードがドキュメントになる - 手動でのテストを減らせる - 安心して変更ができる - バグが減る などなど
Slide 36
Slide 36 text
デメリット - テストコードを書く・変更する時間が必要になる - テストコードがあるからといってバグがないわけではない
Slide 37
Slide 37 text
テストがないコードはレガシーコード
Slide 38
Slide 38 text
まとめ - テストは大事、でも大変 - テストコードは自分たちの代わりに自動でテストをしてくれるもの - テストコードがあると安心して変更ができる(リファクタリングしやすい)
Slide 39
Slide 39 text
Author Bunta Fujikawa Twitter @buntafujikawa Qiita @buntafujikawa Github @buntafujikawa