Comments
Description
Transcript
Agitator
Agitarソリューション導入事例 開発効率および品質向上ソリューション プロダクト & SIビジネスユニット エンジニアリング グループ 石原 賢二 © 2006 10art-ni Corporation アジェンダ 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation テンアートニ事業概要 Linux Solution Linuxサポート Red Hat Enterprise Linux 『Plus』シリーズ Linuxプロダクト HAクラスタリングソリューション『LifeKeeper』 ソースコードのIP(知的財産権)コンプライアンス管理『ProtexIP』 Northern Lightsサーバ製品の企画・製造・販売・サポート Linuxコンサルティング、システムインテグレーション Linuxシステムの最適な構成分析と提案・構築 SE Linux導入コンサルティング Java/Web Solution サービス システム構築サービスとコンサルティング MS-AccessからWebシステムへ移行ソリューション『TenArtni A2Jaws』 『現場指向アプローチ』シリーズ オープントレーニングコース OJT代行サービス『バーチャルOJT』 Javaソリューション / アプリケーション ビジュアルWebシステム構築ソリューション『TenArtni Ninja-VA』 Web帳票ソリューション『WebReportCafe』 営業効率改善ソリューション 『TenArtni SFA+』 クライアントに.NET サーバにJavaという選択『TenArtni Ninja-VA for Win2Jaws』 © 2006 10art-ni Corporation ソフトウェア開発を取り巻く環境 9社会・経済環境の変化が激しい時代 9サービスインまでの期間が短縮化 9ユーザ要求の高度化 9度重なる要求変更 9変化の激しい技術 9不特定多数の利用者 9厳しい性能要求 9ビジネスの変化の早さ 9競合他社との差別化 9Ajax、リッチクライアント 9RSS、ブログ、SNS (BtoC) 9M&A、ビジネスのボーダーレス化 9ユーザービリティ、サービス向上 9 IT(ソフトウェア)の重要性が増している 9 我々はユーザの厳しい要求に応えつつ、 IT業界での勝ち組を目指さなければならない © 2006 10art-ni Corporation テンアートニの取り組み 9いかにソフトウェアの品質を維持するか 長 バグ修正の時間 単純なバグの発見・修正を いかに効率的にするか いかに複雑なバグ対処に リソースを割くか バグの複雑さ 高 © 2006 10art-ni Corporation テンアートニの取り組み 9いかにテストプロセスの生産性をあげるか 多 残作業 いかにソフトウェア開発 の生産性を向上させるか 時間の流れ © 2006 10art-ni Corporation 有償ツールの選択 9OSSツールよりも機能面で優れている 9ベンダーのサポートを受けることができる 9長期的な視点で見た場合、費用対効果をあげる ことができる © 2006 10art-ni Corporation 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation 現状の問題点 9単体テストにxUnit、JCoverageなどのOSSツー ルを使用 プログラマ(開発者)の稼動工数のうち、30%~ 50%がJUnitテストコードの作成・維持に費やされ ている 全ての作業が開発者任せになる(マンパワーに 依存) 9 OSSツールのような手動(マニュアル)テストでは プロジェクトへの負担が大きい © 2006 10art-ni Corporation OSSツールによるテストの煩雑さ 9テストコードのメンテナンスや管理が大変である 9仕様変更や追加があった場合に都度テストコー ドを修正する必要がある 9開発者任せになる(属人的になる) 9テスト品質が開発者のテストスキルに依存され てしまう © 2006 10art-ni Corporation 開発者との心理的なギャップ 9開発者が実装を進めたがる理由 9 9 ソフトウェアの品質 9 開発者 Excellent Good OK Poor Very Poor Hospitalize フィードバックなし 俺の仕事はプログラミングだけだ 俺のソースコードにはバグがなく正常に動作す る テストコードを作る暇があれば実装した方が よいに決まっている 9 プログラマの負荷を軽減する 必要がある… 9 負荷を軽減しても品質は保証 完了か ? したい 9 継続的なテストを実施するよう 管理を強化する必要がある 時間 実装作業 デバッグと修正作業 単体テスト(品質保証) © 2006 10art-ni Corporation 単体テストツールにAgitarを選択 9 9 9 9 9 9 Checkstyle JUnit FindBugs djUnit DBUnit JCoverage 9 Agitator 9 Management Dashboard 単体テスト 環境の見直し 9 実装&単体テスト環境の統一化が容易 9 カバレッジだけではないレポートの出力が可能 9 OSSフレームワークのサポート etc © 2006 10art-ni Corporation なぜAgitarを選択したのか 9 テスト対象のソースコードを修正する都度、何度もテス トを再実行できる 9 テストはAgitatorが実行するので、開発者間のテストス キルのばらつきを抑え、均質化を図ることができる 9 外部リソース(DB環境など)が無くても単体テスト可能 Agitatorを使用することにより 継続的なテストが実施可能 © 2006 10art-ni Corporation なぜAgitarを選択したのか 9 テストの状況をさまざまな視点で見ることができる 9 各クラスやメソッドのリスクが数値化されるので、リスク 分析・対策を早期に実施できる 9 DashboardはHTML形式なので、 プロジェクト・メンバ間でプロジェクトの 状態を簡単に共有できる Dashboardレポート 客観的な数値で実装&単体テストの 進捗・品質管理できる © 2006 10art-ni Corporation Agitarソリューション導入ステップ 0.意思決定 9Agitator 10ライセンス(ノードロック)導入 1.パイロットプロジェクトの選定 9パイロットPJでノウハウを蓄積し順次導入 9まずは小規模プロジェクトから 9フレームワークはStruts、Spring、Hibernateを使用 2.プロトタイプによる単体テスト手順などの確認 9単体テスト標準化のための検証 © 2006 10art-ni Corporation Agitarソリューション導入ステップ 4.体制(メンターのアサイン) 9プロジェクトメンバの他にAgitar導入を推進する人をアサイン 5.ガイドライン作成(標準化) 9開発者向け、管理者向けガイドラインの作成と配布 6.Agitar教育(トレーニング) 9Agitator基礎、ガイドライン説明 7.Agitarを使用した実装と単体テスト 9メンターによるサポートと開発者へのスキトラ © 2006 10art-ni Corporation Agitatorによる単体テストの流れ 9 Agitarを使用しても従来の単体テストの流れは変わらない 9 Agitarによりメソッドレベル単体テストの質と生産性が向上する カバレッジ 入力条件/出力条件 (分岐網羅/条件網羅) 境界値/同値分割 コーディングルール プログラム仕様 予期せぬエラー 仕様変更や 仕様追加対応 開発者 開発者 OK ホワイトボックス コード実装 NG OK 完了 ブラックボックス NG レグレッション アサーション確認 未了 © 2006 10art-ni Corporation Agitatorによる単体テストの流れ 実装/ テスト チェック イン 9 9 8 ナイトリービルド/ 一括アジテーション 9 テスト結果 ソースコード 開発者 フィードバック CVS Agitator 確認 Dashboard チェック/管理 レポーティング Ant リーダー/マネージャ Webサーバ 継続的なビルドと回帰テスト © 2006 10art-ni Corporation 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation 単体テストの進捗管理 9 単体テストしているのか?いないのか? 各クラス、メソッドのテストケース密度やカバレッジの進捗を 確認する 9 スキルが低い、進捗の上がらない開発者はいるか? 開発者別レポートの進捗を確認する 9 クラス、メソッドの実装が進んでいるか? ソースコード全体の進捗度合いを確認する 9 単体テスト終了できるレベルに達しているか? 客観的な数値で終了を判断 © 2006 10art-ni Corporation ソースコードのリスク分析 9 リスク対策の優先度順位付けが容易になる 優先度:高 複雑度の度数分布 優先度:低 順位付け一覧 9 リスク対策の理由 やはりバグが多い 複雑度:高=リスク高い リスク テストし易く バグが少ない 複雑度:低=リスク低い © 2006 10art-ni Corporation ソースコードのリスク対策 1.優先度の高いメソッドから順にソースコードレビューを実施 2.実装内容の確認と複雑度解消の検討 3.必要に応じてリファクタリングを実施 (明確な理由があれば、リファクタリング不要) ※特に、リスクの高いクラスやメソッドの仕様変更や追加時には注 意深く対応できる 実装 フィードバック (リスク対策) 単体テスト レポート (リスク分析) 継続的なフィードバックと対応 © 2006 10art-ni Corporation 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation ソースコード品質の確保 9 ソフトウェア品質の保守性を確保できる 9 実装の終盤でリファクタリングせずに済む 修正のしやすさに関するソフトウェア 製品の能力 保守性 解析性 変更性 適合性 安定性 試験性 保 守 性 解析性 ソフトウェアにある欠陥の診断ま たは故障原因の追及、およびソフ トウェアの修正箇所の識別を行う ためのソフトウェア製品の能力 変更性 指定された修正を行うことができ るソフトウェア製品の能力 適合性 ソフトウェアの修正による予期せ ぬ影響を避けるソフトウェア製品 の能力 安定性 修正したソフトウェアの妥当性確 認ができるソフトウェア製品の能 力 試験性 保守性に関連する規格または規約 を遵守するソフトウェア製品の能 力 複雑度解消の効果 リファクタリング 出典:JIS X 0129-1 (ISO/IEC 9126 ) © 2006 10art-ni Corporation 結合テストにおける手戻り工数の減少 9 プログラムバグは実装&単体テストフェーズで確実に 潰すことができる STOP バグ 実装&単体テスト PGバグは実装&単体 フェーズで確実に潰す 結合テスト システムテスト プログラムバグによる 手戻りは実装&単体テスト からやり直すことになる 9 結合テスト本来のテストに集中できる 9 手戻り工数の減少=プロジェクト工数の減少 © 2006 10art-ni Corporation Agitarソリューション導入効果 9 ドライバ(テストクラス)の作成が不要になる 9 ソースコードレベルで継続的な回帰テストを実施できる 9 単体テストの終了基準を設定し、テストの終了を判断で きる 9 ソースコードの品質を客観的な数値で判断できる ドライバ メソッド1 Agitatorで自動生成 JUnitテストクラス メソッド2 メソッド3 スタブ (Mock) メソッド4 © 2006 10art-ni Corporation Agitarソリューション導入効果 パイロットプロジェクトのメソッド数 クラス数 472 ステップ数 28K メソッド数(複雑度低) 6,134 メソッド数(複雑度高) 85 約243人日削減(約65%削減) 400 350 OSSツールの場合 計算式( JUnitでテストする場合、平均で30分) 約6,000メソッド 6,000メソッド × 30分 30分 ÷ 60分 60分 ÷ 8時間 工数 約375人日 375人日 Agitatorの場合 計算式 (シンプルなメソッドで10分 複雑なメソッドで20分) 300 250 200 150 100 50 0 同アーキテクチャおよび同規模の プロジェクトメソッド数 工数 6,134メソッド×10分÷60分÷8時間 85メソッド×20分÷60分÷8時間 手動 Agitar 約128人日 128人日 約4人日 合計132人日 © 2006 10art-ni Corporation 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation プロジェクト組織形態 次プロジェクト1 Agitarの導入 サポート 開発者 社内メンター サポート メンタリング、 トレーニング 次プロジェクト2 全社導入 パイロットプロジェクト コピー コンサルタント 社内メンター サポート 社内メンター : : © 2006 10art-ni Corporation テスト終了基準の策定 9テスト終了基準は属人的であいまいな基準では なく、客観的数値にすべき 9 単体テスト カバレッジ:85%以上、テストケース密度:100% アサーション失敗数ゼロ etc 9 結合テスト ユースケースに沿ったテストスクリプトとテストログ 自動機能テスト失敗数がゼロであること etc 9 負荷テスト 負荷シナリオとテストログ パフォーマンス統計値がユーザー要求を満たしていること etc © 2006 10art-ni Corporation ツール導入成功の秘訣 9 目先の利益より長期的な利益を考慮せよ 9 リーダーがツールの普及を促進し、開発者に啓蒙すべ し 9 はじめは適切なパイロットプロジェクトを選定し、メン ターを付けて導入せよ 9 外部のコンサルティング・サービスなども積極的に活用 すべし © 2006 10art-ni Corporation 9 9 9 9 9 9 ソフトウェア品質への取り組み 単体テストとAgitator 単体テスト管理とManagement Dashboard Agitarソリューション導入効果 テストツール導入ステップ まとめ © 2006 10art-ni Corporation あるべきテスト資産とは 9 テスト計画 9 テストデータ 9 テスト実行環境 9 テスト不具合レポート 9 テストケースと結果 9 テストスクリプト 9 テストログ あるべきテストの成果物 テスト対象のソフトウェアはテス トの成果物ではない 保守や変更を考えた場合、これら は確実に残すべき 継続的なテスト実施が可能である ことがテスト資産の条件 生産性と効果の向上により結 果的にソフトウェアの品質が 向上する © 2006 10art-ni Corporation テンアートニ品質向上ソリューション 9 各テストフェーズにツールを使用し、生産性を向上 9 リソースをより高度な作業に振り向け、品質を向上 Agitator Functional Tester ホワイトボックステスト ブラックボックステスト Performance Tester ブラックボックステスト パフォーマンステスト (画面機能・回帰テスト) 負荷耐久テスト 実装&単体テスト 結合テスト Purify Plus システムテスト アプリのプロファイリング メモリリークなど 注意:AgitatorはJavaシステム開発が対象 © 2006 10art-ni Corporation テスト成功の秘訣 9単純作業を効率化する為にツールを導入すべし (自動化できるところは自動化すべし) 9基本的なテスト方法論を身に付けるべし 9開発者にツールの使用を啓蒙し、適切に管理す べし 9継続的にテストを実施すべし © 2006 10art-ni Corporation 最後に 現状維持か? 前へ進むか? 変化は機会(チャンス)です まずは、ご相談ください © 2006 10art-ni Corporation ご清聴ありがとうございました お問い合せ 株式会社テンアートニ http://www.10art-ni.co.jp/ プロダクト& SI ビジネスユニット Webソリューション営業部 Tel: 03-5298-2924 E-mail: [email protected] © 2006 10art-ni Corporation