(Microsoft PowerPoint - \201yF3-1\201z\215\305\217Ijasst2010\215u\211\211\216\221\227\277.ppt)

Similar documents
エンジニアリング・サービスから見たMBD導入の成功・失敗

カバレッジマスター winams JaSST2007 テクノロジーセッション JaSST2007C3-1 テクノロジーセッション 組込み開発向けモジュール単体テストソリューション C0/C1 カバレッジテストデータ生成機能を搭載 カバレッジマスター winams ガイオ テクノロジー ( 株 ) 営

単体テスト設計のコツ

040402.ユニットテスト

Microsoft PowerPoint - 【最終提出版】 MATLAB_EXPO2014講演資料_ルネサス菅原.pptx

CodeRecorderでカバレッジ

2015 TRON Symposium セッション 組込み機器のための機能安全対応 TRON Safe Kernel TRON Safe Kernel の紹介 2015/12/10 株式会社日立超 LSIシステムズ製品ソリューション設計部トロンフォーラム TRON Safe Kernel WG 幹事

HIGIS 3/プレゼンテーション資料/J_GrayA.ppt

Microsoft PowerPoint - 配布用資料.ppt

CW6_A1441_15_D06.indd

智美塾 ゆもつよメソッドのアーキテクチャ

PowerPoint プレゼンテーション

目次 ペトリネットの概要 適用事例

スライド 1

個人依存開発から組織的開発への移行事例 ~ 要求モデル定義と開発プロセスの形式化 による高生産性 / 高信頼性化 ~ 三菱電機メカトロニクスソフトウエア ( 株 ) 和歌山支所岩橋正実 1

スライド 1


Oracle SQL Developerの移行機能を使用したOracle Databaseへの移行

インテル(R) Visual Fortran コンパイラ 10.0

内容 1. 仕様 動作確認条件 ハードウェア説明 使用端子一覧 ソフトウェア説明 動作概要 ファイル構成 オプション設定メモリ 定数一覧 変数一

2 概要 市場で不具合が発生にした時 修正箇所は正常に動作するようにしたけど将来のことを考えるとメンテナンス性を向上させたいと考えた リファクタリングを実施して改善しようと考えた レガシーコードなのでどこから手をつけて良いものかわからない メトリクスを使ってリファクタリング対象を自動抽出する仕組みを

CANapeを用いたラピッドコントロールプロトタイピングのバイパス手法による制御モデル開発

PowerPoint プレゼンテーション

スライド 1

Microsoft PowerPoint - A3② JaSST_MISRA2004ソースコード品質診断.ppt

PowerPoint プレゼンテーション

Microsoft PowerPoint - ID005(R02).pptx

NSW キャリア採用募集職種一覧 2018/8/16 現在 求人番号 職種対象業務必要とするスキル 経験 資格等勤務地 1 営業スペシャリスト金融 ( 損保 生保 クレジット ) 業でのソリューション営業 IT 業界での営業経験 金融業界 IT 業界での人脈がある方尚可 渋谷 2 プロジェクトマネー

ハード・ソフト協調検証サービス

変更の影響範囲を特定するための 「標準調査プロセス」の提案 2014年ソフトウェア品質管理研究会(30SQiP-A)

MATLAB EXPO 2015 Japan 次世代モデルベース検証ソリューションで テスト・デバッグ改善

はじめに 本ドキュメントは Redmine を使用して稼働する定量的プロジェクト管理ツール ( 以下 IPF と略します ) のヘルプです IPF の操作に関わる機能を解説しており Redmine 及び構成管理ツール (Subversion Git) の標準機能については 本ヘルプの記載対象外として

PNopenseminar_2011_開発stack

多機種のAndroid(TM)端末でテストシナリオを流用可能に - Androidアプリケーション自動テストツール QCWing for Android Ver.2.7 -

会社概要 株式会社富士通コンピュータテクノロジーズ 設立 1983 年 事業所川崎本社 豊橋事業所 長野事業所 事業内容 サーバ ストレージ モバイル端末 車載 /FA 機器 画像認識 ハードウェア ネットワーク 検証ソリューション 従業員数 536 名 組込みソフトウェア開発 組込みハードウェア開

<4D F736F F F696E74202D D4C82F08A B582BD A A F2E707074>

PowerPoint プレゼンテーション

Microsoft Visual Studio 2010 Professional Data Sheet

CDM Studio

目次 目次... 1 はじめに... 3 マイコンシミュレータのデバッグ機能... 3 スタートアップコマンドファイル... 5 シミュレータコマンド ( マクロ ) 例... 6 I/O 制御等で外的要因待ちをしている場合 ( その1)... 6 I/O 制御等で外的要因待ちをしている場合 ( そ

Presentation Title

V8.1新規機能紹介記事

NetworkVantage 9

開発ツールのコラボレーション機能を検証する

An introduction and future of Ruby coverage library

PowerPoint プレゼンテーション

メソッドのまとめ

PowerPoint プレゼンテーション

スライド 1

Microsoft PowerPoint - PressPresen-AbsInt.pptx

<4D F736F F F696E74202D DD8D8782ED82B98B5A8F7082F B582BD835C F E707074>

モータ HILS の概要 1 はじめに モータ HILS の需要 自動車の電子化及び 電気自動車やハイブリッド車の実用化に伴い モータの使用数が増大しています 従来行われていた駆動用モータ単体のシミュレーション レシプロエンジンとモータの駆動力分配制御シミュレーションの利用に加え パワーウインドやサ

機能検証トレーニング コース一覧

Prog1_10th

Using VectorCAST/C++ with Test Driven Development

Protexご紹介

PGRelief C/C++ 強化ポイント説明書

TFTP serverの実装

PRONETA

Python によるジオプロセシング スクリプト入門

PowerPoint プレゼンテーション

Oracle Un お問合せ : Oracle Data Integrator 11g: データ統合設定と管理 期間 ( 標準日数 ):5 コースの概要 Oracle Data Integratorは すべてのデータ統合要件 ( 大量の高パフォーマンス バッチ ローブンの統合プロセスおよ

Insert your Title here

目次 1 埋め込みコードを利用したカバレッジ測定機能 P4~ 埋め込みコードを利用して計測できるカバレッジ計測の種類について P7~ カバレッジ計測が正しく実行されない例 P9~ カバレッジ計測されない原因概要 P11~ 詳細 1A 文字列型定数のアドレスが正しく渡らない場合 P14~ FMC16L

Oracle SQL Developer Data Modeler

PowerPoint Presentation

Python によるジオプロセシング スクリプト入門

<4D F736F F F696E74202D20835C CC967B8EBF2E B8CDD8AB B83685D>

障害管理テンプレート仕様書

Microsoft PowerPoint - 教材サンプル1&2.ppt

<4D F736F F F696E74202D E835A A C9F8DB882CC82B288C493E E >

トレーニングのプレゼンテーション

4.7.4 プロセスのインプットおよびアウトプット (1) プロセスへのインプット情報 インプット情報 作成者 承認者 備 考 1 開発に関するお客様から お客様 - の提示資料 2 開発に関する当社収集資 リーダ - 料 3 プロジェクト計画 完了報 リーダ マネージャ 告書 ( 暫定計画 ) 4

日経ビジネス Center 2

D5-2_S _003.pptx

5-3- 応統合開発環境に関する知識 1 独立行政法人情報処理推進機構

Managing and Sharing MATLAB Code

PowerPoint プレゼンテーション

5-3- 基統合開発環境に関する知識 1 独立行政法人情報処理推進機構

メンバーの紹介 日本科学技術連盟ソフトウェア品質管理研究会 2010 年度第 6 分科会 B グループ リーダー関野浩之 アズビル株式会社 ( 発表者 ) 大坪智治 株式会社インテック 外谷地茂 キヤノンITソリューションズ株式会社 メンバーの特徴 開発案件のほとんどが派生開発 ( 組み込み系 :1

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

PPTVIEW

JACi400のご紹介~RPGとHTMLで簡単Web化~

Copyright 2014 NTT DATA Corporation 2 INDEX 1. 一括請求 Assist とは 1-1. でんさいに係るサービスの関係性 1-2. 一括請求 Assist の必要性 1-3. 一括請求 Assist の特長 2. 機能紹介 2-1. 一括請求 Assist

Microsoft PowerPoint - interfax_jirei7.ppt [互換モード]

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

情報漏洩対策ソリューション ESS REC のご説明

ISO9001:2015内部監査チェックリスト

PowerPoint プレゼンテーション

6 仕様書 5 5(5)4 定住促進サイトを作成とあるが ドメインは別ドメインの利用と考えていいか ドメインについては 町ホームページと同じドメイン また別ドメインのどちらを提案していただいても結構です 別ドメインを利用する場合のサイト構成のイメージや職員による更新作業が可能な範囲についてご説明をお

デザインパターン第一章「生成《

Microsoft PowerPoint - ETEC-CLASS1資料 pptx

スライド 1

15288解説_D.pptx

クラス図とシーケンス図の整合性確保 マニュアル

ユーザエクスペリエンス (UX) 手法を 用いた企画品質評価の提案 第 4 分科会 主査 金山豊浩 ( 株 ) ミツエーリンクス 副主査 三井英樹 ( 株 ) ビジネス アーキテクツ 福山朋子 ( 株 ) インテック 研究員リーダ 村上和治東京海上日動システムズ ( 株 ) 田邉孝次 SCSK( 株

オペレーション メテオ       魅力性テスト チーム

日本機械学会 生産システム部門研究発表講演会 2015 資料

Microsoft PowerPoint - B3-3_差替版.ppt [互換モード]

SEC セミナー (2012 年 12 月 21 日 ) 定量的品質管理 実践的取組み 定量的品質管理 手法の企業での取り組み事例 1 品質 生産性目標の設定方法 2 現場で定着させるテクニック ~ 品質管理を効果的に実践するには ~ 三菱電機インフォメーションシステムズ株式会社業務プロセス改善推進

Transcription:

単体テスト設計手法 要素分析 と 標準プロセス化ツールについて ~ 大規模開発向け単体テストツール ユニットマスター の紹介 ~ 1

ガイオテクノロジーのプロフィール 2

ガイオ テクノロジーとは? 組み込み開発ツールの開発および販売クロスコンパイラ / テストツール / 仮想検証ツール / プロトタイピングツール / 解析ツール テスト 検証に関わるサービスやコンサルテーション 受託開発 ガイオ テクノロジー株式会社 GAIO TECHNOLOGY CO., LTD. 東京 日本橋 愛媛 松山 横浜 本社 設立 1980 年 資本金 2 億 9800 万円 従業員 80 名 本社 : 横浜 事業所 : 東京 松山 子会社 : GAIO INC(USA) 2009 年度の事業計画で挙げた事業ドメイン 3

ガイオの商材 2009 New Ver.Up カバレッジマスター テストシナリオ品質向上 SW 品質指標が欲しい 静的解析したい プログラムを可視化したい MISRA-C チェックしたい 単体テスト代行サービス MC-Checker カバレッジ測定ツール 仮想テストツール SCS No.1 システムシミュレータ 仮想テスト装置を構築したい クロスコンパイラ クロスコンパイラ 搬送路メカの動きをビジュアルに見たい ユニットマスター CasePlayer2 大規模ソフトウェアの単体テストを実現したい SW テストを効率的に実施したい 経営視点の SW 品質改善診断 第 3 者認証により品質を高めたい 検証工数の確保 リバースモデリング代行 レガシーコードをモデルに移行したい 単体テストを中心に導入効果を モデルベース開発に移行したいが担当がいない経営視点で示したい 計測したい 品質観点で単体テストの効果を明示したい MBD 開発サービス モデルとコードが一致しているか確認したい VECU-G HILS コストを低減したい プラントモデルと連携してシミュレーション ECU シミュレータ 複数 ECU の連携ロジックを確認したい IGN オン時の振る舞いのデバッグ VMPF-G G-VPM デジタル制御電源向け開発ツール デジタル電源制御のツールを導入したい デジタル電源開発の分野に参入したい ガイオプロセッサコア 廉価なマイコン IP でコストを圧縮したい IP を使って FPGA ベースの開発をしたい 検証を自動化したい ECU 間通信部の確認をしたい複数 ECUシミュレータ VSFS-G プリンターエンジン向けシミュレーション ASLS-G RtFT VESS-G システム全体 ( メカ / エレキ / ソフト ) をシミュレーションしたい MFSS-G ASIC の検証にマイコンの出力を使いたい 実機を使った検証を自動化したい FlexRay シミュレータ 4

ガイオの単体テストツールとソリューション カバレッジマスター マイコンシミュレータ搭載型単体テスト自動化ツール 単体テスト代行サービス カバレッジマスターをベースにした単体テスト委託サービス MC-Checker MATLAB/Simulink 連携型モデルベース開発 (MBD) 用単体テストツール 単体テストセミナー 単体テストスキル向上セミナー e ラーニング 新単体テストツール ユニットマスター 大規模アプリ向け単体テスト標準化プロセスツール 本日の講演のメイン製品 5

カバレッジマスター winams の導入実績 / 事例 導入実績 自動車業界 鉄道 デバイス関連 通信機器 空調関連 メカトロ機器 プリンター複写機 FA 機器 計器関連 エネルギー関連 交通機器関連 等々 多数のユーザ事例を発表 フェリカネットワーク ( 株 ) :2005/12 組込み情報誌 ガイオ倶楽部 記事にて発表 アイシン精機 ( 株 ) 日産自動車 ( 株 ) :2006/08 組込みソフト単体テスト成功事例セミナー にて発表 :2006/08 組込みソフト単体テスト成功事例セミナー にて発表 ソニー LSI デザイン ( 株 ) :2007/11 単体試験の賢い選択 活用セミナー にて発表 パイオニア ( 株 ) パナソニック ( 株 ) :2008/02 組込み情報誌 ガイオ倶楽部 記事にて発表 :2009/06 ガイオ品質向上セミナー にて発表 6

winams の販売実績 リリースからの販売伸び率と主な販売サイト 自動車 ECU 空調 デバイス ガス機器 計器 医療機器鉄道交通 FA 機器 プリンター 自動車 ITS デジタル家電携帯電話エネルギー 2004 年 2005 年 2006 年 2007 年 2008 年 2004 年 ~2007 年と 2008 年以降の業界毎の販売比率 2004 年 ~2007 年 2008 年 ~ 現在 自動車 ECU 48.3% 30.6% 自動車 ITS 4.5% 19.1% 鉄道 / 交通 3.7% 3.5% エネルギー 2.3% 4.7% デジタル家電 3.2% 22.6% 携帯電話 0.2% 1.2% 7

ガイオの単体テストの強み ツール開発からテストサービスまでを提供可能な稀有なベンダー いろんな確度からソフトウェアの品質向上を見つめ直しています ツール開発 品質意識の高いユーザ ソフトウェア品質ノウハウ テストサービス パートナー 8

単体テストとソフトウェア 9

モジュール単体テストは 最初 で 最小 コーディングしたソフトウェアの最初の品質確認テスト コーディングしたソフトウェアの最小単位における品質確認テスト 要求分析基本設計機能設計 V 字モデル受け入れテストシステムテスト結合テスト ハードウェア ソフトウェア 機能タスク モジュール単体テストのイメージ 入力入力テストテストデータデータモジュールモジュール ( ( 関数関数 ) ) 詳細設計単体テストコーディング モジュールモジュール ( ( 関数関数 ) ) モジュールモジュール ( ( 関数関数 ) ) モジュールモジュール ( ( 関数関数 ) ) 出力出力テストテストデータデータ入出力テスト期待値との比較 カバレッジテストの網羅性確認 10

単体テストの意味と目的 検証の前倒しで手戻りの無い効率的な検証が実現可能 後工程では発見困難な潜在不具合を無くすことができる 定量的 客観的な単体テストを実施し プログラマー個人依存部分を排除 モジュール再利用時の品質確保を行うため 最近の不具合傾向として モジュールの再利用時 部分修正で発生することが多い 国際認証に向けたテストエビデンス ( カバレッジ基準 ) への対応 単体テストは 全てのコードを動作させることができる最初で最後の工程!!!! 11

ソフトウェア品質と単体品質の位置づけ V 字モデルの携わる開発者のスキルと人数について V 字モデルの下位層ほど携わる人が多い V 字モデルの下位層ほどスキルのバラツキが大きい その道のプロフェッショナルが力を発揮する ( 差別化をはかる ) 部位 能力が不明確なたくさんの 人 がかかわる部位 単体テストの成功には組織的取り組みとしての 標準化 というキーワードが必要 12

一般的な単体テストの課題 - コードカバレッジのみのテスト指針 - 13

単体テストで必要なテスト観点と検出可能な不具合 機能性テスト カバレッジテスト コード不具合テスト テスト観点仕様とソースの一致性 テスト観点コード網羅性テストスペック的な要素大 テスト観点モジュール構造的堅牢性静的解析ツール得意領域 ブラック BOX 仕様不一致 ホワイト BOX コーディング初歩的ミス デッドコード NULL ポインタ / ゼロ割 キャスト メモリリーク / 不正アクセス オーバ アンダーフロー 14

単体テストとコードカバレッジ 100% 単体テストにおけるカバレッジ指標を手段では無く 目的にしてしまい 工数に見合った効果が出ていない 入出力データは設計者 ( テスター ) まかせ ソースコード入力I/F 出力I/F 入力データ 出力データ とりあえず C1 カバレッジ 100% を目指そう とにかくコードカバレッジ 100% だけは遵守カバレッジが達成できていれば入出力データは重要視していない 不具合を検出するためのテストデータの内容 ( 精度 ) については担当者任せ コードカバレッジを 100% にして必ず発見できる不具合は デッドコード のみ 単体テストに必要な組織的な標準化というキーワードとは縁遠い カバレッジ 100% だから OK 単体テストをしても不具合の検出ができないというユーザはこの傾向が強い 15

単体テスト品質を向上させるためには テストデータの中身をカバレッジ重視型からモジュール品質確認重視型へ移行 機能性 ( 仕様一致性 ) のテスト カバレッジのテスト コード不具合 ( モジュール構造的堅牢性 ) のテスト 開発者スキルに依存させないために テストデータ設計をプロセス化する 1 モジュール入出力要因の抽出 - 引数や参照変数 リターン値などのモジュール入出力要因を抽出する 2 モジュール入出力要因への要素 ( 付与値 / 期待値 ) の洗い出し - ブラック / ホワイト BOX 視点におけるテスト付与値を漏れなく設定する 3 要素を組み合わせてモジュールテストパターンを作成 - モジュールやモジュール入出力要素の特性 テスト観点や指針に応じて 設定した各入出力要素の付与値を組み合わせて モジュールテスト用のデータを作成する 単体テスト設計の各プロセスでのレビューを容易にする 単体テスト設計手法 要素分析 を用いて 実現!! 設計者依存になりがち 16

開発技術者の スキル に依存しない単体テスト設計を可能にする 要素分析 手法 17

要素分析とは? モジュールに対する入出力やテスト要素を漏れなく抽出して明確にすること 入出力の種類ごとのテスト要因を漏れなく抽出することによって関数に対しての入出力データの不足をなくすことを目的とする 単体テストに含めなければならない 要素 を明確にする 単体テスト設計の内容を示す 要素分析表 を作成 1 引数 外部変数 戻り値などの入出力要因を抽出 2 入出力要因に対して 与えるべき要素 ( 付与値 / 期待値 ) を抽出 3 要素を組み合わせてテストパターンを作成 詳細設計書詳細設計書ソースコードソースコード 洗い出し洗い出し 要素分析表 入力要素 ina inb 0 0 境界条件境界条件 1 1 149 149 150 境界条件 150 境界条件 151 151 255 最大値 255 最大値 0 最小値 0 最小値 75 代表値 75 代表値 入出力要因の抽出と明示化 入出力要素の抽出と明示化 組み合わせ組み合わせ テストパターン 機能性確認のベクター カバレッジ観点のベクター コード不具合のベクター 要素分析表から必要な観点毎のテストパターンを作成 入出力要素を漏れなくテスト実施 18

ガイオの提案する 要素分析手法 のメリット 設計時に見逃してしまう入力条件を確実にテストに含める テスト担当者の判断によらないテスト設計が可能 仕様に関わる不具合検出を容易にする 例 : 誤って参照すべきグローバル変数とは違う変数を参照する不具合 テスト担当者のスキルや判断に依存しないテストの標準化を実現する テスト設計指針書 ( データの設計方法 ) を明確に定めることができる テスト設計は 指針書に従い 機械的に 行うことができる 要素分析表を参照することでテストのレビューを容易にする 実施した単体テストに含まれているテスト要因が明確になる テストの品質が 客観的 に判断するエビデンスとして利用できる 19

要素分析表を使ったテスト設計例 20

( 参考 ) 単体テスト設計 : サンプル関数仕様とコード func5() 関数仕様 入力仕様 : unsigned char 型引数 ina, inb 入力値レンジ 0~150 戻り値 unsigned char 型 : 2 入力 ina, inb の加算値 条件 : 入力値がレンジ外の時は 0 加算値が 200 以上の時は 200 テスト対象関数 unsigned char func5( unsigned char ina, unsigned char inb ) { unsigned char tmp; // 入力範囲の確認 if( ina > 150 ) { return 0; // 入力レンジエラー } if( inb > 150 ) { return 0; // 入力レンジエラー } // 加算処理 tmp = ina + inb; } // 加算結果が 200 以上なら 200 を返す if( tmp >= 200 ) { return 200; } // それ以外は加算結果を返す return tmp; 21

( 参考 ) 単体テスト設計例 : 入力分析表を作成 入力変数に関するテスト指針の例 変数が境界条件を持つ場合 境界値に対して [ 境界値 -1], [ 境界値 ], [ 境界値 +1] の 3 値を付与すること 変数の型に対して [ 最大値 ], [ 最小値 ] を付与すること 同値分割により範囲が定められたときは 有効なレンジの中心値を代表値として付与する 変数レンジの下限値 0 への境界条件 型が unsigned のため [ 境界値 -1] は設定しない 変数レンジの上限値 150 への境界条件 変数の型 (unsigned char) の最大最小値 変数レンジの中間値 入力要素 ina inb 0 0 境界条件境界条件 1 1 149 149 150 境界条件 150 境界条件 151 151 255 最大値 255 最大値 0 最小値 0 最小値 75 代表値 75 代表値 22

( 参考 ) 単体テスト設計例 : 入力要素組み合わせ作成 入力要素の組合せ方法は テスト指針書 に従う どの様な組合せをテストに含めるかは指針書に明記する 入力要素の組み合わせに関するテスト指針の例 境界条件値は 対象付与値の全数組み合わせを作成する 全パスを網羅するため 最大値 最小値は 対象付与値の全数組み合わせを作成する 演算のデータカバレッジを網羅するため 代表値がある場合は 少なくとも 1 度はテストパターンに含まれるようにする 入力要素 ina inb 0 0 境界条件 1 1 境界条件 149 149 150 境界条件 150 境界条件 151 151 255 最大値 255 最大値 0 最小値 0 最小値 75 代表値 75 代表値 境界条件は全数組み合わせを作成 最大最小値は全数組み合わせを作成 代表値は少なくとも 1 度使われるように 23

( 参考 ) 単体テスト設計例 : 出力分析表を作成 出力として確認すべき期待値の表を作成 期待値として確認しておくべき値を表にまとめておく 例外条件として規定されている出力値 特異な演算結果など この期待値が組合せデータの期待値として得られるかを確認 結果がこの期待値となるテストが行えるかを確認する 組み合わせたテストデータから想定した期待値が得られるかを確認する 条件 : 入力値がレンジ外の時は 0 加算値が 200 以上の時は 200 出力要素戻り値 0 下限値 200 上限値 24

( 参考 ) 単体テスト設計例 : 組み合わせを作成 テスト指針書に従って正しく組み合わせを作成 25

( 参考 ) 単体テスト設計例 : 期待値設定 出力要素確認 組み合わせたテストベクターに対する期待値を設定 期待値は関数仕様を元に設定 ( ソースコードから逆算してはならない ) 出力要素分析表の期待値が全て含まれていることを確認 26

( 参考 ) 単体テスト設計例 : 実行後期待値比較を行うと 2 つの入力要因の最大値同士の組合せで期待値と異なる結果になる No14 のデータ [ina=149 inb=149] で結果が 200 にならない 27

( 参考 ) 単体テスト設計例 : 潜在不具合が発見された! 最大値同士の組合せ の入力要因がなければこの不具合は発見できない この要因は技術者の判断でなく テスト指針 により機械的に設計されている テスト設計者の判断やスキルに依存することなく不具合を検出できる unsigned char func5( unsigned char ina, unsigned char inb ) { unsigned char tmp; } // 入力範囲の確認 if( ina > 150 ) { return 0; // 入力レンジエラー } if( inb > 150 ) { return 0; // 入力レンジエラー } // 加算処理 tmp = ina + inb; // 加算結果が 200 以上なら 200 を返す if( tmp >= 200 ) { return 200; } // それ以外は加算結果を返す return tmp; 変数 tmp が unsigned char のため 255 以上の演算結果がオーバーフローしてしまう 28

ユニットマスターツール構成 機能紹介 29

ユニットマスターは 3 つの機能を個別に提供 C/C++ コードの評価に対応した単体テストスイート 設計 実行 結果の 3 つの工程を個別のアプリケーションとして提供 個別に機能を導入可能 データ設計 作成機能 ( テストデータデザイナー ) 不具合検出目的のテスト設計プロセス テスト設計レビュー テスト実行 ( テストランチャー ) 汎用的 (PC アプリケーション シミュレータ 実機等 ) な環境におけるテスト実行環境 テスト結果 ( テストレポーター ) 単体テスト実行結果を テスト実施者と管理者が閲覧 / 管理できるビューを搭載 テストデータデザイナー テストランチャー テストレポーター テスト設計 テスト実行 テスト結果 テスト設計プロセステスト設計レビュー 汎用的テスト実行環境 テスト合否表示結果 / 進捗表示 30

ユニットマスター画面イメージ図 統合化された環境で効率的な単体テスト作業が可能 組込み以外のユーザー層のユースケースに合わせた GUI 構成に テスト結果 テスト設計 テスト実行 31

テストデータデザイナーとは 開発者スキルに依存しない標準化されたテストデータ作成支援アプリ 単体テストの品質を明確にする モジュール入出力表 ( 要素分析表 ) を利用 テスト設計過程を記録し 客観的なテストデータ設計を実現 不具合検出のためのテスト観点を整理しデータ化 仕様書情報からブラックボックス観点のテストデータを整理し設定 ソースコードからホワイトボックス観点のテストデータを整理し設定 組合せパターン ( テストベクター ) の生成と網羅性管理 仕様情報 仕様からの抽出 定義 モジュール入出力表 組み合わせ テストパターン ソースコード ソースからの抽出 定義 入出力要因 テストデータ 32

テストデータデザイナー : モジュール入出力表のイメージ モジュール ( 関数 ) への入出力変数に与えるテストデータの管理 変数毎にテストの観点とテストデータを整理して設定 境界条件値 最大最小値 オーバーフロー要因など その他不具合の要因 テストの品質を客観的に示すエビデンスとなる 変数名を整理 入出力要因 テスト観点によりテストデータを整理 テストデータ 33

テストデータデザイナー : テストパターンの作成 モジュール入出力表で設計したテストデータからテストパターンを生成 総組み合わせ デシジョンテーブル 直交表 最大値 / 最小値におけるアンダー / オーバフローの確認データ カバレッジ網羅データ 手動 自動 モジュール入出力表 テストパターン 34

テストデータデザイナー : カバレッジ網羅データの作成支援 ソースコードの解析によるモジュール入出力表作成の支援機能サポート モジュールの入出力要因を自動抽出 ソースコードからテストデータをリバース作成 ソースパス網羅 ( カバレッジ ) に着目したテストデータ作成を支援 詳細設計書詳細設計書 モジュール入出力表 ( 要素分析表 ) ブラックボックス観点要素 カバレッジ網羅テストベクター ソースコード ソース解析情報 ホワイトボックス観点入力要素 カバレッジ観点組み合わせ 35

テストランチャーとは 組込みプラットフォームに依存しない単体テスト実行を実現 ネイティブアプリ WindowsCE エミュレーション カバレッジマスター等実機コードなどのテスト実行環境を汎用的にサポート ソースコードベースのテスト環境を実現 Visual Studio などの開発プロジェクトからのビルド情報を取得 テストドライバ自動作成機能 ソースコードへのカバレッジ計測用等フックコードの自動埋め込み 実行モジュールを作成 テストパターン テストドライバ ビルド 実行モジュール テスト結果 36

テストレポーターとは テスト実施者 テスト管理者個別にテスト結果 進捗を確認する機能 出力結果の合否判定 期待値と出力値をチェックして合否結果表示 様々なアウトプット形式 HTML, SQLDB, XML, テキスト形式で出力可能 差分結果の表示 過去のテスト結果との差分表示 期待値 5 に対して出力値が 4 の為エラーの結果が表示されている 37

テストレポーター : カバレッジ結果表示 テストランチャーで取得したカバレッジ結果の表示 C0,C1,MC/DC のカバレッジ結果の表示 複数モジュールのカバレッジ結果の表示も可能 38

テストレポーター : 管理者向け機能 プロジェクト全体 各テスト実施者の進捗 テスト結果を集中管理 リレーショナル DB をサポート 複数の担当者が作成した情報を 1 箇所で集約し プロジェクト全体の管理業務をサポート可能 全ての情報を RDB へ送信 プロジェクト単位で保存 進捗管理やテスト結果の収集に利用可能 構成管理ツールでの管理が可能 39

ユニットマスターの全体図まとめ テスト設計テスト設計 スキルに依存しないテスト設計の実現 ホワイトボックス観点 ( カバレッジ ) ( 危険コート ) テスト設計プロセス テスト設計レビュー ブラックボックス観点 ( 仕様一致 ) 不具合検出目的のテスト設計 テスト実行テスト実行 プラットフォームに依存しない実行環境テストパターンテストパターン汎用的なテスト実行環境 PC アプリケーション実行 WinCE エミュレータマイコンシミュレータ ( カバレッジマスター winams 等 ) 実機 テスト結果テスト結果 テスト実行結果レポート ( エビデンス ) テスト管理テスト結果テスト結果テストビュー / 管理ビューテスト結果分析テスト結果結果レポートテスト進捗管理 テストパターンテストパターン テスト結果テスト結果 ツール連携 ( 構成管理ツール等 ) GUI マイコン知識やアセンブラスキルが不要なユーザビリティの実現 40

END 最新の製品情報は http://www.gaio.co.jp/ 会社名 商品名は各社の商標または登録商標です 本資料の無断転載 複写はお断りします ガイオ テクノロジー株式会社日本橋事業所営業部 103 東京都中央区日本橋人形町 3-12-8 TEL.(03)3662-3041 FAX.(03)3662-3043 Email info@gaio.co.jp ご質問はこちらにお願いします 41