Slide 1

Slide 1 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. ©2019 RAKUS Co., Ltd. #RAKUSMeetup リリース10周年を迎えた WebDBシステムの品質担保術 開発統括部 第二開発部 データベース・クラウド開発課 水間 淳之

Slide 2

Slide 2 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 自己紹介 •水間 淳之 みずま あつゆき •26歳 入社4年目 •働くDBの機能開発を担当 2

Slide 3

Slide 3 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 1章 システム紹介 3

Slide 4

Slide 4 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 働くDBとは? •色々な業務を管理できるWebDBシステム 4 導入企業数 1000社超

Slide 5

Slide 5 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 働くDBとは? 5

Slide 6

Slide 6 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. これまでのサービス方針 •機能追加でお客様獲得を狙う •開発スピード重視 • 品質は熟練メンバの経験と勘で担保 6

Slide 7

Slide 7 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 2章 発生した課題 7

Slide 8

Slide 8 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 品質の担保が困難 8

Slide 9

Slide 9 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 現状把握 •テストケースが爆発 •機能が増え、テストが大変になっていく •熟練メンバへの属人化 •メンバが増え、「経験と勘」が属人化として表面 化 9

Slide 10

Slide 10 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. テストケース爆発 データタイプ 10 テキスト 数値 日付 詳細設定 文字長設定 フォーマット 必須 … ×20 … ×10 入力バリエーション × ?

Slide 11

Slide 11 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 熟練メンバへの属人化 •熟練メンバと新メンバで品質に差が発生 11 熟 必要な テスト ケース 複雑な テスト ケース 影響範囲 テスト ケース 新 必要な テスト ケース 複雑な テスト ケース 影響範囲 テスト ケース

Slide 12

Slide 12 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 人力の限界を超える •テストケース漏れが頻発 •中にはクリティカルな不具合が発生したケースも →担当者に依存せず一定の品質を担保したい 12

Slide 13

Slide 13 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 3章 人の手によるテストからの脱却 13

Slide 14

Slide 14 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 検討した手法 •SeleniumE2Eテスト •ユニットテスト 14

Slide 15

Slide 15 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 検討したけど挫折した手法 •SeleniumE2Eテスト •ユニットテスト 15

Slide 16

Slide 16 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 挫折した手法 •SeleniumE2Eテスト •1画面上の設定バリエーションが多い × 画面遷移は簡単だが、テストケースの作成が手間 16

Slide 17

Slide 17 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 挫折した手法 •ユニットテスト •設定パターンそれぞれに対するテスト × コードが部品化されていない 17

Slide 18

Slide 18 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 再検討 •何がダメだったのか •ケース爆発を解消できていない • コードが部品化されていない → 一気にすべての問題を解決することを諦める 18

Slide 19

Slide 19 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 採用した自動化案 •重要機能Seleniumテスト •PL/pgSQLの新旧比較 19

Slide 20

Slide 20 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 重要機能Seleniumテスト •E2Eを諦め、部分的にSeleniumを利用する方針 •レコード登録・レコードインポートのみ • 登録画面のUI制御はassert • 登録結果はDBを新旧比較 20

Slide 21

Slide 21 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. PL/pgSQLの新旧比較 •一部バッチ処理で動的生成しているFUNCTION のDDLを新旧比較 •網羅を諦め、本番環境の設定を機械的に比較 • ※主要なケースは単体テスト実施済 21

Slide 22

Slide 22 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 効果 22 0 2 2 3 1 10 2 1 1 0 1 2 0 0 1 0 2 0 0 5 1 10 1 24 7 2 4 3 2 0 0 0 0 3 0 0 0 1 0 5 10 15 20 25 30 5.2 5.3 5.4 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 6.10 7.0 7.1 7.2 7.3 7.4 原因verごとの不具合件数 レコード入力/インポート PL/pgSQL処理 実施

Slide 23

Slide 23 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. 効果 •網羅率は体感で30%ぐらい •よくある使われ方はある程度カバーできている 23

Slide 24

Slide 24 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. #RAKUSMeetup ©2019 RAKUS Co., Ltd. 4章 これから 24

Slide 25

Slide 25 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. これからの品質担保術 •既存のシステム・機能に対して、一般的に語ら れる手法での100%品質担保は困難 → 局所的でも出来るところからやっていく 25

Slide 26

Slide 26 text

#RAKUSMeetup ©2019 RAKUS Co., Ltd. さいごに •システムが長生きすると王道の改善が難しくなっ ていく •新たな手法を探しつつ、これからも戦いはつづく 26