テスト自動化.pdf

サブスク管理システムの
統合テストを自動化した話
自己紹介
名前:池田
経歴:IT業界歴7年、主に通信インフラ開発、 Webアプリ開発
領域:バックエンド、インフラ (Python,Django,Bashとか)
趣味:コスプレ、カメラ、 3Dプリンタ造形
キャンプ、サウナ、ロードバイク、釣り
資格:基本情報、AWS SAA、JSTQB FL、小型船舶免許1級
目次
● 前提
● 自動化の流れ
○ Step1 テスト実行を自動化
○ Step2 確認対象データ出力を自動化
○ Step3 データ突合を自動化
○ Step4 ツールをキーワード駆動にしてチームに展開
○ Step5 リグレッションテスト導入
● 自動化して良かったこと
● 所感
前提1
サブスクリプション管
理システム
プロバイダー
ユーザ
ユーザ
ユーザ
前提2
メンバー
ベースシステム
開発チーム
リーダー
池
田
サブスクリプション管
理システム
アジャイル開発(スクラム、1スプリント2週間)
課題
・リーダー以外がジュニアエンジニア、リーダーの負担大
・テスト項目数が莫大で、アジャイル開発にも関わらずリリース頻度が低く、リ
ファクタリングも困難
・開発メンバーが仕様を把握して切れず、考慮漏れによるバグが多発
特徴
・モノリス構造
・ユースケースの入力パターンが多く、かつ条件が
複雑
アプリ
Controller
請求
前提3 テストの方法とシステムの動作
RDB
GUI
注文
開通日:1/1
期間:12ヶ月
支払:月々払い
請求:前払い
課金開始日:日割
数量:10
etc…
ポ
チ
ポ
チ
ポ
チ
ポ
チ
利用期間:1/1~1/31
請求日:1/1
契約
期間:1/1~12/31
自動更新:する
途中変更:可能
etc…
利用期間:2/1~2/28
請求日:2/1
:
利用期間:12/1~12/31
請求日:12/1
注文
契約 請求
自動化の流れ
Step1 テスト実行を自動化
Step2 確認対象データ出力を自動化
Step3 データ突合を自動化
Step4 ツールをキーワード駆動にしてチームに展開
Step5 リグレッションテスト導入
自動化の流れ
Step1 テスト実行を自動化
Step2 確認対象データ出力を自動化
Step3 データ突合を自動化
Step4 ツールをキーワード駆動にしてチームに展開
Step5 リグレッションテスト導入
アプリ
Step1 操作自動化(bf)
RDB
GUI
ポ
チ
ポ
チ
注文パターン1
契約 請求
注文パターン2
注文パターン100
ポ
チ
ポ
チ
注文パターン3
:
開通日:3パターン
×
期間:2パターン
×
支払:2パターン
×
請求:3パターン
×
etc…
実行めんど
いな……
アプリ
Step1 操作自動化(af)
RDB
契約 請求
API
CLI
(スクリプト)
APIエンドポイントを叩く
・Pythonのrequests
・PostMan
Webブラウザの操作自動化
・Selenium(バックグラウンド実行 )
・Selenium IDE(画面ポチポチでコード生成 )
・Autify(画面ポチポチで作成したシナリオを Autifyが提供するAPIから実行)
注文パ
ターン
100
※確認はGUI
アプリ
Step1 操作自動化(af)
RDB
契約 請求
API
CLI
(スクリプト)
APIエンドポイントを叩く
・Pythonのrequests
・PostMan
Webブラウザの操作自動化
・Selenium(バックグラウンド実行 )
・Selenium IDE(画面ポチポチでコード生成 )
・Autify(画面ポチポチで作成したシナリオを Autifyが提供するAPIから実行)
注文パ
ターン
100
※確認はGUI
自動化の流れ
Step1 テスト実行を自動化
Step2 確認対象データ出力を自動化
Step3 データ突合を自動化
Step4 ツールをキーワード駆動にしてチームに展開
Step5 リグレッションテスト導入
アプリ
Step2 確認対象データ出力を自動化(bf)
RDB
契約 請求
API
GUI
請求パ
ターン
100
画面キャプチャ
画面キャプチャ
画面キャプチャ
画面キャプチャ
画面キャプチャ
パターン100
キャプチャめ
んどいな
……
アプリ
Step2 確認対象データ出力を自動化(af)
RDB
契約 請求
API
CLI
(スクリプト)
請求パ
ターン
100
●APIエンドポイントを叩く
・Pythonのrequests(GET系)
●SQLコマンドで取ってくる
●ブラウザに表示される値を取得
・Selenium(バックグラウンド実行 )
mysql db_name -ss -e “SELECT * FROM invoice”
id 利用開始日 利用終了日 請求日
1 1/1 1/31 2/1
2 2/1 2/28 3/1
3 :
アプリ
Step2 確認対象データ出力を自動化(af)
RDB
契約 請求
API
CLI
(スクリプト)
請求パ
ターン
100
●APIエンドポイントを叩く
・Pythonのrequests(GET系)
●SQLコマンドで取ってくる
●ブラウザに表示される値を取得
・Selenium(バックグラウンド実行 )
mysql db_name -ss -e “SELECT * FROM invoice”
id 利用開始日 利用終了日 請求日
1 1/1 1/31 2/1
2 2/1 2/28 3/1
3 :
自動化の流れ
Step1 テスト実行を自動化
Step2 確認対象データ出力を自動化
Step3 データ突合を自動化
Step4 ツールをキーワード駆動にしてチームに展開
Step5 リグレッションテスト導入
アプリ
Step3 確認する値を突合(bf)
RDB
CLI
(スクリプト)
請求パ
ターン
100
mysql db_name -ss -e “SELECT * FROM table_name”
id 利用開始日 利用終了日 請求日
1 1/1 1/31 2/1
2 2/1 2/28 3/1
3 :
確認してOK/NGを入力
コピペ
確認してOK/NGを入力
確認してOK/NGを入力
確認してOK/NGを入力
確認めんどいな......
var1.0 ver1.1
Ver1.0
Step3 確認する値を突合(af)
CLI
(スクリプト)
Ver1.1
請求パ
ターン
100
請求パ
ターン
100
id 利用開始日 利用終了日 請求日
1 1/1 1/31 2/1
2 2/1 2/28 3/1
3 :
diff ver1.0_0001_start_day.txt
ver1.1_0001_start_day.txt
開始日
1/1
2/1
3/1
開始日
1/1
2/1
3/1
var1.0 ver1.1
終了日
1/31
2/28
3/31
diff ver1.0_0001_end_day.txt
ver1.1_0001_end_day.txt
id 利用開始日 利用終了日 請求日
1 1/1 1/31 2/1
2 2/1 2/28 3/1
3 :
result
0001_start_day OK
0001_end_day NG
0001_invoice_day OK
:
終了日
1/31
2/28
3/28
データを整形してtxt出力、diffコマンド
用にデータを整形してtxt出力、diff結
果を一覧表示
自動化の流れ
Step1 テスト実行を自動化
Step2 確認対象データ出力を自動化
Step3 データ突合を自動化
Step4 ツールをキーワード駆動にしてチームに展開
Step5 リグレッションテスト導入
Ver1.0
Step4 ツールをキーワード駆動にしてチームに展開(bf)
CLI
(スクリプト )
Ver1.1
請求パ
ターン
100
請求パ
ターン
100
result_v1.0_vs_v1.1
0001_start_day OK
0001_end_day OK
0001_invoice_day OK
:
開発メンバー
開発メンバー
開発メンバー
ver1.0->1.1
分割系確認してほし
い
ver1.1->ver1.1.1
日割り系確認してほ
しい。
(仕様は口頭)
ver1.0->1.2
月跨ぎ確認してほし
い
仕様書
仕様書
仕様書
池
田
仕様書
Ver1.1
CLI
(スクリプト )
Ver1.1.
1
請求パ
ターン
100
請求パ
ターン
100
result_v1.1_vs_v1.1.1
0001_start_day OK
0001_end_day OK
0001_invoice_day OK
:
Ver1.0
CLI
(スクリプト )
Ver1.2
請求パ
ターン
100
請求パ
ターン
100
result_v1.1_vs_v1.2
0001_start_day OK
0001_end_day OK
0001_invoice_day OK
:
各々でシナリオ作ってテスト
回してくれないかな......
Step4 ツールをキーワード駆動にしてチームに展開
GAS
実行
Scenario.json
シナリオ生成ツール作ったから
各々で作っといて!
[{test_no:0001,
order_day:2023-01-01,
span:12,
:
},{test_no:0002,
order_day:2023-01-01,
span:12,
:
}
]
Ver1.0
Step4 ツールをキーワード駆動にしてチームに展開(af)
CLI
(スクリプト )
Ver1.1
請求パ
ターン
100
請求パ
ターン
100
result_v1.0_vs_v1.1
0001_start_day OK
0001_end_day OK
0001_invoice_day OK
:
開発メンバー
開発メンバー
開発メンバー
池
田
Ver1.1
CLI
(スクリプト )
Ver1.1.
1
請求パ
ターン
100
請求パ
ターン
100
result_v1.1_vs_v1.1.1
0001_start_day OK
0001_end_day OK
0001_invoice_day OK
:
Ver1.1
CLI
(スクリプト )
Ver1.2
請求パ
ターン
100
請求パ
ターン
100
result_v1.1_vs_v1.2
0001_start_day OK
0001_end_day OK
0001_invoice_day OK
:
問い合わせ
ツールメンテナンスは任せろ~
シナリオ
シナリオ
シナリオ
自動化の流れ
Step1 テスト実行を自動化
Step2 確認対象データ出力を自動化
Step3 データ突合を自動化
Step4 ツールをキーワード駆動にしてチームに展開
Step5 リグレッションテスト導入
Step5 リグレッションテスト導入
注文
シナリオ
自動更新
シナリオ
変更注文
シナリオ
契約切替
シナリオ
自動更新
シナリオ
Ver1.0
CLI
(スクリプト)
Ver1.1
自動更新
シナリオ
本番環境1
本番環境1
本番環境1
本番環境1
実際に使われているパターンを
元にリグレッション用のシナリオ
を作成
自動化して良かったこと
● テスト工数削減(step1,2,3)
● バグの早期検出(step4)
開発メンバーが製造段階で影響範囲のテストを実施するので、統合テストでのバグが減った
● レビューの負担軽減(step5)
システムの仕様上、ユースケースの入力パターンが多く、条件が複雑だった為、開発メンバーが仕様を把握して切れず、考慮漏れに
よるバグが多発していた。※設計レビューはアドホック形式
→レビュー段階で「ユースケース一覧のこの範囲をテストする」というテスト項目(テスト実行シナリオ)レビューも一緒に行うことで、開
発担当とレビュアーの影響範囲の認識齟齬や場当たり的な指摘が減った。
所感
1. 誰が使うかを意識して自動化する
最初はbashとかpythonスクリプトに直接シナリオ書いてたけれど、やはり理想は「製造した人がその機能を担保する」なので、いずれ
は自分以外が使うことを想定して作るのがよいと思う。
2. 半端なツールは展開しないほうが良い
とはいえ他の人に展開する前提でいきなりツール作り始めるのはハードルが高い。
今回作ったテストツールを他メンバーに展開する際には少なくとも以下の情報を正確に伝える必要があった。
・使用できる条件(環境やバージョン等)
・対応範囲(実行可能なシナリオ)
・実行手順
・出力(何が実行、確認、担保できるか。OK/NG、差分、スナップショット等)
1 of 26

Recommended

hbstudy#06 by
hbstudy#06hbstudy#06
hbstudy#06tsakaguchi
1.6K views46 slides
MT,STautomation by
MT,STautomationMT,STautomation
MT,STautomationssuserf8ea02
246 views26 slides
インフラ構築とテストについて(ITインフラ業務自動化現状確認会) by
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)Yosuke Hiraishi
75.6K views28 slides
PWA aruaru by
PWA aruaruPWA aruaru
PWA aruarun_harada
1K views34 slides
ワンクリックデプロイ101 #ocdeploy by
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployRyutaro YOSHIBA
12.9K views123 slides
【GTMF 2017】Shotgunで実現するクラウド時代のスマートな制作進捗の管理 by
【GTMF 2017】Shotgunで実現するクラウド時代のスマートな制作進捗の管理【GTMF 2017】Shotgunで実現するクラウド時代のスマートな制作進捗の管理
【GTMF 2017】Shotgunで実現するクラウド時代のスマートな制作進捗の管理Yoshiyuki Watanabe
86 views69 slides

More Related Content

Similar to テスト自動化.pdf

Infrastructure as Codeの取り組みと改善 by
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善Takashi Honda
2.8K views192 slides
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善 by
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善Developers Summit
2K views192 slides
自動テスト知識体系TABOKのご紹介 by
自動テスト知識体系TABOKのご紹介自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介Shinsuke Matsuki
8.9K views20 slides
テスト駆動開発の導入ーペアプログラミングの学習効果ー by
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーShuji Watanabe
4.4K views42 slides
[SC13] ログ管理で向上させるセキュリティ by
[SC13] ログ管理で向上させるセキュリティ[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティde:code 2017
608 views47 slides
Iot algyan jhirono 20190111 by
Iot algyan jhirono 20190111Iot algyan jhirono 20190111
Iot algyan jhirono 20190111Hirono Jumpei
861 views49 slides

Similar to テスト自動化.pdf(20)

Infrastructure as Codeの取り組みと改善 by Takashi Honda
Infrastructure as Codeの取り組みと改善Infrastructure as Codeの取り組みと改善
Infrastructure as Codeの取り組みと改善
Takashi Honda2.8K views
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善 by Developers Summit
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
自動テスト知識体系TABOKのご紹介 by Shinsuke Matsuki
自動テスト知識体系TABOKのご紹介自動テスト知識体系TABOKのご紹介
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki8.9K views
テスト駆動開発の導入ーペアプログラミングの学習効果ー by Shuji Watanabe
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe4.4K views
[SC13] ログ管理で向上させるセキュリティ by de:code 2017
[SC13] ログ管理で向上させるセキュリティ[SC13] ログ管理で向上させるセキュリティ
[SC13] ログ管理で向上させるセキュリティ
de:code 2017608 views
Iot algyan jhirono 20190111 by Hirono Jumpei
Iot algyan jhirono 20190111Iot algyan jhirono 20190111
Iot algyan jhirono 20190111
Hirono Jumpei861 views
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST by Kotaro Ogino
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino12K views
オンライン手順書の作成を支援するシステムの開発 by Takashi Kishida
オンライン手順書の作成を支援するシステムの開発オンライン手順書の作成を支援するシステムの開発
オンライン手順書の作成を支援するシステムの開発
Takashi Kishida874 views
サーバーレスの今とこれから by 真吾 吉田
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田35.3K views
アジャイルソフトウェア開発の道具箱 by Koichi ITO
アジャイルソフトウェア開発の道具箱アジャイルソフトウェア開発の道具箱
アジャイルソフトウェア開発の道具箱
Koichi ITO5.8K views
企業におけるSpring@日本springユーザー会20090624 by Yusuke Suzuki
企業におけるSpring@日本springユーザー会20090624企業におけるSpring@日本springユーザー会20090624
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki1.9K views
インフラのQA?なにそれ?おいしいの? Meetup in Osaka Ver. by Mutsumi Kamiike
インフラのQA?なにそれ?おいしいの? Meetup in Osaka Ver.インフラのQA?なにそれ?おいしいの? Meetup in Osaka Ver.
インフラのQA?なにそれ?おいしいの? Meetup in Osaka Ver.
Mutsumi Kamiike351 views
Djangoフレームワークの紹介 OSC2015北海道 by Shinya Okano
Djangoフレームワークの紹介 OSC2015北海道Djangoフレームワークの紹介 OSC2015北海道
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano2.3K views
Cloudflareを活用したWebパフォーマンスチューニング by Yoichiro Takehora
Cloudflareを活用したWebパフォーマンスチューニングCloudflareを活用したWebパフォーマンスチューニング
Cloudflareを活用したWebパフォーマンスチューニング
Yoichiro Takehora251 views
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~ by decode2016
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
decode201641 views
アドテク×Scala×パフォーマンスチューニング by Yosuke Mizutani
アドテク×Scala×パフォーマンスチューニングアドテク×Scala×パフォーマンスチューニング
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani14.4K views
Azure Machine Learning アップデートセミナー 20191127 by Keita Onabuta
Azure Machine Learning アップデートセミナー 20191127Azure Machine Learning アップデートセミナー 20191127
Azure Machine Learning アップデートセミナー 20191127
Keita Onabuta1.1K views
【15-B-L】Spinnakerで実現するデプロイの自動化 by Developers Summit
【15-B-L】Spinnakerで実現するデプロイの自動化【15-B-L】Spinnakerで実現するデプロイの自動化
【15-B-L】Spinnakerで実現するデプロイの自動化
Developers Summit2.4K views
MLOps入門 by Hiro Mura
MLOps入門MLOps入門
MLOps入門
Hiro Mura2.1K views

Recently uploaded

Web3 Career_クレデン資料 .pdf by
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdfnanamatsuo
16 views9 slides
SSH応用編_20231129.pdf by
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
287 views13 slides
The Things Stack説明資料 by The Things Industries by
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
51 views29 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
97 views64 slides
さくらのひやおろし2023 by
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023法林浩之
94 views58 slides

Recently uploaded(11)

Web3 Career_クレデン資料 .pdf by nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo16 views
SSH応用編_20231129.pdf by icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4287 views
The Things Stack説明資料 by The Things Industries by CRI Japan, Inc.
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.51 views
さくらのひやおろし2023 by 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之94 views
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) by NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... by NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
Windows 11 information that can be used at the development site by Atomu Hidaka
Windows 11 information that can be used at the development siteWindows 11 information that can be used at the development site
Windows 11 information that can be used at the development site
Atomu Hidaka80 views
SNMPセキュリティ超入門 by mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda301 views

テスト自動化.pdf