テスト自動化.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 sur 26

Recommandé

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

Contenu connexe

Similaire à テスト自動化.pdf

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

Similaire à テスト自動化.pdf(20)

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

Dernier

01Booster Studio ご紹介資料 par
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料ssusere7a2172
345 vues19 diapositives
SSH応用編_20231129.pdf par
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
184 vues13 diapositives
Windows 11 information that can be used at the development site par
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 siteAtomu Hidaka
76 vues41 diapositives
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) par
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
17 vues38 diapositives
The Things Stack説明資料 by The Things Industries par
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
50 vues29 diapositives
JJUG CCC.pptx par
JJUG CCC.pptxJJUG CCC.pptx
JJUG CCC.pptxKanta Sasaki
6 vues14 diapositives

Dernier(11)

01Booster Studio ご紹介資料 par ssusere7a2172
01Booster Studio ご紹介資料01Booster Studio ご紹介資料
01Booster Studio ご紹介資料
ssusere7a2172345 vues
SSH応用編_20231129.pdf par icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4184 vues
Windows 11 information that can be used at the development site par 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 Hidaka76 vues
The Things Stack説明資料 by The Things Industries par 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.50 vues
SNMPセキュリティ超入門 par mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda188 vues
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... par NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 par Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
さくらのひやおろし2023 par 法林浩之
さくらのひやおろし2023さくらのひやおろし2023
さくらのひやおろし2023
法林浩之94 vues
Web3 Career_クレデン資料 .pdf par nanamatsuo
Web3 Career_クレデン資料 .pdfWeb3 Career_クレデン資料 .pdf
Web3 Career_クレデン資料 .pdf
nanamatsuo14 vues

テスト自動化.pdf