画 面 遷 移 を伴 うシナ リオ 分 岐 型 ア プ リケ ー シ ョンの ため の
実 行 時 テス ト手 法 の 提 案
山 本 拓 哉*1,甲 斐 宗 徳*2 ProposalofRuntimeTestApproachfbrScenarioBranchApplication withScreenTransitions TakuyaYAMAMOTO*1,MunenoriKAI*2 ABSTRACT:Indevelopmentofsoftwarewhichbecomelarger-scaleandmorecomplicatedeveryyear, theimportanceofsoftwaretestgrowsmoreandmore.However,somedomainswhereitisdifficulttoapply anysoftWaretestexist.OneofsuchdomainsisaGUItest.InordertoconductaGUItest,themethodof "preparationofthecomplicatedtestcodeincon -siderationofvariousstates" ,"thesoftwaretestinmanual operation",and"automatingusingexpensivesoftware"istaken.Sincethosemethodsareveryhigh-cost,the methodofdescribingasoftWaretesteasilyisdesired.However,itisgenerallydifEculttotesttoallthe softWarecontainingGUIattherlntime.Then,inthispaper,weproposenlntimetestapproachfbrscenario branchapplicationswithscreentransitionslikeArMscreenorsoftwareinstallers.Proposedmethodcan conductsoftwaretestforsuchspecificapplicationseasilyandatlowcost.Itisalsoshownthatmostper-formancedegradationbyapplyingtheproposedmethodtoactualapplicationscannotbefound. Keywords:automatedsoftWaretest,unittest,userinterface,screentransition (ReceivedMarch31,2014) 1.は じ め に 1.1研 究 背 景 年 々 大 規模 化 お よび 複 雑 化 して い る ソ フ トウ ェア 開 発 に お い て,ソ フ トウェ ア テ ス トの 重 要 性 が ま す ま す 高 ま っ て い る。 ソフ トウ ェア テ ス トは 開 発 者 側 の 視 点 で 見 る と,不 具 合 の 修 正 や リフ ァ ク タ リン グに よ るエ ンバ グや デ グ レー ドか らの 不 安 の 低 減,ソ フ トウ ェア の 品 質 面 か ら見 る とテ ス トが 仕 様 を 満 た す よ うに 記 述 され て い れ ば そ の 品 質 は満 た す こ とが 出 来 る とい うメ リッ トが 存 在 す る。 しか し ソフ トウ ェア テ ス トは ソ フ トウ ェア 開 発 にお い て す べ て の ソー ス コー ドに 対 して 行 うこ とが 出 来 るわ け で は な い。 ア ル ゴ リズ ム の よ うに 入 力 と出 力 を数 値 で 定 義 しや す い もの に 対 して は 非 常 に テ ス トを行 い や す い *1:理 工 学 研 究 科 理 工 学 専 攻 博 士 前 期 学 生 *2:理 工 学 研 究 科 理 工 学 専 攻 教 授(kai@st .seikei.ac.jp) が[1],GUIの 様 な 入 力 が 画 面 操 作,出 力 が 画 面 の 状 態 で あ る よ うな,数 値 と して 定 義 が難 しい もの は ソ フ トウ ェ ア テ ス トを定 義 す る こ とが 非 常 に難 しい。 こ の た めGUI の テ ス トは操 作 を 定義 す るた め の複 雑 な コー ドを記 述 し て 自動 化 す る か,人 力 に よ る ソ フ トウェ ア テ ス トを行 わ な くて は い け な い。そ れ らの方 法 は非 常 に コ ス トが高 く, 容 易 に ソフ トウェ ア テ ス トを記 述 す る方 法 が 望 ま れ て い る。 しか しな が らす べ て のGUIを 含 む ソ フ トウ ェア に対 応 させ る こ とは 現状 で は難 しい た め,本 研 究 で は 決 ま っ た操 作 と画 面 を 多 く持 つ 画 面遷 移 を伴 うシ ナ リオ 分 岐 型 ア プ リケ ー シ ョ ンに お い て容 易 に ソ フ トウ ェア テ ス トが 出来 る よ うな 手 法 を提 案 す る。 画 面遷 移 を伴 うシ ナ リオ 分 岐 型 ア プ リケ ー シ ョ ンはGUIテ ス トの 困難 さ と同 じ 問題 を抱 え て い るが,同 じ よ うな操 作 を繰 り返 す とい う 性 質 を持 っ て い る。 「似 た よ うな 操 作 を繰 り返 す 」とい う こ とは 自動 化 が行 いや す い とい うこ とで あ るが,こ の繰 り返 しを如 何 に抽 象 的 に様 々 な 画 面遷 移 を伴 うシ ナ リオ分 岐 型 ア プ リケ ー シ ョンに 適 用 す るか が 問 題 とな る。 こ の抽 象 化 の 問題 を解 決 す る こ とに よっ て 自動 化 を行 うこ とが 出 来 るた め,テ ス トコー ド化 を行 うこ とが 出 来,コ ス トの 低減 が 見 込 ま れ る。 1.2目 的 本研 究 で は 「動 作 して い るア プ リケ ー シ ョン にお け る 遷 移 の 自動 化 」 を 目的 と して い る。 具 体 的 には シナ リオ 分 岐型 ア プ リケ ー シ ョンに 共 通 す る必 要 最 低 限 の 項 目を モ デ ル 化 し,各 ア プ リケ ー シ ョンは そ の モ デ ル を派 生 さ せ て適 した 実 装 を 行 う。 そ して テ ス ト実 行 環 境 が そ の モ デ ル を 元 に 実 際 に ア プ リケ ー シ ョン を起 動 させ,自 動 的 に 入 力 を行 い,想 定 して い る結 果 が 得 られ て い るか 検 査 を 行 え る よ うに す る こ とで あ る。 自動 化 が 出 来 る こ と に よっ て ヒュ ー マ ンエ ラー を 減 らす こ とが 出 来 る こ とや, 正確 な コ ン トロー ル に よ り何 度 で も同 じ状 況 が 再 現 可 能 とい う利 点 が 挙 げ られ る。 ま た 実 際 に ア プ リケ ー シ ョン を 起 動 させ て テ ス トを 行 うこ とに よ り実 際 に使 用 して い る よ うな 環 境 で テ ス トを す る こ とが 出 来,ア プ リケ ー シ ョ ン が 起 動 し な い と読 み 込 ま れ な い よ うな ラ イ ブ ラ リ (GUIラ イ ブ ラ リな ど)によ る 不 具 合 の 発 見 や 再 現 な ども 可 能 とな る。 更 に モ デ ル は 特 定 の シ ナ リオ 分 岐 型 ア プ リケ ー シ ョン に 特 化 した 限 定 的 な モ デ ル で は な く,様 々 な シ ナ リオ 分 岐 型 ア プ リケ ー シ ョンに 適 用 で き る よ うにな って い る。 共 通 の モ デ ル を使 用 出 来 る利 点 は,あ るア プ リケ ー シ ョ ンの モ デ ル の 調 査 に使 用 した ア プ リケ ー シ ョンや ア ル ゴ リズ ム を シ ー ム レス に 他 の ア プ リケ ー シ ョン に適 用 で き る こ とで あ る。 を 行 っ た 場 合 に 次 に 出 て く る 画 面 が 変 わ る ア プ リケ ー シ ョ ン の こ と で あ る。 ア プ リ ケ ー シ ョ ン の 種 類 と し て は, 当 研 究 室 で 研 究 を 行 っ て い るWeb学 習 シ ス テ ム[2]のX-Webや ア ドベ ン チ ャ ー ゲ ー ム,イ ン ス トー ラ,ATMな ど が 挙 げ られ る 。次 に ア ドベ ン チ ャ ー ゲ ー ム,イ ン ス トー ラ で 以 下 の 項 目 が ど の よ う に な っ て い る か 説 明 を 行 う。 3.GUIを 含 ん だ テ ス ト手 法 の 適 用 と 問 題 点 現 在 単体 テ ス トは 幅広 い プ ロジ ェ ク トに お い て採 用 さ れ て い る が,そ の 適 用 範 囲 は ほ とん どが ア ル ゴ リズ ム, ロジ ック に 限 定 され て お り,GUIを 伴 うテ ス トには 適 用 され な い 場 合 が 多 い 。 これ はL1節 で も述 べ た とお り GUIの 状 態 の 定 義 や 操 作 が 非 常 に複 雑 だ か らで あ る。し か しい くつ か の 方 法 を用 い てGUIを 含 ん だ テ ス トを行 う こ とは 可能 で あ る。 も しそ の よ うな 方 法 を用 い て 画 面 遷 移 を伴 うシ ナ リオ分 岐型 ア プ リケ ー シ ョ ンの テ ス トを 行 っ た場 合 どの よ うに行 うか と,ど の よ うな 問題 点 が発 生す る か に つ い て説 明 を行 う。 ● マ ク ロ マ ク ロは マ ウスや キ ー ボ ー ドの動 作 を 記録 し再 生 す る 手 法 で あ る。 ソフ トウェ ア 自体 が マ ク ロ をサ ポ ー トす れ ば テ ス トの 自動 化 を行 うこ とが 出 来 るが,画 面遷 移 を伴 うシ ナ リオ分 岐型 ア プ リケ ー シ ョ ンに お い て ユ ー ザ に 自 動 化 を提 供 す るメ リ ッ トは あ る とは 言 えな い た め,デ バ ッグ用 の為 だ け に マ ク ロを サ ポ ー トす るの は コス トが 非 常 に か か る。 ま た動 作す る環境 は様 々 で あ り正確 な タイ ミン グ で操 作 を行 う こ とが難 しい。 2.画 面 遷 移 を 伴 うシ ナ リオ 分 岐 型 ア プ リケ ー シ ョ ン 画 面遷 移 を 伴 うア プ リケ ー シ ョン とは,ユ ー ザ が 何 か し らの行 動 を 起 こす こ とに よっ て 画 面 の 状 態 が 変 わ って い くア プ リケ ー シ ョンの こ とで あ る。 画 面 の 状 態 の 変 化 とは 表 示 され る内 容 の 変 化 で あ り,テ ンプ レー トを用 い た よ うな 同 じ構 成 で 一 部 の 中身 が 差 し替 わ る もの か ら, ペ ー ジ の構 成 が 全 部 変 わ る もの ま で 様 々 で あ る。 基 本 的 に は 「画 面 を確 認 一〉 選 択 や 入 カ ー〉 次 の画 面 へ移 動 す る 行 動 」 とい う操 作 を 一 画 面 の 中で 行 い,こ の 動 作 を最 後 の 画 面 が 出 て く るま で 何 度 も繰 り返 す 。 ま た 操 作 が 可 逆 (前の 操 作 の 取 り消 しま た は 修 正 が 行 え る)で あ れ ば 前 の 画 面 に 戻 る こ と も可 能 に な っ て い る こ と も あ る。 シナ リオ 分 岐 型 ア プ リケ ー シ ョン とは,先 ほ どの 行 動 の 「選 択 や 入 力 」 の 結 果 に 応 じて 「次 の 画 面 へ 移 動 す る行 動 」 ●UIAutomation
UIAutomationと はUIの 自 動 操 作 機 構 で あ り.Net FrameworkやiPhoneSDKの よ う に 公 式 で サ ポ ー ト さ れ て い る も の か ら,MarathonやSWTBotの 様 に サ ー ドパ ー テ ィ ー の ラ イ ブ ラ リ な ど 様 々 な も の が 存 在 す る 。UI Automationを 利 用 す る と マ ク ロ に 比 べ て 非 常 にGUIの 操 作 は 行 い や す い が,APIは 非 常 に 抽 象 化 さ れ て お り実 際 に 使 用 す る た め に は キ ャ ス トや リ フ レ ク シ ョ ン を 多 く 行 わ な け れ ば い け な い 。 こ の た め 画 面 構 成 変 更 に よ る テ ス ト コ ー ドの 変 更 に 非 常 に 弱 い と い う弱 点 が あ る。 ま た ゲ ー ム の 様 にUIを 自 分 で 描 写 す る 場 合 な ど は,そ の 機 能 を 実 装 し た 場 合 を 除 い てUIAutomationを 利 用 す る こ と が 出 来 な い 。
● モ デ ル 検 査 モ デ ル 検 査 は 本研 究 とは 目的 が 異 な っ て い るが,誤 解 され や す い 部 分 が あ るた め補 足 を 行 う。モ デ ル 検 査 とは, モ デ ル の 取 り得 るす べ て の 状 態 に お い て あ る条 件 を満 た す か ど うか を 検 査 す る方 法 で あ る。 単 体 テ ス トは モ デ ル の性 質 の 一 部 を 調 べ るに は 非 常 に 有 効 で あ るが,モ デ ル 全 体 の性 質 を 書 き た い 場 合 は 単 体 テ ス トが 不 向 きで あ る。 モ デ ル検 査 は この す べ て の 組 み 合 わ せ の 中で 条 件 を満 た す か ど うか を 調 べ る こ とに 非 常 に 有 効 か つ 強 力 な 手 法 で あ るが,高 度 な 知識 と膨 大 な 計 算 資源 が 必 要 とな る。 4.提 案 す る テ ス ト手 法 本研 究 で 提 案 す るテ ス ト手 法 は 安 価 な 方 法 で テ ス トを 行 え る こ とを 目的 と して い るた め,特 別 な 外 部 ツー ル や 手 動 で行 っ て い た テ ス トとい う方 法 を用 い ず,既 存 の ユ ニ ッ トテ ス トで 簡 単 に 行 え る よ うに す る至 っ て シ ンプ ル な もの で あ る。 具 体 的 に は 1.様 々 な 画 面遷 移 を伴 うシ ナ リオ 分 岐 型 ア プ リケ ー シ ョ ンで使 用 可 能 な 画 面遷 移 モ デ ル の 作 成 2.画 面遷 移 モ デ ル に基 づ い て 遷 移 を 行 う遷 移 マ シ ンの 作 成 3.遷 移 マ シ ン を 自動 操 作 す る機 能 の 作 成 4.自 動 操 作 機 能 をユ ニ ッ トテ ス トフ レー ム ワー ク に 組 み 込 み や す くす るた め の機 能 の 作 成 を行 うこ とに よっ て 実 現 す る。 これ に よ り 「GUIを 含 ん だ テ ス ト手 法 の適 用 と問題 点 」 に お い て 挙 げ た 1.入 力 デ バ イ ス か ら の 正 確 な 入 力 方 法 2.特 定 フ レー ム ワ ー ク へ の 依 存 3.コ ー ドの メ ン テ ナ ン ス 性 や 型 安 全 性 4.高 度 な 専 門 知 識 や 高 価 な ツ ー ル とい う問題 点 を解 決 す る。 4.1従 来 の モ デ ル の 問 題 点 現 在利 用 され て い る画 面 遷 移 を伴 うシ ナ リオ 分 岐 型 ア プ リケ ー シ ョ ンは,そ れ ぞ れ 独 自の モ デ ル を採 用 して い る。 独 自モ デ ル は利 用 され るア プ リケ ー シ ョンの 記 述 の しや す さに お い て 非 常 に優 れ て い るが,外 部 ツー ル な ど を使 用 して 処 理 を 行 い た い 場 合 に 非 常 に扱 い が 難 しい 。 4.2画 面遷 移 の モ デ ル 化 画 面遷 移 を伴 うシ ナ リオ 分 岐型 ア プ リケ ー シ ョ ンで利 用 され るモ デ ル は,ス ク リプ トも し くはXMLな どの デ ー タ構 造 に よっ て構 成 され て い る。 画 面遷 移 を伴 うシ ナ リオ分 岐型 ア プ リケ ー シ ョ ンに お い て ス ク リプ トが利 用 され る こ とが 多 い。これ はDSLを 利 用 して ア プ リケ ー シ ョン の 内部 を効 率 的 に制 御 す る こ とに 重 点 が 置 か れ て い る こ と と,ス ク リプ トエ ンジ ン さ えあ れ ば コ ンパ イ ラな どの 開発 環 境 が不 要 とい う点 に お い て メ リッ トが あ るか らで あ る。しか しDSLで あ るた め に 不 得 意 も し くは 出 来 な い とい う可能 性 が 出 て く る。 この た め 提案 す るモ デ ル で は ス ク リプ トを利 用 せ ずXMLな どの デ ー タ構 造 で モ デ ル の 定義 を行 う。 次 に モ デル で使 用 す る要 素 の 説 明 を 行 う。 4.2.1ViewPoint viewPointは テ キ ス トや 画 像 な ど選 択(ユ ー ザ に 入 力 を 受 け 付 け る 場 所 が 無 い)を 伴 わ な い 画 面 で 構 成 さ れ て い る も の を 表 現 す る た め の モ デ ル で あ る 。viewPointは PointIdとNextPointIdの 二 つ の プ ロ パ テ ィ を 定 義 し て い る 。PointIdは そ の 画 面 を 表 す ユ ニ ー ク なIdで あ る 。 Pointldは 遷 移 を 行 う際 に 遷 移 場 所 指 し 示 すNextPointld の 指 定 先 と し て 使 わ れ る 。 遷 移 に つ い て の 情 報 はPointId とNextPointldの 関 係 で しか 持 た な い 。画 像 や テ キ ス トな ど の 情 報 は そ の ア プ リ ケ ー シ ョ ン に よ っ て 異 な る た め, そ れ ぞ れ の ア プ リ ケ ー シ ョ ン がviewPointを 継 承 し て プ ロパ テ ィ を 付 け 加 え る。 4.2.2SelectionPoint SelectionPointは テ キ ス ト や 画 像 の 他 に も ユ ー ザ の 入 力 を 受 け 付 け るUIを 持 っ て い る 画 面 で 構 成 さ れ て い る も の を 表 現 す る た め の モ デ ル で あ る 。SelectionPointは ViewPointを 継 承 し て い る た めViewPointが 持 っ て い る プ ロ パ テ ィ の 他 に もSelectionsを 定 義 し て い る 。 SelectionsはISelectionを 複 数 保 持 し て い る 。ISelectionは 選 択 肢 を 表 す も の でSelectionldと い う プ ロ パ テ ィ を 持 っ て い る 。SelectionIdはSelectionを イ ン ス タ ン ス 化 し た と き に 選 択 肢 を 分 別 す る た め のldと し て 利 用 さ れ る 。 4.2.3BranchPoint BranchPointは 画 面 遷 移 を 行 う 際 に 分 岐 が 必 要 な と き に 利 用 す る モ デ ル で あ る。ViewPointとSelectionPointと の 最 大 の 違 い は 画 面 表 示 に 関 す る 情 報 を 一 切 持 た ず 遷 移 先 を 複 数 持 っ て い る と い う こ と で あ る 。viewPointと SelectionPointは 遷 移 先 を 一 つ し か 持 た な い た め 複 数 の
遷 移 候 補 が あ る 場 合 に 分 岐 処 理 を 行 う こ と が 出 来 な い 。 そ こ で 遷 移 先 の 分 岐 を 行 い た い 場 合 は,viewPointと SelectionPointのNextPointIdをBranchのPointIdに 設 定 す る 。BranchPointはPointldとNextPointIdsの 二 つ の プ ロ パ テ ィ を 定 義 し て い る 。PointIdはViewPointや SelectionPointと 同 じ役 目 を 持 っ て い る。NextPointIdsは 複 数 の 遷 移 先,つ ま り複 数 のNextPointldを 持 っ て い る 。 BranchはViewPointやBranchPointと 同 じ よ う に,遷 移 条 件 に 関 す る 情 報(BranchPointの 場 合 は 遷 移 候 補 の どれ に 遷 移 を 行 え ば 良 い か)を 持 っ て い な い 。 こ れ は ア プ リ ケ ー シ ョ ン に よ っ て 遷 移 候 補 先 に 使 用 さ れ る 判 断 の 情 報 は 様 々 だ か ら で あ る。BranchPointが 遷 移 条 件 と どの よ う に 遷 移 先 を 決 め る の か に つ い て は4.6.1節 で 説 明 を 行 う。 4.3遷 移 表 現 画 面遷 移 を 伴 うシ ナ リオ 分 岐 型 ア プ リケ ー シ ョンで 使 用 され る遷 移 構 造 は 様 々 な もの が 考 え られ る。 遷 移 構 造 は どん な に複 雑 で もい くつ か の 基 本 的 な 遷 移 構 造 を使 用 して 作 られ て い る。 こ こで は 遷 移 構 造 の 基 本 とな る三 っ の パ ー ツ で あ る 「逐 次 」 「分 岐 」 「ル ー プ 」 を先 ほ ど説 明 した遷 移 モ デ ル を使 用 して どの よ うに 構 成 す るか につ い て説 明 を 行 う。 4.3.1逐 次 逐 次 は 一 直 線 で あ り制 御 を 含 ま な い 遷 移 構 造 で あ る 。 画 面 を 表 すview-Pointは 図1の 様 に 自 分 自 身 を 表 す PointIdと,遷 移 先 を 指 定 す るNextPointIdを 持 っ て い る 。 そ れ ら を 「画 面PlはP2遷 移,画 面P2は 画 面P3へ 遷 移, 画 面P3は 遷 移 し な い 」 の よ う に 現 在 の 画 面 が 次 へ 遷 移 し た い 画 面 に つ な ぐ こ と に よ っ て 逐 次 構 造 を 表 現 す る 。 画 面 の 終 端 はNextPointIdに 該 当 す る も の が 無 い た め 空 白 ま た はNullに し て 終 端 を 表 す 。 Di ..",.一 一 一 》'i.."..一 一 一 》'i..", 図1逐 次 モ デ ル 4.3.2分 岐 分 岐 は 条 件 に よ っ て 複 数 有 る 画 面 遷 移 先 候 補 の ど れ か に 遷 移 行 う為 の 遷 移 構 造 で あ る 。分 岐 を 表 すBranchは ViewPointな ど と違 い,図2のBranchの 様 にNextPointlds
に 遷 移 先 を 複 数 持 つ こ と が 出 来 る 。 そ れ を 別 々 の 画 面 に っ な ぐ こ と に よ っ て 分 岐 を 表 現 す る 。
一
図2分 岐 モ デ ル 4.3.3ル ー プ ル ー プ は あ る条 件 を 満 た す ま で 繰 り返 し同 じ画 面 を 表 示 した い とき に使 用 す る遷 移 構 造 で あ る。 ル ー プ は 分 岐 と同 じ くBranchを 使 用 して 表 現 を行 うが,自 分 が た ど っ て き た も の を指 す の で は 無 く図3の 様 に 今 ま で た ど っ て き た もの を指 す こ とに よっ て表 現 す る。[剛
↓
図3ル ー プモ デ ル→
4.4提 案す る遷 移 モ デ ル の 利 点 提 案 す る遷 移 モ デル の利 点 と して,モ デ ル に透 過 的 な 操 作 が行 え る とい うこ とが 挙 げ られ る。 従 来 は そ れ ぞ れ が独 自のモ デ ル を採 用 して い た た め,モ デ ル に 対 して 操 作 を行 うた め に は独 自モ デル に 対応 した プ ロ グ ラム を書 く必 要 が あ っ た。 しか し今 回提 案 した モ デ ル を使 用 した ア プ リケ ー シ ョ ンを 作成 した場 合,一 度 遷 移 モ デ ル 用 の ソフ トウェ ア を 作成 した ら この遷 移 モ デ ル を使 用 す る ソ フ トウェ アす べ て に使 用 可能 とな る。 4.5遷 移 条 件 を 持 た な い 理 由 Scene/SelectionSceneは,ユ ー ザ がUIな ど を 入 力 デ バ イ ス な ど で 操 作 し て 「遷 移 」 を 行 う こ と を 明 示 す る 場 合 に 移 動 が 行 わ れ る(イ ン ス トー ル の 進 捗 状 況 を 表 示 す る 画 面 な ど 自動 で 遷 移 す る場 合 も あ る)。こ の 遷 移 条 件 は ア プ リ ケ ー シ ョ ン に よ っ て 異 な っ て お り,ほ と ん ど の 場 合 は マ ウ ス,キ ー ボ ー ド,タ ッ チ パ ネ ル の い ず れ か か ら の 入 力 と考 え られ る が,場 合 に よ っ て は 特 殊 な デ バ イ ス か ら の 入 力 と い う こ と も あ り得 る。 も し こ の 様 な 遷 移 条 件 を モ デ ル に 組 み 込 ん だ 場 合,モ デ ル は 入 力 デ バ イ ス に 依 存 す る こ と に な っ て し ま う。 モ デ ル は ど の 入 力 デ バ イ ス で 遷 移 を 行 お う と も,モ デ ル は 遷 移 の 関 係 だ け を 決 定 す る べ き で あ る 。 こ の た めScene/SelectionSceneは 遷 移 条 件 を 持 た な い よ うに し て い る。 で は ど こ に 遷 移 条 件 を 記 述 す る か と い う と,UIか ら の 入 力 を 受 け 取 りモ デ ル を 操作 す る 部 分 に 記 述 を 行 う。 こ れ はMVCパ タ ー ン の Controller部 分 に 該 当す る。 こ うす る こ と に よ りモ デ ル とUIは 完 全 に 切 り離 され る こ とに な り,そ れ ぞれ の 再 利 用性 が 高 ま る。 Branchは ユ ー ザ に 表 示 す る情 報 を 持 っ て い な い た め Scene/SelectionSceneの 場 合 と は 別 の 理 由 が 存 在 す る 。 Branchは そ の場 所 へ 遷 移 す る と,ど の 遷 移 先 に行 くか を 決 定 す る。 この ど こへ 行 くか とい う遷 移 条 件 は,モ デ ル 内 の 情 報 で 完 結 す る もの か らPC内 情 報 や ネ ッ トワー ク を使 用 した もの ま で 様 々 な もの が 考 え る こ とが 出 来 る。 モ デ ル 内 の 情 報 で 簡 潔 す るな らば 個 数 や 論 理 演 算 な どの モ デ ル を 定 義 す る こ とに よっ て 遷 移 条 件 を持 た せ る こ と で 対応 出 来 るが 問題 は モ デ ル 外 の 情 報 を使 う場 合 で あ る。 本 シ ス テ ム は 巨 大 な ライ ブ ラ リを使 用 して モ デ ル の 開 発 を行 い や す くす る こ とは 目的 と して お らず,テ ス トの 自 動 化(自 動遷 移)を 行 い や す い シ ス テ ム を開 発 す る こ と を 目的 と して い る。 モ デ ル 外 の 情 報 を使 用 す るな らば, 遷 移 条件 の 判 断 は モ デ ル 外 の ロジ ッ クに 移 譲 す べ きで あ る。 この た めBranchは 遷 移 条 件 を持 た な い。 4.6遷 移 の 管 理 遷 移 モ デ ル の 説 明 を行 っ た が,モ デ ル だ け で は 遷 移 を 行 う こ と が 出 来 な い 。 遷 移 を 行 うた め に は 遷 移 モ デ ル か ら適 切 な 情 報 を 取 得 し遷 移 に 関 す る 情 報 を 管 理 す る 必 要 が あ る。 こ こ で は 先 ほ ど の 遷 移 モ デ ル を 利 用 して,実 際 に 遷 移 を 管 理 す る た め の ク ラ ス の 説 明 を 行 う。 遷 移 を 行 う ク ラ ス はScenarioReader,RouteSelectorの 二 つ に よ っ て 構 成 さ れ て い る。 4.6.1ScenarioReader1RouteSelector ScenarioReaderは 遷 移 動 作 に 関 す る 処 理 を 管 理 して い る ク ラ ス で あ る 。ScenarioReaderは 遷 移 を 行 うた め に, Scenario,IRouteSelector,StartPointldの 三 つ が 必 要 と な る 。 Scenarioは 遷 移 モ デ ル で 説 明 を 行 っ た と お り,遷 移 に 関 す る 情 報 を 持 っ て い る モ デ ル で あ る 。RouteSelectorは Branchに お い て 遷 移 先 を 決 定 す る も の で あ り,現 在 地 (Branch)を 渡 さ れ る と 現 在 の 状 況 を 判 断 し て 行 き 先 を 決 定 す る も の で あ る。 ま たRouteSelectorは ア プ リケ ー シ ョ ン 固 有 の 処 理 で あ る た め,ア プ リケ ー シ ョ ン 側 が 実 装 す る 必 要 が あ る。StartPointIdはScenarioの 中 で どの 位 置 か ら 遷 移 を ス タ ー トす る か を 指 定 す る も の で あ る 。 ScenarioReaderは こ の 三 つ の 情 報 を 用 い て,次 の 画 面 へ 遷 移 させ る 関 数 で あ るNext関 数 が 呼 ば れ る 毎 に 遷 移 を 行 っ て い く。 4.7自 動 遷 移 本 シ ス テ ム の 代 表 的 な 機 能 と な る 自動 遷 移 は ア プ リ ケ ー シ ョ ン 内 のScenarioReaderを 操 作 す る こ と に よ り実 現 す る 。 自動 遷 移 に 必 要 な 「停 止 条 件 」 「進 行 条 件 」 「遷 移 操 作 」 はTransitionAutomatorが す べ て 請 け 負 う。 ま た 直 接 ア プ リケ ー シ ョ ン 内 部 のScenarioReaderを 操 作 し て し ま っ て は ア プ リ ケ ー シ ョ ン の 実 装 を 無 視 し て 遷 移 す る こ と に な っ て し ま う。 そ こ でSystemConnectorと い う TransitionAutomatorと ア プ リケ ー シ ョ ン を 仲 介 す る役 目 を 持 っ た ク ラ ス を 経 由 す る こ と で,ア プ リ ケ ー シ ョ ン の 実 装 を 気 に す る こ と 無 く 遷 移 を 行 う 。 次 に SystemConnectorとTransitionAutomatorの 詳 細 に つ い て 説 明 す る 。 4.7.1SystemConnector SystemConnectorは ア プ リ ケ ー シ ョ ン とTransition Automatorを つ な ぐ ク ラ ス で あ る 。 こ の ク ラ ス が 必 要 と な る 理 由 は,TransitionAutomatorがSystemComector経 由 し な い と 実 現 で き な い こ とや 不 都 合 な こ と が あ る か ら で あ る 。 一 つ 目 は 選 択 肢 に 関 す る 取 り 扱 い で あ る。Scenario Readerは 選 択 肢 を 受 け 取 る 機 能 は 無 い た め,選 択 肢 は ア プ リ ケ ー シ ョ ン の ど こ か の メ ソ ッ ドが 受 け 取 っ て 処 理 を 行 う必 要 が あ る 。そ こ でTransitionAutomatorは ア プ リケ ー シ ョ ン に 何 か し ら の 方 法 を 用 い て 選 択 肢 を 渡 す 必 要 が あ る 。こ の た め 選 択 肢 をTransitionAutomatorか ら受 け 取 り, ア プ リ ケ ー シ ョ ン の 適 切 な メ ソ ッ ドに 処 理 を行 わ せ る た め に 必 要 と な る 。 二 つ 目 はScenarioReaderを 操 作 す る 手 段 で あ る 。 通 常 ScenarioReaderは 外 部 に 公 開 す る 必 要 性 が 無 い た め 操 作 す る 手 段 が 無 い 。 そ こ で 何 か し ら の 手 段 を 用 い て ScenarioReaderを 操 作 す る 必 要 が あ る 。 ま たScenario Readerを 直 接 操 作 し て 良 い か ど う か の 問 題 も 存 在 す る 。 た と え ば 遷 移 す る 前 に 特 定 の 処 理(た と え ば ロ ギ ン グ な ど)を 行 わ な け れ ば い け な い 場 合 は,直 接ScenarioReader を 操 作 す る こ と は 出 来 な い 。 こ の た め 適 切 な 手 順 を 用 い て 遷 移 を 行 うた め にSystemConnectorが 必 要 と な る 。 こ の ク ラ ス は ア プ リ ケ ー シ ョ ン の 内 部 実 装 に 依 存 す る 処 理 の た め,ア プ リ ケ ー シ ョ ン側 が 実 装 す る必 要 が あ る。 4.7.2TransitionAutomator TransitionAutomatorは4.7.1節 で 説 明 す るSystem Co皿ectorを 経 由 し て ア プ リ ケ ー シ ョ ン の 内 部 状 態 を 取 得 操 作 す る こ と に よ っ て 自 動 遷 移 を 行 う ク ラ ス で あ る 。 TransitionAutomatorは 選 択 肢 情 報 と 停 止 情 報 の 二 つ の 情
報 を 元 に 遷 移 を 操 作 し て い く 。 遷 移 方 法 はPullとPush の 二 種 類 の 方 法 が あ り,Pullは ア プ リケ ー シ ョ ン の 更 新 処 理 に 組 み 込 ん で 更 新 毎 に 遷 移,選 択 肢 の 決 定,停 止 の 判 断 を 行 っ て い く。Pushは ア プ リケ ー シ ョ ン と は 別 ス レ ッ ドで 動 き,自 分 自 身 で 定 期 的 に 更 新 を 行 い な が ら ア プ リ ケ ー シ ョ ン に 遷 移,選 択 肢 の 決 定,停 止 の 情 報 を 送 っ て い く 方 法 で あ る。 5.評 価 5.1評 価 方 法 今 回 作 成 し た シ ス テ ム の 評 価 と し て,ア ドベ ン チ ャ ー ゲ ー ム を 作 成 し 自動 遷 移 が 行 え る か 確 認 を 行 っ た 。ゲ ー ム の シ ナ リオ モ デ ル は 図4の 様 な 構 造 に な っ て い る 。Sl, S2,S3以 外 の 四 角 形 は 画 面 の み で 構 成 さ れ たChapterを 表 し て お り,Sl,S2,S3の 四 角 形 は そ れ ら以 外 の 四 角 形 の 構 造 に 選 択 肢 画 面 を 一 つ 含 ん だChapterを 表 し て い る 。 シ ナ リ オ モ デ ル の 大 き さ はSmall,Middle,Largeの 三 種 類 を 用 意 し,そ れ ぞ れ のChapterが20,500,1000個 の 画 面 を 保 持 し て い る。 こ の モ デ ル を 使 用 す る ゲ ー ム に 対 して テ ス
回 一回 一回
↓
1
国 一國 一昭1一國 一国 一國
↑
回1
一回1一 回1
↓
-尾
図
一 ・
團
一 ・
闇
一 ・
團
・
一 目
図4評 価 の シナ リオ モ デル の概 要 トを 実 行 し て 自動 遷 移 が 行 え る か 確 認 を 行 っ た 。 こ の テ ス トはS1で 「Selectionl-1」を 選 択 しS2で 「Selection2-0」 を 選 択 し た 場 合 にE2-5の 最 後 に 到 達 出 来 る か ど う か を 行 う テ ス トで あ る。使 用 し た テ ス ト コ ー ドは 図5で あ る。 5.2結 果 テ ス トの 実 行 時 間 は 図6の 様 に な っ た 。理 論 値 の 計 算 総画磁 式 は 実 行 時 間 = で あ る。今 回 は フ レー ム レー フレーム レーみ トを60fPsと した 。smallの 場 合 は 誤 差 率 が57%と 非 常 に 高 い が,画 面数 が少 な い た め遷 移 時 間 よ りも初 期 化 処 理 が か か っ た と考 え られ る。Middle,Largeで は初 期 化 処 理 に比 べ て理 論 値 の遷 移 時 間 が長 い た め誤 差 率 が 非 常 に 低 くな っ て い る。こ の結 果 か ら 自動 遷 移 は成 功 してお り, 大 量 の遷 移 が あ るほ ど理 論 値 に 近 づ くた め 本 シ ス テ ム は 非 常 に有 効 で あ る と考 え られ る。 今 回 の 手 法 を用 い る とシ ス テ ム が機 能 の分 担 を 上 手 く設 計 して い るた め,テ ス トが通 らな か っ た場 合 の原 因 究 明 方 法 も簡 単 とな る。 た とえ ば想 定 した停 止 位 置 と実 際 の停 止 位 置 が 違 っ て い た場 合 は,RouteSelectorが 悪 い と考 え られ る。 これ は モ デ ル の遷 移 に お け る分 岐 先 の 決 定 はRouteSelectorに 任 して い る か らで あ る。 ま た ア プ リケ ー シ ョ ンが 途 中で 落 ち て しま う よ うな失 敗 か つ ロジ ッ クテ ス トが 通 らな か っ た場 合 は,モ デ ル や 分 岐 制 御 に 問題 が あ る わ け で は無 く, それ 以外 の部 分 に 問題 が あ る と考 え られ る。 この よ うに シ ス テ ム構 成 の 際 に テ ス トを 考 慮 した設 計 を した た め 問 題 の切 り分 け を ス ム ー ズ に行 う こ とが 可能 とな る。 var(=onnecton=newGameConnector()三 { USing(var'aUtOmatOr'=newPUIITr'anSitiOnAUtOmatOr'( (=onnecton,newList〈Condition> { } { newConditio Selection工d newConditio Selection工d },newS⊂eneO{ ("Selectio "Selectio (開Sele⊂ti "Selectio oint工d≡"E 1",newSelection(){ 1-1"}), n2'㌧newSele⊂tion(){ 2-e"}) dinge-4-199"})) varsave≡newSaveData(); vargame≡newGame( automator, (manager,spniteBat⊂h)≡ 〉 { va「、scenarioReaden≡ ScenarioHelpen.GetS⊂enanioReaden(save, "S⊂en ⊂onnecton.⊂O save.Sele⊂te manager.⊂ha save,sprit }); ⊂onne⊂ton.Game≡game; game.Run(); } 器 離 誌Read,,, ..> Is.Add( _.First().Selection工d))三 琶 と潮lwS⊂ena「'oV'ew(scena「'oReade「' Asser、t.Equal("Ending〔 ∋-4-199",automator'.⊂ur'r、entPoint.Point工d)三 図5ミ ドル サ イ ズ シナ リオ の 評 価 の 単 体 テ ス トコー ド 5.3ま と め 本 研 究 で は 画 面 遷 移 を 伴 う シ ナ リ オ 分 岐 型 ア プ リ ケ ー シ ョ ン に テ ス トの 自動 化 を 行 う方 法 を 提 案 し た 。 目 的 と し て い た 実 際 に ア プ リ ケ ー シ ョ ン を 動 作 させ て の テ ス ト を 行 う た め に,4章 で 挙 げ た 四 つ の 問 題 点 に つ い て そ れ ぞ れ 「入 力 デ バ イ ス か ら の 正 確 な 入 力 方 法)System Connectorを 用 い て 内 部 を 制 御 す る よ うに 設 計 」 「特 定 フ レ ー ム ワ ー ク へ の 依 存)特 定 フ レー ム ワ ー ク に 依 存 し な 160 140 120 100 実 行 時 間{sec}8 6 4 2 一 理 論値 一 測定値 一 誤差率 133ぎ394 2.7 α 0 . 0 . α α 0 . 0 . 0 7 6 5 4 3 2 1 0 誤差率⊂%} SmallMiddleLarge シナ リオ サ イ ズ 図6シ ナ リオ サ イ ズ 別 の テ ス ト実 行 時 間い 完 全 に切 り離 した設 計 」「コー ドの メ ンテ ナ ンス 性 や 型 安 全 性)UIの 操 作 で は な く内部 の制 御 に着 目 した た め, 初 期 条 件 を 与 え るだ け の 簡 単 な コー ドで テ ス トが 記 述 可 能 とな る よ うに設 計 」 「高 度 な専 門知 識 や 高価 な ツ ー ル) 任 意 の ユ ニ ッ トテ ス トフ レー ム ワー クの み で 使 用 可 能 に な る よ うに設 計 」 とい う方 法 を用 い て 解 決 を行 っ た 。 実 際 に 動 く こ とを 示 す た め に 実 際 に サ ンプ ル ア プ リケ ー シ ョ ンを 作 成 し,本 シ ス テ ム を利 用 して テ ス トを行 い 実 際 に 動 作 して い る こ とが確 認 で きた 。 テ ス トコー ドの 記 述 面 で は 「入 力 に 関す る 条件 や 情 報 」「ア プ リケ ー シ ョンの テ ス ト用 の 初 期 化 」 を 行 うだ けで 簡 潔 に 行 うこ とが 出 来 た。 テ ス トの 実 行 速 度 に お い て も大 きな 画 面 遷 移 モ デ ル で構 成 され るア プ リケ ー シ ョンに お い て 非 常 に効 果 的 な 結 果 を 出 して い る。 小 さな 規模 の ア プ リケ ー シ ョン にお い て は ア プ リケ ー シ ョンの 初 期 化 時 間 で テ ス ト時 間 の 半 分 ほ ど 占め る こ と もあ るが,自 動 化 とい う点 にお い て 非 常 に 有 効 で あ る と考 え られ る。 今 後 の課 題 と して テ ス トの 有 効 性 を認 識 して も ら うシ ス テ ム の 作 成 が 挙 げ られ る。 今 回 提 案 した シス テ ム は そ れ 単 体 で 効 果 を 上 げ る よ うな シ ス テ ム で は 無 く,シ ス テ ム の 上 に ア プ リケ ー シ ョン を構 築 す る こ とで 効 果 を得 る こ とが 出来 る シ ス テ ム で あ る。 こ の た め 本 シ ス テ ム を 様 々 な 場 所 で利 用 して も ら うた め に は,今 回 の 評 価 で 使 用 した ゲ ー ム 用 の モ デ ル の よ うに 特 化 した モ デ ル を提 供 す る必 要 が あ る。