テストコードについて (仮)
by
buntafujikawa
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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