JaSSTʼ20 Niigata 事例紹介

APIテストを⾃動化してリグレッションテストにしたら、安⼼で安全な開発ができて気持ちが楽になった

2020/09/28
伊藤潤平

⾃⼰紹介
• 伊藤 潤平(@jp_110)• ウイングアーク１ｓｔ株式会社• 帳票関連ソフトウェアの品質保証/プロセス改善• 社外活動• SQiPシンポジウム2017、2019 論⽂発表
• 品質管理学会員• JaSST Niigata 実⾏委員
• Agile Testing Fellowship会員• Scrum Fest Osaka 新潟トラックオーナー• 翻訳活動• 書籍『Agile Testing Condensed』• YouTube『Appendix A: What Weʻve Learned Since Agile Testing-- Janet Gregory and Lisa Crispin.』• ブログ• https://medium.com/@sadonosake• 趣味• ⽇本酒（佐渡限定）• 筋トレ（健康志向）
2Copyright © 2020 WingArc1st Inc. All Rights Reserved.

ウイングアーク１ｓｔ株式会社
会社情報
• 商号

：ウイングアーク１ｓｔ株式会社 (WingArc1st Inc.)• 所在地：〒106-6235東京都港区六本⽊三丁⽬2番1号• 創業：2004年3⽉• 資本⾦：2億円

六本⽊グランドタワー• 事業内容 ：ツール・ミドルウエア製品の開発・販売、導⼊⽀援・保守サポートサービスの提供 文雅科信息技术（大连）有限公司

GLOBAL
4拠点• 従業員数 ：連結651⼈／単体561⼈（2020年2⽉末現在）文雅科信息技术（上海）有限公司

札幌

JAPAN
8拠点

新潟

WingArc Singapore Pte. Ltd.
仙台広島
東京（本社）

福岡
名古屋
⼤阪

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

WingArc Australia Pty Ltd3帳票・⽂書管理ソリューション事業
業務に⽋かせない帳票のビジネスの現場から⽇々の暮らしのシーンまで、さまざまな場所で利⽤されている帳票。その設計・出⼒、効率的な運⽤を⽀援しており、⼤⼿企業や官公庁を中⼼に多くの企業・団体に導⼊されています。

帳票の利⽤シーン運⽤を⽀えるソリューションおよびサービスを提供しています。業務処理におけるすべての帳票を対象とソフトウェアサービス

市場シェア（SVF）

販売実績

117

帳票基盤ソリューション

伝票・申請書
公的証明書

宅配伝票
帳票クラウドサービス

68.3%

国内シェア
第1位

億円

11,739（前年⽐＋6.0％）
11,076

10,388
⽂書データ活⽤ソリューション

航空券・チケット※株式会社ミック経済研究所「帳票設計・運⽤製品の競合調査 2019年度版」（帳票運⽤製品ベンダー別出荷⾦額推移）をもとにウイングアーク１ｓｔが作成。⽇⽴製作所と帳票分野で提携し、「EUR」の資産を取得（2018年4⽉）したことに伴う数値。

保険設計書

2017

2018

2019

（百万円）

あらゆるシーンで利⽤される帳票の、安帳票クラウドサービス「SVF Cloud」の累計導⼊社数は2万6000社にのぼり、10SVFの特⻑のひとつである「保守継続率定的かつ効率的な出⼒・運⽤を⽀援して提供で、より幅広い企業に導⼊いただい年以上にわたってトップシェアを維持しの⾼さ」が、ソフトウェア基盤事業の安います。ています。ています。

定的な成⻑を下⽀えしています。

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright4

データエンパワーメントソリューション事業成⻑のための業務改⾰を限られた⼈員でも、最⼤限の成果をあげたい̶̶多くの企業が抱えるそんな想いを実現するために必要なデータ活⽤からサポートよう環境を整備するための製品・ソリューション・サービスを提供しています。

実現できることのは、データに基づく意思決定・⾏動です。適切なデータを、適切なタイミングに、適切な形で⾒られるソフトウェアサービス

顧客満⾜度(Dr.Sum、MotionBoard)

69

集計・分析プラットフォーム

25%

BIダッシュボード製造IoT・⽣産性向上

働き⽅改⾰

新ソリューション
⾃動化できるコミュニケーションツール

販売実績

NO.1億円（前年⽐＋11.7％）

6,937

6,210
5,177

⽇経コンピュータ 顧客満⾜度調査 2020-2021
データ分析・利活⽤⽀援ソ
フト／サービス 部⾨1位
出所：富⼠キメラ総研「ソフトウェアビジネス新市場 2019年版」に基づき当社推定

営業改⾰

集計分析・可視化

BI市場の成⻑を牽引するリーディング
企業内外の情報をデータ化・管理し、必カンパニーとなっています。

データ活⽤によって解決できるものは少要なときに集計・分析・可視化する製なくありません。

品・サービスを提供しています。

市場シェアは富士キメラ総研「ソフトウェアビジネス新市場 2019年版」BI
ツール・2018年度実績を基に、エンドユーザーが有用性及び生産性向上のために社内外のデータを集計・分析できるBIツールをオペレーショナルBIツールと定義し、2019年3月31日時点における当該企業群のパッケージ及びSaaSの販売金額の合計から当社オペレーショナルBIツール市場における市場シェアを約25%と独自に算出。市場シェアの算出から除外した企業はSAPジャパン、日本オラクル及び日本IBMビジネスの現場が抱えるさまざまな課題。

Copyright ©
© 20202020 WingArc1stWingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

2017

2018

2019

（百万円）

⼤規模での導⼊やソリューション化（複数の製品の組み合わせ）の推進により、成⻑が加速しています。

5

APIテストを⾃動化してリグレッションテストにしたら安⼼で安全な開発ができて気持ちが楽になった

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

ウォーターフォール開発からアジャイル開発へ
開発

開発⼯程

α

単体テスト

QG

QG

β1

品質保証⼯程

QG

β2

β3

RC

スクラムを導⼊開発・単体テスト

開発⼯程
QG
品質保証⼯程Copyright ©
© 20202020 WingArc1stWingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
CopyrightQG

βQG

RC7

問題点

• 開発リリース物の品質が悪い。
• クオリティゲートを通過できない。
• 品質保証⼯程を開始できない。
• スケジュール遅延のプロダクトリスク発⽣。

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

開発チームと振り返り• 開発者によってはコンポーネントテストを実⾏していない。
• ⾃分の実装環境のみのテストで、バックエンドとフロントエンドの結合テストレベルが不⼗分。
• ⾮機能は品質保証部⾨のメンバーがテストしてくれるだろうマインド。
• テストする時間がない。
• 品質に関する定義やルールがない。

9
Copyright ©
© 20202020 WingArc1stWingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

気付き
開発⼯程内で品質を⾼めて、スムーズな品質保証⼯程作業を実現しよう！
コーディング・単体テスト・結合テスト

開発⼯程QG
品質保証⼯程

品質の確保

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyrightβ

RC

スムーズな検証作業

10

品質保証部⾨から開発部⾨にメンバーをアサイン！
品質保証部⾨からSoftware Engineer in Test（SET）としてメンバーを開発部⾨にアサイン
品質保証部⾨（QA）

開発部⾨（Dev）
PO

QAマネージャ

チームB

チームA
SM

QAメンバー

SET参加

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

SET参加

11

改善 その①
スクラムにテストのルールを作る！
12
Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

改善 その①

テストのルールを作る• テストレベルの定義付け受け⼊れテスト

要求分析

システムテスト

仕様策定
基本・機能設計

統合テスト

詳細設計

コンポーネントテスト

コーディング

要求分析

受け⼊れテスト

仕様策定

システムテスト

基本設計

QAが実施

機能テスト
結合テスト

SETが実施コンポーネントテスト

実装者が実施

機能設計
詳細設計

コーディング

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright13

改善 その①

テストのルールを作る• 「完成」の定義

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

14

15

改善

その②

WebAPIテストの⾃動化

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

テストの理想と現実
理想

現実

⽬指すべき

UI TestUI TestUI TestAPI Test

API API
TestTest

UnitTest

UnitUnit
TestTest

UI TestAPI TestUnit Test

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

16

検証範囲
Dev
コンポーネントテスト

UI
コンポーネントテスト

WebAPI

SET

QA
機能・システムテスト

UIテスト

UI

UI

WebAPIテスト

WebAPI

WebAPI

Business Logic

Business Logic

Business Logic

Data Access

Data Access

Data Access

DB

DB

DB

コンポーネントテスト

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

17

WebAPIテスト

テスト概要• WebAPIを⼊り⼝として、WebAPIのバリデーション処理や、バックエンドの単機能を検証するテストセットとする。
（バックエンドのコア部分はDevメンバーのコンポーネントテス
トでカバーしていることを前提とする）• JUnitを使⽤して⾃動化することにより、回帰的にテスト実⾏する
リグレッションテストを⽬的とする。

API仕様書Copyright © 2020 WingArc1st Inc. All Rights Reserved.

テスト
観点

テスト
ケース

JUnit化

テスト実⾏作成

18

回帰テスト

WebAPIテスト

テスト設計⽅法• 例えばAuth LoginのAPI• パラメーター
キー値

user

ログインユーザーID

domainドメイン名

password

ログインパスワード

tenant

テナントID

省略時の値
Local0• 戻り値
HTTPステータス

エラーコード2000

正常終了（ログイン終了）

401-1

ユーザー認証に失敗した場合

403-20012

すでに別のユーザーIDでログイン中の場合

403-9800

ライセンスエラーが発⽣した場合

403-9801

有効期限切れの場合

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

説明19

テスト設計⽅法
テスト観点を作成

20
Copyright © 2020 WingArc1st Inc. All Rights Reserved.

テスト設計⽅法

テストケース（CL）を作成

21
Copyright © 2020 WingArc1st Inc. All Rights Reserved.

テスト設計⽅法• テストケースをJUnit化

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

22

テスト実施• Antを利⽤したJunitのテスト結果をレポーティング

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

23

テスト実施結果• WebAPIテストのテストケース数と発⽣したインシデント数
結果
WebAPI数

約50

テストケース数

4,682TCs（観点数：437）

インシデント数

185件

ソースkステップ数257k（参考：ソフトウェア本体518k）

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

24

効果

Copyright ©
© 20202020 WingArc1stWingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

効果
UIテスト

UI
WebAPIテスト• 重⼤な不具合を早期に発⾒することができた
WebAPIのパラメーター仕様と、バックエンドのパラメーター仕様に、開発者同⼠の認識の違いがあることが分かった。

WebAPI

Business Logic
Data Access
DBCopyright © 2020 WingArc1st Inc. All Rights Reserved.

26

効果
UIテスト

UI
WebAPIテスト

WebAPI• ユーザー利⽤を想定した準正常テスト
WebAPIから準正常系のリクエストを送ると、バックエンドで想定外の動作をする等の新たな気付きを得られた。（QA視点でのテストのよる安⼼感）

Business Logic
Data AccessDB

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

27

効果
UIテスト

UI
WebAPIテスト

WebAPI• リグレッションテストとして確⽴
WebAPIテストをリグレッションテストとしてスプリント毎に実⾏すると、仕様変更やリファクタリングの影響箇所で不具合が発⾒できた。
（デグレードを発⾒できる安全性）

Business Logic
Data AccessDB

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

28

結果
開発・単体テスト

開発⼯程
QG
品質保証⼯程

QG

QG

βRC

SETを導⼊クオリティゲートを⼀回で合格

開発・単体テスト・結合テスト

開発⼯程
QG
品質保証⼯程Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
CopyrightβRC
29

品質向上結果
バージョンアップ版の開発規模に対するバグ密度

初期版の開発規模に対するバグ密度

開発検出

QA検出

開発⼯程で検出された不具合が増え、品質保証⼯程での検出は減った。
つまり品質は開発段階から作りこまれている。
Copyright ©
© 20202020 WingArc1stWingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright30

現在のWebAPIテストの状況
スクラムから独⾃のアジャイル開発へ

31
Copyright © 2020 WingArc1st Inc. All Rights Reserved.

体制の変更開発部⾨（Dev）

開発部⾨（Dev）
POPO
チームB

チームA

DevメンバーSM

品質保証部⾨（QA）

QAマネージャQAメンバーCopyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

品質保証部⾨（QA）
QAマネージャQAメンバー32

開発プロセスの変更• 開発部⾨（Dev）• 実装からテストまですべてを実施する• 品質保証部⾨（QA）• テストが計画通り⾏われ、品質が確保された状態であることを監査する

要求分析

システムテスト

仕様策定

QAが実施

仕様策定

システムテスト
機能テスト

基本設計

機能テスト

基本設計

受け⼊れテスト

要求分析

受け⼊れテスト

機能設計結合テスト

SETが実施

機能設計

結合テスト

詳細設計

コンポーネントテスト

実装者が実施詳細設計

コンポーネントテスト

コーディング
Copyright © 2020 WingArc1st Inc. All Rights Reserved.

QAが実施
SETが実施実装者が実施コーディング33

開発プロセスの変更
PO

PBI 1
PBI 2
PBI 3・・・
PBI n

POから要求をPBIとしてバックログで管理

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

テスト結果
テスト結果
テスト結果

PBI毎にDev+SETがチームとなり、実装、コンポーネントテスト、APIテスト、機能テスト、システムテストまでを実施する

Dev+SETがチームが実施したテスト結果に対して、QAメンバーが監査する

34

35

監査型のQA

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

段階的な品質の積み上げ徐々に品質を確保︕︕

⽬標品質

品
質品質
品質
品質
品質
品質

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

スプリント/フェーズ

36

戦略的テスト計画の作成
マスターテストプラン(MTP)
品質⽬標

テストタイプ

機能適合性

機能テスト
ユースケーステスト

性能効率性

性能テスト

互換性

互換性テスト使⽤性

ローカライゼーションテスト
バリデーションテスト

信頼性
セキュリティ

強制エラーテスト
セキュリティテスト

保守性

解析性テスト

移植性

プラットフォームテスト

Copyright ©
© 20202020 WingArc1st
WingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

フェーズテストプラン（PTP）

プロダクトバックログ
（PBL）

フェーズ1

フェーズ1

機能テスト

PBI

互換性テスト

PBI

フェーズ2
機能テスト
ユースケーステスト
フェーズ3
性能テスト

フェーズ2
PBI
PBI

フェーズ3
PBI
PBI

プラットフォームテスト

37

フェーズと品質ゲートの設置による段階的品質の積み上げ
品質・・・

品質⽬標
達成フェーズ3
性能テスト
チェック プラットフォームテスト
ポイント

フェーズ1
機能テスト
互換性テストCopyright ©
© 20202020 WingArc1stWingArc1st Inc.
Inc. AllAll Rights
Rights Reserved.
Reserved.
Copyright

フェーズ2
機能テスト
チェック
ユースケーステスト
ポイント

フェーズ38WebAPIテスト課題• テストケース数が膨⼤になりテスト実⾏に時間がかかる• 1プラットフォームの実⾏時間：30時間• テストケース数：4,682TCs → 17,114TCs• ソースkステップ数：257k → 853k

• 実装者任せになっている• 管理が⼤変• 属⼈化が進んでいる• フレイキーが増えている• テスト結果分析という新たなタスクが⽣まれる• テストコード⾃体のリファクタリングが必要

Copyright © 2020 WingArc1st Inc. All Rights Reserved.

39