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

Recomendados

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

Más contenido relacionado

Similar a テスト自動化.pdf

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

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

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

Último

SSH応用編_20231129.pdf por
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
366 vistas13 diapositivas
SNMPセキュリティ超入門 por
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門mkoda
420 vistas15 diapositivas
The Things Stack説明資料 by The Things Industries por
The Things Stack説明資料 by The Things IndustriesThe Things Stack説明資料 by The Things Industries
The Things Stack説明資料 by The Things IndustriesCRI Japan, Inc.
73 vistas29 diapositivas
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...NTT DATA Technology & Innovation
132 vistas42 diapositivas
光コラボは契約してはいけない por
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
24 vistas17 diapositivas

Último(10)

SSH応用編_20231129.pdf por icebreaker4
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
icebreaker4366 vistas
SNMPセキュリティ超入門 por mkoda
SNMPセキュリティ超入門SNMPセキュリティ超入門
SNMPセキュリティ超入門
mkoda420 vistas
The Things Stack説明資料 by The Things Industries por 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.73 vistas
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... por NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
光コラボは契約してはいけない por Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga24 vistas
Windows 11 information that can be used at the development site por 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 Hidaka89 vistas
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) por 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 発表資料)

テスト自動化.pdf