仕様変更で死なないためのユニットテスト

10
d:id:gnarl(team-lab, inc.) 仕様変更で死なないため ユニットテスト

description

 

Transcript of 仕様変更で死なないためのユニットテスト

Page 1: 仕様変更で死なないためのユニットテスト

d:id:gnarl(team-lab, inc.)

仕様変更で死なないためのユニットテスト

Page 2: 仕様変更で死なないためのユニットテスト

「レガシーコードとは、テストのないコードである」

●「テスト」とは、Excelに書かれたテスト仕様書のことではない

●全自動で実行できる、再現性のあるユニットテスト

Page 3: 仕様変更で死なないためのユニットテスト

なぜ、レガシーコードに対するあらゆる変更は死亡フラグ

なのか●ユニットテストを考慮していない設計–フルセットの環境&データを用意する–ひととおり実行してみる–結果を目視で確認する–バグがあったら修正して繰り返す–そのうち人間が死ぬ

Page 4: 仕様変更で死なないためのユニットテスト

自動化されたテストによる死亡フラグの回避

●巨大なシステムは小さい機能の集成である

●小さい機能を個別に自動でテストする

●コードを変更するたびに自動でテスト可能

Page 5: 仕様変更で死なないためのユニットテスト

自動化テストで仕様変更に立ち向かう

●最初に仕様を満たすテストを書く●テストをパスするようなコードを書く

●テスト=機械で検証可能な仕様

Page 6: 仕様変更で死なないためのユニットテスト

テストはいかにしてソフトウェアの品質を向上するか●バグが出たらまず再現するテストを書く–同じバグが出たら即座に検出可能

●自動化テストはすばやく、何度でも実行可能–自分の変更がソフトウェアを壊していないことを常に確かめられる

Page 7: 仕様変更で死なないためのユニットテスト

テストはいかにしてソフトウェアの品質を向上するか●自動化テストを書くためには、テストしやすい設計になっていないといけない

●テストしやすい設計=シンプルで再利用可能な設計

●テストを書くだけで設計の品質が上がる

Page 8: 仕様変更で死なないためのユニットテスト

レガシーコードは

ハラスメントである

●整備されていないテスト=コード変更に苦痛を伴う

●ひどい設計のコード=読むだけでメンタルヘルスが悪化

Page 9: 仕様変更で死なないためのユニットテスト

自動化されたテストによる精神の安定

●コードの変更に対してすばやいフィードバックが得られる–リファクタリングも安心

●設計がクリーンに保たれる●最初にテストを書くことで、何を実装しなければいけないのか明確になる

●安心してコードが書ける

Page 10: 仕様変更で死なないためのユニットテスト

まとめ

●自動化されたテストで人間が死なないソフトウェア開発をしましょう