Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
忍者式テストを 
やってみた 
2014/10/04 中島 滋 
株式会社ラグザイア
とてか03 
招待講演
自己紹介 
中島滋(@@lleeddssuunn) 
WWeebb系受託開発 
プログラマ 
JJaavvaaSSccrriipptt、CC##
今日の献立
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は 
「TThhee MMooddeell--VViieeww--CCoonnttrroolllleerr 
((MMVVCC)) IIttss PPaasstt aann...
SSmmaallllttaallkk--8800 MMVVCCでは 
CCoonnttrroolllleerrがでかい! 
! 
モデルの更新とビューの更新 
両方やる 
! 
44.. SSeeppaarraatteedd PPrreesse...
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++...
不安 
! 
適用後のソースコードが 
イメージできない 
! 
手探りでの変更
変更中に 
アプリケーションを 
壊したら 
早く知りたい
やっぱり 
テストハーネスが欲しい!
テストコードを書く? 
! 
分割したいのは 
CCoonnttrroolllleerr 
ユーザー入�力と密接 
! 
PPhhaannttoommJJSS?? 
SSeelleenniiuumm?? 
! 
そうだ手でやろう!
忍者式テスト
AA44用紙に今までやった 
確認手順を書き出す 
数件 
実行してみる
次の日にもやる 
赤ペンも入�れる
なんと言うことでしょう! 
! 
そこには 
今まで見たこともないバグが 
ありました
期待通り 
! 
テストハーネスとして 
機能する 
(CChheecckkiinngg)
それ以上に 
! 
未知のバグが見つかった 
((TTeessttiinngg)) 
! 
引き継ぎ前のバグ 
引き継ぎ後に入�れいたバグ
いったん確認 
! 
忍者式テストは 
レガシーコードと戦う一戦術 
! 
TTeessttiinnggの側面もある?
ここまで 
22.. 忍者式テストを 
レグレッションに使う 
! 
ここから 
33.. 忍者式テストのTTeessttiinngg面
忍者式テストでは 
新しいテストが見つかる 
! 
なぜだろう?
秋山 浩一さんの洞察 
元・富士ゼロックス 
テストコンサルタント
@@aakkiiyyaammaa992244 
テスターは、いい加減なテスト 
ケースを元に、そこからちょっ 
と外れた操作をしてバグを見つ 
けていると思います。hhttttppss:://// 
ttwwiitttteerr..ccoomm...
これだ! 
! 
忍者式テストでも 
テストケースから 
ちょっと外れた操作をした時 
バグを見つけている
どういうわけか 
紙に向�かって 
テストケースを考える時には 
思いつかない
思いついても 
テストケースを書くのが 
面倒
バグを見つけた手順 
(CChheecckkiinngg) 
! 
有効なテストケースは残す
忍者式テストは 
毎日、人がやる 
毎日、ちょっとずつ変わる 
! 
TTeessttiinngg 
(未知の問題が見つかる)
44..忍者式テストを詳しく
準備 
11..新機能の確認テストを追加 
! 
テストを実行 
22..既存のテストを改�善 
33..新しく発見したテストを追加 
44..要らなくなったテストを削除
11..その日追加した 
新機能のテストを追加 
! 
雑 
機能確認程度 
正しい動作のメモ代わり
22..昨日までのテストを修正 
わかりやすく 
早く終わる手順に 
! 
文章の添削に一日置く感じ
33..新しく発見したテストを 
追加
新しいテストは一番上に追加 
実行頻度を高く
44..バグを 
発見できなくなった 
テストを止める 
! 
基準は感性 
「めんどくさいなー」 
多分合っているけど不安 
気合い
疲れていると 
気合い不足 
テストが減らない 
! 
すごく疲れていると 
何でもめんどくさくなる 
テストが減らない
テストは健康な状態で 
やらなければならない
55.. 忍者式テストをやると 
うれしいこと
最初に完璧なテストを 
書かなくてよい 
! 
フォーマット 
カバレッジ 
効率
最初のハードルは低い 
! 
毎日やると 
ちゃんとバグが見つかる
テストを足してから 
一週間ぐらいは 
新しいテストとバグが見つる 
! 
ただし 
毎日やらないと 
バグが見つからない
毎日テストしないと恐い
大きなリファクタリングが 
終わっても 
(二ヶ月経過) 
やめていないのは 
TTeessttiinnggの面が大きいから
まとめ
忍者式テストで 
! 
テストコードが書けなくても 
レガシーコードと戦える 
! 
未知のバグも発見できる 
テストにちょっと自信がもてる
忍者式テストをやろう 
! 
書けるなら 
最初からテストコードを 
書いてくれ
ご清聴 
ありがとうございました
Upcoming SlideShare
Loading in …5
×

Ninja Testing at Toteka03

3,718 views

Published on

とてか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)

Published in: Engineering
  • Follow the link, new dating source: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Sex in your area is here: ♥♥♥ http://bit.ly/39sFWPG ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Ninja Testing at Toteka03

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

×