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

“GIHOZ”を活用したWeb APIテスト設計の勘所 #GIHOZ #devsumi #de...

Kinji AKEMINE
February 28, 2022

“GIHOZ”を活用したWeb APIテスト設計の勘所 #GIHOZ #devsumi #devsumiB

Developers Summit 2022の18-B-7セッションにて発表した資料の公開版です。
https://event.shoeisha.jp/devsumi/20220217/session/3702/

Kinji AKEMINE

February 28, 2022
Tweet

More Decks by Kinji AKEMINE

Other Decks in Technology

Transcript

  1. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 35年以上にわたりソフトウェア検証で品質向上に貢献 ◼ 仕様などの要求事項が満たされているかを評価する Verification

    と、機能や性能が本来意図された用途や 目的に合っているかを評価する Validation。 当社の社名にはこの 2つのV を提供する(Service)という想いが込められています。 株式会社ベリサーブ 本社 東京都千代田区神田三崎町3-1-16 神保町北東急ビル 9階 西日本支社 大阪府大阪市中央区北浜1-8-16 大阪証券取引所ビル 19階 中部支社 愛知県名古屋市東区泉2-27-14 関電不動産高岳ビル 13階 沖縄テストセンター 沖縄県うるま市字州崎14-1 沖縄IT津梁パーク 情報通信機器検証拠点施設 宇都宮テクニカルセンター 栃木県宇都宮市宿郷2-7-3 IRビル宿郷 5階 広島テクニカルセンター 広島県広島市南区荒神町1-2 日宝荒神町ビル 2階 刈谷テクニカルセンター 愛知県刈谷市桜町1-24 JS刈谷駅ビル 2階 西新宿テクニカルセンター 東京都新宿区西新宿6-24-1 西新宿三井ビル 14階 社 名 株式会社ベリサーブ (VeriServe Corporation) 設 立 2001年7月24日 代 表 者 代表取締役社長 新堀 義之 従業員数 1,371名(2021年3月末時点 連結) 資 本 金 792百万円(2021年3月末時点) 事業内容 1. 製品検証サービス 2. セキュリティ検証サービス 3. その他サービス 子 会 社 株式会社ベリサーブ沖縄テストセンター AIQVE ONE株式会社 拠 点 右記参照
  2. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 2021年4月に株式会社ベリサーブ入社 ◼ 研究企画開発部 サービス開発課

    課長 / プロダクトマネージャー ◆ ベリサーブ内製のテスト支援プロダクト群の全体統制と普及展開に従事 ➢ 前職は大手SIerにて、全社横断技術部門にて技術開発や商用案件適用支援などに従事 ◼ 2009年~2013年:ソフトウェアテスト技術を中心に ◼ 2013年~2020年:アジャイル開発関連技術を中心に 自己紹介 2 朱峰 錦司(あけみね きんじ)
  3. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテスト技術関連の社外活動にも継続的に従事 自己紹介 3 2013年~2019年

    2016年~2017年 2021年~ WACATE 実行委員 ICST 2017 運営委員 JaSST nano お世話係 出典: https://wacate.jp/ 出典: http://aster.or.jp/conference/icst2017/ 出典: https://jasst-nano.connpass.com/
  4. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 1. ベリサーブが提供するソフトウェアテスト支援ツール 2. テスト技法とは? 3.

    Web APIのテスト設計 4. デシジョンテーブルテスト技法 5. GIHOZを活用したWeb APIのテスト設計のデモ 6. おわりに 本日のアジェンダ 6
  5. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストプロセスのさまざまな工程を支援するプロダクトを内製開発・展開中 ベリサーブが提供するソフトウェアテスト支援ツール テ ス

    ト 計 画 テ ス ト 完 了 テ ス ト 分 析 テ ス ト 設 計 テ ス ト 実 装 テ ス ト 実 行 テストのモニタリングとコントロール 業界初のテスト分析/設計支援ツール “今すぐ使える”テスト技法ツール
  6. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストプロセスのさまざまな工程を支援するプロダクトを内製開発・展開中 ベリサーブが提供するソフトウェアテスト支援ツール テ ス

    ト 計 画 テ ス ト 完 了 テ ス ト 分 析 テ ス ト 設 計 テ ス ト 実 装 テ ス ト 実 行 テストのモニタリングとコントロール テスト管理をシンプルに。快適、スケーラブルなテスト管理ツール 業界初のテスト分析/設計支援ツール “今すぐ使える”テスト技法ツール
  7. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストプロセスのさまざまな工程を支援するプロダクトを内製開発・展開中 ベリサーブが提供するソフトウェアテスト支援ツール テ ス

    ト 計 画 テ ス ト 完 了 テ ス ト 分 析 テ ス ト 設 計 テ ス ト 実 装 テ ス ト 実 行 テストのモニタリングとコントロール [開発中] 探索的テスト支援ツール テスト管理をシンプルに。快適、スケーラブルなテスト管理ツール 業界初のテスト分析/設計支援ツール “今すぐ使える”テスト技法ツール チームによる探索的テストを加速させるツール
  8. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストプロセスのさまざまな工程を支援するプロダクトを内製開発・展開中 ベリサーブが提供するソフトウェアテスト支援ツール テ ス

    ト 計 画 テ ス ト 完 了 テ ス ト 分 析 テ ス ト 設 計 テ ス ト 実 装 テ ス ト 実 行 テストのモニタリングとコントロール [開発中] 探索的テスト支援ツール テスト管理をシンプルに。快適、スケーラブルなテスト管理ツール 業界初のテスト分析/設計支援ツール “今すぐ使える”テスト技法ツール チームによる探索的テストを加速させるツール
  9. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストの際に、テストケースを作成したり選択したりするための技術の総称 ◼ 具体的な技法はさまざまなものがある ➢

    テスト技法を活用することで、なぜそのテストパターンになったのか、を説明可能になる テスト技法とは 17 これだけの テストを書きました! これだけ条件が 網羅されていれば 問題なさそう!
  10. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 例:JSTQB(ソフトウェアテストの国際資格である ”ISTQB” の日本版)による分類 テスト技法の種類

    18 テ ス ト 技 法 ブラックボックステスト技法 ホワイトボックステスト技法 経験ベースのテスト技法 同値分割法 境界値分析 デジジョンテーブルテスト 状態遷移テスト ユースケーステスト その他 ステートメントテスト デシジョンテスト その他 その他 探索的テスト エラー推測 チェックリストベースドテスト
  11. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 適切な技法を選ぶことが難しい! テスト技法を活用する際の課題 19 テ

    ス ト 技 法 ブラックボックステスト技法 ホワイトボックステスト技法 経験ベースのテスト技法 同値分割法 境界値分析 デジジョンテーブルテスト 状態遷移テスト ユースケーステスト その他 ステートメントテスト デシジョンテスト その他 その他 探索的テスト エラー推測 チェックリストベースドテスト
  12. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 適切な技法を選ぶことが難しい! テスト技法を活用する際の課題 20 テ

    ス ト 技 法 ブラックボックステスト技法 ホワイトボックステスト技法 経験ベースのテスト技法 同値分割法 境界値分析 デジジョンテーブルテスト 状態遷移テスト ユースケーステスト その他 ステートメントテスト デシジョンテスト その他 その他 探索的テスト エラー推測 チェックリストベースドテスト 本日はWeb APIのテストについて テッパンのテスト設計のやり方を サンプルを通して紹介します。
  13. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ Webサーバ上で動作し、HTTPプロトコルで実行可能なAPI ➢ サーバサイドでのマイクロサービスアーキテクチャの採用や、クライアントチャネルの多様化により、 Web

    APIの設計およびそのテストは非常に重要な技術要素となっている ◼ Web API Firstを開発の原則としている企業も増えている Web API 22 出典: https://www.commerce21.co.jp/microservices/
  14. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 Web APIのテストの特長 23 テストドライバ・ クライアント

    テスト対象の Web API HTTPリクエスト HTTPレスポンス • 汎用プログラミング言語の テストフレームワーク上に実現 • Postmanやcurlで手動実行 1テストケースは、1往復の”入り” と”出”の対とするのが良い
  15. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 技法に求められる要件 ◼ 入力と出力の対応のパターンを整理できること ◼

    入力は複数の入力パラメータを扱えること ◆ たとえば認証APIでは、「メールアドレス」と「パスワード」の2つのパラメータを扱う Web APIのテスト設計 24 デシジョンテーブルテスト技法 の適用が最適である
  16. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 (参考)テストレベル 25 要件定義 基本設計 詳細設計

    実装 コンポーネント テスト 統合テスト システムテスト 受入れテスト インタフェースを定義し、 そこに対する”入り”と”出” (とその過程)を テストすることがメイン 「開発者テスト」のメイン領域 「QAテスト」のメイン領域 テスト済のインタフェースを つなげて、さまざまな条件で 動かしてテストすることが メイン より上位テストへのシフトを意識しつつ、まずは仕様ベースの開発テストの 第一歩・基礎として、デシジョンテーブルテストの習得は有用
  17. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 入力データや入力条件の組み合わせに対する処理や出力結果をテーブルにまとめるもの ◼ 1958年頃にGeneral Electric社やSutherland社で考案され、

    1960年代にはテスト設計への応用事例が発表されている ◼ ISO 5806:1984、JIS X 0125:1986として規格化もされている ➢ 自然言語で書かれた仕様を論理的に整理する場合に利用できる ◼ このあとの例も、いきなりWeb APIではなく、まずは一般的なビジネス仕様の例をお見せします ➢ デシジョンテーブルに基づいてテストケースを作成する技法を「デシジョンテーブルテスト」と呼ぶ デシジョンテーブルとは 29
  18. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 デシジョンテーブルの様式 33 割引率の決定 1 2

    3 4 タイムサービス時間内 Y Y Y N 対象商品 Y N N - 会員 - Y N - 15%値下げ X - - - 5%値下げ - X - - 値下げ無し - - X X 表見出し部 条件記述部 条件指定部 動作記述部 動作指定部 記述部 指定部 条 件 部 動 作 部
  19. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 仕様 ◼ あるショップでタイムサービスによる割引を実施している ◼

    18時から20時までをイブニングサービスタイム、20時から22時までをナイトサービスタイムとし、 サービスタイムの対象商品は、イブニングサービスタイムには10%の割引価格、 ナイトサービスタイムには15%の割引価格となる ◼ 対象商品の割引価格は、ショップの会員・非会員ともに上記の通りとなる ◼ ショップの会員に限り、サービスタイム時間内であれば、会員特典として対象商品以外の商品も、 5%の割引価格となる デシジョンテーブルの作成例 34
  20. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 仕様 ◼ あるショップでタイムサービスによる割引を実施している ◼

    18時から20時までをイブニングサービスタイム、20時から22時までをナイトサービスタイムとし、 サービスタイムの対象商品は、イブニングサービスタイムには10%の割引価格、 ナイトサービスタイムには15%の割引価格となる ◼ 対象商品の割引価格は、ショップの会員・非会員ともに上記の通りとなる ◼ ショップの会員に限り、サービスタイム時間内であれば、会員特典として対象商品以外の商品も、 5%の割引価格となる ➢ 上記のとおり、黄色部分が条件、水色部分が動作に該当すると判断できる。 デシジョンテーブルの作成例 35
  21. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ メリット ◼ 入力データや入力条件の組み合わせを網羅的に整理できる ◼

    組み合わせに応じた動作結果を指定することで、仕様を論理的に整理できる ◼ 上手に圧縮するとテストの件数を減らすことができる ➢ デメリット ◼ 入力データや入力条件が多いと表が大きくなりがち ◼ 下手に圧縮するとテスト漏れに繋がる デシジョンテーブルのメリット・デメリット 37
  22. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 GIHOZ 39 ソフトウェア開発に関わる全ての人のテスト設計の 「作業」をゼロにします。 手軽にテストケースを作成・利用

    ✔ ✔ ✔ 目的に応じてテスト技法を選択 ソフトウェア開発の効率化に貢献 クラウド型 テスト技法 ツール は、各種テスト技法を手軽に利用できるクラウド型ツールです。 アカウント登録のみで、すぐに利用が可能です。
  23. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 基本的な使い方の流れ 41 ログインする リポジトリを 選ぶ/作る

    テスト技法を選んで テストケースを 作成する/保存する 他のユーザを リポジトリに招待する テストケースを ダウンロードする/ Excel等へコピーする アカウントを 登録する
  24. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 リポジトリを選ぶ/作る 44 ①初期状態では 「MyRepository」のみ 自動で作成されている

    ②「リポジトリ作成」を押す ③アルファベット・数字・アンダーバーで入力 ④説明は任意で入力 ⑤実際の業務で使う場合は、基本的には「非公開」を選択。 「公開」を選ぶと、URLを知っている人は テストケースを閲覧できるようになるので、選ぶときは注意
  25. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 以下の仕様のWeb APIをテスト設計しよう ◼ Twitterのようなマイクロブログアプリで、自身の過去の投稿を更新・上書きするAPI

    例題 47  入力 ➢ リクエストヘッダ • 認証時に取得した認証トークン ➢ パス変数 • 投稿ID ➢ リクエストボディ • 投稿本文  出力 ➢ レスポンスヘッダ • HTTPステータス  仕様 • トークンが不正な場合はHTTPステータス401 • 投稿した本人でない場合はHTTPステータス403 • 投稿本文が空か141文字以上の場合はHTTPステータス400 • 更新が成功した場合はHTTPステータス204
  26. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ テスト技法を活用して仕様を整理することで、仕様の不備にも気付きやすくなる 例題:仕様更新 68 

    入力 ➢ リクエストヘッダ • 認証時に取得した認証トークン ➢ パス変数 • 投稿ID ➢ リクエストボディ • 投稿本文  出力 ➢ レスポンスヘッダ • HTTPステータス  仕様 • トークンが不正な場合はHTTPステータス401 • 投稿IDが存在しない場合はHTTPステータス404 • 投稿した本人でない場合はHTTPステータス403 • 投稿本文が空か141文字以上の場合はHTTPステータス400 • 更新が成功した場合はHTTPステータス204
  27. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストの際に、テストケースを作成したり選択したりするための技術の総称 ◼ 具体的な技法はさまざまなものがある ➢

    テスト技法を活用することで、なぜそのテストパターンになったのか、を説明可能になる [再掲] テスト技法とは 72 これだけの テストを書きました! これだけ条件が 網羅されていれば 問題なさそう!
  28. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 適切な技法を選ぶことが難しい! [再掲] テスト技法を活用する際の課題 73

    テ ス ト 技 法 ブラックボックステスト技法 ホワイトボックステスト技法 経験ベースのテスト技法 同値分割法 境界値分析 デジジョンテーブルテスト 状態遷移テスト ユースケーステスト その他 ステートメントテスト デシジョンテスト その他 その他 探索的テスト エラー推測 チェックリストベースドテスト
  29. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ 技法に求められる要件 ◼ 入力と出力の対応のパターンを整理できること ◼

    入力は複数の入力パラメータを扱えること ◆ たとえば認証APIでは、「メールアドレス」と「パスワード」の2つのパラメータを扱う [再掲] Web APIのテスト設計 74 デシジョンテーブルテスト技法 の適用が最適である
  30. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 [再掲] GIHOZ 76 ソフトウェア開発に関わる全ての人のテスト設計の 「作業」をゼロにします。

    手軽にテストケースを作成・利用 ✔ ✔ ✔ 目的に応じてテスト技法を選択 ソフトウェア開発の効率化に貢献 クラウド型 テスト技法 ツール は、各種テスト技法を手軽に利用できるクラウド型ツールです。 アカウント登録のみで、すぐに利用が可能です。
  31. © 2022 VeriServe Corporation 会社名・製品名・サービス名は、各社の登録商標または商標です。 ➢ ソフトウェアテストプロセスのさまざまな工程を支援するプロダクトを内製開発・展開中 [再掲] ベリサーブが提供するソフトウェアテスト支援ツール テ

    ス ト 計 画 テ ス ト 完 了 テ ス ト 分 析 テ ス ト 設 計 テ ス ト 実 装 テ ス ト 実 行 テストのモニタリングとコントロール [開発中] 探索的テスト支援ツール テスト管理をシンプルに。快適、スケーラブルなテスト管理ツール 業界初のテスト分析/設計支援ツール “今すぐ使える”テスト技法ツール チームによる探索的テストを加速させるツール