A4-3_ワースクアプリケーションズ大畠様_JaSST_2013_TOKYO_大畠悠介_公開.ppt

Similar documents
その 他 事 業 推 進 体 制 平 成 20 年 3 月 26 日 に 石 垣 島 国 営 土 地 改 良 事 業 推 進 協 議 会 を 設 立 し 事 業 を 推 進 ( 構 成 : 石 垣 市 石 垣 市 議 会 石 垣 島 土 地 改 良 区 石 垣 市 農 業 委 員 会 沖 縄 県 農

文化政策情報システムの運用等

<4D F736F F D2095CA8E A90DA91B18C9F93A289F1939A8F D8288B3816A5F E646F63>

Microsoft Word - 目次.doc

は 固 定 流 動 及 び 繰 延 に 区 分 することとし 減 価 償 却 を 行 うべき 固 定 の 取 得 又 は 改 良 に 充 てるための 補 助 金 等 の 交 付 を 受 けた 場 合 にお いては その 交 付 を 受 けた 金 額 に 相 当 する 額 を 長 期 前 受 金 とし

<4D F736F F D E598BC68A8897CD82CC8DC490B68B7982D18E598BC68A8893AE82CC8A C98AD682B782E993C195CA915B C98AEE82C382AD936F985E96C68B9690C582CC93C197E1915B927582CC898492B75F8E96914F955D89BF8F915F2E646F6

<4D F736F F D F8D828D5A939982CC8EF68BC697BF96B38F9E89BB82CC8A6791E52E646F63>

スライド 1

<819A955D89BF92B28F BC690ED97AA8EBA81418FA48BC682CC8A8890AB89BB816A32322E786C7378>

<4D F736F F D208DE3905F8D8291AC8B5A8CA48A948EAE89EF8ED0208BC696B18BA492CA8E64976C8F BD90AC E378C8E89FC92F994C5816A>

<8BB388F58F5A91EE82A082E895FB8AEE967B95FB906A>

独立行政法人国立病院機構呉医療センター医療機器安全管理規程

私立大学等研究設備整備費等補助金(私立大学等

- 1 - 総 控 負 傷 疾 病 療 養 産 産 女 性 責 帰 べ 由 試 ~ 8 契 約 契 約 完 了 ほ 契 約 超 締 結 専 門 的 知 識 技 術 験 専 門 的 知 識 高 大 臣 専 門 的 知 識 高 専 門 的 知 識 締 結 契 約 満 歳 締 結 契 約 契 約 係 始


JTCCM製品認証審査要綱

大田市固定資産台帳整備業務(プロポーザル審査要項)

第三十六号の二様式(第五条関係)(A4)

入 札 参 加 者 は 入 札 の 執 行 完 了 に 至 るまではいつでも 入 札 を 辞 退 することができ これを 理 由 として 以 降 の 指 名 等 において 不 利 益 な 取 扱 いを 受 けることはない 12 入 札 保 証 金 免 除 13 契 約 保 証 金 免 除 14 入

< DB8CAF97BF97A6955C2E786C73>

< F2D E518D6C817A938A82B08D9E82DD8E9197BF8140>


1. 業 務 概 要 貨 物 情 報 登 録 済 の 貨 物 に 対 して システムを 介 さずに 行 われた 税 関 手 続 きについて 税 関 が 許 可 承 認 等 を 行 った 旨 を 登 録 する また システムで 行 われた 以 下 の 税 関 手 続 き( 以 下 輸 出 申 告 等

(2)大学・学部・研究科等の理念・目的が、大学構成員(教職員および学生)に周知され、社会に公表されているか

HDC-EDI BaseのAny変換における閏年の取り扱いに関する重要なお知らせ

事 業 概 要 利 用 時 間 休 館 日 使 用 方 法 使 用 料 施 設 を 取 り 巻 く 状 況 や 課 題 < 松 山 駅 前 駐 輪 場 > JR 松 山 駅 を 利 用 する 人 の 自 転 車 原 付 を 収 容 する 施 設 として 設 置 され 有 料 駐 輪 場 の 利 用

PowerPoint プレゼンテーション

Microsoft PowerPoint - 経営事項審査.ppt

Transcription:

評 価 補 助 ツール 開 発 による コードカバレッジ 測 定 の 導 入 と 不 具 合 防 止 に 向 けた 取 り 組 み - 開 発 エンジニアによる 継 続 的 開 発 評 価 のための 仕 組 み 造 り- 株 式 会 社 ワークスアプリケーションズ COMPANY Web Service Group エキスパートエンジニア 大 畠 悠 介

AGENDA! 弊 社 でのQC 活 動 取 り 組 み 状 況! 魚 の 骨 分 析 図! 対 策 一 覧 表! カバレッジを 運 用 に 乗 せる 為 に 実 施 したこと! オープンソースをベースとしたツール 開 発! JavaScriptカバレッジ 計 測 ツール! 案 件 別 カバレッジ 結 果 出 力 ツール! 実 際 に 行 っている 運 用 手 順! 効 果 測 定 No.1

取 り 組 みの 背 景! パッケージ 製 品 の 開 発 を 重 ねていく 度 に 設 定 値 の 組 み 合 わせ 量 が 増 加 し テスト 量 が 増 加 し 続 けている! お 客 様 より 製 品 に 対 する 機 能 追 加 の 要 望 も 多 いため 短 いサイクルでの 製 品 リリースを 求 められる 状 況 は 変 わらない! 過 去 にテストケースやドキュメントの 整 備 などいくつかの 対 策 を 実 施 した 経 緯 は あるが 目 立 った 改 善 は 見 られなかった 出 荷 後 に 発 見 される 不 具 合 件 数 はリリースを 重 ねるごとに 増 加 傾 向 にあり QC 活 動 を 通 じて 開 発 評 価 の 仕 組 みを 改 善 することでプロダクトの 品 質 を 向 上 しようと 本 取 り 組 みはスタートした No.2

対 策 概 要 の 一 覧 No.3

カバレッジ 導 入 にあたっての 問 題 点! 主 要 プログラムの1つであるJavaScriptに 関 する コードカバレッジが サポート 対 象 ブラウザにて 測 定 できなかった! 10 年 以 上 続 いている 製 品 の 為 デッドコードが 存 在 する 箇 所 も 存 在 し カバレッジ100%を 達 成 することは 不 可 能 であった! カバレッジ 計 測 結 果 の 利 用 方 法 が 分 からない 開 発 者 や 評 価 者 が 大 勢 いた! 明 確 な 利 用 基 準 が 設 けられない 為 に 過 去 に1 度 失 敗 した 経 緯 がある No.4

Java Script Coverage No.5

IE/FirefoxでのJSカバレッジ 計 測 ツール Create!! No.6

JsCoverageの 仕 組 み var ctr = 0; document.body.onclick = function() { ctr = ctr + 1; if (ctr > 4) { alert(ctr); } else { alert(ctr); } } No.7

JsCoverageの 仕 組 み //BRT_BLOCK_BEGIN:1 var ctr = 0; document.body.onclick = function() { //BRT_BLOCK_BEGIN:2 ctr = ctr + 1; if (ctr > 4) { //BRT_BLOCK_BEGIN:3 alert(ctr); //BRT_BLOCK_END:3 } else { //BRT_BLOCK_BEGIN:4 alert(ctr); } //BRT_BLOCK_END:2 } //BRT_BLOCK_END:1 //BRT_BLOCK_END:4 No.8

JsCoverageの 仕 組 み //BRT_BLOCK_BEGIN:1 var ctr = 0; document.body.onclick = function() { //BRT_BLOCK_BEGIN:2 ctr = ctr + 1; if (ctr > 4) { //BRT_BLOCK_BEGIN:3 alert(ctr); //BRT_BLOCK_END:3 } else { //BRT_BLOCK_BEGIN:4 alert(ctr); } //BRT_BLOCK_END:2 } //BRT_BLOCK_END:1 //BRT_BLOCK_END:4 No.9

JsCoverageの 仕 組 み //BRT_BLOCK_BEGIN:1 var ctr = 0; document.body.onclick = function() { //BRT_BLOCK_BEGIN:2 ctr = ctr + 1; if (ctr > 4) { //BRT_BLOCK_BEGIN:3 alert(ctr); //BRT_BLOCK_END:3 } else { //BRT_BLOCK_BEGIN:4 alert(ctr); //BRT_BLOCK_END:4 } //BRT_BLOCK_END:2 }; //BRT_BLOCK_END:1 No.10

JsCoverageの 仕 組 み //BRT_BLOCK_BEGIN:1 window.scriptobjects['scoverage-a.js-0'].executedblock[1] = (window.scriptobjects['scoveragea.js-0'].executedblock[1]? window.scriptobjects['scoverage-a.js- 0'].executedBlock[1] + 1 : 1); var ctr = 0; document.body.onclick = function() { //BRT_BLOCK_BEGIN:2 window.scriptobjects['scoverage-a.js-0'].executedblock[2] = (window.scriptobjects['scoveragea.js-0'].executedblock[2]? window.scriptobjects['scoverage-a.js-0'].executedblock[2] + 1 : 1); ctr = ctr + 1; if (ctr > 4) { //BRT_BLOCK_BEGIN:3 window.scriptobjects['scoverage-a.js-0'].executedblock[3] = (window.scriptobjects['scoveragea.js-0'].executedblock[3]? window.scriptobjects['scoverage-a.js-0'].executedblock[3] + 1 : 1); alert(ctr); //BRT_BLOCK_END:3 } else { //BRT_BLOCK_BEGIN:4 window.scriptobjects['scoverage-a.js-0'].executedblock[4] = (window.scriptobjects['scoveragea.js-0'].executedblock[4]? window.scriptobjects['scoverage-a.js-0'].executedblock[4] + 1 : 1); alert(ctr); //BRT_BLOCK_END:4 } //BRT_BLOCK_END:2 }; //BRT_BLOCK_END:1 No.11

運 用 手 順 No.12

カバレッジ 運 用 に 関 するご 説 明 の 前 に 部 署 の 開 発 サイクル 開 発 評 価 の 完 了 基 準 はカバレッジが100% 通 っていること 品 質 保 証 部 門 はカバレッジ100%のテストケースを 閲 覧 できるため テスト 観 点 の 抜 けをチェック 可 能 No.13

課 課 カバレッジを 運 用 に 乗 せるまでの 課 題 課 題 1: カバレッジ 率 90% の 善 し 悪 しが 判 定 できない スモールスタートとして カバレッジ 対 象 ソースコードを 前 回 リリースからの 差 分 のみとし 100%を 完 了 基 準 にした 題 2: カバレッジ 測 定 方 法 が 分 からない ツールが 利 用 できる 環 境 をクラウド(Amazon EC2) 上 に 整 備 し 利 用 時 はインスタンスをコピーするだけの 状 態 とした 題 3: カバレッジ 測 定 が 面 倒 くさい 案 件 番 号 を 入 力 するだけで 担 当 分 のカバレッジ 未 通 過 行 一 覧 が EXCELで 閲 覧 可 能 なツールを 開 発 した No.14

前 回 リリースからの 差 分 のみって? カバレッジ 未 通 過 のカウント 方 法 を 変 更 し ソース 全 体 = カバレッジ 通 過 行 + 未 通 過 行 ソース 全 体 = 既 存 ソースコード + カバレッジ 通 過 行 + 未 通 過 行 と 考 えた SVN 等 にてソース 管 理 をしていると ソースの1 行 1 行 に 対 してリビジョンを 持 っ ている 為 特 定 ( 前 回 リリース 番 号 等 )のリビジョンより 前 の 行 は 通 過 行 としてカ ウント 可 能 にできる! No.15

未 通 過 行 一 覧 作 成 ツール 概 要 1.カバレッジを 測 定 する 2. 計 測 結 果 を 取 得 3.ソースと 突 合 する 4. 未 通 過 行 がエクセルに 出 力 される 5. 未 通 過 一 覧 を 利 用 して 再 テスト No.16

カバレッジ 計 測 全 体 図 1 Java 通 過 行 情 報 Js 通 過 行 情 報 2 担 当 分 のみ 未 通 過 行 一 覧 No.17

未 通 過 行 一 覧 の 使 い 方 No.18

環 境 準 備 No.19

JaCoCo(Java Code Coverage Library)! javaagentを 利 用 したon-the-fly 方 式! 起 動 引 数 に1 行 追 加 するだけ! -javaagent:[yourpath/]jacocoagent.jar=[option1]=[value1],[option2]=[value2] 例 ) WebSphereでは 管 理 コンソールから アプリケーションサーバ > (サーバー 名 ) > プロセス 定 義 > Java 仮 想 マシン の 汎 用 JVM 引 数 に 下 記 の 様 に 追 記 します -javaagent:f:\ibm\websphere\appserver\java\jre\lib\ext\jacocoagent.jar=destfile=f:\ibm \WebSphere\AppServer\profiles\AppSrv01\logs\cws\was.exec,includes=jp/co/worksap/* No.20

JsCoverage! JSファイルのInstrument(カバレッジデータ 埋 め 込 み) ディレクトリを 指 定 して bat/antで 実 行 するだけ! Webアプリケーションへの 配 置 WEB-INF/libにjs-coverage-tool.jarを 設 置 web.xmlに 数 行 追 記! カバレッジデータの 収 集 (レポート 出 力 ) ディレクトリを 指 定 して bat/antで 実 行 するだけ No.21

未 通 過 一 覧 作 成 ツール! 以 下 をINIファイルに 記 載 して 実 行! SVN 認 証 情 報 ソースのディレクトリ! カバレッジ 通 過 XMLのディレクトリ! 対 象 としたい 開 発 者 の 名 称 など! リビジョン 範 囲! 結 果 ファイル 中 身! チェックイン 時 のコメント! 修 正 リビジョン 番 号! クラス 名 称 行 番 号! 開 発 者 名 称! 行 の 内 容 No.22

効 果 測 定 No.23

効 果 測 定! 定 量 的 効 果 カバレッジ 対 策 にてフォーカスした 要 因 に 対 しての 不 具 合 件 数 が リリース 毎 の 不 具 合 数 比 較 にて 約 7 割 減 少 した! 定 性 的 効 果 開 発 時 にカバレッジ 測 定 を 意 識 したソースコードを 作 成 する 開 発 者 が 増 加 自 主 的 にカバレッジ 測 定 を 開 始 した 部 署 が 出 てきた 品 質 に 対 する 意 識 が 高 まったと 考 えることができる No.24

こんな 場 合 はぜひカバレッジを! 組 み 合 わせテストが 多 いので Pairwiseなどを 利 用 しているが 正 しく 利 用 できているかどうか 不 安 が 残 っている 協 力 会 社 等 のプロジェクト 関 係 者 が 多 いが 自 社 に 関 係 する 部 分 だけに 絞 ったカバレッジを 測 定 したい 特 定 期 間 ( 特 に 締 切 間 際 など)における コミュニケーションロス ( 修 正 内 容 把 握 不 足 )が 心 配 だ 開 発 者 が 勝 手 に 修 正 してしまった 部 分 を 検 知 したい No.25

今 後 の 展 望! カバレッジ 測 定 の 利 用 を 社 外 にも 広 めるため 今 回 開 発 した 測 定 ツールをオープンソースとして 公 開 します!! URL https://github.com/worksapplications ( 今 後 QC 活 動 にて 作 成 したツールは 上 記 にてどんどん 公 開 していきます!) No.26

ご 清 聴 ありがとうございました ご 質 問 ご 意 見 などは ohata_y@worksap.co.jp までお 願 い 致 します No.27