SlideShare a Scribd company logo
Soumettre la recherche
Mettre en ligne
テスト自動化.pdf
Signaler
Partager
S
ssuserf8ea02
Suivre
•
0 j'aime
•
196 vues
1
sur
26
テスト自動化.pdf
•
0 j'aime
•
196 vues
Signaler
Partager
Télécharger maintenant
Télécharger pour lire hors ligne
Technologie
https://zenn.dev/ikeda1151/articles/3c75e6ec8d61bf
Lire la suite
S
ssuserf8ea02
Suivre
Recommandé
hbstudy#06 par
hbstudy#06
tsakaguchi
1.6K vues
•
46 diapositives
MT,STautomation par
MT,STautomation
ssuserf8ea02
246 vues
•
26 diapositives
インフラ構築とテストについて(ITインフラ業務自動化現状確認会) par
インフラ構築とテストについて(ITインフラ業務自動化現状確認会)
Yosuke Hiraishi
75.6K vues
•
28 diapositives
PWA aruaru par
PWA aruaru
n_harada
1K vues
•
34 diapositives
ワンクリックデプロイ101 #ocdeploy par
ワンクリックデプロイ101 #ocdeploy
Ryutaro YOSHIBA
12.9K vues
•
123 diapositives
【GTMF 2017】Shotgunで実現するクラウド時代のスマートな制作進捗の管理 par
【GTMF 2017】Shotgunで実現するクラウド時代のスマートな制作進捗の管理
Yoshiyuki Watanabe
86 vues
•
69 diapositives
Contenu connexe
Similaire à テスト自動化.pdf
Infrastructure as Codeの取り組みと改善 par
Infrastructure as Codeの取り組みと改善
Takashi Honda
2.8K vues
•
192 diapositives
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善 par
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
Developers Summit
2K vues
•
192 diapositives
自動テスト知識体系TABOKのご紹介 par
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
8.9K vues
•
20 diapositives
テスト駆動開発の導入ーペアプログラミングの学習効果ー par
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
4.4K vues
•
42 diapositives
[SC13] ログ管理で向上させるセキュリティ par
[SC13] ログ管理で向上させるセキュリティ
de:code 2017
608 vues
•
47 diapositives
Iot algyan jhirono 20190111 par
Iot algyan jhirono 20190111
Hirono Jumpei
861 vues
•
49 diapositives
Similaire à テスト自動化.pdf
(20)
Infrastructure as Codeの取り組みと改善 par Takashi Honda
Infrastructure as Codeの取り組みと改善
Takashi Honda
•
2.8K vues
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善 par Developers Summit
【20-E-5】実践!Infrastructure as a Codeの取り組みと改善
Developers Summit
•
2K vues
自動テスト知識体系TABOKのご紹介 par Shinsuke Matsuki
自動テスト知識体系TABOKのご紹介
Shinsuke Matsuki
•
8.9K vues
テスト駆動開発の導入ーペアプログラミングの学習効果ー par Shuji Watanabe
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
•
4.4K vues
[SC13] ログ管理で向上させるセキュリティ par de:code 2017
[SC13] ログ管理で向上させるセキュリティ
de:code 2017
•
608 vues
Iot algyan jhirono 20190111 par Hirono Jumpei
Iot algyan jhirono 20190111
Hirono Jumpei
•
861 vues
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST par Kotaro Ogino
【JaSST'14 Tokyo】システムテストの自動化による 大規模分散検索プラットフォームの 開発工程改善 #JaSST
Kotaro Ogino
•
12K vues
オンライン手順書の作成を支援するシステムの開発 par Takashi Kishida
オンライン手順書の作成を支援するシステムの開発
Takashi Kishida
•
874 vues
サーバーレスの今とこれから par 真吾 吉田
サーバーレスの今とこれから
真吾 吉田
•
35.2K vues
アジャイルソフトウェア開発の道具箱 par Koichi ITO
アジャイルソフトウェア開発の道具箱
Koichi ITO
•
5.8K vues
企業におけるSpring@日本springユーザー会20090624 par Yusuke Suzuki
企業におけるSpring@日本springユーザー会20090624
Yusuke Suzuki
•
1.9K vues
インフラのQA?なにそれ?おいしいの? Meetup in Osaka Ver. par Mutsumi Kamiike
インフラのQA?なにそれ?おいしいの? Meetup in Osaka Ver.
Mutsumi Kamiike
•
351 vues
Djangoフレームワークの紹介 OSC2015北海道 par Shinya Okano
Djangoフレームワークの紹介 OSC2015北海道
Shinya Okano
•
2.3K vues
Cloudflareを活用したWebパフォーマンスチューニング par Yoichiro Takehora
Cloudflareを活用したWebパフォーマンスチューニング
Yoichiro Takehora
•
251 vues
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~ par decode2016
INF-010_そのログ、ただ集めているだけではありませんか? ~IT 運用の世界にも Big Data の活用を!~
decode2016
•
41 vues
アドテク×Scala×パフォーマンスチューニング par Yosuke Mizutani
アドテク×Scala×パフォーマンスチューニング
Yosuke Mizutani
•
14.4K vues
Azure Machine Learning アップデートセミナー 20191127 par Keita Onabuta
Azure Machine Learning アップデートセミナー 20191127
Keita Onabuta
•
1.1K vues
【15-B-L】Spinnakerで実現するデプロイの自動化 par Developers Summit
【15-B-L】Spinnakerで実現するデプロイの自動化
Developers Summit
•
2.4K vues
MLOps入門 par Hiro Mura
MLOps入門
Hiro Mura
•
2.1K vues
QA improvement par Sadaaki Emura
QA improvement
Sadaaki Emura
•
239 vues
Dernier
01Booster Studio ご紹介資料 par
01Booster Studio ご紹介資料
ssusere7a2172
345 vues
•
19 diapositives
SSH応用編_20231129.pdf par
SSH応用編_20231129.pdf
icebreaker4
184 vues
•
13 diapositives
Windows 11 information that can be used at the development site par
Windows 11 information that can be used at the development site
Atomu Hidaka
76 vues
•
41 diapositives
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) par
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
17 vues
•
38 diapositives
The Things Stack説明資料 by The Things Industries par
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
50 vues
•
29 diapositives
JJUG CCC.pptx par
JJUG CCC.pptx
Kanta Sasaki
6 vues
•
14 diapositives
Dernier
(11)
01Booster Studio ご紹介資料 par ssusere7a2172
01Booster Studio ご紹介資料
ssusere7a2172
•
345 vues
SSH応用編_20231129.pdf par icebreaker4
SSH応用編_20231129.pdf
icebreaker4
•
184 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 site
Atomu Hidaka
•
76 vues
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料) par NTT DATA Technology & Innovation
速習! PostgreSQL専用HAソフトウェア: Patroni(PostgreSQL Conference Japan 2023 発表資料)
NTT DATA Technology & Innovation
•
17 vues
The Things Stack説明資料 by The Things Industries par CRI Japan, Inc.
The Things Stack説明資料 by The Things Industries
CRI Japan, Inc.
•
50 vues
JJUG CCC.pptx par Kanta Sasaki
JJUG CCC.pptx
Kanta Sasaki
•
6 vues
SNMPセキュリティ超入門 par mkoda
SNMPセキュリティ超入門
mkoda
•
188 vues
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20... par NTT DATA Technology & Innovation
今、改めて考えるPostgreSQLプラットフォーム - マルチクラウドとポータビリティ -(PostgreSQL Conference Japan 20...
NTT DATA Technology & Innovation
•
101 vues
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化 par Knowledge & Experience
「概念モデリング自動化に向けた第一歩」 ~ ChatGPT・Open AI 活用による開発対象のモデル化
Knowledge & Experience
•
12 vues
さくらのひやおろし2023 par 法林浩之
さくらのひやおろし2023
法林浩之
•
94 vues
Web3 Career_クレデン資料 .pdf par nanamatsuo
Web3 Career_クレデン資料 .pdf
nanamatsuo
•
14 vues
テスト自動化.pdf
1.
サブスク管理システムの 統合テストを自動化した話
2.
自己紹介 名前:池田 経歴:IT業界歴7年、主に通信インフラ開発、 Webアプリ開発 領域:バックエンド、インフラ (Python,Django,Bashとか) 趣味:コスプレ、カメラ、
3Dプリンタ造形 キャンプ、サウナ、ロードバイク、釣り 資格:基本情報、AWS SAA、JSTQB FL、小型船舶免許1級
3.
目次 ● 前提 ● 自動化の流れ ○
Step1 テスト実行を自動化 ○ Step2 確認対象データ出力を自動化 ○ Step3 データ突合を自動化 ○ Step4 ツールをキーワード駆動にしてチームに展開 ○ Step5 リグレッションテスト導入 ● 自動化して良かったこと ● 所感
4.
前提1 サブスクリプション管 理システム プロバイダー ユーザ ユーザ ユーザ
5.
前提2 メンバー ベースシステム 開発チーム リーダー 池 田 サブスクリプション管 理システム アジャイル開発(スクラム、1スプリント2週間) 課題 ・リーダー以外がジュニアエンジニア、リーダーの負担大 ・テスト項目数が莫大で、アジャイル開発にも関わらずリリース頻度が低く、リ ファクタリングも困難 ・開発メンバーが仕様を把握して切れず、考慮漏れによるバグが多発 特徴 ・モノリス構造 ・ユースケースの入力パターンが多く、かつ条件が 複雑
6.
アプリ 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 注文 契約 請求
7.
自動化の流れ Step1 テスト実行を自動化 Step2 確認対象データ出力を自動化 Step3
データ突合を自動化 Step4 ツールをキーワード駆動にしてチームに展開 Step5 リグレッションテスト導入
8.
自動化の流れ Step1 テスト実行を自動化 Step2 確認対象データ出力を自動化 Step3
データ突合を自動化 Step4 ツールをキーワード駆動にしてチームに展開 Step5 リグレッションテスト導入
9.
アプリ Step1 操作自動化(bf) RDB GUI ポ チ ポ チ 注文パターン1 契約 請求 注文パターン2 注文パターン100 ポ チ ポ チ 注文パターン3 : 開通日:3パターン × 期間:2パターン × 支払:2パターン × 請求:3パターン × etc… 実行めんど いな……
10.
アプリ Step1 操作自動化(af) RDB 契約 請求 API CLI (スクリプト) APIエンドポイントを叩く ・Pythonのrequests ・PostMan Webブラウザの操作自動化 ・Selenium(バックグラウンド実行
) ・Selenium IDE(画面ポチポチでコード生成 ) ・Autify(画面ポチポチで作成したシナリオを Autifyが提供するAPIから実行) 注文パ ターン 100 ※確認はGUI
11.
アプリ Step1 操作自動化(af) RDB 契約 請求 API CLI (スクリプト) APIエンドポイントを叩く ・Pythonのrequests ・PostMan Webブラウザの操作自動化 ・Selenium(バックグラウンド実行
) ・Selenium IDE(画面ポチポチでコード生成 ) ・Autify(画面ポチポチで作成したシナリオを Autifyが提供するAPIから実行) 注文パ ターン 100 ※確認はGUI
12.
自動化の流れ Step1 テスト実行を自動化 Step2 確認対象データ出力を自動化 Step3
データ突合を自動化 Step4 ツールをキーワード駆動にしてチームに展開 Step5 リグレッションテスト導入
13.
アプリ Step2 確認対象データ出力を自動化(bf) RDB 契約 請求 API GUI 請求パ ターン 100 画面キャプチャ 画面キャプチャ 画面キャプチャ 画面キャプチャ 画面キャプチャ パターン100 キャプチャめ んどいな ……
14.
アプリ 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 :
15.
アプリ 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 :
16.
自動化の流れ Step1 テスト実行を自動化 Step2 確認対象データ出力を自動化 Step3
データ突合を自動化 Step4 ツールをキーワード駆動にしてチームに展開 Step5 リグレッションテスト導入
17.
アプリ 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を入力 確認めんどいな......
18.
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結 果を一覧表示
19.
自動化の流れ Step1 テスト実行を自動化 Step2 確認対象データ出力を自動化 Step3
データ突合を自動化 Step4 ツールをキーワード駆動にしてチームに展開 Step5 リグレッションテスト導入
20.
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 : 各々でシナリオ作ってテスト 回してくれないかな......
21.
Step4 ツールをキーワード駆動にしてチームに展開 GAS 実行 Scenario.json シナリオ生成ツール作ったから 各々で作っといて! [{test_no:0001, order_day:2023-01-01, span:12, : },{test_no:0002, order_day:2023-01-01, span:12, : } ]
22.
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 : 問い合わせ ツールメンテナンスは任せろ~ シナリオ シナリオ シナリオ
23.
自動化の流れ Step1 テスト実行を自動化 Step2 確認対象データ出力を自動化 Step3
データ突合を自動化 Step4 ツールをキーワード駆動にしてチームに展開 Step5 リグレッションテスト導入
24.
Step5 リグレッションテスト導入 注文 シナリオ 自動更新 シナリオ 変更注文 シナリオ 契約切替 シナリオ 自動更新 シナリオ Ver1.0 CLI (スクリプト) Ver1.1 自動更新 シナリオ 本番環境1 本番環境1 本番環境1 本番環境1 実際に使われているパターンを 元にリグレッション用のシナリオ を作成
25.
自動化して良かったこと ● テスト工数削減(step1,2,3) ● バグの早期検出(step4) 開発メンバーが製造段階で影響範囲のテストを実施するので、統合テストでのバグが減った ●
レビューの負担軽減(step5) システムの仕様上、ユースケースの入力パターンが多く、条件が複雑だった為、開発メンバーが仕様を把握して切れず、考慮漏れに よるバグが多発していた。※設計レビューはアドホック形式 →レビュー段階で「ユースケース一覧のこの範囲をテストする」というテスト項目(テスト実行シナリオ)レビューも一緒に行うことで、開 発担当とレビュアーの影響範囲の認識齟齬や場当たり的な指摘が減った。
26.
所感 1. 誰が使うかを意識して自動化する 最初はbashとかpythonスクリプトに直接シナリオ書いてたけれど、やはり理想は「製造した人がその機能を担保する」なので、いずれ は自分以外が使うことを想定して作るのがよいと思う。 2. 半端なツールは展開しないほうが良い とはいえ他の人に展開する前提でいきなりツール作り始めるのはハードルが高い。 今回作ったテストツールを他メンバーに展開する際には少なくとも以下の情報を正確に伝える必要があった。 ・使用できる条件(環境やバージョン等) ・対応範囲(実行可能なシナリオ) ・実行手順 ・出力(何が実行、確認、担保できるか。OK/NG、差分、スナップショット等)