SlideShare ist ein Scribd-Unternehmen logo
1 von 61
ここまで見せます!
高負荷ECサイト向けアプリケーション
サービスの   品質保証HowTo
         2013.3.19
             #005
 株式会社神戸デジタル・ラボ 内田恵
自己紹介

         内田 恵
         Uchida Megumi
         株式会社神戸デジタル・ラボ
         先端技術開発事業部

分散KVS                    事業担当
2012年9月~現在
 検索エンジンサービス                     開発
それ以前~
  ネットワーク系研究開発、セキュリティ研究開発等
                   入社2年目のピチピチ社員です★
What’s   ?
通販サイトの商品検索を速くするサービス
速さ × 安定性
=高負荷時(セール時)も安定した速さを提供
アクセスが集中しても、安定稼働
導入実績:今年1月のセール対策




           通常時の約6倍という
          アクセスでも安定稼働!
品質保証
事前アンケートに
よると・・・
ぶっちゃけ
あんまやってない
品質保証って何をすればいいの?


 一番身近なものでいえば・・・


     テスト
テストって何をすればいいの?


     テストをしているか
他社がどんな

         のテスト事例
テストの基本:sui-seiの場合は・・・
            品質の     テスト実行方法の   テスト技法の
工程による分類
          観点からの分類   観点による分類    観点による分類

                               トップダウンテス
 単体テスト     機能テスト     動的テスト
                                   ト

                               ボトムアップテス
 結合テスト     性能テスト     静的テスト
                                   ト

                               ブラックボックス
           負荷テスト     回帰テスト
                                  テスト

          ユーザビリティ              ホワイトボックス
            テスト                   テスト

          セキュリティ
            テスト

          レグレッション
            テスト
テストの基本:sui-seiの場合は・・・
            品質の          テスト実行方法の   テスト技法の
工程による分類
          観点からの分類        観点による分類    観点による分類
          テストコード

                                    トップダウンテス
 単体テスト      機能テスト         動的テスト
                                        ト

                                    ボトムアップテス
 結合テスト      性能テスト         静的テスト
                                        ト

                                    ブラックボックス
            負荷テスト
            ソースコードレビュー    回帰テスト
                                       テスト

          ユーザビリティ                   ホワイトボックス
            テスト                        テスト

           セキュリティ
             テスト
                           セキュリティ事業部に委託
          レグレッション
            テスト
テストの基本:sui-seiの場合は・・・
            品質の     テスト実行方法の   テスト技法の
工程による分類
          観点からの分類   観点による分類    観点による分類

                               トップダウンテス
 単体テスト     機能テスト     動的テスト
                                   ト

                               ボトムアップテス
 結合テスト     性能テスト     静的テスト
                                   ト

                               ブラックボックス
           負荷テスト     回帰テスト
                                  テスト

          ユーザビリティ              ホワイトボックス
            テスト                   テスト

          セキュリティ
            テスト

          レグレッション
            テスト
手作業のテストはコストも時間もかかる・・・
新サービスの開発はテストサイクルが速い!
新サービスの開発はテストサイクルが速い!




             きりがない・・・
非効率なテストのリスク
非正確性
   → 体力的・精神的限界

非生産性
   → 蓄積されるノウハウが属人的

非再現性
   → 同じテストができなくなる
非効率なテストのリスク
非正確性
   → 体力的・精神的限界
    品質の低下
非生産性
   → 蓄積されるノウハウが属人的

非再現性
   → 同じテストができなくなる
では、非効率なテストを・・・
では、非効率なテストを・・・




   どう変えるか?
自動化
でしょう!
テストツールを使うメリット
  正確性
   → 単調作業の減少

  生産性
   → テストケースの蓄積

  再現性
   → 全く同じテストを短時間で再現
テストツールを使うメリット
  正確性
   → 単調作業の減少
     品質の向上
  生産性
                 リスクダウン
   → テストケースの蓄積

  再現性
   → 全く同じテストを短時間で再現
テスト実行ツールの種類
JUnit                               FEST
                                    Swing GUIのテストのための"流れる"インターフェイスを提供する Javaライブラリ
Javaプログラムのユニットテスト自動化を行うためのフレームワーク




 Selenium                            Google CodePro AnalytiX
 Webアプリケーションのテスト自動化をサポートするツール        Webアプリケーションのテスト自動化をサポートするツール
テスト実行ツールの種類
JUnit                               FEST
                                    Swing GUIのテストのための"流れる"インターフェイスを提供する Javaライブラリ
Javaプログラムのユニットテスト自動化を行うためのフレームワーク




 Selenium                            Google CodePro AnalytiX
 Webアプリケーションのテスト自動化をサポートするツール        Webアプリケーションのテスト自動化をサポートするツール
sui-seiから検索結果を取得する
検索リクエスト   → 検索条件をパラメータに指定


           インプット


            アウトプット REST API

          検索結果
          → JSON形式の文字列を取得
結合テスト自動化:用意するもの

ツール
 NetBeans IDE 7.2.1/JUnit 4.10

テスト用データ
 TSVファイル(取り込み用データ)
 検索リクエストURL
 正しい検索結果(照合用データ)
結合テスト自動化:流れ
検索リクエストURLを作成(テストケース)
 ↓1回目 目視でテストを行う    テストのテスト


正しい検索結果を作成(テストケース)
 ↓2回目以降 テストツールを使用
テストケースを元に自動的にテスト
 1検索パターンに対し、3つの照合
  →商品件数・Pkey(一意)・データの中身
正確性


      どこが失敗しているのか明確




                JUnitを使ったテスト
生産性



      テストケースを蓄積できる




              JUnitを使ったテスト
再現性



      短時間で毎回同じテストができる




                JUnitを使ったテスト
魅惑のグリーンバー

不思議なもので、グリーンバーが表示されるととてもうれしい気
分になり、いつの間にかゲーム感覚でグリーンバーを取得しよう
と必死になってしまいます。そういった状況に深くはまってしまう
症状をテスト熱中症と呼ぶのですが、実際にテストにはまってし
まう人の気持ちが分からないではありません。
グリーンバーの威力は絶大です。
      テストファーストによるソフトウェア開発の衝撃(後篇) – IBM developerWorks
     http://www.ibm.com/developerworks/jp/java/library/itm-tt-testfirst2/
ベンチマークテスト
ベンチマークテスト
・・・ 性能を比較・検証するためのテスト

何が必要?

   基準となる値
       の設定が、意外とできていない!
sui-seiベンチマークテストの基準値

セール時の検索回数

 大規模ECサイト 約70/秒

 中規模ECサイト 約10/秒

※実際のECサイト検索アクセス数を調査
ベンチマークテストの構成
テストシナリオを作成

 基準値の負荷に耐えられるか

 長時間負荷に耐えられるか

 データインポート時間の測定

 データ量が増加しても耐えられるか
ベンチマークテストの構成
テストシナリオを作成

 基準値の負荷に耐えられるか

 長時間負荷に耐えられるか

 データインポート時間の測定

 データ量が増加しても耐えられるか
ベンチマークテストの構成
JMeter(パフォーマンス計測用のJavaアプリケーション)を利用
して、同時接続数を徐々に増やしながら負荷をかける。
検証環境について:sui-seiの内部構成
3サーバ1クラスタ 完全冗長化・負荷分散されている
検証環境について:テストデータの構成
            取り込む商品ファイル
            商品件数50000件




キーワード検索対象
は商品説明を想定
テストシナリオの作成
テストシナリオの作成



        同時接続数が
        6~108スレッドまで
        12スレッドずつ増加させる
        各スレッド毎に
        2分間アクセスを続ける
テストシナリオの作成




             乱数コントローラが
             ランダムにリクエスト
検証環境について:ベンチテストの構成
負荷をかける(Jmeterを使用する)サーバは外部サーバを使用
ネットワークは 1 Gbpsまで対応
検証環境について:クラウド環境

 クラウド事業社 3社で比較
 サーバスペック
  CPU:4core、メモリ:16GB相当 × 3台

 ロードバランサ 1台
 結果グラフ
    → 短時間・長時間負荷
A社
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                                      2809


    2500
                                                               2222
レ
ス                                                       1925
    2000
ポ
ン                                         1593   1660
ス
    1500
時
間
(          1秒ライン                    975
                                                                             A社

ミ   1000
リ
秒                             610
)
    500
                        426
           169    236

       0

           6      12    24    36    48    60     72     84     96     108
                                    同時接続数
B社
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                        2761

    2500
                                                               2252   2303
レ
ス
    2000
ポ
ン
ス                                                1522
    1500
時
間
(          1秒ライン                          1133                               B社

ミ   1000
リ                                   795
秒
)                             506
    500
                        315
           130    145
       0

           6      12    24    36    48    60     72     84     96     108
                                    同時接続数
C社
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000



    2500

レ
ス                                                                   2002
    2000
ポ
ン
ス
    1500
時                                                            1260
間
(          1秒ライン                                959
                                                      1068                 C社

ミ   1000
リ
                                          664
秒
)                             493   523
    500
                  309   309
           161

       0

           6      12    24    36    48    60    72    84     96     108
                                    同時接続数
3社比較(短時間)
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                                      2809
                                                        2761



    2500
                                                                      2303
レ                                                              2252
                                                               2222

ス                                                                     2002
                                                        1925
ポ   2000

ン                                         1593
                                                 1660
ス                                                1522
    1500
時                                                              1260
間
(
           1秒ライン                    975
                                          1133
                                                 959
                                                        1068
                                                                             A社
                                                                             B社
ミ   1000
                                    795                                      C社
リ                                         664
                              610
秒                             506
                              493   523
)   500                 426
                  309   315
                        309
                  236
           169
           161
           130    145

      0
            6     12    24    36    48     60     72     84     96    108
      A社   169    236   426   610   975   1593   1660   1925   2222   2809
      B社   130    145   315   506   795   1133   1522   2761   2252   2303
      C社   161    309   309   493   523   664    959    1068   1260   2002

                                    同時接続数
3社比較(短時間)
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                                      2809
                                                        2761



    2500
           同じスペックのサーバでも、
                                                                      2303
レ
ス
            クラウド事業社によって                                        2252
                                                               2222

                                                                      2002
ポ
ン
    2000
             性能に差がでる!                                   1925

                                                 1660
                                          1593
ス                                                1522
    1500
時                                                              1260
間
(
           1秒ライン                    975
                                          1133
                                                 959
                                                        1068
                                                                             A社
                                                                             B社
ミ   1000
                                    795                                      C社
リ                                         664
                              610
秒                             506
                              493   523
)   500                 426
                  309   315
                        309
                  236
           169
           161
           130    145

      0
            6     12    24    36    48     60     72     84     96    108
      A社   169    236   426   610   975   1593   1660   1925   2222   2809
      B社   130    145   315   506   795   1133   1522   2761   2252   2303
      C社   161    309   309   493   523   664    959    1068   1260   2002

                                    同時接続数
3社比較(短時間)
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                                       2809
                                                         2761



    2500
                                                                       2303
レ                                                               2252
                                                                2222

ス                                                                      2002
                                                         1925
ポ   2000

ン                                          1593
                                                  1660
ス
時   1500
                        1秒以内の処理                   1522

                                                                1260
間                                          1133
                                                         1068
                                                                              A社
(                                    975          959                         B社
ミ   1000
                                     795                                      C社
リ                                          664
                               610
秒                              506
                               493   523
)   500                  426
                  309    315
                         309
                  236
           169
           161
           130    145

      0
            6     12     24    36    48     60     72     84     96    108
      A社   169    236    426   610   975   1593   1660   1925   2222   2809
      B社   130    145    315   506   795   1133   1522   2761   2252   2303
      C社   161    309    309   493   523   664    959    1068   1260   2002

                                     同時接続数
A社(短時間)
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                                      2809


    2500
                                                               2222
レ
ス                                                       1925
    2000
ポ
ン                                         1593   1660
ス
    1500
時
間
(          1秒ライン                    975
                                                                             A社

ミ   1000
リ
秒                             610
)
    500
                        426
           169    236

       0

           6      12    24    36    48    60     72     84     96     108
                                    同時接続数
A社(長時間)
                  長時間の負荷継続時のレスポンス速度の変化
    1600



    1400



レ   1200
ス                                            1秒ライン
ポ   1000
ン
ス                                      931
時   800    919      905    920   905           906
間                                                    A社
(
ミ   600
リ
秒   400
)
    200



      0

           1        2      3     4     5        6
                 負荷継続時間(単位:時間) ※同時接続数は48で固定
B社(短時間)
                 1リクエストあたりのレスポンス時間の平均値(ミリ秒)
    3000
                                                        2761

    2500
                                                               2252   2303
レ
ス
    2000
ポ
ン
ス                                                1522
    1500
時
間
(          1秒ライン                          1133                               B社

ミ   1000
リ                                   795
秒
)                             506
    500
                        315
           130    145
       0

           6      12    24    36    48    60     72     84     96     108
                                    同時接続数
B社(長時間)
                   長時間の負荷継続時のレスポンス速度の変化
    1600
                             1447   1474            1485
                     1420                  1443
    1400


           1173
レ   1200
ス                                                 1秒ライン
ポ   1000
ン
ス
時   800
間                                                          B社
(
ミ   600
リ
秒   400
)
    200



      0

            1         2       3      4      5        6
                  負荷継続時間(単位:時間) ※同時接続数は48で固定
2社比較(長時間)
                   長時間の負荷継続時のレスポンス速度の変化
    1600
                            1447   1474            1485
                     1420                 1443
    1400


           1173
レ   1200
ス                                                1秒ライン
ポ   1000
ン
ス                                         931
時   800    919       905    920    905             906
間                                                         A社

(
ミ   600
                                                          B社


リ
秒   400
)
    200



      0

            1         2      3      4      5        6
                  負荷継続時間(単位:時間) ※同時接続数は48で固定
2社比較(長時間)
                   長時間の負荷継続時のレスポンス速度の変化
    1600
                            1447   1474            1485
                     1420                 1443
    1400


           1173
レ   1200
ス                                                1秒ライン
ポ   1000
ン
ス                                         931
時   800    919       905    920    905             906
間                                                         A社

(                                                         B社
ミ
リ
    600
                      長時間負荷をかけると
秒
)
    400
                      クラウド事業社によって
    200
                       性能に差がでる!
      0

            1         2      3      4      5        6
                  負荷継続時間(単位:時間) ※同時接続数は48で固定
品質保証 まとめ

非効率なテストはハイリスク
→ テストツールを上手く活用してテストを効率化
  リスクはダウン、品質アップ!

ベンチマークテストは計画が大事
→ 始める前の調査・基準の設定が重要
  クラウドによる性能差に要注意!
Any Questions?
いつテストするの?




                 今でしょ!!!


     ご清聴ありがとうございました!

Weitere ähnliche Inhalte

Ähnlich wie ここまで見せます!高負荷ECサイト向けアプリケーションサービスの品質保証HowTo (tokyoLinuxStudy#005)

アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
 
TERAS Conference
TERAS ConferenceTERAS Conference
TERAS Conference
Keiju Anada
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
Akiko Kosaka
 
20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料
Kenichiro Nakajima
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
finoue
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
atsushi_tmx
 

Ähnlich wie ここまで見せます!高負荷ECサイト向けアプリケーションサービスの品質保証HowTo (tokyoLinuxStudy#005) (20)

SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」SGT2013 技術トークス「アジャイルテスティング」
SGT2013 技術トークス「アジャイルテスティング」
 
アドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
 
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
AlloyDB のデータ分析基盤での活用におけるポテンシャルとは?
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
 
Metrix team 20190524
Metrix team 20190524Metrix team 20190524
Metrix team 20190524
 
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
TERAS Conference
TERAS ConferenceTERAS Conference
TERAS Conference
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
 
SGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーSGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリー
 
スタートアップがAWSを使うべき3つの理由
スタートアップがAWSを使うべき3つの理由スタートアップがAWSを使うべき3つの理由
スタートアップがAWSを使うべき3つの理由
 
20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料
 
Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術Awsで実現するseleniumテスト高速術
Awsで実現するseleniumテスト高速術
 
[AC06] クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure
[AC06] クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure[AC06] クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure
[AC06] クラウド・ネイティブなスケーラブル・アプリ開発のために~12 Factor App on Kubernetes on Azure
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
 
12 1215進化計算シンポ ポスター
12 1215進化計算シンポ ポスター12 1215進化計算シンポ ポスター
12 1215進化計算シンポ ポスター
 
12 1215進化計算シンポ ポスター
12 1215進化計算シンポ ポスター12 1215進化計算シンポ ポスター
12 1215進化計算シンポ ポスター
 

ここまで見せます!高負荷ECサイト向けアプリケーションサービスの品質保証HowTo (tokyoLinuxStudy#005)