今までウォーターフォールで開発していた開発チームがスクラムを導入し、今後はアジャイルで開発することが決まった。開発チームがアジャイル開発を行っている場合、品質は開発者のテスト能力に左右され、テストの専門家がそこに関与できるケースが少ない。当社に於いてもQAに課されたミッションは品質を落とさずにアジャイル開発に合った品質保証活動であった。今までウォーターフォール開発で構築してきた品質保証プロセスをスクラム型に改造し、SET(Software Engineer in Test)というQAスペシャリストをスクラムに参加させることにより、スクラム内で品質確保のための条件の定義や、テストプロセスを構築し、スクラムチーム全員の品質に対する意識改革を実践できた。
RCA(Root Cause Analysis)をアジャイルに行う要因分析手法
短い時間で障害をインタビューし、そこから欠陥のモデルをつくり、次のインタビューの準備をする。それをイテレーティブに繰り返して、ゴールである真の要因にたどり着く。インタビュアーに負荷をかけず、モデルにより最短にゴールにたどり着くことができる。
RCA(Root Cause Analysis)をアジャイルに行う要因分析手法
短い時間で障害をインタビューし、そこから欠陥のモデルをつくり、次のインタビューの準備をする。それをイテレーティブに繰り返して、ゴールである真の要因にたどり着く。インタビュアーに負荷をかけず、モデルにより最短にゴールにたどり着くことができる。
How to implement CI with OutSystems using Jenkins and BDD FrameworkYutoMiyazaki
?
I built an OutSystems CI environment using Jenkins and BDD Framework.
This slide introduces the environment configuration and overview of BDD Framework.
6. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
APIテストを自動化して
リグレッションテストにしたら
安心で安全な開発ができて
気持ちが楽になった
7. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 7
ウォーターフォール開発からアジャイル開発へ
β1 β2 β3 RC
α開発工程
品質保証工程
QG QGQG
β RC
開発工程
品質保証工程
QGQG QG
スクラムを導入
開発?単体テスト
単体テスト
開発
8. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
問題点
? 開発リリース物の品質が悪い。
? クオリティゲートを通過できない。
? 品質保証工程を開始できない。
? スケジュール遅延のプロダクトリスク発生。
9. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
開発チームとの振
り返り
? 開発者によってはコンポーネントテスト
を実行していない。
? 自分の実装環境のみのテストで、バック
エンドとフロントエンドの結合テストレ
ベルが不十分。
? 非機能は品質保証部門のメンバーがテス
トしてくれるだろうマインド。
? テストする時間がない。
? 品質に関する定義やルールがない。
9
10. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 10
気付き
開発工程内で品質を高めて、スムーズな品質保証工程作業を実現しよう!
β RC
開発工程
品質保証工程
QG
品質の確保 スムーズな検証作業
コーディング?単体テスト?結合テスト
11. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 11
品質保証部門から開発部門にメンバーをアサイン!
品質保証部門からSoftware Engineer in Test(SET)を開発部門に
アサイン
SET参加
開発部門(Dev) 品質保証部門(QA)
PO
SM
チームBチームA
QAマネージャ
QAメンバー
SET参加
12. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
スクラムにテストのルールを作る!
改善 その①
12
13. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 13
改善 その① テストのルールを作る
? テストレベルの定義付け
実装者が実施
SETが実施
QAが実施
受け入れテスト要求分析
仕様策定
基本?機能設計
詳細設計
コーディング
コンポーネントテスト
統合テスト
システムテスト
受け入れテスト 要求分析
機能設計
コンポーネントテスト
結合テスト
仕様策定
基本設計
詳細設計
機能テスト
システムテスト
コーディング
14. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 14
改善 その① テストのルールを作る
? 「完成」の定義
15. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
改善 その②
WebAPIテストの自動化
15
16. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
テストの理想と現実
16
理想 現実
Unit Test
API Test
UI Test
Unit
Test
API Test
UI Test
目指すべき
Unit
Test
API Test
UI Test
Unit
Test
API Test
UI Test
17. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
UIテスト
コンポーネントテスト
コンポーネントテスト
コンポーネントテスト
17
検証範囲
UI
WebAPI
Business Logic
Data Access
DB
Dev SET QA
WebAPIテスト
UI
WebAPI
Business Logic
Data Access
DB
機能?システムテスト
UI
WebAPI
Business Logic
Data Access
DB
18. Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 18
WebAPIテスト テスト概要
? WebAPIを入り口として、WebAPIのバリデーション処理や、バッ
クエンドの単機能を検証するテストセットとする。
(バックエンドのコア部分はDevメンバーのコンポーネントテス
トでカバーしていることを前提とする)
? JUnitを使用して自動化することにより、回帰的にテスト実行する
リグレッションテストを目的とする。
API仕様書
テスト
観点
テスト
ケース
作成
JUnit化 テスト実行 回帰テスト
19. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
WebAPIテスト テスト設計方法
19
? 例えばAuth LoginのAPI
? パラメーター
? 戻り値
キー 値 省略時の値
user ログインユーザーID
domain ドメイン名 Local
password ログインパスワード
tenant テナントID 0
HTTPステータス エラーコード 説明
200 0 正常終了(ログイン終了)
401 -1 ユーザー認証に失敗した場合
403 -20012 すでに別のユーザーIDでログイン中の場合
403 -9800 ライセンスエラーが発生した場合
403 -9801 有効期限切れの場合
20. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
テスト設計
方法
テスト観点を作成
20
21. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
テスト設計方法 テストケース(CL)を作成
21
22. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
テスト設計方法
22
? テストケースをJUnit化
23. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
テスト実施
23
? Antを利用したJunitのテスト結果をレポーティング
24. Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 24
テスト実施結果
? WebAPIテストのテストケース数と発生したインシデント数
結果
WebAPI数 約50
テストケース数 4,682TCs(観点数:437)
インシデント数 185件
ソースkステップ数 257k(参考:ソフトウェア本体518k)
25. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
効果
26. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
効果
26
? 重大な不具合を早期に発見することができた
WebAPIのパラメーター仕様と、バックエンド
のパラメーター仕様に、開発者同士の認識の違
いがあることが分かった。
UIテスト
WebAPIテスト
UI
WebAPI
Business Logic
Data Access
DB
27. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
効果
27
? ユーザー利用を想定した準正常テスト
WebAPIから準正常系のリクエストを送ると、
バックエンドで想定外の動作をする等の新たな
気付きを得られた。(QA視点でのテストのよ
る安心感)
UIテスト
WebAPIテスト
UI
WebAPI
Business Logic
Data Access
DB
28. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
効果
28
? リグレッションテストとして確立
WebAPIテストをリグレッションテストとして
スプリント毎に実行すると、仕様変更やリファ
クタリングの影響箇所で不具合が発見できた。
(デグレードを発見できる安全性)
UIテスト
WebAPIテスト
UI
WebAPI
Business Logic
Data Access
DB
29. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 29
結果
SETを導入
クオリティゲートを
一回で合格
β RC
開発工程
品質保証工程
QGQG QG
開発?単体テスト
β RC
開発工程
品質保証工程
QG
開発?単体テスト?結合テスト
30. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 30
品質向上結果
初期版の開発規模に対
するバグ密度
バージョンアップ版の
開発規模に対するバグ
密度
開発工程で検出された不具合が増え、
品質保証工程での検出は減った。
つまり品質は開発段階から作りこまれている。
QA検出開発検出
31. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.
現在のWebAPIテスト
の状況
スクラムから独自のアジャイル開発へ
31
32. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 32
体制の変更
開発部門(Dev)
品質保証部門(QA)
PO
SM
チームBチームA
QAマネージャ
Devメンバー
PO
QAメンバー
QAマネージャ
QAメンバー
開発部門(Dev)
品質保証部門(QA)
36. Copyright ? 2020 WingArc1st Inc. All Rights Reserved.Copyright ? 2020 WingArc1st Inc. All Rights Reserved. 36
段階的な品質の積み上げ
スプリント/フェーズ
品
質
品質
目標品質
徐々に品質を確保!!
品質
品質
品質
品質