Using VectorCAST/C++ with Test Driven Development

Similar documents
040402.ユニットテスト

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

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

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

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

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

Microsoft PowerPoint - Session4古賀様.ppt

更新履歴 No 更新箇所版数日付 1 第一版作成 /12/28 2 一部画像差し替え 誤字修正 /02/09 2

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

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

サイト名

Silk Central Connect 15.5 リリースノート

REX-USB56 「FAX送信」編 第6.0版

改版履歴 版数改版内容 新規作成 i

US-122MK2/144MK2_RN-J_RevF

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

Microsoft Word - ESX_Restore_R15.docx

VBコンバータ利用方法

Microsoft PowerPoint - 1_コンパイラ入門セミナー.ppt

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

Delphi/400でFlash動画の実装

TFTP serverの実装

Oracle Business Rules

<4D F736F F F696E74202D DD8D8782ED82B98B5A8F7082F B582BD835C F E707074>

Microsoft Visual Studio 2010 Professional Data Sheet

プログラミング基礎

大域照明計算手法開発のためのレンダリングフレームワーク Lightmetrica: 拡張 検証に特化した研究開発のためレンダラ 図 1: Lightmetrica を用いてレンダリングした画像例 シーンは拡散反射面 光沢面を含み 複数の面光 源を用いて ピンホールカメラを用いてレンダリングを行った

Source Insight

PowerPoint プレゼンテーション

スライド 1

Microsoft Word - IP自動設定ツール_取扱説明書_ doc

べきでない悪意のあるSQL 文が攻撃者から入力された場合 データベースで実行される前にSQL 文として処理されないよう無効化する必要がありますが ( 図 1 1) 無効化されずにデータベースで実行された場合 データベースの操作が可能となります ( 図 1 2) 本脆弱性を悪用するとデータベース接続ユ

プロジェクトマネジメント知識体系ガイド (PMBOK ガイド ) 第 6 版 訂正表 - 第 3 刷り 注 : 次の正誤表は PMBOK ガイド第 6 版 の第 1 刷りと第 2 刷りに関するものです 本 ( または PDF) の印刷部数を確認するには 著作権ページ ( 通知ページおよび目次の前 )

DumpsKing Latest exam dumps & reliable dumps VCE & valid certification king

2 ログイン ( パソコン版画面 ) Web サイトのログイン画面が表示されます 通知メールに記載されている ID と仮パスワードを入力して ログイン ボタンをクリックしてください ID パスワードを連続して 5 回間違うと 当 I D はロックアウト ( 一時的に使用不可 ) されるので ご注意く

ITdumpsFree Get free valid exam dumps and pass your exam test with confidence

REX-C56EX FAX送信 第5.0版

Microsoft PowerPoint - OSS運用管理勉強会資料_ a.pptx

Microsoft IISのWebDAV認証回避の脆弱性に関する検証レポート

kantan_C_1_iro3.indd

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

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

改版履歴 版数 日付 内容 担当 V /5/26 初版発行 STS V /7/28 動作条件の変更 STS メール通知文の修正 V /2/7 Windows8 の追加 STS V /2/2 Windows8. の追加 STS V

(Microsoft PowerPoint - \203A\203W\203\203\203C\203\213\212J\224\255_ ppt)

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

Pirates Buster Series Secure Viewer セットアップマニュアル (Web インストーラ)

PowerPoint プレゼンテーション


PowerPoint プレゼンテーション

メソッドのまとめ

Flex Signal for AirGRID

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

目次 研究目的 背景システム開発について実験および評価結論

V-CUBE One

KSforWindowsServerのご紹介

説明書

スキル領域 職種 : ソフトウェアデベロップメント スキル領域と SWD 経済産業省, 独立行政法人情報処理推進機構

構成管理記録テンプレート仕様書

nendSDK android 設定ガイド

BOM for Windows Ver

アジャイル開発入門

Flex Signal for AirGRID

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

24th Embarcadero Developer Camp

<4D F736F F D F815B B E96914F92B28DB8955B>

注意 インストール中に ユーザアカウント制御 ( 以下 UAC といいます ) の実行確認画面が表示されることがあります 表示された場合ははいをクリックして インストールを進めてください なお 管理者以外の場合 管理者への昇格を求める UAC 画面が表示される場合がありますので 管理者アカウントのパ

Microsoft Word - WebClass Ver 9.08f 主な追加機能・修正点.docx

ゲートウェイのファイル形式

15288解説_D.pptx

Oracle SALTを使用してTuxedoサービスをSOAP Webサービスとして公開する方法

Taro-82ADAカ.jtd

変更要求管理テンプレート仕様書

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

Windows XP から Windows 7 へのアップグレード

Microsoft Word - USB60BCR_10.doc

TopSE並行システム はじめに

Studuinoプログラミング環境

ビッグデータ分析を高速化する 分散処理技術を開発 日本電気株式会社

アルファメール 移行設定の手引き Outlook2016

医療費助成事業 オンライン報告設定作業手順書 ネットワーク更改特別対応版 2019 年 6 月 6 日 沖縄県国民健康保険団体連合会 保険者支援課

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

改版履歴 版数 改版 内容 新規作成 Microsoft.NET Framework のダウンロード先 URL を追記 バージョンアップに伴い改版 i

日経ビジネス Center 2

JavaプログラミングⅠ

Azure 活用シナリオ PHP ホームページを移行 1

OpenAM 9.5 インストールガイド オープンソース ソリューション テクノロジ ( 株 ) 更新日 : 2013 年 7 月 19 日 リビジョン : 1.8

第 2 回中部放射線医療技術学術大会 RIS 導入時の時の病院側作業に関して 2009 年 11 月 横河電機株式会社 医療ソリューション本部 1 横河電機株式会社医療ソリューション本部 2006Yokogawa Electric Corporation

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

Insert VERITAS™ FAQ Title Here

PowerPoint プレゼンテーション

Fortran 勉強会 第 5 回 辻野智紀

Delphi/400を使用したWebサービスアプリケーション

<4D F736F F D DEC90E096BE8F C E838B82CC836A C E312E31816A2E646F63>

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

情報連携用語彙データベースと連携するデータ設計 作成支援ツール群の試作及び試用並びに概念モデルの構築 ( 神戸市こども家庭局こども企画育成部 千葉市総務局情報経営部業務改革推進課 川口市企画財政部情報政策課 ) データ構造設計支援ツール設計書 2014 年 9 月 30 日 実施企業 : 株式会社ア

iNFUSE インフューズ

位置参照情報 API 仕様 ( 試行版 ) 位置参照情報 API 仕様 ( 試行版 ) Ver 1.0b 平成 26 年 12 月 国土交通省国土政策局国土情報課

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

ホンダにおける RT ミドルウェア開発と標準化活動 株式会社本田技術研究所基礎技術研究センター関谷眞

Transcription:

ホワイトペーパー V2.0 2018-01

目次 1 はじめに...3 2 従来型のソフトウェア開発...3 3 テスト主導型開発...4 4...5 5 TDD を可能にするテストオートメーションツールの主要機能...5 5.1 テストケースとソースコード間のトレーサビリティー...5 5.2 テストケースと要件間のトレーサビリティー...6 6 テスト主導型開発の例...7 2

1 はじめに 本書では テストオートメーションツールと VectorCAST/C++ を併用して アジャイルプログラミング環境でテスト主導型開発 (TDD) をサポートする方法について説明します 本書は テストオートメーション製品の基礎知識があることを前提としています 2 従来型のソフトウェア開発 現在 ほとんどのプロジェクトはテストオートメーションツールを従来型の開発環境で使用しています このような環境では VectorCAST/C++ の各クラスが開発時に単体テストされます この純粋な単体テストでは あるユニットに属するローレベルの要件が正しく実装されているかどうかを確認できると同時に コードカバレッジ分析によってテストの完全性を検証できます 図 1: 従来型のソフトウェア開発 - ウォーターフォール方式 この時点でコードがすでに作成済みのため この作業方法には次のようなさまざまな問題が生じます > コードを作成してから そのコード内の潜在的欠陥が特定されるまでに ( 数週間とは言わないまでも ) 数日かかってしまう > 要件から単体テストが直接導き出されるのではなく 開発者が作成したコードに基づいて単体テストを作成してしまう > コードがオーバーエンジニアリングされ プロジェクト要件を満たすのに必要以上のコードを作成してしまう このような問題があると コードに関する潜在的問題の特定がプロジェクトライフサイクルの終盤にずれ込んでしまいます 欠陥が組み込まれてから その欠陥が最終的に検出 修正されるまでの所要時間が長いほど 欠陥の修正にかかるコストが増えることは良く知られています ( 図 2 を参照 ) 図 2: ソフトウェア開発ライフサイクルにおける欠陥の修正コスト 3

この問題の一般的な解決策は コード検査やコードの静的分析を導入することです しかしながら コード検査はコストが高く 複合アルゴリズムやシステム動作を検証する場合は検査が複雑になる可能性があります 一方 静的分析は 記述コードに曖昧さがないかどうかを検証するだけで コードが実際に正しいかどうかは検証しません さらに 検討すべき重要な点がいくつかあります 1. 大半のエラーは 範囲がかなり限られている 80% のエラーは プロジェクトの 20% のクラスまたはルーチン内で検出される (Endres 1975, Gremillion 1984, Boehm 1987b, Shull et al 2002) 2. 一般的なエラーの大半は プログラマーの間違いから起こる エラーの 95% はプログラマーが原因であり システムソフトウェア ( つまりコンパイラーや OS) によるエラーは 2% 他のソフトウェアによるエラーは 2% ハードウェアによるエラーは 1% しかない (McConnell, Steve. Code Complete. Redmond: Microsoft Press, 2004) したがって プログラマーのソフトウェアを早くテストするほど システム内のエラーの大半を早く発見できることになります 3 テスト主導型開発 テスト主導型開発 (TDD) は プロセスの序盤に行われるテストケース開発のタイミングを設計作成後 ( ただしコードの記述前 ) にずらすことによって この問題を解決します TDD は 非常に短い開発サイクルを繰り返すソフトウェア開発プロセスです これにより設計がシンプルになり ソフトウェアライフサイクルの早い段階から確信が持てるようになります TDD のコンセプトはシンプルで 次の 3 ステップのプロセスに分けることができます 1. 開発者が 必要な機能改善または新機能を検証するためのテストケースを作成する このテストケースは その機能が正しく実装されるまでは不合格になります 2. 次に このテストに合格するコードを作成する 3. コードが合格したら 受け入れ可能な規格に合わせて新しいコードをリファクタリングする 図 3: テスト主導型開発のワークフロー これらのコンセプトは テストファーストプログラミング (1992 年に生まれたエクストリームプログラミングの中核要素 ) が基になっています ただし近年では テスト主導型開発だけで一般的なトピックとして扱われるようになりました これはさらに テスト主導型開発の 3 法則にまとめることができます 1. 不合格になる単体テストを作成するまでは 本番コードを作成しないこと 2. 不合格になるために必要以上の単体テストを作成しないこと ( コンパイルをしなければ不合格になる ) 3. 現在不合格になるテストに合格させるために必要以上の本番コードを作成しないこと 4

4 VectorCAST/C++ を テスト主導型開発 モードで使用する場合と 従来型の単体テスト で使用する場合の主な違いは TDD モードではテスト環境を構築するための入力として VectorCAST/C++ ヘッダーファイル (.h ファイル ) 群を使用する点です ソースファイルに関する要件はありません テスト環境の構築時には テストケースの作成対象となる VectorCAST/C++ ヘッダーファイルを指定した後 1 つ以上のヘッダーファイルをテスト対象ユニットとして選択するだけです その後は テストオートメーションツールによってテスト環境が構築されます 最初は使用可能なソースファイルがないため テスト対象ユニット内にメソッド用の空のソースファイルが作成されます これで 実行可能なテストハーネスが完成します この時点で テストオートメーションツールの他の機能はすべて 従来型 モードとまったく同じように動作するはずです 5 TDD を可能にするテストオートメーションツールの主要機能 テストオートメーションツールには テスト主導型開発プロセスへの適応を容易にする特性がいくつかあります 5.1 テストケースとソースコード間のトレーサビリティー TDD の主なコンセプトの 1 つは 実行された正確なコード行とテストケースを相関付けられることです これにより開発者は テストケースが実行されたことの証明に関連するコードのみを検証できます これを実現する最も簡単な方法は コードカバレッジを使用することです この場合 収集されたコードカバレッジと実行されたテストケースをツールで直接リンクすることができます ( 図 4 を参照 ) 図 4: テストケースとテスト対象の基本ソースコード間のトレーサビリティー 5

5.2 テストケースと要件間のトレーサビリティー テストケースの作成は 基本コードの開発前に行う必要があります テストケースと基になる要件をリンクする機能を使用すると テストケース 要件 検証対象コードの間に直接的なトレーサビリティーが得られます これにより TDD の 3 法則を守りながら コードのリファクタリングプロセスをごく簡単にすることができます ( 図 5 を参照 ) 図 5: 要件とテストケースのリンク 6

6 テスト主導型開発の例 新しいアプリケーションを構築し モジュールの 1 つにメッセージ処理機能を付けるとします 必要となる完全な機能はまだ不確かですが メッセージの送受信は確実に必要であり さらに各メッセージを可変数の 32 ビット整数値で構成する必要があります そこで まず単純な VectorCAST/C++ ヘッダーファイルを作成し メッセージを送信するためのプロシージャーとメッセージを受信するためのプロシージャーを定義します 次に例を示します // Message.h bool Send_Message( MessageIdType Message_Id, ByteSteam &MessageData, MessageSizeType MessageSize); bool Receive_Message( MessageIdType &Message_Id, ByteSteam &MessageData, MessageSizeType &MessageSize); テスト主導型開発では 次のステップとしてこれらのプロシージャーの実装詳細に進むのではなく これら 2 つのプロシージャーのテストケースを作成する必要があります この手法を用いる利点は コードの記述を始める前に 設計の詳細と周辺条件を検討できることです 次に このモジュールに対して作成すべきテストケースの例を示します > Receive_Message を呼び出すと メッセージが送信順に返されるか それとも ID に基づくメッセージの優先順位があるか > 受信時にどうなるか 保留のメッセージはないか > 送信可能なメッセージの最大サイズ Message_Size に最適なデータ型になっているか > Message_Id 値の範囲 > 無効な Message_Id を受信するとどうなるか これらすべての質問の答えが決まったら テストオートメーションツールを使用して コードを記述する前にテストケースを作成します 最初に作成するテストケースは不合格になりますが ここには 期待される動作を正式化する各関数の入力値と出力期待値が含まれます 各関数の実装はインクリメンタルに行うことができます コードを作成すると既存のテストケースが順次合格し 最終的にコードが完成すると すべてのテストケースが合格するはずです 7

詳細情報 次の情報については 弊社ウェブサイトをご覧ください > 最新ニュース > 製品 > デモソフトウェア > サポート > トレーニング > お問い合わせ www.vector.com/jp/ja/