...

組込みソフトウェアテストツール IBM Rational Test RealTimeのご紹介 IBM Software Group 日本アイ・ビー・エム株式会社 ソフトウェア事業

by user

on
Category: Documents
35

views

Report

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
Fly UP