RIAの性能テストとアプリケーショ
ン品質向上のための管理手法



17-B-6                  髙橋 亨
                        マイクロフォーカス株式会社
                        技術部 AMQ ソリューション


         Developers Summit 2011
マイクロフォーカスについて
 沿革
    1976年設立(日本法人は1984年設立)
    オープンシステムターゲットのCOBOL開発環境でトップシェア
    ロンドン証券市場に上場
    全世界で約1,500名の従業員を持つグローバル企業
    英国、米国、ドイツ、フランス、日本をはじめ世界中に事業所
    昨年度 コンピュウェア社アプリケーションテスティング・ASQ
     (Automated Software Quality)ビジネス、 ボーランド社のビジ
     ネスを統合

 最近のトピックス
  2011年1月「DevPartner」製品の新バージョン10.1Jをリリース
  2011年2月SilkTest, SilkPerformer, SilkCentral Test Manager
   新バージョン2010R2をリリース




                    Developers Summit 2011                    2
マイクロフォーカスのテストライフサイクル製品
要件とテストの連携によるライフサイクル全般の品質向上を実現

                各種要件とテストを連携す
                ることによって開発ライフサ
業務要件            イクル全体の効率化を実現                            システムテスト


            要件管理                     テスト管理               機能テスト
機能要件       (CaliberRM/              (SilkCentral         (SilkTest)
           CaliberRDM)              Test Manager)
                                                    データ駆動・キーワード駆動テスト

         要件の作成                          テスト要件の作成
         要件管理                           テストケースの管理     負荷・性能テスト
性能要件     要件の構造化                         バグ管理          (SilkPerformer)
         要件の変更管理                        自動テストの実行
                                        手動テストの管理        多重・性能テスト

コーディング              成果物管理・障害                             静的解析
  仕様                管理・進捗管理                            デバッグ・テスト
                     (StarTeam)                        (DevPartner)
                      バージョン管理                       ソースレベルでの
                      変更履歴管理                         静的解析・カバレッジ分析
                                                     パフォーマンス分析・メモリ分析
                   Developers Summit 2011                               3
アジェンダ
   RIAの普及・有効性
   RIAにおけるテストの注意点
   RIA環境での性能(負荷)テスト
   FLEX環境での負荷テスト
   クライアントの性能テスト
   AJAX環境での機能テスト
   クラウド環境を利用した負荷テスト
   品質管理としてのテスト管理手法
   リスクベースドテスト
   テスト管理ツール
   まとめ

            Developers Summit 2011   4
RIAの普及




RIA技術の普及により、テストの効率化に苦労するケースも
           多くなっている

          Developers Summit 2011   5
RIAの有効性

1. 従来のWebアプリケーションでは実現できなかったインタラク
   ティブかつリッチなユーザー・インタフェースの実装が可能

2. 即時応答性のある直感的な操作が可能

3. 必要な部分のみデータを書き換え、通信量を最小限にとど
   めるなどデータ通信のトラフィックの軽減から、Webアプリ
   ケーションのレスポンス処理を解消




           Developers Summit 2011   6
RIAにおける性能テストの注意点
<サーバー側>
  AJAXでは、同期の問題としてアプリケーションが次に進めるまで待ち
   状態になる現象が発生
  たとえば、
    ページのリンクをクリックする前に、ページ全体がロードされていなければ
     ならない
    ボタンは、クリックされる前に有効にならなければならない
    データグリッドは、行が使用される前にその情報をロードする必要がある

 FLEXでは、バイナリでスクリプトがキャプチャされてしまうためデータ
  解析が困難

<クライアント側>
 クライアントが重い
  XMLファイルが大きくなり、クライアントの処理が重くなる

              Developers Summit 2011      7
RIA環境での性能(負荷)テスト




     Developers Summit 2011   8
WebアプリケーションとAJAXアプリケーション
 の違い
              Webアプリケーション                 AJAXアプリケーション
クライアント環境     通常のブラウザ                     通常のブラウザ
コンテンツの構成     HTML+CSS+        AJAX(HTML+CSS+
             JavaScriptなどの標準技 JavaScript)などの技術を
             術を使用             使用

リクエストの発生頻度   画面遷移ごと                      画面遷移時に限定されない


通信方式         HTTP                        HTTP
同期           同期通信                        非同期または同期通信



                Developers Summit 2011                   9
負荷テストツールの目的

  サーバーに対し、高負荷を発生させる

  サーバーの状態を監視

                           Webサーバー          APPサーバー   DBサーバー
仮想ユーザー

           負荷テスト
負荷テストツール




アプリケーション、システム、インフラが期待通り動作するかを確認

                   Developers Summit 2011                      10
これまでのHTTPプロトコルのスクリプト作成
                            ブラウザからサーバへのプロトコル
  ブラウザへのイベント    同期処理




               記録




                    再生


           プロトコルを直接記録するため、再生で同期エラーが
            発生する可能性がある
テストスクリプト   スクリプトが冗長であり、メンテナンスが困難

                Developers Summit 2011         11
これまでのHTTPプロトコルでAJAXを
記録、再生してみると、




  記録したスクリプトが、
  実行時にエラー                    No response available.
                             Document not found:
                             http://demo.microfocus.com/InsuranceWebExt
                             Js_dc=1275889716761




            Developers Summit 2011                                        12
スクリプト作成における同期処理の課題

                                     ページ 処理

                                 HTTP Request




              Ext JS 処理


                                XML HTTP Request




  これまでの同期の対応は、
    •スクリプトにWaitや遅延処理を追加する
    •JavaScriptそのものをスクリプトに取り込む
            Developers Summit 2011                 13
ブラウザ駆動型負荷テスト
   http://demo.microfocus.com/InsuranceWebExtJS/index.jsf




AJAXブラウザが自動的に同期を調整
イベントベースのスクリプトなので、短くシンプルで
 分かりやすい

 スクリプトの生産性・メンテナンス性が大幅に向上
                                     Developers Summit 2011   14
ブラウザ駆動型負荷テストのスクリプト作成

                                ブラウザからサーバへのプロトコル
   ブラウザへのイベント




                AJAXブラウザ


      記録



           再生



テストスクリプト

                 Developers Summit 2011            15
FLEX環境での負荷テスト




    Developers Summit 2011   16
FLEX AMFのシステムにおけるデータ転送
XML、JSON等による転送                                         AMFによる転送




   <Naming>
    <Detail>
     <Namespaces>                                                010110111100100111
      <Namespace line="0" name="" />                             ・・・・・・
       <Namespace line="6" name="" />
       <Namespace line="9" name="" />




 転送データはテキストで管理され、                                          転送データはバイナリ化され、
    そのまま転送される                                                 更に圧縮される


可読性は高いが、転送に時間がかかる                                          転送時間が大幅に短縮される
                                        Developers Summit 2011                        17
HTTPプロトコルでキャプチャされた
FLEX AMFの転送データ
               HTTPプロトコル
               によるキャプチャ


   010110111
   100100111
                AMFのバイナリ転送   ユーザID
   ・・・・・・       データを、負荷テスト
                スクリプトとしてキャ
                プチャ




 AMFによる転送


AMFバイナリデータがそのまま記録される

どこに、どの情報が記録されているのか、判別が困難
テスト実行時のデータを編集することは、非常に困難
           Developers Summit 2011    18
FLEX対応によるキャプチャされた
FLEX AMFの転送データ
              FLEX対応
              によるキャプチャ


                  圧縮されたAMFのバイ
                  ナリ転送データを展開
                                 ユーザID
  010110111
  100100111       し、XMLテキストデータ
  ・・・・・・
                  として負荷テストスクリ
                  プトとしてキャプチャ




AMFによる転送

AMFバイナリデータをXMLテキストファイルとして記録する

どこに、どの情報が記録されているのか判別が容易
テスト実行時のデータを自由に編集することが可能
           Developers Summit 2011        19
クライアントの性能テスト




   Developers Summit 2011   20
AJAXのパフォーマンス問題を検証




     AJAXのパフォーマンスボトルネック
     は、クライアント側にある場合も多い


 クライアントのパフォーマンスを測定する必要性が高い
          Developers Summit 2011   21
クライアントの性能測定のコツ
世代古いスペックのPCが必要

クライアントテストは、実際に使用するPCと同じスペックで行う

フリーの計測ツールを上手に利用
  dynaTrace 、YslowやPage Speedで実測する
   ポイント
   タイムラインでレンダリング、JavaScript
   やネットワークのパフォーマンスと同時
   にCPUの負荷が一緒に表示されるとボ
   トルネックや改善したい方向性が見え
   てくる




                  Developers Summit 2011   22
サーバーとクライアントの同時性能テスト
 負荷テストツールと機能テストツールの活用
             サーバーの                        APPサーバー   DBサーバー
負荷テストツール     性能計測
                                Webサーバー




テスト管理ツールから    クライアントの
               性能計測
両ツールを同時実行



               負荷テストでサーバーに負荷をかけ、
機能テストツール        サーバーの状態を監視・計測
               機能テストでアプリケーションを動作さ
                せることにより、クライアント性能を計測

               Developers Summit 2011                        23
AJAX環境での機能テスト




    Developers Summit 2011   24
機能テストツールの目的
 テストの手順を記録、再生、チェックしてテストを自動化
同じ操作を繰り返すテスト(回帰テスト・スモークテスト)の効率を向上
テスト結果をチェックすることにより精度の高いテストができる
                                            一度目は、録画
                テストの流れ                      それ以降は再生

        テスト                     テスト
        計画       同じテスト          実施

                                     OSのパッチ
                                   使用DBの変更など


       機能                              効果
    テストを録画・再生               繰り返しテストの工数削減
     発生箇所も指摘                  デグレードの防止

              Developers Summit 2011                  25
AJAXに対する機能テスト

                                             AJAXのサーバとの
                                             非同期データ通信
               再生

              自動Wait          画面準備

              自動Wait          画面準備

              自動Wait          画面準備
機能テストのスクリプト    ・
               ・
               ・


AJAX画面がReady状態になるまで、自動的に実行をWaitする

スクリプトの初期修正とメンテナンスの工数を大幅に低減可能
                    Developers Summit 2011                26
クラウド環境を利用した負荷テスト




     Developers Summit 2011   27
一般的な負荷テストのイメージ

  社内          エージェントPC
              仮想ユーザを生成




                                                  インターネット



負荷テストツール                                            Web Application
                                                   ・負荷テスト対象のサーバー群
・スクリプト作成
・シナリオ作成
・負荷テストの実行
・負荷テスト結果の表示
・サーバーの情報を取得




                         Developers Summit 2011                       28
クラウド環境を利用した負荷テスト
                      クラウドエージェント


     Amazon EC2 サイト




社内



                                               インターネット
負荷テストツール
・スクリプト作成
・シナリオ作成
・負荷テストの実行
・負荷テスト結果の表示                                      Web Application
・サーバーの情報を取得                                     ・負荷テスト対象のサーバー群




                      Developers Summit 2011                       29
クラウド環境を利用した負荷テストの利点

クラウド環境を利用して仮想ユーザの生成するため、
 Agent PCが必要なく、コストの削減

Agent PCの準備工数、 設置スペースの削減

Agentの配置・割り当てが簡単

インターネットを経由した実測測定




           Developers Summit 2011   30
品質管理としてのテスト管理手法




     Developers Summit 2011   31
リスクベースドテストとは?
  テストの優先順位を決める
  リスクを指数として表わす
  • テストをしなかった時のどれくらい欠陥が含まれて
    いるのか?
  • その欠陥はどれくらいの確率で発生するのか?
  • その欠陥の重要度は?
  リスクを理解すれば、とても効率的なテスト




          Developers Summit 2011   32
リスクベースドテスト
                                      リスク低減が遅いバターン


                                          リスク




                                    コスト
                                                テスト
                                                効率




                                      リスク低減が早いバターン


                                          リスク




                                    コスト
                                                テスト
テストを効果的                                         効率
に実施

  同じコストで、より効果的にリスクを減らすテストを実現
           Developers Summit 2011                     33
リスクベースドテストの考え方


      テスト可能範囲       テスト不可範囲   重要なテストが、
                              テスト漏れになる
                              可能性



                        リスク(重要度)によって優先
                        順位を行い、テスト範囲を調整




       テスト可能範囲      テスト不可範囲

リソース(人員、マシン)がスケジュール内で実施可能な範囲に、
リスク(重要度)の高いテストを実施

重大な問題がテスト対象から外れるケースの軽減が可能
           Developers Summit 2011        34
リスクベースドテストの利用




        Developers Summit 2011   35
テスト管理ツールとは?

テストの見積もりは?

                          テストケースの管理は?

テスト実施状況は?

                         情報のトレーサビリティは?


バグ管理とリスクは?
                             テストのレポートは?


            Developers Summit 2011        36
テスト管理ツールの利点
 • テストの実施状況・結果を把握
 • テスト担当者の割り当て・管理
 • 自動化テストや手動テストを一元管理
 • テストケースの標準化・再利用が可能
 • 指定したPCでテストの自動実行
 • 関連したテストの順次実行の管理
 • 要件定義システムやバグ管理システムとの連携
 • ノウハウの蓄積・共有・駆使が可能

         Developers Summit 2011   37
テストケースの一元管理と自動実行
                                                          自動テスト環境
         プロジェクト    自動テスト     テストケース1     合格            (テストツール+テストスクリプト)
           A
                             テストケース2     不合格   実行/結果
                                   ・・・
                                                                  `


                  マニュアルテスト   テストケース1     合格
                                                                       `
                             テストケース2     不合格
                                   ・・・                        `




         プロジェクト    自動テスト     テストケース1     合格               マニュアルテスト
サーバでテ      B
ストケースカ                       テストケース2     不合格              (手動でのテスト)
バレッジ情報                             ・・・
 を管理
                  マニュアルテスト   テストケース1     合格
                             テストケース2     不合格
                                               実行/結果
                                   ・・・




自動化テストおよび手動テストを一元管理し、プロジェクト全体
 のテスト状況を把握
指定したマシンでのテスト自動実行や、関連したテストの
 順次実行を管理   Developers Summit 2011                                          38
手動テストの管理
テストの自動化は、テスト全体の10~40%
残り90~60%は、手動テスト
   Excelを利用                            ツールを利用




      手動テスト管理の問題点
      テストデータの管理が煩雑になってませんか?
      テストデータは正しいですか?
      レポート作成に時間がかかってませんか?


              Developers Summit 2011            39
手動テストを助ける機能
ビデオ録画




   テストを記録することにより、テスト漏れの確認
   障害が発生したときの再現性の確認



            Developers Summit 2011   40
まとめ

RIAの性能テストやテストの管理手法を活用する
ことにより、テスト工程やテスト管理の見通しがよ
くなり、実務に集中できます。
それにより、
「どんな観点でテストをすればいいのか?」
「単純にテストを組み合わせたら膨大になってしまった!」
「どんなにテストしても品質が上がらない!」
「このテストケースは再利用できないだろうか?」
「もっと簡単にテストができないだろうか?」


こんな気づきを創発すると、品質が向上します!

             Developers Summit 2011   41
Application Management & Quality製品に関するお問い合わせ先:
                マイクロフォーカス株式会社
                http://www.microfocus.co.jp/
            TEL: 03-5413-4770
            Email: qa-sales@microfocus.co.jp




                                      Copyright © 2011 Micro Focus. All Rights Reserved.
                                      記載の会社名、製品名は、各社の商標または登録商標です。
                  Developers Summit 2011

【17-B-6】RIAの性能テストとアプリケーション品質向上のための管理手法