SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
仕様変更で死なないため
  のユニットテスト


d:id:gnarl(team-lab, inc.)
「レガシーコードとは、テ
ストのないコードである」
●
  「テスト」とは、Excelに書かれた
  テスト仕様書のことではない
● 全自動で実行できる、再現性の

  あるユニットテスト
なぜ、レガシーコードに対す
るあらゆる変更は死亡フラグ
     なのか
●
    ユニットテストを考慮していない
    設計
    – フルセットの環境&データを用意する
    – ひととおり実行してみる
    – 結果を目視で確認する
    – バグがあったら修正して繰り返す
    – そのうち人間が死ぬ
自動化されたテストによ
     る死亡フラグの回避
●
  巨大なシステムは小さい機能の
  集成である
● 小さい機能を個別に自動でテス

  トする
●
  コードを変更するたびに自動でテ
  スト可能
自動化テストで仕様変更
       に立ち向かう
●
  最初に仕様を満たすテストを書く
●
  テストをパスするようなコードを書
  く
● テスト=機械で検証可能な仕様
テストはいかにしてソフト
ウェアの品質を向上するか
●
    バグが出たらまず再現するテスト
    を書く
    – 同じバグが出たら即座に検出可能
●   自動化テストはすばやく、何度で
    も実行可能
    – 自分の変更がソフトウェアを壊していな
    いことを常に確かめられる
テストはいかにしてソフト
ウェアの品質を向上するか
●
  自動化テストを書くためには、テ
  ストしやすい設計になっていない
  といけない
●
  テストしやすい設計=シンプルで
  再利用可能な設計
● テストを書くだけで設計の品質が

  上がる
レガシーコード
        は
     ハラスメント
       である
●
  整備されていないテスト=コード変更
  に苦痛を伴う
● ひどい設計のコード=読むだけでメン

  タルヘルスが悪化
自動化されたテストによ
       る精神の安定
●
    コードの変更に対してすばやいフィー
    ドバックが得られる
    – リファクタリングも安心
● 設計がクリーンに保たれる
● 最初にテストを書くことで、何を実装

  しなければいけないのか明確になる
● 安心してコードが書ける
まとめ
●
    自動化されたテストで人間が死
    なないソフトウェア開発をしましょ
    う

Weitere ähnliche Inhalte

Andere mochten auch

概観テキストマイニング
概観テキストマイニング概観テキストマイニング
概観テキストマイニングtod esking
 
貧者のための入力デバイス
貧者のための入力デバイス貧者のための入力デバイス
貧者のための入力デバイスtod esking
 
精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案tod esking
 
「レガシーコード」とはいったい?
「レガシーコード」とはいったい?「レガシーコード」とはいったい?
「レガシーコード」とはいったい?Hiroyuki Ohnaka
 
Nyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converterNyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown convertertod esking
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメAkira Hirasawa
 
レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話H Iseri
 

Andere mochten auch (7)

概観テキストマイニング
概観テキストマイニング概観テキストマイニング
概観テキストマイニング
 
貧者のための入力デバイス
貧者のための入力デバイス貧者のための入力デバイス
貧者のための入力デバイス
 
精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案精神論によるいきいきとした組織づくりのご提案
精神論によるいきいきとした組織づくりのご提案
 
「レガシーコード」とはいったい?
「レガシーコード」とはいったい?「レガシーコード」とはいったい?
「レガシーコード」とはいったい?
 
Nyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converterNyandoc: Scaladoc/Javadoc to markdown converter
Nyandoc: Scaladoc/Javadoc to markdown converter
 
レガシーコード改善のススメ
レガシーコード改善のススメレガシーコード改善のススメ
レガシーコード改善のススメ
 
レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話レガシーコードとの付き合い方とテストでの話
レガシーコードとの付き合い方とテストでの話
 

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

ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門iKenji
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめhakoika-itwg
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストSeiji KOMATSU
 
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャテスト自動化とアーキテクチャ
テスト自動化とアーキテクチャToru Koido
 
アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化Toru Koido
 
AnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストするAnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストするakira6592
 
Code complete ch22_developper_test
Code complete ch22_developper_testCode complete ch22_developper_test
Code complete ch22_developper_testSho Shimauchi
 
Stateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description LanguageStateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description LanguageShunji Nishimura
 
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」yasuohosotani
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説Kinji Akemine
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストToru Tamaki
 

Ähnlich wie 仕様変更で死なないためのユニットテスト (11)

ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
テスト自動化とアーキテクチャ
テスト自動化とアーキテクチャテスト自動化とアーキテクチャ
テスト自動化とアーキテクチャ
 
アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化アジャイル開発におけるシステムテストの自動化
アジャイル開発におけるシステムテストの自動化
 
AnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストするAnsibleとNAPALMでネットワークをテストする
AnsibleとNAPALMでネットワークをテストする
 
Code complete ch22_developper_test
Code complete ch22_developper_testCode complete ch22_developper_test
Code complete ch22_developper_test
 
Stateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description LanguageStateless Circuit Model toward a Theorem-proving Hardware Description Language
Stateless Circuit Model toward a Theorem-proving Hardware Description Language
 
SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
 
ソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テストソフトウェア工学2023 11 テスト
ソフトウェア工学2023 11 テスト
 

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