組込みソフトウェアテストツール IBM Rational Test RealTimeのご紹介 IBM Software Group 日本アイ・ビー・エム株式会社 ソフトウェア事業
by user
Comments
Transcript
組込みソフトウェアテストツール IBM Rational Test RealTimeのご紹介 IBM Software Group 日本アイ・ビー・エム株式会社 ソフトウェア事業
® IBM Software Group 組込みソフトウェアテストツール IBM Rational Test RealTimeのご紹介 日本アイ・ビー・エム株式会社 ソフトウェア事業 ラショナル事業部 © 2009 IBM Corporation IBM Software Group | Rational software テストにおける テストにおける一般的 における一般的な 一般的な問題 古典的テスト手法 テストスクリプト ドライバ・スタブ の生成(手作業) の生成 ソフトウェア エンジニア 担当者のスキルにより 質に差が出る 新しいバグが 生じる原因 テスト実行 ホスト上で のみテスト 結果レポートの 作成 標準化されない レポート 担当者のスキルでテストに差が発生 ターゲット上で発生するトラブルの検出が困難 人為的ミスの発生を誘発 繰り返し回帰テストが困難 2 © 2009 IBM Corporation IBM Software Group | Rational software 組込み 組込みソフトウェアテストに ソフトウェアテストに固有の 固有の問題 アプリケーションは、開発環境とは別の機器(実機)上で実行 開発環境でテストしただけでは不十分 I/O等に合わせて、テスト資産の作り直しが必要になることがある 開発手順 ホスト上での開発 ハードはまだない シミュレータ・デバッガや 高精度システム・シミュレータ を使用 3 ボードを使用した開発 実機に近い環境で検証 ICEを使用 実機での開発 実機環境で検証 ICEを使用 テスト資産v1 テスト資産v1 テスト資産v2 テスト資産v2 テスト資産v3 テスト資産v3 ソースコード資産v1 v1 ソースコード資産 ソースコード資産v1 ソースコード資産v2 v2 ソースコード資産 ソースコード資産v2 ソースコード資産v3 3 ソースコード資産v ソースコード資産v3 © 2009 IBM Corporation IBM Software Group | Rational software IBM Rational Test RealTime : テスト自動化支援 テスト自動化支援ツール 自動化支援ツール パフォーマンス計測 パフォーマンス計測 カバレッジ計測 カバレッジ計測 メモリプロファイリング 実行トレース 実行トレース メトリクス計測 メトリクス計測 単体テスト 単体テスト 各種テストに対応したオール・イン・ ワン ツール システムテスト ブラックボックス/ホワイトボックス /動的/静的テストを自動化 コードレビュー 開発ホスト 開発ホスト、 ホスト、組込み 組込みターゲット 上でのテスト でのテストが テストが可能 4 © 2009 IBM Corporation IBM Software Group | Rational software さまざまなテスト さまざまなテストへの テストへの対応 への対応 ブラックボックステスト(単体テスト、機能テスト) : 動的 コンポーネントテスト コンポーネントテスト : 関数、メソッドの外部仕様のテスト システムテスト システムテスト : プロセスおよびタスクの外部仕様に対するテスト ホワイトボックステスト(構造テスト) : 動的 カバレッジ カバレッジ計測 カバレッジ計測 : テストの実行網羅率の計測、デッドコードの特定 メモリエラー メモリエラー検出 メモリエラー検出 : メモリリーク、不正書き込み等のメモリエラーの検出 パフォーマンス パフォーマンス計測 パフォーマンス計測 : パフォーマンスボトルネックの特定 シーケンストレース シーケンストレース : アプリケーションの実行パスの表示 コードチェック : 静的 システムテスト 要求分析 コードレビュー : MISRA C 2004準拠 メトリクス計測 : 行数、ネスト数、複雑度など 基本設計 結合テスト 詳細設計 単体テスト 実装 5 © 2009 IBM Corporation IBM Software Group | Rational software Test RealTimeの の構成 コンポーネントテスト システムテスト 7 コンポーネント ブラックボックステスト カバレッジ計測 カバレッジ計測 メモリエラー メモリエラー検出 エラー検出 パフォーマンス計測 パフォーマンス計測 ホワイトボックステスト トレース コードチェック 6 コードの コードのレビュー、 レビュー、 メトリクス計測 メトリクス計測 © 2009 IBM Corporation IBM Software Group | Rational software ブラックボックステスト コンポーネントテスト C 関数の外部仕様にもとづく単体・結合テスト C++ クラスのメソッドに対するテスト、事前条件・事後条件のチェック Java クラスのメソッドに対するテスト、JUnitとの統合、J2MEへの拡張 システムテスト メッセージ通信を利用した、システムの外部仕様テスト 7 © 2009 IBM Corporation IBM Software Group | Rational software Test RealTimeによる によるブラックボックス によるブラックボックステスト ブラックボックステストの テストの方法 テストとは 関数・メソッド、システムの外部仕様から、 入力パラメータ(初期値)と、実行後の期待 値を抽出 初期値を与えて、テスト対象の機能を実行 単体テスト:関数・メソッド呼び出し システムテスト:メッセージ送信 実行の結果得られた実測値が、事前に定 義した期待値と一致するかどうかを判定 仕様通りに機能が実装されているか どうかを判定 8 © 2009 IBM Corporation IBM Software Group | Rational software テストケースの テストケースの自動生成 テストに必要な情報をソースコードから抽出し、テストケース(初期 値と期待値の組)のテンプレートを自動生成 テスト対象 テスト対象の 対象のソースコード例 ソースコード例 Int add (int a, int b) { if ( a && b ) return ( a + b ); else return ( a ? a : b ); } 変数名 変数名 テスト対象 テスト対象 機能の実行 機能の実行 ソースコードを ソースコードを元にTest RealTimeが RealTimeが生成した 生成したテスト したテスト用 テスト用テンプレート VAR a, init = 0, ev = init VAR b, init = 0, ev = init VAR ret_add, init = 0, ev = init #ret_add = add(a, b); 初期値 期待値 テストケース作成のベースとなるテンプレートを自動生成します 9 © 2009 IBM Corporation IBM Software Group | Rational software テスト作業 テスト作業の 作業の効率化 スタブ/ドライバの生成、テスト実行、レポート作成を自動化 コード修正&テストケース拡張 コード生成 エンジニア ソース コード TestRT コンポーネントテスト テストスクリプト 拡張 テスト テンプレート生成 スタブ/ドライバ テスト実行 生成 テスト結果 解析 テストレポート 生成 多くの作業を自動化し、テストを効率化します 10 © 2009 IBM Corporation IBM Software Group | Rational software テスト作業 テスト作業の 作業の効率化 スタブおよびドライバを自動生成 作成したモジュールを実行するために必要なドライバおよびスタブは、Test RealTimeがテスト対象ファイルの解析後に自動生成 メイン部分 がない MAIN テスト対象 モジュール テスト対象の外部にある コンポーネントを、スタブ・ ドライバとして自動生成 ドライバ ※スタブが返す値 は開発者が設定 スタブ スタブ スタブ スタブ 下位コンポーネ ントがない 従来: 従来:手作業で 手作業で実装 スタブ スタブ Test RealTime: :自動的に 自動的に生成 一部機能の実装直後からでも、すぐにテストを開始できます 11 © 2009 IBM Corporation IBM Software Group | Rational software 見やすく統一 やすく統一の 統一の取れたレポート れたレポート レポート内容 レポート内容 テスト結果 テスト結果の 結果の概要 テストの テストの 合否状態 個々のテストケース の実行結果 プロジェクト ウインドウ 変数名 テスト結果 テスト結果 初期値 期待値 実測値 すべての変数やスタブ/ドライバの初期値、期待値、実測値を表示 レポートはHTML形式に変換可能 テストの テストの成功/ 成功/失敗の 失敗の判定、 判定、失敗の 失敗の原因特定が 原因特定が容易 12 © 2009 IBM Corporation IBM Software Group | Rational software ホワイトボックステスト カバレッジ計測 カバレッジ計測 テストの実行網羅性、実行されないデッドコードの有無の検出 メモリエラー メモリエラー検出 エラー検出 メモリリーク、不正アクセスなどのメモリエラーの検出 パフォーマンス計測 パフォーマンス計測 パフォーマンス・ボトルネックの検出 トレース アプリケーションの実行パスを時系列で表示 13 © 2009 IBM Corporation IBM Software Group | Rational software カバレッジ計測 カバレッジ計測 ツリービューに ツリービューに、ファイル・ ファイル・ 関数・ 関数・メソッド単位 メソッド単位の 単位のカバ レッジ概要 レッジ概要を 概要を表示 エディタウィンドウに エディタウィンドウに、 ソースコードレベルの ソースコードレベルの 詳細な 詳細なカバレッジ計測 カバレッジ計測 結果を 結果を表示 条件式 条件式をクリックすると クリックすると、 すると、 実行されていない 実行されていない条件 されていない条件の 条件の 組み合わせ(= わせ(=不足 (=不足して 不足して いるテストケース いるテストケース) テストケース)を表示 実行された 実行されたコー されたコー ドを緑色で 緑色で表示 未実行コード 未実行コードを コードを 赤色で 赤色で表示 部分実行コード 部分実行コードを コードを オレンジ色 オレンジ色で表示 クリックにより クリックにより、 により、詳 細情報を 細情報を表示 テストの テストのヌケモレ防止 ヌケモレ防止 14 © 2009 IBM Corporation IBM Software Group | Rational software カバレッジ計測能力 カバレッジ計測能力 DO-178B Level A 認証に必要なカバレッジを計測可能 DO-178B level Level C Level B Level A Test RealTime で計測可能な 計測可能なカ バレッジ Function Entry ● ● ● ● Function Entry & Exits ● ● ● ● Calls ● ● ● ● Simple Blocks ● ● ● ● ● ● ● カバレッジ指標 C0と と 同等 C1と と 同等 Implicit Block( (Decisions) ) ● Loops Simple Conditions ● ● Multiple Conditions ● ● Modified Conditions(MC/DC) ● ● DO-178B : 航空無線技術委員会(RTCA)が規定する、セーフティクリティカルなソフトウェアの開発ガイドライン 15 © 2009 IBM Corporation IBM Software Group | Rational software 参考: C0、C1等の指標の、厳密かつ標準化された定義は存在しない。例え ばテスト技法に関する文献であるBoris Beizer : Software Testing Techniques,Second Edition (ボリス・バイザー : ソフトウェアテスト技法) では、命令網羅にP1を、分岐網羅にP2という用語を使用している。 Test RTは、これらの用語は採用せず、Simple Blocks、Implicit Blocks当の 用語を使用する。 参考: 参考:カバレッジ指標 カバレッジ指標 C0 (命令網羅):ソースコードのすべての行を少なくとも1回は実行 C1 (分岐網羅):すべての条件分岐を少なくとも1回は実行 C2 (条件網羅):すべての条件式が、少なくとも1回はTRUE/FALSEの値を取る Multiple Conditions :複合条件式に含まれる条件式の、TRUE/FALSEのすべての組み合わせ MC/DC :複合条件式に含まれるひとつの条件式がTRUEとFALSEの値を取ったとき、それに合わせて条件式全体の値もTRUEおよ びFALSEの値を取るような条件の組み合わせ テストケースの例 if( a>0① && b==1② || c<=0③ ) { … } 上記の複合条件式を持つifブロックで: C0 : ①=②=③=TRUEで、すべての行が実行される C1 : ①=②=③=TRUE、 ①=②=③=FALSEで、すべての分岐が実行される C2 : ①=②=③=TRUE、 ①=②=③=FALSEで、すべての条件式がTRUE/FALSEの値を取る Multiple Condition : ①、②、③のTRUE/FALSEのすべての組み合わせ。各条件式がそれぞれTRUE/FALSEを取るので、 テストケース数は23=8個(実際は、プログラム言語の条件式評価ルールにより、テストケース数は23よりも少なくなる) → 条件式の数が増えると、テストケース数が指数関数的に増える MC/DC : ①がTRUE/FALSEの値を取ると条件式全体がTRUE/FALSEの値を取るテストケースを抽出、②、③についても同様の テストケースを抽出する。総テストケース数は2×3=6個 → 条件式の数が増えてもテストケース数は爆発しない ①がTRUE/FALSE→ →全体が 全体がTRUE/FALSE ① T F 16 ② T T ③ F F 全体 T F ②がT/F→ →全体が 全体がT/F ① T T ② T F ③ F F ③がT/F→ →全体が 全体がT/F 全体 T F ① F F ② T T ③ T F 全体 T F © 2009 IBM Corporation IBM Software Group | Rational software メモリエラー メモリエラー検出 エラー検出 各種メモリエラーを検出 アロケートメモリ 単純メモリリーク 潜在的メモリリーク 使用中のメモリ メモリリーク又 メモリリーク又は エラー箇所 エラー箇所を 箇所を表示 メモリアロケーションエラー アロケートされないメモリの開放 解放されない 解放されないメモリ されないメモリ (メモリリーク メモリリーク発生量 メモリリーク発生量) 発生量 実際に 実際に使用された 使用された メモリ ヒープ上のメモリブロック境界を越え た書き込み 開放済みヒープメモリへの書き込み ヒープメモリの二重開放 使用中のファイルハンドラ シグナルの受信 コアダンプ アプリケーションの アプリケーションの信頼性確保 17 © 2009 IBM Corporation IBM Software Group | Rational software パフォーマンス計測 パフォーマンス計測 パフォーマンス・ボトルネックの 検出 関数/メソッドの呼び出し回数 関数実行時間 関数/メソッドの実行時間 使用される 使用される頻度 される頻度が 頻度が 5%以上の 以上の関数 (上位 上位6 上位6個まで) まで 関数本体 関数から呼び出される子 関数を含む全実行時間 実行の平均時間 平均実行時間 関数 + 子関数実行時間 アプリケーションの アプリケーションの信頼性確保 18 © 2009 IBM Corporation IBM Software Group | Rational software 実行トレース 実行トレース 実行結果からUMLのシーケンス図を生成 C言語の場合の例: コメント( コメント(関数定義等) 関数定義等) 関数呼出し 関数呼出し タイムスタンプ アプリケーションの アプリケーションの動作解析 19 © 2009 IBM Corporation IBM Software Group | Rational software 機能テスト 機能テスト + 構造テスト 構造テスト = 最高の 最高のカバレッジ コード カバレッジ (%) コード カバレッジ (%) 70% 70% 機能テスト テストのみ 機能 テスト のみ … … 実行 実行されない されないコード コードが じる可能性 可能性があります があります。 されない コード が生じる 可能性 があります 。 カバレッジ 機能 テスト コード カバレッジ (%) 機能テスト 機能テストによる テストによる 要件の 要件の確認 構造テスト テスト((カバレッジ カバレッジ計測 計測)) 構造 テスト 計測 のみ… カバレッジ + 機能テスト 機能テストによる テストによる テストモレの テストモレの検出と 検出と排除 … 重要 重要な 要件の 確認が 後回しにされることがあります な要件 の確認 が後回 しにされることがあります 最小限の 最小限の労力で 労力で、ヌケモレのない ヌケモレのないテスト のないテストを テストを実施することが 実施することが可能 することが可能 20 © 2009 IBM Corporation IBM Software Group | Rational software コードレビュー MISRA-Cに対するコードレビュー 自動車産業ソフトウェア信頼性協会(MISRA)が策定したC言語のコーディングガ イドラインであるMISRA-C 2004(ver2.0)に準拠 140のMISRA-Cルールをサポート 個々のルール 違反を要約 15のルールを追加 逸脱に関する詳細なレポートを生成 規則の重大度の変更や無効化が可能 エラー箇所を正当化し、レビューから 除外することも可能 ルール違反箇所は、障 害管理ツールに素早く 登録可能 ベストプラクティスにもとづく ベストプラクティスにもとづくチェック にもとづくチェック 21 © 2009 IBM Corporation IBM Software Group | Rational software 多角的な 多角的なメトリクス計測機能 メトリクス計測機能 Halsteadの の指標 McCabeの の 複雑度 コード行数 コード行数 ネスト数 ネスト数 外部関数 呼出し 呼出し数 外部変数 アクセス数 数 アクセス 品質評価に 品質評価に役立つ 役立つ各種指標の 各種指標の計測 22 © 2009 IBM Corporation IBM Software Group | Rational software 開発、 開発、実行環境への 実行環境への対応 への対応 開発ホストマシン上だけでなく、 さまざまなターゲット環境上での テスト実行が可能 Windows2000 WindowsXP Windows Vista Test RealTime HPHP-UX Sun Solaris AIX 開発ホスト上の シミュレーション 環境 対応言語 Ada C C++ Java(J2SE/J2ME) Red Hat Enterprise Linux SuSE Linux ツールが動作するホスト環境 ターゲット テスト実行環境 ホスト上 ホスト上で作成した 作成したテスト したテスト資産 テスト資産の 資産の有効活用 ターゲット上 ターゲット上でしか発生 でしか発生しない 発生しないエラー しないエラーの エラーの検出 23 © 2009 IBM Corporation IBM Software Group | Rational software ホスト・ ホスト・ターゲット環境 ターゲット環境の 環境のサポート 4ビット ビットから ビットから64ビット から ビットまで ビットまで 様々なターゲット環境 ターゲット環境を 環境をサポート WindRiver Montavista Tasking GreenHills TI CAD-UL ARM NEC Cosmic Enea Hitachi Hiware Windows CE Apex Hitex LynuxWorks Sun Symbian Lauterbach Microtec …… Languages C C++ Ada Java (J2ME/J2SE) Platforms Windows Solaris Linux HP-UX AIX お客様ご 客様ご自身で 自身で、新しい環境 しい環境に 環境に対応させることも 対応させることも可能 させることも可能です 可能です 24 © 2009 IBM Corporation IBM Software Group | Rational software サービスの サービスの一例: 一例:技術習得トレーニング 技術習得トレーニング TestRealTime コンポーネントテスト(for C) このコースは、Rational Test RealTime のコンポーネントテスト(C言語用)機能を使いこなすた めの詳細なトレーニングです <2日間> 日間> TestRealTime コンポーネントテスト(for C++) このコースは、Rational Test RealTimeのコンポーネントテスト(C++言語用)機能を使いこなす ための詳細なトレーニングです< <2日間> 日間> TestRealTime システムテスト(for C) このコースでは、Rational Test RealTime のシステムテスト(C言語用)機能を使いこなすため の詳細なトレーニングです< <3日間> 日間> ※いずれも非定期開催コースです。お問い合わせ下さい お客様のご 客様のご要望 のご要望に 要望に応じたカスタマイズ じたカスタマイズが カスタマイズが可能です 可能です 25 © 2009 IBM Corporation IBM Software Group | Rational software 技術資料 IBM developerWorks Japan : 品質の管理 (http://www.ibm.com/developerworks/jp/rational/library/qm/#testrt) Test RealTimeコンポーネントテスト(CおよびC++)活用ガイド 26 © 2009 IBM Corporation IBM Software Group | Rational software ツール導入 ツール導入の 導入の恩恵 作業の自動化 (手間のかかる作業はツールで) 人間が行うと手間と時間がかかる作業をツールが実行 例 : テストケースの生成、スタブ/ドライバの生成、テストの実行、メモリリーク 解析、実行解析、カバレッジ測定、パフォーマンス測定、コードの複雑性の解析、 テストレポートの作成、繰り返しテスト、テスト結果の比較 属人性の排除 (誰がいつやっても同じ) 同じテストケースで同じ解析オプションをかければ、誰が操作しても同じフォーマットで 同じ結果が得られ、テストケースの作成以外に個人差は発生しない 時間投資効果 (ツールは休まない) ツールは休み時間中でも夜間でも、何時間でも連続でテストや解析作業を行う。 時間 がかかる作業をツールに処理させ、人間が別の作業をすることでテスト効率が高まる 27 © 2009 IBM Corporation IBM Software Group | Rational software 28 © 2009 IBM Corporation