1.3K Views
May 15, 23
スライド概要
CIが分からない PE(SETエンジニア)の1年生が WebAPIの負荷テストを 背伸びしてCI運用した STAC2022 りふ 2022.12.03
自己紹介 n 会社 ・ウイングアーク1st n 経験 ・PE:1年目(1年生) ・QA:5年目 n 社外活動 りふ ・JaSST Niigata 21年度:実行委員と登壇:QAとしての事例発表 22年度:実行委員長:テーマは可観測性・Observability @reflex4qa 2
ご注意 n お話しすること ・導入の一歩前まで ・どんなツールを使ったのか?まで n お話ししないこと ・導入の後 ・運用事例 ・ツールの機能 ・New Relic 🙇 3
今回お伝えしたいこと 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 3. 手をつけるべき基準を設定 4. 基準をもとに手をつけるべきことを決定 5. 自分ができていることを把握 6. ちょっとの背伸びでできることを実行 4
今回お伝えしたいこと わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 5
1. 負荷テストを進めるきっかけ わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 6
1. 負荷テストを進めるきっかけ きっかけ 対応 テスト ① WebAPIが ② 暫定対応 負荷が大きく サーバーの台数を ログインしづらい 増やして 現象が発生 負荷を分散 POの要望 ⑧ サーバーの台数を 減らして コストを削減 ③ 恒久対応 ④ 負荷が ⑦ 負荷が減ったことを 原因を調査して 小さくなっているか 確認 対応 テスト ⑤ 継続で対応してテスト ⑥ 自動テストが得意 7
1. 負荷テストを進めるきっかけ きっかけ 対応 テスト ① WebAPIが ② 暫定対応 負荷が大きく サーバーの台数を ログインしづらい 増やして 現象が発生 負荷を分散 POの要望 ⑧ サーバーの台数を 減らして コストを削減 ③ 恒久対応 ④ 負荷が ⑦ 負荷が減ったことを 原因を調査して 小さくなっているか 確認 対応 テスト ⑤ 継続で対応してテスト ⑥ 自動テストが得意 8
1. 負荷テストを進めるきっかけ きっかけ 対応 テスト ① WebAPIが ② 暫定対応 負荷が大きく サーバーの台数を ログインしづらい 増やして 現象が発生 負荷を分散 POの要望 ⑧ サーバーの台数を 減らして コストを削減 ③ 恒久対応 ④ 負荷が ⑦ 負荷が減ったことを 原因を調査して 小さくなっているか 確認 対応 テスト ⑤ 継続で対応してテスト ⑥ 自動テストが得意 9
1. 負荷テストを進めるきっかけ きっかけ 対応 テスト ① WebAPIが ② 暫定対応 負荷が大きく サーバーの台数を ログインしづらい 増やして 現象が発生 負荷を分散 POの要望 ⑧ サーバーの台数を 減らして コストを削減 ③ 恒久対応 ④ 負荷が ⑦ 負荷が減ったことを 原因を調査して 小さくなっているか 確認 対応 テスト ⑤ 継続で対応してテスト ⑥ 自動テストが得意 10
1. 負荷テストを進めるきっかけ きっかけ 対応 テスト ① WebAPIが ② 暫定対応 負荷が大きく サーバーの台数を ログインしづらい 増やして 現象が発生 負荷を分散 POの要望 ⑧ サーバーの台数を 減らして コストを削減 ③ 恒久対応 ④ 負荷が ⑦ 負荷が減ったことを 原因を調査して 小さくなっているか 確認 対応 テスト ⑤ 継続で対応してテスト ⑥ 自動テストが得意 11
2.いっぱいある負荷テストのやるべきことを知る わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 12
2.いっぱいある負荷テストのやるべきことを知る テストタイプ 着目する観点 測定する値 計測に必要な時間 レスポンスタイム 早い 自動テスト目的 品質副特性 負荷テスト 時間効率性 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い ... ※多いので一部を略 https://jstqb.jp/dl/JSTQB-SyllabusFoundation-PTSpecialist_Version2018.J01.pdf 13
3.自動テストの目的と合っているかどうか わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 14
3.自動テストの目的と合っているかどうか 欠陥を発見して、 開発者へ早いフィードバック 時間 変 欠 更 陥 原因はこれ! 15
3.自動テストの目的と合っているかどうか 欠陥を発見して、 欠陥を発見して、 開発者へ早いフィードバック 開発者へ遅いフィードバック 時間 変 更 原因はこれ! 時間 欠 変 陥 更 変 更 変 更 変 更 欠 陥 原因はどれ? 16
3.自動テストの目的と合っているかどうか 欠陥を発見して、 欠陥を発見して、 開発者へ早いフィードバック 開発者へ遅いフィードバック ✔ 手をつけるべきことの基準 時間 変 更 原因はこれ! 時間 欠 陥 変 変 更 更 変 更 変 更 欠 陥 原因はどれ? 17
4.負荷テストから自動テストの目的と合っていることを見つける わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 18
4.負荷テストから自動テストの目的と合っていることを見つける 着目する観点はどれが早いフィードバックができるのか? テストタイプ 着目する観点 測定する値 計測に必要な時間 負荷テスト 時間効率性 レスポンスタイム 早い 自動テスト目的 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い 19
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 着目する観点 測定する値 計測に必要な時間 負荷テスト 時間効率性 レスポンスタイム 早い 自動テスト目的 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い 20
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 着目する観点 測定する値 計測に必要な時間 負荷テスト 時間効率性 レスポンスタイム ツールで完結 自動テスト目的 早い 拡張性テスト 資源効率性 CPU使用量 サーバーに問い合わせ フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 高性能マシン 21
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 着目する観点 測定する値 計測に必要な時間 負荷テスト 時間効率性 レスポンスタイム 早い 自動テスト目的 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い 22
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 負荷テスト 着目する観点 測定する値 時間効率性 レスポンスタイム ✔ 手をつけるべきこと 計測に必要な時間 自動テスト目的 早い 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い 23
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 着目する観点 測定する値 計測に必要な時間 負荷テスト 時間効率性 レスポンスタイム 早い 自動テスト目的 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い 負荷テストという言葉だと含まれる 24
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 負荷テスト 着目する観点 測定する値 時間効率性 レスポンスタイム ✔ 性能劣化を時間観点で検知 計測に必要な時間 自動テスト目的 早い 早い 拡張性テスト 資源効率性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い 25
4.負荷テストから自動テストの目的と合っていることを見つける テストタイプ 着目する観点 測定する値 計測に必要な時間 ◯◯テスト XXX性 ZZZ 早い 自動テスト目的 早い 拡張性テスト YYY性 CPU使用量 遅い フィードバックが できる ストレステスト キャパシティ 同時ユーザー数 遅い その観点もテストするのか 26
5.PE1年生のわたしのできていること(Karate、Jenkins) わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 27
5.PE1年生のわたしのできていること(Karate、Jenkins) 開発プロセス PE(わたし) GitHub PullRequest の を 使 用 し た 開 発 プ ロ セ ス Dev Karateによる テストコード実装 PRを 作成 PRを レビュー mainに merge 28
5.PE1年生のわたしのできていること(Karate、Jenkins) 開発プロセス PE(わたし) GitHub PullRequest の を 使 用 し た 開 発 プ ロ セ ス Dev Karateによる テストコード実装 PRを 作成 PRを レビュー mainに merge https://github.com/karatelabs/karate 29
5.PE1年生のわたしのできていること(Karate、Jenkins) 開発プロセス PE(わたし) GitHub PullRequest の を 使 用 し た 開 発 プ ロ セ ス Dev 過去 Postmanによる Karateによる テストコード実装 テストコード実装 PRを 作成 PRを レビュー mainに merge 30
5.PE1年生のわたしのできていること(Karate、Jenkins) Bad Good 31
5.PE1年生のわたしのできていること(Karate、Jenkins) CIプロセス プロダクトコードを 実装 Mainに merge Jenkins 開発環境にデプロイ するJobが実行 Karateのテストが 実行するJobが実行 Karateの テスト結果が格納 テスト結果が チャットに通知 32
6.PE1年生のちょっと背伸びでできること(Gatling) わたしの 経験 1. ものごとを進めるきっかけ 負荷テストを進めるきっかけ 2. いっぱいあるやるべきことを把握 いっぱいある負荷テストのやるべきことを知る 3. 手をつけるべき基準を設定 自動テストの目的と合っているかどうか 4. 基準をもとに手をつけるべきことを決定 負荷テストから自動テストの目的と合っていることを見つける 5. 自分ができていることを把握 PE1年生のわたしのできていること(Karate、Jenkins) 6. ちょっとの背伸びでできることを実行 PE1年生のちょっと背伸びでできること(Gatling) 33
6.PE1年生のちょっと背伸びでできること(Gatling) わたしの入社する前の資産 n 負荷テストのツールは、Jmeter n 負荷テストの実行は、Jenkins 34
6.PE1年生のちょっと背伸びでできること(Gatling) わたしの入社する前の資産 n 負 荷 テ ス ト の ツ ー ル は 、 J m ete r n 負荷テストの実行は、Jenkins わたしのできていることの 背伸びでできない 35
6.PE1年生のちょっと背伸びでできること(Gatling) Jmeter が辛いので 背伸びでできない xml でレビューしずらいので 背伸びでできない 36
6.PE1年生のちょっと背伸びでできること(Gatling) CIプロセス プロダクトコードを 実装 Mainに merge Jmeter用のJenkinsが追加 Jenkins 開発環境にデプロイ Jenkins するJobが実行 Karateのテストが JMeterのテストが 実行するJobが実行 実行するJobが実行 Karateの JMeterの テスト結果が格納 テスト結果が格納 テスト結果が チャットに通知 37
6.PE1年生のちょっと背伸びでできること(Gatling) CIプロセス プロダクトコードを 実装 Mainに merge Jmeter用のJenkinsが追加 Jenkins Jenkins 開発環境にデプロイ するJobが実行 Karateのテストが JMeterのテストが 実行するJobが実行 実行するJobが実行 Karateの テスト結果が格納 テスト結果が 見る場所は1ヶ所にしたいがやり方が 分からないので JMeterの テスト結果が格納 背伸びでできない チャットに通知 38
6.PE1年生のちょっと背伸びでできること(Gatling) CIプロセス プロダクトコードを 実装 別のJenkinsとの Mainに merge 連携が分からないので 背伸びでできない Jmeter用のJenkinsが追加 Jenkins Jenkins 開発環境にデプロイ するJobが実行 Karateのテストが JMeterのテストが 実行するJobが実行 実行するJobが実行 Karateの テスト結果が格納 テスト結果が 見る場所は1ヶ所にしたいがやり方が 分からないので JMeterの テスト結果が格納 背伸びでできない チャットに通知 39
6.PE1年生のちょっと背伸びでできること(Gatling) わたしの入社する前の資産 n 負荷テストのツールは、Jmeter n 負荷テストの実行は、Jenkins ✔ わたしのできていることの 背伸びでできる ことは Gatling を使用すること https://github.com/karatelabs/karate/tree/master/karate-gatling 40
6.PE1年生のちょっと背伸びでできること(Gatling) 開発プロセス PE(わたし) GitHub PullRequest の を 使 用 し た 開 発 プ ロ セ ス • コードベースでレビューしやすい Gatling Karateによる テストコード実装 ので 背伸びでできる PRを 作成 PRを レビュー mainに merge 41
6.PE1年生のちょっと背伸びでできること(Gatling) 開発プロセス PE(わたし) GitHub PullRequest の を 使 用 し た 開 発 プ ロ セ ス • コードベースでレビューしやすい • Karateにパッケージング Karateによる • GatlingからKarateを呼べる テストコード実装 • サンプルコードも多い Gatling ので 背伸びでできる PRを 作成 PRを レビュー mainに merge 42
5.PE1年生のわたしのできていること(Karate、Jenkins) CIプロセス Jenkins 開発環境にデプロイ するJobが実行 Gatling Karateのテストが 実行するJobが実行 • 実行が同じようなコマンド(mvn)でできる • 同じJobで実行できる ので 背伸びでできる Gatling Karateの テスト結果が格納 43
5.PE1年生のわたしのできていること(Karate、Jenkins) CIプロセス Jenkins 開発環境にデプロイ するJobが実行 Gatling Karateのテストが • 実行が同じようなコマンド(mvn)でできる • 同じJobで実行できる 実行するJobが実行 Gatling Karateの テスト結果が格納 ので 背伸びでできる • JenkinsにGatlingプラグインがある • 結果も同じ1ヶ所に格納できる ので 背伸びでできる https://plugins.jenkins.io/gatling/ 44
今回お伝えしたいこと(再掲) 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 3. 手をつけるべき基準を設定 4. 基準をもとに手をつけるべきことを決定 5. 自分ができていることを把握 6. ちょっとの背伸びでできることを実行 45
全体像を把握 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 全体像を把握 3. 手をつけるべき基準を設定 4. 基準をもとに手をつけるべきことを決定 5. 自分ができていることを把握 6. ちょっとの背伸びでできることを実行 46
“やるべきこと”を決定 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 全体像を把握 3. 手をつけるべき基準を設定 4. 基準をもとに手をつけるべきことを決定 5. 自分ができていることを把握 6. ちょっとの背伸びでできることを実行 やるべきこと 47
“やらないこと”も決定 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 全体像を把握 3. 手をつけるべき基準を設定 やらないこと 4. 基準をもとに手をつけるべきことを決定 5. 自分ができていることを把握 6. ちょっとの背伸びでできることを実行 やるべきこと 48
“やらないこと”を決めるのが ものごとを進める戦略 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 全体像を把握 やつら いきこ とを 設 定 3. 手を けな るべ 基準 ↓ 戦うべきないところを決める 4. 基準をもとに手をつけるべきことを決定 ↓ 戦いを略する ↓い る こ と を 把 握 5. 自分ができて 戦略 6. ちょっとの背伸びでできることを実行 やるべきこと 49
ものごとを進めるには、”やるべきこと”から考えがち 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 3. 手をつけるべき基準を設定 4. 基準をもとに手をつけるべきことを決定 5. 自分ができていることを把握 6 . ち ょ っ とや の背 びき でで ることを実行 る伸べ こきと 50
全体像を把握してからやらないことを決めるとスムーズ 1. ものごとを進めるきっかけ 2. いっぱいあるやるべきことを把握 全体像を把握 やつら いきこ とを 設 定 3. 手を けな るべ 基準 資源効率性 キャパシティ 非テスト対象のテストアイテム ↓ JMeter テスト計画 4. 基準をもとに手をつけるべきことを決定 戦略 5. 自分ができていることを把握 6で . 検 ち知ょ っ と の 背 伸 び で で き る こ と を 実 行 性能劣化を時間観点 Gatling やるべきこと テスト計画 テスト対象のテストアイテム 51
以上です STAC2022 りふ 2022.12.03