Scrum Alliance Regional Gathering Tokyo 2013

技術トークス




      アジャイルテスティング

       ー テストの全体像を共有する ー
細谷 泰夫     @yasuohosotani



スクラム道関西
従来の開発でのテスト

 要求分析	
                 システムテスト	

  方式設計	
              結合テスト	

    詳細設計	
        単体テスト	

           実装
市場に不具合を
流出させない
最後の砦
・目的
  目標の品質を達成すること

・手段
  目標の品質であることを確認可能
  なテストを開発する。
  テストを実施し、欠陥を是正する。
テストの積み上げ
電話/FAX
3             HUB     Wifi/LANコンバータ
      PC
階
      PC



              ゲーム機
      PC

                     Wifiルータ   ケーブルモデム
2   タブレット

階   スマートフォン


    ゲーム機



1     PC              Wifiアクセスポイント
階
ソフトウェアとしても構造
や振る舞いなどの要素が組
み合わされている
l  品質の高い要素で全体が構成
    されていることが重要

l  小さい粒度での品質を高めて
    いきそれを組み合わせ徐々に
    粒度を大きくしていく
アジャイル開発では?
ポイント
l  いつ、どのような品質を達成
    するか?

l  どのような粒度のテストを行う
    か?
ポイント
l  いつ、どのような品質を達成
    するか?

l  どのような粒度のテストを行う
    か?
a)スプリントでの成果物は出荷
 可能か判断することができる

b)出荷に必要なプロセスを経て
 製品を出荷する

プロジェクトによって、bに必要な
作業量は大きく異なる。
いつ誰からフィードバックを得るか?
いつどのようなテストを行うか?

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




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




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

   出荷のためのテスト


どの時点でどのような品質を狙うかを考
えることが大切。
フィードバックの範囲
              広い
                市場にリリースするための
 市場にリリースするための   作業は小さい
 作業は大きい         自動化の範囲を可能な
                限り広げるないと実現困難
少ない                       多い

リリース回数
                頻繁にリリースするための
                自動化が必要。
 市場にリリースするための
 作業は大きい         市場にリリースするための
                プロセスの自動化が少なくて
                も実施可能
                狭い
ポイント
l  いつ、どのような品質を達成
    するか?

l  どのような粒度のテストを行う
    か?
テスト自動化ピラミッド

                                     UI	
  


                                Service	


                                   Unit	
  

 「Succeeding	
  With	
  Agile」 Mike	
  Cohn	
  
アジャイルテストの四象限
                         ビジネス面	
  自動と手動	
                                           手動	

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




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

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




                                                           	
                                   セキュリティテスト	
  
 	




                                   「~性」テスト	

      自動	
                                          ツール	
                         技術面	

出典:実践アジャイルテスト(翔泳社)	
  
ソフトウェアテストの分野では?
ISTQB(International Software Testing
Qualification Board)では、
Test Levelという用語が定義されている

テストレベル(test level): 系統的にまとめ、
管理していくテストの活動のグループ。各テス
トレベルはプロジェクトの特定の責 務と対応付
けができる。テストレベルの例には、コンポー
ネントテスト、統合テスト、システムテスト、
受け入れテストがある。
JSTQB(h=p://jstqb.jp/index.html)用語集より
コンテキストの収集

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

ü 「何に対して」「どんなことを」
   「どんな方法で」テストしたか?
テストの粒度を共有する
テストの粒度	
      機能性	
   信頼性	
   使用性	
   効率性	
   保守性	
    移植性	



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

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

画面	
          手動	
    ―	
     手動	
    ―	
     ―	
      ―	

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



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

プロトコル	
       自動	
    レビュー	
 レビュー	
   自動	
    レビュー	
   ―
テストの粒度を共有する
テストの粒度	
      機能性	
   信頼性	
    使用性	
   効率性	
   保守性	
    移植性	
プロジェクト毎に	
                   どの粒度でどのようなテストを開発する	
  
テストの粒度を検討する	
                かを検討する	
  
クラス	
         自動	
    レビュー	
 レビュー	
    ―	
     レビュー	
   ―	

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

画面	
          手動	
    ―	
      手動	
    ―	
     ―	
      ―	

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



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

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



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

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

画面	
          手動	
          ―	
     手動	
    ―	
     ―	
      ―	

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



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


他にも、「どうやってレビューするか?」「どうやってテスト設計するか?」	
  
「どうやってテスト実装、実施をするか?」など、アジャイルプラクティスに限らず色々	
  
な要素をどう組み合わせるかを考える。
「最後の砦」の役割の
テストでも、作っている
ものの品質が悪ければ、
砦を突破されたり、
維持に膨大なコストが
かかる。
「最後の砦」を「日常の風景」に
変えていくために何ができるか?

SGT2013 技術トークス「アジャイルテスティング」