Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Ralph's Chart連結

342 views

Published on

Ralph's Chart連結

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

Ralph's Chart連結

  1. 1. Ralph's Chart Analysis: Test Analysis Technique Using Common Factors among Software Functions 高木 智彦,古川 善吾,秋山 浩一 香川大学工学部 富士ゼロックス Abstract ラルフチャートはテスト対象ソフトウェアの各機能の抽象化された仕様を表すのに適した表記法であ る.本研究では,テストするべき機能群を抽出し,適切なテストケース設計技法を選択するために,ラルフチャー トの連結による体系的なテスト分析手法を提案する. Keyword software testing, test analysis, test architecture 1. はじめに コ ン ピ ュ ー タ シ ス テ ム は ソ フ ト ウ ェ ア に よ っ て 制 御されており,ソフトウェアのディペンダビリティを 確保するための必須の技術がソフトウェアテストであ る.ソフトウェアテストでは,テスト対象システムの 仕様からテストするべき抽象化された仕様を抽出し, その抽象化された仕様に基づいてテストケースを設計 する.そのテストケースを実行することによってフォ ールトを発見し出荷前に除去できれば,ソフトウェア のディペンダビリティを改善することができる. 体 系 的 な テ ス ト ケ ー ス 設 計 技 法 に つ い て す で に 数 多くの検討がなされており,開発現場への導入が 広く 行われている.しかしながら,ソフトウェアのフォー ルトに起因する事故が後をたたず,近年社会問題化し ている.その原因は,テストケースに漏れが生じてい るためであり,その漏れが生じている最も大きな原因 のひとつが,テストするべき抽象化された仕様の抽出 と,その抽象化された仕様に相応しいテストケース設 計技法の選択という作業が必ずしも適切に行われてい ないためである.この作業のことを「テスト分析」,ま たテスト分析の結果得られる成果物を「テストアーキ テクチャ」といい,テスト戦略を決定する際の基盤的 な情報として重要性が近年認識されつつある. ソフトウェアは多数の機能から構成されるので,テ スト分析では,各機能間の関係や影響を整理し,テス トすべき機能群を抽出できる必要がある.そして,抽 出した機能群を表す抽象化された仕様に対して,適切 なテストケース設計技法を選択するための指針が示さ れなければならない.しかしながら,これらを体系的 に行う技術は確立されていないため,開発現場では経 験と勘に頼っているのが現実である.そこで本研究で は,機能間の組合せに着目したテスト分析を行 うため のラルフチャート分析と呼ばれる新たな手法を提案す る.本手法では,ソフトウェアの各機能をラルフチャ ートと呼ばれる独自のモデルを用いて定義し,機能間 で共通する因子をキーとして複数のラルフチャートを 関連付ける.関連付けられた複数のラルフチャ ートは テストアーキテクチャとしてテスト戦略を決定する際 に利用する.本手法によってテストすべき抽象化され た仕様を適切に導出し,適切なテストケース設計技法 を選択するための指針が得られる ので,テストケース の漏れを削減し,ソフトウェアのディペンダビリティ 改善に貢献できる.本手法が対象とするテストレベル は,結合テスト,システムテスト,受入れテストであ り,アプリケーションドメインを問わ ず多数の機能か ら構成される大規模で複雑なソフトウェアに対して 効 果が期待できる. 2. 基本概念 本節では,独自のモデルであるラルフチャートにつ いて概説する. 我 々 は 直 交 表 を 用 い た ソ フ ト ウ ェ ア 組 合 せ テ ス ト 技法である HAYST 法に関する研究を行ってきた[1]. ラルフチャートは,HAYST 法においてテスト対象シス テムの目的機能ごとの因子とその構造を明らかにし, 考慮すべき因子が漏れることを防止することを目的と して提案された図的表記法である.ここでいう目的機 能とはシステムの目的を達成するための働きのことで ある.図 1 にラルフチャートのフォーマットを示す. 中央のボックスは,当該目的機能に関する抽象化され た仕様を定義する領域であり,状態遷移図 または因果 ループ図(Causal Loop Diagrams)で記述する.そして 中央のボックスの周辺に以下の情報を網羅的に記述す る. 入力因子:当該目的機能に対する入力可能な値あるい は同値類の集合である.ここでいう入力とは,ユー ザや連携する他のシステムから入力される データ,
  2. 2. デバイスからの信号,他のモジュールによって更新 される共有変数の値などである. 出力:当該目的機能から出力される値あるいは同値類 の集合である.ここでいう出力とは,ユーザや連携 する他のシステムに出力されるデータ,デバイスへ の信号,他のモジュールが参照可能な共有変数に書 き込む値などである. 状態因子:当該目的機能が取り得る状態変数の集合で ある.状態は当該目的機能の振舞いを決定する内部 変数の値の組合せによって定義される.機能は現在 の状態と与えられた入力値に基づいて,出力 および 遷移先状態を決定することができる.同じ入力を与 えられたとしても,当該目的機能の現在の状態が異 なっていれば,異なる出力と遷移先状態を出力する. ノイズ:通常の利用において当該目的機能の入出力の 関 係 を 妨 げ る 利 用 環 境 や 利 用 方 法 に 関 わ る 因 子 の 集合である.たとえば,当該機能の実行環境である OS の種類やバージョン,当該機能に与える負荷の 大きさなどである. ラ ル フ チ ャ ー ト は 品 質 工 学 で 提 案 さ れ て い る シ ス テムチャート[2]に近いが,ボックス構造モデル[3]で現 れる状態因子を扱う点に特徴がある. ボックス構造モ デルの視点でいえば,ラルフチャートの特徴は,ノイ ズやアクティブノイズを明示的に記述している点や, 状態因子を当該機能に対する入出力の 一種としてとら え,ボックスの外に定義している点などである . 3. ラルフチャート分析 従 来 ラ ル フ チ ャ ー ト は 個 々 の 目 的 機 能 の 分 析 に 用 いられていただけであった.本研究の核心は, 目的機 能間の関連や影響を明らかにしてテスト分析を行うた めに,個々のラルフチャートを共通する因子で連結さ せるところにある.特に有効性が期待できる連結方法 として以下の 4 通りを提案する. (1) 状態因子同士の連結 テ ス ト 対 象 シ ス テ ム と し て 重 要 性 が 高 い 状 態 因 子 をキーとしてラルフチャートを連結することで,複 数 の 機 能 が 一 つ の 重 要 な 状 態 因 子 を 読 み 書 き す る 処理に関する仕様 を抽出できる.これに基づいて, 組合せテストを適用する.図 2 の例題では(a)(b)を 連結する. (2) 入力因子と出力の連結 複 数 の ラ ル フ チ ャ ー ト を 入 力 因 子 と 出 力 で 連 結 す ることで,各機能の実行順序に関する仕様を抽出で きる.これに基づいてシナリオテストを実施する. 図 2 の例題では(a)(b)(d)を連結する. (3) 入力因子と状態因子の連結 あ る ラ ル フ チ ャ ー ト が 入 力 因 子 と 状 態 因 子 と し て 同じ因子をもつ場合,当該ラルフチャートは 初期設 定を行う機能を表している.そのような ラルフチャ ートを集めて入力因子を組み合わせることで ,テス ト 対 象 シ ス テ ム の 初 期 設 定 に 関 す る 仕 様 を 抽 出 で きる.これに基づいて (1)(2)の組合せテストやシナ リオテストの前提となる環境を作成する.図 2 の例 題では(a)(c)を連結する. (4) 出力とノイズ因子の連結 ラルフチャート a の出力因子とラルフチャート b の ノイズ因子が同じ場合,a が表す機能の出力は b が 表す機能の入出力を妨げる要因となっている .これ は主に並行処理に起因するものであるので,当該因 子 を キ ー と し て ラ ル フ チ ャ ー ト を 連 結 す る こ と に よって,テストすべき並行処理の条件を抽出できる. これに基づいて並行処理テストを実施する.図 2 の 例題では(c)(d)を連結する. 4. 考察と今後の方針 我々は本手法を支援するツールを開発している.本 ツールを用いて,ある商用ソフトウェアに対して試験 的に(1)を適用した.この商用ソフトウェアは保険業務 に用いられるものであり,規模はおよそ 20KLOC であ 図 1:ラルフチャート 図 2:単純な例題 Input Factors {I1, I2, I3, ...} Outputs Noise Factors {N1, N2, N3, ...} Target read write State Factors {S1, S2, S3, ...} {F1} Outputs {F4} read write {F1, F3} {F2} Outputs {F6} read write {F2} read write {F3} {F4} {F5} Outputs {F6} Outputs {F5} TargetTarget TargetTarget (a) (b) (c) (d)
  3. 3. る.25 個の機能が識別され,それらすべてについてラ ルフチャートが作成された.共通仕様のみに記載され るという意味で特に重要度の高 い状態因子がレビュー 時に識別されたので,この状態因子をキーとして 5 個 のラルフチャートが連結され, 組合せテストが追加で 実施された.その結果フォールト を発見することがで きた.それまでのレビューやテストにおいてこの問題 を見落とした原因として,個々の機能の仕様書に記載 されていなかったこと,暗黙的な知識としてドキュメ ント化されていなかったことが考えられる.結論とし て,本手法を適用することによって,見落としがちな 問題点を効果的に抽出することができた . 今後の研究では,ラルフチャートの有効な連結方法 についてさらに検討する.そして様々なソフトウェア に対して本手法を適用し有効性を評価する予定である. 文 献 [1] H.D. Mills, "Stepwise Refinement and Verification in Box Structured System", IEEE Computer, 1993. [2] K. Akiyama, T. Takagi and Z. Furukawa, "Development and Evaluation of HAYST Method Tool", New Trends in Software Methodologies, Tools and Techniques, IOS Press, pp.398-414 2010.

×