SlideShare ist ein Scribd-Unternehmen logo
1 von 91
Downloaden Sie, um offline zu lesen
パッケージソフトのテスト戦略


開発者から見たテストの現場

        2009/10/21
     SATO Tomoyuki
    Ariel Networks, Inc.
自己紹介
佐藤 寛之 (SATO Tomoyuki)

✔ アリエル・ネットワーク株式会社

  開発部 ソリューショングループ 所属

✔ プログラマ 時々 プロジェクトマネージャ

✔ 2008年6月より現職
ふだんの仕事
IBMに喧嘩を売るだけの
  簡単なお仕事です
・・・と言うと
怒られそうなので
多くの企業が抱えている
 Lotus Notesという負の遺産を
弊社のグループウェアに移行する
    お手伝いをしています
弊社のグループウェア上で動く
 特定顧客向けのアドインの
  受託開発もやってます
会社はパッケージベンダですが
 私の仕事はSIに近いです
自分語りは
このくらいにして
本日のお題


テスト過剰にどう対処するか
ソフトウェアテストPRESSの
 記事では、テストに対する
   取り組みの変遷と
トラブル事例を紹介しました
が
そこで取り上げた内容のうち
プログラマ兼PMの立場から
最大の課題と考えているのは
品質を犠牲にせず
いかにテスト工数を
  削減するか
・・・という部分です
そんなわけで
 今日はこの部分について
掘り下げる形でお話しします
あらすじ

✔ テスト不足と過剰の事例
✔ テスト過剰への対処法(案)
➢ 完璧なソフトウェアを目指さない
➢ テストの自動化
極端な事例1
1年ちょっと前のアリエル
客先にいる
コンサルタントから電話
コンサルタント「このアドインの
ここの動きをこう変えて、ここの
文言もこうしてほしいんだけど」
佐藤「すぐ直します」
電話をつないだまま
おもむろにコードを修正
ビルド
メールで送る
佐藤「今送ったファイルで
 差し替えてください」
所要時間
 約15分
とはいえ
第三者による
 テストを通さないのは
ものすごく怖いし危険です
よい子は真似しないでね♪
極端な事例2
  前職
アリエル入社前は
某メーカー系SIerで
SEをやってました
担当していたパッケージで
JavaScriptを1行修正する
      プロジェクト
プロジェクト期間
  約1ヶ月
内訳
プロジェクト開始に関わる
   事務手続き
      2日
品質計画の策定と
 レビューと承認
    2日
テスト計画の策定と
 レビューと承認
    2日
設計ドキュメントの作成と
  レビューと承認
     3日
テストケースの作成と
  レビューと承認
     2日
実装
10秒
テストと品質分析/評価
     4日
マニュアル修正
   1日
検査
3日
企業認証絡みの
エビデンス整備
   2日
爆発しろ
物事には
程度というものがあります
教訓
プロジェクト内容を見極めて
 プロセステーラリングを
  ちゃんとやりましょう
用語のおさらい: テーラリング

   組織・企業が業務の基本として定めた
標準プロセスや開発標準などを手直しして、個別の
 プロジェクトや顧客の要求に合わせて実用的な
標準(手順・成果物・指標など)を作成・実行すること


     出典:@IT情報マネジメント用語辞典
ご紹介した事例2つは
プロジェクト全体にわたって
 色々問題がありますが
今日はテストの話なので
テストの不足や過剰という
 切り口で考えてみる
テスト不足への対処

✔ 障害事例の分析
✔ ツールや方法論の研究・開発

             ・・・etc.
様々な場で活発に議論されてきた
一方でテスト過剰については
 取り上げられる機会が
  少ないように思える

※ 私はテストの専門家ではないので
   気のせいかもしれません
テスト過剰の弊害


✔ スケジュール・予算超過
✔ 価格競争力の低下
✔ 重大なバグの埋没・見逃し
テスト過剰への対処法(案)


✔ 完璧なソフトウェアを目指さない

✔ テストの自動化
1. 完璧なソフトウェアを
    目指さない
“Good enough software”
 十分に良いソフトウェア

               出典:
     Andrew Hunt & David Thomas
     “The Pragmatic Programmer”
残存バグ0件や
 テストカバレージ100%は
本当に求められているか?
eXtreme Programmingの哲学
   失敗するかもしれない
 すべてのことをテストしよう
                       出典:
   Ron Jeffries, Ann Anderson & Chet Hendrickson
         “eXtreme Programming Installed”
逆に捉えると
「失敗しそうにないこと」は
 テストしてはいけない

                     出典:
 Ron Jeffries, Ann Anderson & Chet Hendrickson
       “eXtreme Programming Installed”
とはいえ最後は
ケースバイケース
医療機器
 航空管制システム
原発の制御システム
   ・・・etc.
こういうのは
  徹底的に
テストしてください
死人を出してから
 後悔しても
 遅いですよ?
一方で
社内情報共有システム
 備品管理システム
   ・・・etc.
多少バグが残っていても
 早く安く納品した方が
 喜ばれるかもしれない
事例
複雑なワークフローと
多数の帳票を用いる
 旅費精算アドイン
リリース予定日1ヶ月前の状況


✔ テストで検出されるバグが多く

 修正に時間を要して作業が遅延
✔ リリース予定日までに全ての

 テストを完了するのは絶望的
では、残された時間を
何に注力すべきか?
顧客要件の整理


✔ 旅費の金額計算に誤りがないこと
 ➔ 既にテスト完了しておりクリア

✔ 年度初めに予定通り稼働すること
 ➔ 作業を削らないと間に合わない!
この段階で
スケジュールに合わせて
品質/機能を落とすという
  決断をしている
残っているテスト内容の分析
  ワークフローのテストが未実施
   (申請経路:約150パターン)

       分析・整理


 担当者や担当組織が異なるだけで
論理的な経路は同じものが多数存在する
      ことが判明
テスト内容の絞り込み

論理的に同じ経路をグルーピングし
各グループから1パターンずつ選択



   テスト対象の申請経路
150パターン ⇒ 19パターン
バグのトリアージ

✔ 申請書を閲覧できないはずのユーザーが

 申請書を閲覧できる
 ➔ セキュリティに関わるため対処必須

✔ 帳票の印刷時に一部の罫線が消える

 ➔ 業務への影響が軽微ため対処しない
結果


当初の予定通りに本番稼働
 大きな不具合報告は無し

対処しなかったバグについては
 保守フェーズ内で順次対応
2.テストの自動化
テストケースが過剰でも
それが自動化されている限り
工数へのインパクトは少ない
アリエルのアドイン開発における
 テスト自動化への取り組み
アドインのユニットテストの自動化

        アドインの実装形態
   XMLによるデータ構造の定義と
  JavaScript on Mozilla Rhinoによる
           ロジックの記述


  こういう特殊な環境下で
 テストの自動化は可能か?
言語はJavaScriptだけど
 実行環境がJavaだから
JsUnitによるテストは難しい
実行環境はJavaだけど
言語はJavaScriptだから
JUnitによるテストは難しい
それでもやっぱり
テスト駆動開発がやりたい!
苦節1年
         JUnit
                 DbUnit

  ねこ                      万年筆




JsUnit                     Selenium
※以下の内容は本セッションの本質ではありません


       JUnitのTestCaseクラスを
  RhinoのJavaAdapterクラスを用いて
  JavaScriptで継承して実装することで
JUnitを用いてスクリプトをテストできそう!
諦めなければ道は開けます

 *     +    巛 ヽ
            〒 !   +    。     +    。     *     。
      +    。  |  |
   *     +   / /   イヤッッホォォォオオォオウ!
       ∧_∧ / /
      (´∀` / / +    。     +    。   *     。
      ,-     f
      / ュヘ    | *     +    。     +   。 +      
     〈_} )   |                            
        /    ! +    。     +    +     *
       ./  ,ヘ  |
 ガタン ||| j  / |  | |||
――――――――――――  
まとめ
No Silver Bullets
技法・方法論・ツールを盲信せず
テストのやり方は自分たちの手で
 きちんとテーラリングしよう!
徹底した作業の自動化
  コンピュータにできることは
   コンピュータに任せよう!
人間にしかできないことに集中しよう!
ご静聴
ありがとうございました

Weitere ähnliche Inhalte

Was ist angesagt?

テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常ですテストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
ryuji koyama
 
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)
DevLOVE
 
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
SIGSTJ
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
 
Myweekdays and testing
Myweekdays and testingMyweekdays and testing
Myweekdays and testing
ryuji koyama
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
Wataru Terada
 
20140128 tel@cafe selenium編
20140128 tel@cafe selenium編20140128 tel@cafe selenium編
20140128 tel@cafe selenium編
SHIFT Inc.
 

Was ist angesagt? (20)

テストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常ですテストエンジニアのおっさんの日常です
テストエンジニアのおっさんの日常です
 
EMTEを使って自動化の費用対効果をわかりやすく表現する
EMTEを使って自動化の費用対効果をわかりやすく表現するEMTEを使って自動化の費用対効果をわかりやすく表現する
EMTEを使って自動化の費用対効果をわかりやすく表現する
 
Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)Dev Love Lt 20090622(佐々木)
Dev Love Lt 20090622(佐々木)
 
テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善テストマネジメントツールSquash TMを利用した継続的テスト改善
テストマネジメントツールSquash TMを利用した継続的テスト改善
 
RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料RICOH最終選考プレゼン資料
RICOH最終選考プレゼン資料
 
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
ICST 2015 まるわかりDay! "Test Selection and Prioritization Track"
 
ちょっと使えるようになる信頼度成長曲線(移行済)
ちょっと使えるようになる信頼度成長曲線(移行済)ちょっと使えるようになる信頼度成長曲線(移行済)
ちょっと使えるようになる信頼度成長曲線(移行済)
 
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacateWACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
WACATE2019冬 ソフトウェアテスト業界でのステップアップを考えよう #wacate
 
モデル検査入門 #wacate
モデル検査入門 #wacateモデル検査入門 #wacate
モデル検査入門 #wacate
 
Wacate2015summer_report
Wacate2015summer_reportWacate2015summer_report
Wacate2015summer_report
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
 
Myweekdays and testing
Myweekdays and testingMyweekdays and testing
Myweekdays and testing
 
Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
 
GUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるにはGUI自動テストの保守性を高めるには
GUI自動テストの保守性を高めるには
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
 
ソフトウェア開発工程とテスト入門
ソフトウェア開発工程とテスト入門ソフトウェア開発工程とテスト入門
ソフトウェア開発工程とテスト入門
 
20140128 tel@cafe selenium編
20140128 tel@cafe selenium編20140128 tel@cafe selenium編
20140128 tel@cafe selenium編
 
テスト自動化のこれまでとこれから
テスト自動化のこれまでとこれからテスト自動化のこれまでとこれから
テスト自動化のこれまでとこれから
 
ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略ぼくのかんがえた iOSテスト戦略
ぼくのかんがえた iOSテスト戦略
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 

Andere mochten auch

テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
Kinji Akemine
 

Andere mochten auch (9)

20140820 九州ソフトウェアテスト勉強会(仮)vol 11 part 2
20140820 九州ソフトウェアテスト勉強会(仮)vol 11 part 220140820 九州ソフトウェアテスト勉強会(仮)vol 11 part 2
20140820 九州ソフトウェアテスト勉強会(仮)vol 11 part 2
 
はじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用pptはじめてのUnity教室 講義用ppt
はじめてのUnity教室 講義用ppt
 
Hr res final
Hr res finalHr res final
Hr res final
 
講義用Ppt windows女子部
講義用Ppt windows女子部 講義用Ppt windows女子部
講義用Ppt windows女子部
 
Code for japan summit 2015 マッピングパーティの作り方
Code for japan summit 2015 マッピングパーティの作り方Code for japan summit 2015 マッピングパーティの作り方
Code for japan summit 2015 マッピングパーティの作り方
 
講演「SNSを活用した行政の広報」国土交通省北陸地方整備局
講演「SNSを活用した行政の広報」国土交通省北陸地方整備局講演「SNSを活用した行政の広報」国土交通省北陸地方整備局
講演「SNSを活用した行政の広報」国土交通省北陸地方整備局
 
僕らがQiitaをゴリゴリ書く理由
僕らがQiitaをゴリゴリ書く理由僕らがQiitaをゴリゴリ書く理由
僕らがQiitaをゴリゴリ書く理由
 
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacateテスト分析入門 -「ゆもつよメソッド」を例に- #wacate
テスト分析入門 -「ゆもつよメソッド」を例に- #wacate
 
概説 テスト分析
概説 テスト分析概説 テスト分析
概説 テスト分析
 

Ähnlich wie 第3回ソフトウェアテストセミナー

自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
Wataru Terada
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
atsushi_tmx
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
Akiko Kosaka
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
yasuohosotani
 
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
Makoto Nonaka
 

Ähnlich wie 第3回ソフトウェアテストセミナー (20)

Code complete ch22_developper_test
Code complete ch22_developper_testCode complete ch22_developper_test
Code complete ch22_developper_test
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
 
自動テストで開発効率を上げるには
自動テストで開発効率を上げるには自動テストで開発効率を上げるには
自動テストで開発効率を上げるには
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめJenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
Jenkins ユーザ・カンファレンス 2012 東京 S406-4/マルチステージ型継続的インテグレーションのすすめ
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
 
Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料Agile japan2010 rakuten様プレゼン資料
Agile japan2010 rakuten様プレゼン資料
 
テストコードのリファクタリング
テストコードのリファクタリングテストコードのリファクタリング
テストコードのリファクタリング
 
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
 
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
デブサミ2014【13-B-L】テスト自動化を見直そう!自動化への投資が開発チームをクリエイティブにする(安竹由起夫〔コベリティジャパン〕)
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
 
Gamedevenvstudy1
Gamedevenvstudy1Gamedevenvstudy1
Gamedevenvstudy1
 
アジャイル×テスト開発を考える
アジャイル×テスト開発を考えるアジャイル×テスト開発を考える
アジャイル×テスト開発を考える
 
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
「事実にもとづく管理」によるソフトウェア品質の改善 ー ヒンシツ大学 Evening Talk #04
 
テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)テストファースト、自動テストを導入するという事について(@社内勉強会)
テストファースト、自動テストを導入するという事について(@社内勉強会)
 
失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと失敗から学ぶテスト自動化導入で大切なこと
失敗から学ぶテスト自動化導入で大切なこと
 
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
 

第3回ソフトウェアテストセミナー