Upgrade to Pro — share decks privately, control downloads, hide ads and more …

開発エンジニアとQAエンジニアが語る夜(Datalizer編)〜僕がいちばんDatalizer...

 開発エンジニアとQAエンジニアが語る夜(Datalizer編)〜僕がいちばんDatalizerをうまく使えるんだ!〜

Yuki Sakaguchi

December 17, 2021
Tweet

More Decks by Yuki Sakaguchi

Other Decks in Technology

Transcript

  1. update Copyright © 2021 WingArc1st Inc. All Rights Reserved. December

    17, 2021 開発エンジニアとQAエンジニアが語る夜(Datalizer編) ~僕がいちばんDatalizerをうまく使えるんだ!~
  2. page No. 2 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 01 自動テスト構築までの道のり 02 Datalizerの自動テスト 03 開発プロセス 04 質問タイム INDEX
  3. 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
  4. page No. 5 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 開発の進捗が遅滞していき、プロセスが段々回らなくなる • 当初スピード感のあった開発も • ソースの肥大化などにより見晴らしが悪化 • 他の機能に影響しやすくなる • 機能を追加する度に組み合わせが増えていき複雑に Ver.4.0~ 2012年頃から (´・ω・`) デグレードリスク増大
  5. page No. 6 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 開発スピードを下げずに、品質を担保する やりたいこと  テストを即座に実行できる  テスト・アセットの作成が容易である  大量かつ高速にテストが出来る  テストを即座に実行できる  テスト・アセットの作成が容易である  大量かつ高速にテストが出来る 集計表(レポート)のオブジェクトを比較すればいける? 保存した オブジェクト 保存した オブジェクト 実行した オブジェクト =
  6. page No. 8 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. オブジェクトでは、集計表の色や配置など詳細な属性を持っている反面 ×少しの修正で直ぐにdiffが発生する ×テスト・アセットの妥当性の検証にコストがかかる(視認性の問題) ×diffが遅い。オブジェクトサイズやXMLの比較。 反省と再出発  1つの自動テストですべてをカバーするのは、そもそも無理がある  製品にとって一番大事なことは集計表の数値やレイアウト 集計表をCSV形式で出力しdiffする方式に変更
  7. page No. 9 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. CSV比較の自動化テストの成功(パラメータテスト) 保存した (正しい結果) CSV 保存した (正しい結果) CSV 実行結果の CSV =  オブジェクトと違い基本diffはでない。diff出てたらテストNG。  可読性が高い。差異の箇所がdiffツールなどで簡単に分かる。  テスト・アセットのメンテナンスが容易。 機能追加などによりdiffが出た場合でも、保存したCSVを実行結果のCSVに置き換えるだけ。  テスト実行が早い。1実行で数百ミリ秒、多重化も容易。 開発、QA合同でテスト・アセットを作成していく
  8. page No. 10 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 実感した最大の効果 リグレッションテストが、いつでも行えるという安心感 リファクタリングを積極的に行う意識改革
  9. page No. 11 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 学んだこと • デメリットばかりに着目しない。目的を達成できるかを優先。 • 初めから100点を目指さない。小さく入れて大きく育てる。 • 失敗は当たり前、トライ&エラーで進めていく。
  10. 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
  11. page No. 13 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 開発もQAも開発しテストする プロダクトの品質確保・向上させる思いは、開発もQAも同じ。 お互いの得意分野で貢献する。 開発 •ユニットテスト作成 •Excel リボン操作開発 •パラメータテスト強化 •テスト・アセット作成 •手動テスト QA •Web UIテスト開発 •Excel 自動テスト開発 •テスト・アセット作成 •手動テスト
  12. 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
  13. 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
  14. 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
  15. page No. JMeter(素性能測定、多重性能測定、ロングランテスト) 共通事項 • HTTP Requestを使って、集計リクエストを実行 • DBの処理を極小化するためにDB側はキャッシュを利用している 素性能測定

    • 集計表サイズ、定義種類、集計方法毎の速度評価を実行 多重性能測定 • 素性能測定から一部の集計を抜粋して、並列数を1, 5, 10, 25, 50で実行 ロングランテスト • 多重性能測定の並列数50を無限ループで1週間連続実行 • GCログの設定を行い、ヒープのリークがないことを確認している
  16. 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
  17. page No. 24 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. ExcelとWebを操作するテストツール
  18. page No. 25 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. おもな技術要素 • ツールエンジン Java • ブラウザ操作 Selenium WebDriver • Excel操作 Appium +WinAppDriver
  19. page No. 26 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 総テスト件数 ケースは全部で26,645件 10並列で実行して3日くらい 画面の操作は時間がかかる…
  20. page No. 27 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 比較系 • Datalizer開発者が作った、必要なものだけ比較する高精度の比較 ツール Excelは オリジナル比較ツール • V4互換UIはスタイルの影響が大きいので数値とタグ主体の比較 • 標準UIは画面サイズでHTMLが変わるので範囲指定取得 HTMLは スクレイピング • 画像化して比較するツール PDFは SVFのツール
  21. page No. 28 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. ネイティブUIとWebUI
  22. page No. 32 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 結果をDBにまとめたので多角的に分析できる 環境依存のあるスクリプトかもしれない? エラーになったスクリプトの実行履歴を 確認してエラーを起こしがちかどうかの 確認
  23. page No. 33 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 仕組みを作ってから35708回のテスト実行がされていました
  24. page No. 35 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 集計表のスタイルが変わってた 荒れ狂う結果差異の嵐 Failed Failed Failed Failed Failed Failed Failed Failed Failed Failed
  25. page No. 36 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 集計表のスタイルが変わってた 修正範囲をそこだけにしたビルドをもらって結果置き換えを行いました develop private/結果差異ブランチ
  26. page No. 37 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 自動テストフレームワークの契約料金が高いから無料のに変えてほしい 遅くなった!アプリ落ちる!
  27. page No. 38 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 自動テストフレームワークの契約料金が高いから無料のに変えてほしい 開発チーム&保守チームに協力してもらって直した 経験・知識の積み上げが全然違いました
  28. page No. 39 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 結果表調整の修正をしたとき 開発チームとQAチームで全力
  29. 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
  30. 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
  31. page No. Datalizer for Excel のユニットテストの経緯① ▪課題 ・10年以上も機能が継ぎ足しされてきた製品のため、ソースが複雑化し保守性 に問題があった。 ・Excel用ロジック、画面用ロジック、ビジネスロジックが3密になっており、

    ユニットテスト化が難しかった。 ▪状況 機能追加や修正による影響が読みにくく、テストは手動だった。 また、影響が読みにくい分、テスト範囲も広くなりがちだった。 このため、開発・検証コストが増えていく状態だった。
  32. page No. Datalizer for Excel のユニットテストの経緯② 課題を解決するために Datalizer for Excel

    5.0 のゴールは リコーディング・ユニットテスト・自動テストをセットで 行い「品質の担保」と「保守性の向上」を実現する と定めた。 ※これを達成して、積極的な機能追加を可能にしたかった。 結果として、リコーディング以降さまざまな機能追加ができた。 ・Datalizer 5.1 のExcelグラフ連携、Excelレポート機能 ・Datalizer 5.5 のTableEditor、MBデータソース連携 ・MBC と MBSF の Excelインターフェースオプション
  33. page No. 画面のリコーディングで保守性を担保するために 過去のソースにとらわれず、各画面の役割を意識して、Viewとビジネスロジッ クを分けるようにリコーディングを進めた。 ・MVVM( Model + View +

    ViewModel )のフレームワークを使用して、 Viewとビジネスロジックを分けて実装した。 →役割ごとにビジネスロジックが分けられ、各ロジックに対して ユニットテストができるようになった。 ・枯れていたUIフレームワークを使用 →複数の言語に依存しない画面開発ができるようになった。 →画面の役割が明確になり、各画面の部品化と再利用が進んだ。
  34. 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
  35. page No. 49 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. Excel.exeを操作したい • Accessibility Idは自由につけれないものの名前である程度操作できる リボン部 • 通常のWindowsアプリ同様にAccessibility Idを付けてもらえば楽に操作可能 アプリ部 • 行・列番号でのアクセスがかろうじて可能 シート部 行・列番号で書かれたテストなんて後で読めない
  36. page No. Excel.exeを操作したい 自動テストFW(有償) を推されて プロト作成 シート操作は無理 ExcelOperatorの発明 Excel本体の操作はすべてOperatorで できることに

    自動テストFW(有償) が解約される .NET+UIAutomationで 操作するFWを作成 安定しなかった 開発、保守チームと連携 Java+WinAppDriverで再作成 シート操作などどうしても非効率な 部分は製品にテストIFを実装 現在に至る変遷
  37. 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
  38. 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個
  39. page No. 58 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 変化したこと(1) 要件定義などの上流工程で、テストの検討(テスト自動化含む)を開始  テスト計画の段階で、テストまでの作業や分担なども決まっていく。  ついでに仕様検討や操作性なども併せて議論される。  各担当などの作業量などを見ながら、お互いの作業を案分できる。 要件定義 開発作業 テスト 開発 仕様策定 実装 ユニットテスト 不具合修正 QA テスト計画 テストケース作成 自動テスト準備 テスト・アセット作成 自動テスト実行 共通作業 テスト実施検討 自動テスト検討 仕様のレビュー 自動テストの実装構 築など テスト実施(手動含む) テストファーストに近づいている
  40. page No. 59 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. ウォータフォールからの脱却 開発 テスト 変化したこと(2) 開発 テスト 開発 テスト 開発 テスト 開発 テスト 開発 テスト 開発 テスト 開発 テスト 昔 • デグレリスク回避のためすべての開発が完了したのちにテストフェイズに移行していた。 • 後半に重大な問題が発生した場合のリスク。テスト強化の工数増大、リリース日調整など • 機能追加などの要件変更について柔軟に対応できない。 現在  開発項目毎にプロセスでテストまで実施し完結。  デグレの発生は最小限におさえて、リスク分散。  要件変更、追加開発など柔軟に対応。 開発 テスト 開発 テスト
  41. page No. 60 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. 構成 ソース管理 テスト・アセット管理 開発/QA パラメータテスト (自作) チャット通知 テストケース etc Jenkins インストーラー生成 BVT テスト バッチ実行 Selenium
  42. page No. 62 Copyright © 2021 WingArc1st Inc. All Rights

    Reserved. Discordより質問です タブレットのE2Eテストの場合、端末、OSの種類やOSバージョンの カバレッジはどの程度取られてますか? DatalizerのタブレットインターフェースはWebアプリのため、自動テストに おける機能の確認ではPCのブラウザにて代用しています 対応端末ごとの確認は手動で行っていて、サポートするOSのメジャーバー ジョンの単位で行っています