Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
開発エンジニアとQAエンジニアが語る夜(Datalizer編)〜僕がいちばんDatalizer...
Search
Yuki Sakaguchi
December 17, 2021
Technology
560
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
開発エンジニアとQAエンジニアが語る夜(Datalizer編)〜僕がいちばんDatalizerをうまく使えるんだ!〜
Yuki Sakaguchi
December 17, 2021
More Decks by Yuki Sakaguchi
See All by Yuki Sakaguchi
純国産データベースエンジンのアジャイルな開発のお話
ysaka
1
770
コロナ到来から約2年半、リアルで開催していた新人向けスクラム研修が、フルリモート版に生まれかわり恒例コンテンツとなるまでの軌跡
ysaka
0
150
開発エンジニアとQAエンジニアが語る夜(Dr.Sum編)〜見せてもらおうか、Dr.Sumの品質活動とやらを〜
ysaka
0
2.4k
Other Decks in Technology
See All in Technology
初めてのDatabricks勉強会
taka_aki
2
240
デジタル・デザイン構想 by Sayaka Ishizuka
y150saya
0
190
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
140
“ID沼入口” - 基本とセキュリティから始める、考え続けるためのID管理技術勉強会 告知&イントロ
ritou
0
430
CSに"SLO"は要らない、経営層に"99.9%"は伝わらない - SREを全社に"翻訳"する3原則
cscengineer
PRO
0
2.8k
Claude Code 珍プレー好プレー
shinyasaita
0
270
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
150
どうして今サーバーサイドKotlinを選択したのか
nealle
0
210
しぶいSRE: サーバから見えない障害にどう向き合うか。ラストワンマイルのデバッグ実践 / Shibui SRE
kanny
11
4.1k
AI Driven AI Governance
pict3
0
160
product engineering with qa
nealle
0
150
Docker Desktop不要の時代が来る? WSL標準の「wslc」で Linuxコンテナを動かしてみた.
ueponx
0
770
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
11
38k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Skip the Path - Find Your Career Trail
mkilby
1
160
Exploring anti-patterns in Rails
aemeredith
3
440
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
170
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
180
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
270
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
230
Into the Great Unknown - MozCon
thekraken
41
2.6k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
Transcript
update Copyright © 2021 WingArc1st Inc. All Rights Reserved. December
17, 2021 開発エンジニアとQAエンジニアが語る夜(Datalizer編) ~僕がいちばんDatalizerをうまく使えるんだ!~
page No. 2 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 01 自動テスト構築までの道のり 02 Datalizerの自動テスト 03 開発プロセス 04 質問タイム INDEX
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 自動テスト構築までの道のり
page No. 4 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. Dr.Sum Datalizerの歩み 2001 2006 2012 2017 2021 Excel Addin Web版 Datalizer誕生 順調に売り上げを伸ばし 要望を取り込み、どんどん機能を増やしていく Ver.4.0 Ver.5.0 Cloudサービス for Excel for Web
page No. 5 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 開発の進捗が遅滞していき、プロセスが段々回らなくなる • 当初スピード感のあった開発も • ソースの肥大化などにより見晴らしが悪化 • 他の機能に影響しやすくなる • 機能を追加する度に組み合わせが増えていき複雑に Ver.4.0~ 2012年頃から (´・ω・`) デグレードリスク増大
page No. 6 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 開発スピードを下げずに、品質を担保する やりたいこと テストを即座に実行できる テスト・アセットの作成が容易である 大量かつ高速にテストが出来る テストを即座に実行できる テスト・アセットの作成が容易である 大量かつ高速にテストが出来る 集計表(レポート)のオブジェクトを比較すればいける? 保存した オブジェクト 保存した オブジェクト 実行した オブジェクト =
page No. 7 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 結果 無理でした
page No. 8 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. オブジェクトでは、集計表の色や配置など詳細な属性を持っている反面 ×少しの修正で直ぐにdiffが発生する ×テスト・アセットの妥当性の検証にコストがかかる(視認性の問題) ×diffが遅い。オブジェクトサイズやXMLの比較。 反省と再出発 1つの自動テストですべてをカバーするのは、そもそも無理がある 製品にとって一番大事なことは集計表の数値やレイアウト 集計表をCSV形式で出力しdiffする方式に変更
page No. 9 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. CSV比較の自動化テストの成功(パラメータテスト) 保存した (正しい結果) CSV 保存した (正しい結果) CSV 実行結果の CSV = オブジェクトと違い基本diffはでない。diff出てたらテストNG。 可読性が高い。差異の箇所がdiffツールなどで簡単に分かる。 テスト・アセットのメンテナンスが容易。 機能追加などによりdiffが出た場合でも、保存したCSVを実行結果のCSVに置き換えるだけ。 テスト実行が早い。1実行で数百ミリ秒、多重化も容易。 開発、QA合同でテスト・アセットを作成していく
page No. 10 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 実感した最大の効果 リグレッションテストが、いつでも行えるという安心感 リファクタリングを積極的に行う意識改革
page No. 11 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 学んだこと • デメリットばかりに着目しない。目的を達成できるかを優先。 • 初めから100点を目指さない。小さく入れて大きく育てる。 • 失敗は当たり前、トライ&エラーで進めていく。
page No. 12 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 2017年 Ver.5.0~ 自動テストの拡充 QA部門と協同し、さらなる自動テストのエリアを拡大 Ver.5.0の2つのチャレンジ • Excel UIのリコーディング:過去の互換性を担保するためにテストの整備が急務 • Web UIの刷新: Ver.4.2より自動化を一部試行していたが新UI層からのテスト自動化を整備 パラメータテスト (随時拡張) Web 新UIでの テスト数の拡大 ExcelUIリコーディング Excel操作テスト Excel UIリコーディング Unitテスト Seleniumベース E2E Tests API Tests, Integration Test Unit Tests
page No. 13 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 開発もQAも開発しテストする プロダクトの品質確保・向上させる思いは、開発もQAも同じ。 お互いの得意分野で貢献する。 開発 •ユニットテスト作成 •Excel リボン操作開発 •パラメータテスト強化 •テスト・アセット作成 •手動テスト QA •Web UIテスト開発 •Excel 自動テスト開発 •テスト・アセット作成 •手動テスト
Copyright © 2021 WingArc1st Inc. All Rights Reserved. Datalizerの自動テスト
page No. 15 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. Web Excel UI API Server Datalizerの構成と自動テスト Windows/Linux OS Datalizer 製品連携用 API Tablet PDF出力 tomcat Client アプリ Selenium :26,645ケース(4,280シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 構成 自動テスト 集計実行 API
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 1. パラメータテスト
Copyright © 2021 WingArc1st Inc. All Rights Reserved. Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(4,280シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
page No. パラメータテスト 集計実行時に指定された パラメータのファイル 集計結果を比較 パラメータテストツール たくさんのケースを高速に!
page No. パラメータテストの比較対象 パラメータファイル 結果表の行列数 行列集計項目の値 アイコン、書式などの付加情報
page No. パラメータテスト実施方法 ①テスト対象バージョンを 指定してジョブ実行 ②指定されたバージョンの バイナリとテストをPULL ③パラメータテストを実行 ④パラメータテスト実行結果を Teamsに通知
ケース数 3,835 Jenkinsのノード数 1 並列数 8 実行時間 15分
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 2. JMeter(素性能測定、多重性能測定、ロングランテスト)
Copyright © 2021 WingArc1st Inc. All Rights Reserved. Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(4,280シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
page No. JMeter(素性能測定、多重性能測定、ロングランテスト) 共通事項 • HTTP Requestを使って、集計リクエストを実行 • DBの処理を極小化するためにDB側はキャッシュを利用している 素性能測定
• 集計表サイズ、定義種類、集計方法毎の速度評価を実行 多重性能測定 • 素性能測定から一部の集計を抜粋して、並列数を1, 5, 10, 25, 50で実行 ロングランテスト • 多重性能測定の並列数50を無限ループで1週間連続実行 • GCログの設定を行い、ヒープのリークがないことを確認している
Copyright © 2021 WingArc1st Inc. All Rights Reserved. Datalizer for
Web and Datalizer for Excel 3. E2E自動テスト Copyright © 2021 WingArc1st Inc. All Rights Reserved. Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(4,280シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
page No. このようなスクリプトで
page No. 24 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. ExcelとWebを操作するテストツール
page No. 25 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. おもな技術要素 • ツールエンジン Java • ブラウザ操作 Selenium WebDriver • Excel操作 Appium +WinAppDriver
page No. 26 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 総テスト件数 ケースは全部で26,645件 10並列で実行して3日くらい 画面の操作は時間がかかる…
page No. 27 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 比較系 • Datalizer開発者が作った、必要なものだけ比較する高精度の比較 ツール Excelは オリジナル比較ツール • V4互換UIはスタイルの影響が大きいので数値とタグ主体の比較 • 標準UIは画面サイズでHTMLが変わるので範囲指定取得 HTMLは スクレイピング • 画像化して比較するツール PDFは SVFのツール
page No. 28 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. ネイティブUIとWebUI
page No. TestRunnerGrid hub browser nodes DB テスト対象 ①テストスクリプト取得 ②テスト実行指示
③分散実行指示 アプリ更新 ④それぞれでテスト実行
page No. 30 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. Grid前 Grid後
page No. 31 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 統合前 統合後
page No. 32 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 結果をDBにまとめたので多角的に分析できる 環境依存のあるスクリプトかもしれない? エラーになったスクリプトの実行履歴を 確認してエラーを起こしがちかどうかの 確認
page No. 33 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 仕組みを作ってから35708回のテスト実行がされていました
Copyright © 2021 WingArc1st Inc. All Rights Reserved. こまった集
page No. 35 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 集計表のスタイルが変わってた 荒れ狂う結果差異の嵐 Failed Failed Failed Failed Failed Failed Failed Failed Failed Failed
page No. 36 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 集計表のスタイルが変わってた 修正範囲をそこだけにしたビルドをもらって結果置き換えを行いました develop private/結果差異ブランチ
page No. 37 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 自動テストフレームワークの契約料金が高いから無料のに変えてほしい 遅くなった!アプリ落ちる!
page No. 38 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 自動テストフレームワークの契約料金が高いから無料のに変えてほしい 開発チーム&保守チームに協力してもらって直した 経験・知識の積み上げが全然違いました
page No. 39 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 結果表調整の修正をしたとき 開発チームとQAチームで全力
page No. 40 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 4. Excel自動テスト 4-1. Datalizer for Excelユニットテスト 4-2. ExcelPluginの自動テスト 4-3. Excel比較ツール Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(4,280シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 4-1. Datalizer
for Excel ユニットテスト Copyright © 2021 WingArc1st Inc. All Rights Reserved. Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
page No. Datalizer for Excel のユニットテストの経緯① ▪課題 ・10年以上も機能が継ぎ足しされてきた製品のため、ソースが複雑化し保守性 に問題があった。 ・Excel用ロジック、画面用ロジック、ビジネスロジックが3密になっており、
ユニットテスト化が難しかった。 ▪状況 機能追加や修正による影響が読みにくく、テストは手動だった。 また、影響が読みにくい分、テスト範囲も広くなりがちだった。 このため、開発・検証コストが増えていく状態だった。
page No. Datalizer for Excel のユニットテストの経緯② 課題を解決するために Datalizer for Excel
5.0 のゴールは リコーディング・ユニットテスト・自動テストをセットで 行い「品質の担保」と「保守性の向上」を実現する と定めた。 ※これを達成して、積極的な機能追加を可能にしたかった。 結果として、リコーディング以降さまざまな機能追加ができた。 ・Datalizer 5.1 のExcelグラフ連携、Excelレポート機能 ・Datalizer 5.5 のTableEditor、MBデータソース連携 ・MBC と MBSF の Excelインターフェースオプション
page No. Datalizer for Excel のユニットテストのゴール QAと開発で協議して、ユニットテストのゴールは 画面のリコーディングによ る品質の担保として、以下の内容とした。 ・各操作をユニットテスト化して修正による影響を検知できること
・定義ファイルを読込・反映後、定義ファイルが変わっていないこと 定義ファイル 読込 定義ファイル 反映 差異 チェック
page No. 画面のリコーディングで保守性を担保するために 過去のソースにとらわれず、各画面の役割を意識して、Viewとビジネスロジッ クを分けるようにリコーディングを進めた。 ・MVVM( Model + View +
ViewModel )のフレームワークを使用して、 Viewとビジネスロジックを分けて実装した。 →役割ごとにビジネスロジックが分けられ、各ロジックに対して ユニットテストができるようになった。 ・枯れていたUIフレームワークを使用 →複数の言語に依存しない画面開発ができるようになった。 →画面の役割が明確になり、各画面の部品化と再利用が進んだ。
page No. 特に苦労した点 QAの方々と協力し、さまざまな定義ファイルを集めた。 ・検証で使用しきた定義ファイル ・過去の不具合確認で使用した定義ファイル ・過去バージョンから移行テスト用の定義ファイル →定義ファイルの総数:3621個 これらの定義ファイルで、リコーディングした画面が従来と同じように定義 ファイルへ反映できるように確認・調整を進めた。
大変だったが、これがあったので過去のソースにとらわれず、リコーディング ができた。 定義ファイル 読込 定義ファイル 反映 差異 チェック 2000個以上の定義ファイル で差異が出たときは、つら かったです。
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 4-2. ExcelPluginの自動テスト
Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(4,280シナリオ) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
page No. Excel.exeを操作したい リボン部 アプリ部 シート部
page No. 49 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. Excel.exeを操作したい • Accessibility Idは自由につけれないものの名前である程度操作できる リボン部 • 通常のWindowsアプリ同様にAccessibility Idを付けてもらえば楽に操作可能 アプリ部 • 行・列番号でのアクセスがかろうじて可能 シート部 行・列番号で書かれたテストなんて後で読めない
page No. Excel.exeを操作したい 開発者にテストインターフェースを作ってもらった すごく高機能! 高まる安定性!
page No. Excel.exeを操作したい 自動テストFW(有償) を推されて プロト作成 シート操作は無理 ExcelOperatorの発明 Excel本体の操作はすべてOperatorで できることに
自動テストFW(有償) が解約される .NET+UIAutomationで 操作するFWを作成 安定しなかった 開発、保守チームと連携 Java+WinAppDriverで再作成 シート操作などどうしても非効率な 部分は製品にテストIFを実装 現在に至る変遷
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 4-3. Excel比較ツール
Copyright © 2021 WingArc1st Inc. All Rights Reserved. Web Excel UI API Server Datalizer 製品連携用 API Tablet PDF出力 Client アプリ Selenium :26,645ケース(4,280ファイル) Excel速度評価 :46ケース ブラウザ描画 :138ケース Excel UnitTest :1,728ケース、3,621定義 パラメータテスト :3,835ケース 製品連携用APIテスト:1,033ケース JMeter非機能検証 :498ケース 集計実行 API
page No. Excel比較ツール 初期 中期 現在 セルの値だけ比較 値以外のセルやシートの 設定も比較 グラフの設定も比較
Datalizer for Excelのリコーディング Excel比較ツールを作成
page No. Excel比較 比較元のExcel セルの値が格納されているファイル 初期:Excelファイルを解凍して、セルの値が格納されているファイルを比較
page No. Excel比較 0 2,000 4,000 6,000 8,000 10,000 1
2 3 4 グラフ 3 系列1 系列2 系列3 現在:値以外のセルの設定やシート毎の設定、グラフの設定を比較 グラフの設定:21個 セルの設定:52 ワークブック、シートの設定:30個
page No. Excel比較処理のフロー ①指定フォルダ配下の Excelファイル比較 ②ファイル毎に並列で 比較処理実行 ③比較結果と差異検出した 内容をファイル出力 ④差異検出の有無を返す
VBAで比較ロジックを実装 Excel比較実行ツール
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 開発プロセス
page No. 58 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 変化したこと(1) 要件定義などの上流工程で、テストの検討(テスト自動化含む)を開始 テスト計画の段階で、テストまでの作業や分担なども決まっていく。 ついでに仕様検討や操作性なども併せて議論される。 各担当などの作業量などを見ながら、お互いの作業を案分できる。 要件定義 開発作業 テスト 開発 仕様策定 実装 ユニットテスト 不具合修正 QA テスト計画 テストケース作成 自動テスト準備 テスト・アセット作成 自動テスト実行 共通作業 テスト実施検討 自動テスト検討 仕様のレビュー 自動テストの実装構 築など テスト実施(手動含む) テストファーストに近づいている
page No. 59 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. ウォータフォールからの脱却 開発 テスト 変化したこと(2) 開発 テスト 開発 テスト 開発 テスト 開発 テスト 開発 テスト 開発 テスト 開発 テスト 昔 • デグレリスク回避のためすべての開発が完了したのちにテストフェイズに移行していた。 • 後半に重大な問題が発生した場合のリスク。テスト強化の工数増大、リリース日調整など • 機能追加などの要件変更について柔軟に対応できない。 現在 開発項目毎にプロセスでテストまで実施し完結。 デグレの発生は最小限におさえて、リスク分散。 要件変更、追加開発など柔軟に対応。 開発 テスト 開発 テスト
page No. 60 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. 構成 ソース管理 テスト・アセット管理 開発/QA パラメータテスト (自作) チャット通知 テストケース etc Jenkins インストーラー生成 BVT テスト バッチ実行 Selenium
Copyright © 2021 WingArc1st Inc. All Rights Reserved. 質問タイム
page No. 62 Copyright © 2021 WingArc1st Inc. All Rights
Reserved. Discordより質問です タブレットのE2Eテストの場合、端末、OSの種類やOSバージョンの カバレッジはどの程度取られてますか? DatalizerのタブレットインターフェースはWebアプリのため、自動テストに おける機能の確認ではPCのブラウザにて代用しています 対応端末ごとの確認は手動で行っていて、サポートするOSのメジャーバー ジョンの単位で行っています