Upgrade to Pro — share decks privately, control downloads, hide ads and more …

DevOpsにおけるAPIテスト

 DevOpsにおけるAPIテスト

Avatar for CUONG MAI

CUONG MAI

March 14, 2023

More Decks by CUONG MAI

Other Decks in Technology

Transcript

  1. ❖ 名前: マイ マイ クオン
 
 ❖ 経歴
  2011 来日
  2012 横浜国立大学入学


     2016 大学卒業
     ヒューマンクレスト入社
  現在: RakAPIt PO
 Profile
 2

  2. ❖ APIテストとUIテスト
 ➢ APIテストとは
 ➢ APIテスト vs UIテスト
 ➢ APIテストタイミング


    ❖ APIテスト自動化
 ➢ UIテスト自動化の問題点
 ➢ APIテスト自動化のメリット
 ➢ APIテストで何を自動化するか
 ❖ APIテストは誰のものなのか?
 ❖ APIテストをデプロイメントパイプラインに組み込む
 ➢ デプロイメントパイプライン
 ➢ APIテスト設計・実装
 ➢ CIツールに組み込む
 
 
 Agenda
 4

  3. ❖ APIテストとUIテスト
 ➢ APIテストとは
 ➢ APIテスト vs UIテスト
 ➢ APIテストタイミング


    ❖ APIテスト自動化
 ➢ UIテスト自動化の問題点
 ➢ APIテスト自動化のメリット
 ➢ APIテストで何を自動化するか
 ❖ APIテストは誰のものなのか?
 ❖ APIテストをデプロイメントパイプラインに組み込む
 ➢ デプロイメントパイプライン
 ➢ APIテスト設計・実装
 ➢ CIツールに組み込む
 
 
 Agenda
 5

  4. APIテスト UIテスト 難易度 学習コストがかかる 直感的でやりやすい 実施できるタイミング APIの実装が完了したらすぐできる API及びUIがそれぞれ完成し、結合 しないと実施できない テストスコープ

    UIテストで実施できないケースも実 施できる UIによる制限がある 実施コスト 実行時間が短い 実行時間が長い 安定性 安定 不安定 自動化 自動化しやすい 自動化しにくいところがある APIテスト vs UIテスト
 9

  5. BACK END
 FRONT END
 Coding
 Unit Testing
 Coding
 Unit Testing


    UI Testing
 APIテストタイミング
 遅延リスク
 バグ修正コスト
 11

  6. BACK END
 FRONT END
 Coding
 Unit Testing
 Coding
 Unit Testing


    UI Testing
 API Testing
 APIテストタイミング
 バグ修正コスト↓
 遅延リスク↓
 12

  7. ❖ APIテストとUIテスト
 ➢ APIテストとは
 ➢ APIテスト vs UIテスト
 ➢ APIテストタイミング


    ❖ APIテスト自動化
 ➢ UIテスト自動化の問題点
 ➢ APIテスト自動化のメリット
 ➢ APIテストで何を自動化するか
 ❖ APIテストは誰のものなのか?
 ❖ APIテストをデプロイメントパイプラインに組み込む
 ➢ デプロイメントパイプライン
 ➢ APIテスト設計・実装
 ➢ CIツールに組み込む
 
 
 Agenda
 14

  8. ❖ APIテストとUIテスト
 ➢ APIテストとは
 ➢ APIテスト vs UIテスト
 ➢ APIテストタイミング


    ❖ APIテスト自動化
 ➢ UIテスト自動化の問題点
 ➢ APIテスト自動化のメリット
 ➢ APIテストで何を自動化するか
 ❖ APIテストは誰のものなのか?
 ❖ APIテストをデプロイメントパイプラインに組み込む
 ➢ デプロイメントパイプライン
 ➢ APIテスト設計・実装
 ➢ CIツールに組み込む
 
 
 Agenda
 23

  9. ❖ APIテストとUIテスト
 ➢ APIテストとは
 ➢ APIテスト vs UIテスト
 ➢ APIテスト:スコープとタイミング


    ❖ APIテスト自動化
 ➢ UIテスト自動化の問題点
 ➢ APIテスト自動化のメリット
 ➢ APIテストで何を自動化するか
 ❖ APIテストは誰のものなのか?
 ❖ APIテストをデプロイメントパイプラインに組み込む
 ➢ デプロイメントパイプライン
 ➢ APIテスト設計・実装
 ➢ CIツールに組み込む
 
 
 Agenda
 28

  10. 成果物リポジトリ キャパシティステージ 環境設定 バイナリデプロイ スモークテスト UAT 環境設定 バイナリデプロイ スモークテスト 本番

    環境設定 バイナリデプロイ スモークテスト ソース コード コミットステージ コンパイル コミットテスト アセンブル コード分析 受け入れステージ 環境設定 バイナリデプロイ スモークテスト 受け入れテスト 環境 &アプリ 設定 環境 &アプリ 設定 開発者 コードメトリクスと テストの失敗を確認する 
 テスター 自分で デプロイ 運用 ボタン1つで リリース レポート メタデータ レポート バイナリ メタデータ バイナリ バイナリ レポート メタデータ バージョンコントロール デプロイメントパイプライン
 出典:継続的デリバリー Jez Humble (著), David Farley (著), 和智 右桂(訳), 高木 正弘 (訳)
 31

  11. 成果物リポジトリ キャパシティステージ 環境設定 バイナリデプロイ スモークテスト UAT 環境設定 バイナリデプロイ スモークテスト 本番

    環境設定 バイナリデプロイ スモークテスト ソース コード コミットステージ コンパイル コミットテスト アセンブル コード分析 受け入れステージ 環境設定 バイナリデプロイ スモークテスト 受け入れテスト 環境 &アプリ 設定 環境 &アプリ 設定 開発者 コードメトリクスと テストの失敗を確認する 
 テスター 自分で デプロイ 運用 ボタン1つで リリース レポート メタデータ レポート バイナリ メタデータ バイナリ バイナリ レポート メタデータ バージョンコントロール デプロイメントパイプライン
 出典:継続的デリバリー Jez Humble (著), David Farley (著), 和智 右桂(訳), 高木 正弘 (訳)
 32

  12. 成果物リポジトリ キャパシティステージ 環境設定 バイナリデプロイ スモークテスト UAT 環境設定 バイナリデプロイ スモークテスト 本番

    環境設定 バイナリデプロイ スモークテスト ソース コード コミットステージ コンパイル コミットテスト アセンブル コード分析 受け入れステージ 環境設定 バイナリデプロイ スモークテスト 受け入れテスト 環境 &アプリ 設定 環境 &アプリ 設定 開発者 コードメトリクスと テストの失敗を確認する 
 テスター 自分で デプロイ 運用 ボタン1つで リリース レポート メタデータ レポート バイナリ メタデータ バイナリ バイナリ レポート メタデータ バージョンコントロール デプロイメントパイプライン
 出典:継続的デリバリー Jez Humble (著), David Farley (著), 和智 右桂(訳), 高木 正弘 (訳)
 33

  13. 成果物リポジトリ キャパシティステージ 環境設定 バイナリデプロイ スモークテスト UAT 環境設定 バイナリデプロイ スモークテスト 本番

    環境設定 バイナリデプロイ スモークテスト ソース コード コミットステージ コンパイル コミットテスト アセンブル コード分析 受け入れステージ 環境設定 バイナリデプロイ スモークテスト 受け入れテスト 環境 &アプリ 設定 環境 &アプリ 設定 開発者 コードメトリクスと テストの失敗を確認する 
 テスター 自分で デプロイ 運用 ボタン1つで リリース レポート メタデータ レポート バイナリ メタデータ バイナリ バイナリ レポート メタデータ バージョンコントロール デプロイメントパイプライン
 出典:継続的デリバリー Jez Humble (著), David Farley (著), 和智 右桂(訳), 高木 正弘 (訳)
 34

  14. 成果物リポジトリ キャパシティステージ 環境設定 バイナリデプロイ スモークテスト UAT 環境設定 バイナリデプロイ スモークテスト 本番

    環境設定 バイナリデプロイ スモークテスト ソース コード コミットステージ コンパイル コミットテスト アセンブル コード分析 受け入れステージ 環境設定 バイナリデプロイ スモークテスト 受け入れテスト 環境 &アプリ 設定 環境 &アプリ 設定 開発者 コードメトリクスと テストの失敗を確認する 
 テスター 自分で デプロイ 運用 ボタン1つで リリース レポート メタデータ レポート バイナリ メタデータ バイナリ バイナリ レポート メタデータ バージョンコントロール デプロイメントパイプライン
 APIテスト 出典:継続的デリバリー Jez Humble (著), David Farley (著), 和智 右桂(訳), 高木 正弘 (訳)
 35

  15. HEADER BODY STATUS CODE 
 HEADER BODY Path
 Query
 Header

    Key
 Body Property
 パラメータ化する箇所 
 それぞれのパラメータに対し て、正常系と異常系のテスト データを抽出
 
 そのデータを駆動してテストを 実施
 テストスイート作成
 例:インタフェース観点
 37

  16. HEADER BODY HEADER BODY STATUS CODE 
 Assertion
 Assertion
 Assertion


    スキーマ検証
 テストスイート作成
 例:インタフェース観点
 38

  17. CIツールに組み込む
 CI/CDツール RakAPIt テスト対象 テストケース実行APIを呼び出す 
 テスト実行開始の通知
 テストケース実行状況を取得 
 テストケース実行状況を返却

    
 テストケース実行状況を取得 
 テストケース実行完了の通知 
 実行結果を返却
 テスト実施
 ポーリング...
 リクエスト
 レスポンス
 41

  18. ❖ APIテストとUIテスト
 ➢ APIテストとは
 ➢ APIテスト vs UIテスト
 ➢ APIテストタイミング


    ❖ APIテスト自動化
 ➢ UIテスト自動化の問題点
 ➢ APIテスト自動化のメリット
 ➢ APIテストで何を自動化するか
 ❖ APIテストは誰のものなのか?
 ❖ APIテストをデプロイメントパイプラインに組み込む
 ➢ デプロイメントパイプライン
 ➢ APIテスト設計・実装
 ➢ CIツールに組み込む
 
 
 まとめ
 47