アジャイル×テスト開発プロセスを考える	



                                 2012.11.17	
  	
  	
  	
  
          Ul)mate	
  Agile	
  Stories編集部	
  
                                 細谷 泰夫	
  
細⾕谷  泰夫   @yasuohosotani
アジャイルで	
品質は	
良くなります
か?
アジャイル開発をすると、動作す
るソフトウェアを早く評価すること
ができるので品質が良くなりそう。	




アジャイルは、変更が加わるし、
品質が安定しそうになくて導入し
たくないなぁ。
同じアジャイルなのに
  正反対の印象。	
  
  なんでだろう?
品質の良し悪しと確定性	

アジャイルに対する異なる印象か
ら、品質の捉え方には、	
  
「品質の良し悪し」と「品質の確定
性」という2つの面がある。
(アジャイルに不安の人の)アジャイル
     に対する品質の印象	
品質の良さ	
品質の確定性
(理想的な)ウォータフォールに対する	
  
      品質の印象	

品質の良さ	
品質の確定性
やっぱり、	
  
 ウォータフォールの方が	
  
 効率良く品質を上げれそう	




本当?
ウォータフォール
かアジャイルかで
品質の	
有利/不利はない。
品質を	
高めるために	
何をするかが	
重要。
よくある状況	
   品質の良さ	
                                目標の品質	
   品質の確定性	


                                実際の品質	




                  テストフェーズ開始	

目標の品質が共有できていないことも多い。結果論	
  
として、不具合が多く出れば品質が低いということになる。
どうやったら	
  
  目標の品質を	
  
達成できるんだろう?
目標の品質って?	
開発対象、ドメインなどコン
テキストによって異なる。	
  
計画において定義し、	
  
共有することが大切
目標の品質であることを確定させる	
  

              テスト実施	
  開発対象の	
               目標の品質を確定さ
  ソフトウェア	
              せるために開発され
                           たテスト	
  


修正	
               不具合
開発対象の品質を上げる	
•  開発対象の品質が悪く、テストフェーズで品質
     を改善しても手遅れになるケースがある。	
  
•  開発対象の品質を向上させるための活動が
     必要。	
  
	
  

Wモデルは、設計の品質を早期に	
  
向上させる方法	
  
Wモデルとは?	

要求定義	
        システムテストの設計	
                               システムテスト	
  
                                                         の実施	
  

   基本設計	
            結合テストの設計	
                       結合テストの実施	
  


          詳細設計	
              単体テストの設計	
         単体テストの実施	
  
                                  コードミスの	
  
                                  逐次摘出	
  
                     実装	
                      コードインスぺクションの実施	
  




参考:EMWEST	
  Vol.2	
  「Wモデル~ソフトウェアテストによるプロセスイノベーション~」(西 康晴)
テスト開発プロセス	


要求定義	
                                            システムテスト	
  
                テスト要          テスト設   テスト実
                                                  の実施	
  
                求分析	
          計	
    装	
   基本設計	
                                     結合テストの実施	
  


          詳細設計	
                          単体テストの実施	
  


                     実装	
            コードインスぺクションの実施	
  
やるべきことをキチンとやれば	
  
目標の品質を達成することが	
  
    できるんだ。	
  




テストを開発するには、スキルを
もった人が、手順を踏んで行う
    必要があるんだね。	
  
  単純じゃなく、奥が深そう。	
  
そろそろアジャイルの話しを	
    聞きたいよ
アジャイルの品質への効果	
•  アジャイル開発を行うと、早期に開発とテスト
     が協調しはじめる。	
  
	
                 テストのた
                めの機能が
  テスト環境           不足	
   の不備	
                         ユーザ視点
                         での改善点	
           品質のリスク
Wモデルと同じ効果	
•  Wモデルのもっとも単純なメリットは、テスト設計
   を早期に行うことによって、設計の抜け、矛盾を
   減少させることができること	
  


•  アジャイル開発で早期にテストが実行される
     ことで得られる効果と同じ。	
  
	
  
テストのための機能や試験環境
 の洩れは実際、よくあるから、	
  
早めにテストを開始できるのは、
  確かにメリットがありそう。	
  




テストエンジニアと開発者が早
期にコミュニケーションを開始し
て、協調できることが実は大きい。	
  
アジャイルに品質が良くなる面が
あることは判ったけど、変更が加
 わるのはやっぱり不安だなぁ。	
  




  目標の品質を目指すための	
  
プロセスや、品質確定への不安を
 アジャイルではどう解決すれば	
  
    いいんだろうか?	
  
アジャイルでのテスト開発の	
  
やり方を考える必要があります。	
  
テスト計画	
•  いつ、どんな品質を確定させるかを考えるこ
   とが重要。	
  
•  ユニットテスト、インテグレーションテスト、受
   け入れテストなど複数の粒度のテストをトータ
   ルで考える。	
  
•  自動化の方針を考える。	
  
いつ誰からフィードバックを得るか?
品質確定の計画例1	
•  下記は、最後のイテレーションリリース後に品質
   を確定させる例。品質の確定は複数回でも良い	
  

イテレーション	
   イテレーション	
   イテレーション	
   イテレーション	




イテレーション	
 イテレーション	
        イテレーション	
 イテレーション	




   イテレーション毎のテスト	

   品質確定のためのテスト
品質確定の計画例2	
•  全てのイテレーションでサービスとして提供で
   きる品質を確定する。	
 イテレーション	
   イテレーション	
   イテレーション	
   イテレーション	




   品質確定のためのテスト	


アジャイル開発の事例などで一般的に語られ	
  
るのはこの例。広範囲なテスト自動化が必須となる。	
  
アジャイルテストの四象限	
                       ビジネス面	
  自動と手動	
                                         手動	

                               探索テスト	
  
                               シナリオ	
                    製
             機能テスト	
                                     品
                               ユーザビリティテスト	
  
 ー




                               UAT(ユーザ受け入れテスト)	
  
                                                         批
                               アルファ/ベータ	
                評
 支
 援

                                 パフォーマンステスト	
  
             単体テスト	
             負荷テスト	
  




                                                         	
                                 セキュリティテスト	
  
 	




                                 「~性」テスト	

      自動	
                                        ツール	
                       技術面	

出典:実践アジャイルテスト(翔泳社)
テスト自動化ピラミッド	

                                    UI	
  


                               Service	


                                  Unit	
  

「Succeeding	
  With	
  Agile」 Mike	
  Cohn	
  
コンテキストの収集	

ü アジャイルプロセス協議会テスト・レビュー
   WGでメンバーのアジャイル開発でのテスト
   の経験を収集。	

ü 「何に対して」「どんなことを」「どんな方法
   で」テストしたか?
プロセス、型の検討方法	
テストの粒度	
      機能性	
   信頼性	
   使用性	
   効率性	
   保守性	
    移植性	



クラス	
         自動	
    レビュー	
 レビュー	
   ―	
     レビュー	
   ―	

API	
         自動	
    レビュー	
 レビュー	
   自動	
    レビュー	
   ―	

画面	
          手動	
    ―	
     手動	
    ―	
     ―	
      ―	

ユーザストーリ	
     自動/手動	
 手動	
    手動	
    手動	
    ―	
      ―	



システム全体	
      ―	
     手動	
    手動	
    手動	
    ―	
      ―	

プロトコル	
       自動	
    レビュー	
 レビュー	
   自動	
    レビュー	
   ―
テストの粒度	
      機能性	
         信頼性	
   使用性	
   効率性	
   保守性	
    移植性	



クラス	
         自動	
 TDD	
 レビュー	
 レビュー	
      ―	
     レビュー	
   ―	

API	
         自動	
          レビュー	
 レビュー	
   自動	
    レビュー	
   ―	
                     CI	

画面	
          手動	
          ―	
     手動	
    ―	
     ―	
      ―	

ユーザストーリ	
     自動/手動	
 手動	
          手動	
    手動	
    ―	
      ―	



システム全体	
      ―	
  手動	
             手動	
    手動	
    ―	
      ―	
              特殊な試験機	
プロトコル	
       自動	
          レビュー	
 レビュー	
   自動	
    レビュー	
   ―	


他にも、「どうやってレビューするか?」「どうやってテスト設計するか?」	
  
「どうやってテスト実装、実施をするか?」など、アジャイルプラクティスに限らず色々	
  
な要素をどう組み合わせるかを考える。
テストプロセスを並行させる例	




•  イテレーション毎のテストは「評価可能であること」を
   確かめる。	
  
•  動作するソフトウェアから得られる情報をテスト開発
   にフィードバックする。
テストのモデリング	
•  テスト開発プロセスにおけるテスト設計において
     テストの抽象度をうまく上げることで、テスト設計
     のパタンを見つけることができる。	
  
 例)画面を閉じている間に情報を更新し、	
  
   画面を開いて情報が更新されていることを	
  
   確認する。	
  
•  複数の対象に対して多くの同じパタンが出てくる
     場合は、テスト対象として抽出する。	
  
 例)画面の機能によらない確認(タブ移動など)	
  
	
  
アジャイルでも品質保証ができる
   ような気がしてきた。	
  




目標の品質を達成するためのア
プローチや計画作りを考えていく
  必要があることが判った。	
  
課題	
•  アジャイルでのテスト開発プロセスの検討	
  
•  色々なコンテキストでのテスト開発プロセスの
     検討	
  
	
  
            皆でアジャイルとテストに	
  
	
          ついて議論する機会を	
  
              持ちましょう!	
  
Special	
  Thanks	
・ほそたに(あ)さん(細谷家) 猫制作	
  
・アジャイルプロセス協議会 テスト・レビューWG	
  
	
  
	
  
	
  

アジャイル×テスト開発を考える