Ninja Testing at Toteka03
Upcoming SlideShare
Loading in...5
×
 

Ninja Testing at Toteka03

on

  • 339 views

とてか03 で発表した「忍者式テストをやってみた」の発表資料です。 ...

とてか03 で発表した「忍者式テストをやってみた」の発表資料です。
- とてか03(http://d.hatena.ne.jp/tochigitestnokaigi/20141004)
- The Model-View-Controller (MVC) Its Past and Present(http://heim.ifi.uio.no/~trygver/2003/javazone-jaoo/MVC_pattern.pdf)
- ステートフルJavaScript(http://www.amazon.co.jp/dp/487311554X)
- MVP: Model-View-Presenter The Taligent Programming Model for C++ and Java(http://www.wildcrest.com/Potel/Portfolio/mvp.pdf)

Statistics

Views

Total Views
339
Views on SlideShare
311
Embed Views
28

Actions

Likes
1
Downloads
0
Comments
0

1 Embed 28

https://twitter.com 28

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Ninja Testing at Toteka03 Ninja Testing at Toteka03 Presentation Transcript

  • 忍者式テストを やってみた 2014/10/04 中島 滋 株式会社ラグザイア
  • とてか03 招待講演
  • 自己紹介 中島滋(@@lleeddssuunn) WWeebb系受託開発 プログラマ JJaavvaaSSccrriipptt、CC## View slide
  • 今日の献立 View slide
  • 11.. 忍者式テストを超簡単に 22.. 忍者式テストはレグレッション 33.. 忍者式テストのTTeessttiinngg面 44.. 忍者式テストを詳しく 55.. 忍者式テストのうれしさ 66.. まとめ
  • 11..忍者式テストを超簡単に
  • 毎日テストを実施する 受け入�れ試験 手で行う
  • ここでテスト項目を見せる
  • 22..忍者式テストをレグレッション に使う
  • 今日の話の お得ポイント
  • 忍者式テストは レガシーコードと戦う時に 使えた
  • レガシーコードは存在する ! 機能を追加したい リファクタリングしたい
  • レガシーコードの例 22885544行 JJaavvaaSSccrriipptt スコープを意識していない 大域変数 ((アプリケーションに閉じてる)) 非モジュール(グループ)化 エディタアプリケーション (GGUUII) テストコードなし
  • ここで対象となる アプリケーションを見せる
  • レガシーコードと戦う 基礎戦術
  • 基礎戦術11 ! 仕様が明確な関数を取り出し テストコードを書く
  • 分割されていないコードは 仕様を理解して 取り出せる部分が小さい 数〜数十行 ! 99割がモンスターのまま残る 110000〜11000000回やる?
  • 機能を足したいから リファクタリングしたい
  • レガシーコードでは 理解し難い部分が 変更したい部分 なことが多い
  • 効果が出るまで 時間がかかるので やめました
  • 基礎戦術22 ! ソフトウェアを 数個のモジュールに分割する
  • 分割にテストコードは必要か
  • 網羅したテストを書くには 時間がかかる
  • テストコードを書かずに リファクタリング ! スコープをわける 大きな変更は 手で動作確認できる (まだ忍者式テストでない)
  • GGUUIIのモジュール分割の王道 ! 11.. コンポーネント分割 22.. PPrreesseennttaattiioonn--DDoommaaiinn--SSeeppaarraattiioonn (プレゼンテーションとドメイン) 33.. SSmmaallllttaallkk--8800 MMVVCC (モデル・ビュー・コントローラー)
  • 33.. SSmmaallllttaallkk--8800 MMVVCCは 「TThhee MMooddeell--VViieeww--CCoonnttrroolllleerr ((MMVVCC)) IIttss PPaasstt aanndd PPrreesseenntt」 が手引きになる
  • SSmmaallllttaallkk--8800 MMVVCCでは CCoonnttrroolllleerrがでかい! ! モデルの更新とビューの更新 両方やる ! 44.. SSeeppaarraatteedd PPrreesseennttaattiioonn ビューがOObbsseerrvveerrに モデルが変わったら勝手に更新
  • 44.. SSeeppaarraatteedd PPrreesseennttaattiioonnは 「ステートフルJJaavvaaSSccrriipptt」が 手引きになる
  • OObbsseerrvveerr付きMMVVCCに分けても CCoonnttrroolllleerrがでかい! ! 作ったオブジェクトを自動選択 ! 11..モデルつくる 22..ビューに表示 33..選択状態に更新
  • 55.. MMooddeell VViieeww PPrreesseenntteerr ! 選択状態のモデル化 sseelleeccttiioonn ビューはsseelleeccttiioonnも監視
  • 「MMVVPP:: MMooddeell--VViieeww--PPrreesseenntteerr TThhee TTaalliiggeenntt PPrrooggrraammmmiinngg MMooddeell ffoorr CC++++ aanndd JJaavvaa 」を 読んでもわからない! ! このアプリケーションに 上手くはまるの?
  • 不安 ! 適用後のソースコードが イメージできない ! 手探りでの変更
  • 変更中に アプリケーションを 壊したら 早く知りたい
  • やっぱり テストハーネスが欲しい!
  • テストコードを書く? ! 分割したいのは CCoonnttrroolllleerr ユーザー入�力と密接 ! PPhhaannttoommJJSS?? SSeelleenniiuumm?? ! そうだ手でやろう!
  • 忍者式テスト
  • AA44用紙に今までやった 確認手順を書き出す 数件 実行してみる
  • 次の日にもやる 赤ペンも入�れる
  • なんと言うことでしょう! ! そこには 今まで見たこともないバグが ありました
  • 期待通り ! テストハーネスとして 機能する (CChheecckkiinngg)
  • それ以上に ! 未知のバグが見つかった ((TTeessttiinngg)) ! 引き継ぎ前のバグ 引き継ぎ後に入�れいたバグ
  • いったん確認 ! 忍者式テストは レガシーコードと戦う一戦術 ! TTeessttiinnggの側面もある?
  • ここまで 22.. 忍者式テストを レグレッションに使う ! ここから 33.. 忍者式テストのTTeessttiinngg面
  • 忍者式テストでは 新しいテストが見つかる ! なぜだろう?
  • 秋山 浩一さんの洞察 元・富士ゼロックス テストコンサルタント
  • @@aakkiiyyaammaa992244 テスターは、いい加減なテスト ケースを元に、そこからちょっ と外れた操作をしてバグを見つ けていると思います。hhttttppss:://// ttwwiitttteerr..ccoomm//aakkiiyyaammaa992244// ssttaattuuss// 550066225555440011553377338844444488
  • これだ! ! 忍者式テストでも テストケースから ちょっと外れた操作をした時 バグを見つけている
  • どういうわけか 紙に向�かって テストケースを考える時には 思いつかない
  • 思いついても テストケースを書くのが 面倒
  • バグを見つけた手順 (CChheecckkiinngg) ! 有効なテストケースは残す
  • 忍者式テストは 毎日、人がやる 毎日、ちょっとずつ変わる ! TTeessttiinngg (未知の問題が見つかる)
  • 44..忍者式テストを詳しく
  • 準備 11..新機能の確認テストを追加 ! テストを実行 22..既存のテストを改�善 33..新しく発見したテストを追加 44..要らなくなったテストを削除
  • 11..その日追加した 新機能のテストを追加 ! 雑 機能確認程度 正しい動作のメモ代わり
  • 22..昨日までのテストを修正 わかりやすく 早く終わる手順に ! 文章の添削に一日置く感じ
  • 33..新しく発見したテストを 追加
  • 新しいテストは一番上に追加 実行頻度を高く
  • 44..バグを 発見できなくなった テストを止める ! 基準は感性 「めんどくさいなー」 多分合っているけど不安 気合い
  • 疲れていると 気合い不足 テストが減らない ! すごく疲れていると 何でもめんどくさくなる テストが減らない
  • テストは健康な状態で やらなければならない
  • 55.. 忍者式テストをやると うれしいこと
  • 最初に完璧なテストを 書かなくてよい ! フォーマット カバレッジ 効率
  • 最初のハードルは低い ! 毎日やると ちゃんとバグが見つかる
  • テストを足してから 一週間ぐらいは 新しいテストとバグが見つる ! ただし 毎日やらないと バグが見つからない
  • 毎日テストしないと恐い
  • 大きなリファクタリングが 終わっても (二ヶ月経過) やめていないのは TTeessttiinnggの面が大きいから
  • まとめ
  • 忍者式テストで ! テストコードが書けなくても レガシーコードと戦える ! 未知のバグも発見できる テストにちょっと自信がもてる
  • 忍者式テストをやろう ! 書けるなら 最初からテストコードを 書いてくれ
  • ご清聴 ありがとうございました