トップエスイー修了制作 機能テストによるリバースエンジニアリングとテス トファーストによるシステム統合開発方法の提案 日本電信電話株式会社 伊山 宗吉 [email protected] 開発における問題点 手法を参考にしたアプローチ 類似の二つの既存システムを活用し,ソフトウェ ア開発を伴う統合案件では,既存システムが過 去に変更・拡張を繰り返してきたことで仕様が 不明確になっているケースが多い.それ故に顧 客からの要求仕様の不備・漏れや,開発者の 理解不足・誤りによる設計不備が生じ,結果, 開発したシステムに不具合が発生する. 先にテストコードを書いて開発を行う「テスト駆 動開発」を参考にしたアプローチを提案する. 本提案では,機能テストを駆動の対象とする. 要件定義の段階で機能テスト項目を作成して, 既存システムに対して実行する.得られた結果 を比較することで仕様の差異を明らかにする. アプローチ 必要機能を洗い出す 既存シス テムの資料 機能テスト項目を作成 テスト観点を関係者(顧客含む)で議論 ⇒ 機能テスト項目に反映 要求定義 機能テストを用いて既存システムの仕様を分析 (リバースエンジニアリングと組合せる),既存 システム間で仕様を比較 凡例 参照 作成・追加・ 変更 機能テスト 項目 仕様の詳細 &比較結果 二つの既存システムの差分から,統合システ ムの仕様を顧客と議論⇒ 機能テスト項目に反 映 設計 実装・テ スト 受け入れ テスト 仕様の詳細と比較結果から設計書作成 (設計項目と機能テスト項目の紐付けを行う) 設計書 設計書に基づき,且つ機能テストを パスするように実装 機能テストを基にテスト項目を作成 受け入れ テスト項目 受け入れテストを実施 シミュレーションによる評価 既存システムの仕様の認識不足・誤りによって不具合 が発生した事例に対して,提案プロセスを適用した場合 の効果を机上でシミュレーションした.その結果,事例で は総合テストや受け入れテストで発覚した機能の不具 合を,要求定義の段階で発見することができ,後工程で の手戻りを防止することができた.事例では不具合対応 に合計2ヶ月程度の期間を要したが,提案したプロセス の適用により,対処期間を4分の1(2週間)程度に短縮 できた. ①提案したプロセスでは前倒し ②提案したプロセスでは発生 : しない作業(の期間) で実施する作業(の期間) 原因調査 対処議論 改修 ≒1:3 再テスト 左図のように,あらかじめ顧客を含むステークホルダ間 でテストの方針(テスト実施条件,準正常系・異常系とし て考慮しておくべき入力や操作のパターン,テスト項目 の粒度 等)を議論し,二つの既存システムに対して共 通の機能テスト項目を作成し,実行する.機能テスト(ブ ラックボックステスト)では観測できない仕様はリバース エンジニアリングを組合せて分析する.テストと分析の 結果を比較することで仕様の差異や改善点を明らかに する.この情報を基に顧客と統合後のシステムのある べき仕様を議論することで設計すべき内容とテストすべ き内容が具体化され,かつ設計項目とテスト項目の紐 付けを容易に行うことが可能になる.実装者は作成され た機能テストをパスするようにシステムを実装すること で,処理や動作の妥当性を確保しながら開発を進める ことができる. 課題と総括 ■課題 ・提案したプロセスでは,要求定義以降の品質は向上する が,要求定義に期間と工数を要する. ・ユーザの要求や機能仕様とテスト項目の紐付けが容易な 一方で,ソースコードとの関連が弱くなる.また,機能テスト ではブラウザなどの画面操作を介したテストが主になるため, 通常のテスト駆動に比べて自動テストの難易度が高い. ■総括 提案したプロセスを事例に対して適用した机上シミュレー ションで,問題の防止を確認することが出来た. 今後,ツール統合の案件に携わる際に本稿のプロセスを提 案し,具体的な効果を確認する.また,今回の提案内容は 対処のスコープを限定して検討したものであるため,今後は 他のシステム統合事例の情報収集と分析を通じて,対策の 検討範囲を広げる. 国立情報学研究所 トップエスイー トップエスイー: サイエンスによる知的ものづくり教育プログラム National Institute of Informatics ~サイエンスによる知的ものづくり教育プログラム~ 文部科学省科学技術振興調整費 産学融合先端ソフトウェア技術者養成拠点の形成
© Copyright 2024 Paperzz