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

事業継続を支える自動テストの考え方(レバレジーズ様勉強会版)

Autify
March 25, 2025
17

 事業継続を支える自動テストの考え方(レバレジーズ様勉強会版)

レバレジーズ様社内勉強会で利用した資料です。

Autify

March 25, 2025
Tweet

Transcript

  1. タイトルタイトルタイトルタイトルタ イトルタイトルタイトル 小見出し小見出し小見出し小見出し 末村 拓也 (Takuya Suemura) Autify, Inc. (2019

    -) Quality Evangelist • Ex. QA Manager • Ex. Senior Technical Support Engineer • Ex. Test Automation Engineer OPENLOGI (2017 - 2019) QA Engineer それより前はPHP開発をしていたり 倉庫でフォークリフトに載ったりしていました ソフトウェア品質や自動テストのあるべき姿を 業界の皆さんと一緒に考えるのが仕事です
  2. 長く続いたソフトウェアに起こること エンジニア視点 • コードから目的を読み取れない • 機能がどう動くのが正しいのか 分からない • 保守性を高める取り組みが 後回しにされる

    • 保守性を高めたら壊れた 事業視点 • 開発がだんだん遅くなる • 開発者に仕様を聞いても返事がない • え、またリファクタリングしてんの?
  3. • sum(a, b) 関数に 1, 2 を与えると、関数は 3 を出力する •

    ログインフォームにメールアドレスとパスワードを入力すると、 サーバーはセッションIDを返し、マイページへリダイレクトする プロバイダーとコンシューマーのやりとりを具体的に記述する テストはふるまいの具体例
  4. • プロバイダーの ふるまいに依存したコード が自動テスト ◦ プロバイダーのふるまいが変わると テストコードは動かなくなる • 自動テストは多くの場合 コンシューマーのふるまいの具体例

    として記述される • プロバイダー実装だけで契約は守れない 自動テスト実装で契約を守り続ける 自動テストは契約を守り続けるための技術
  5. 契約の種類によって実施するテストは異なる 契約 プロバイダー コンシューマー テスト ECサイトの ユーザージャーニー アプリケーション エンドユーザー UIを用いた

    シナリオテスト 連携する倉庫システ ムのユースケース アプリケーション 倉庫管理システム APIを用いた シナリオテスト Web API仕様 Web API 外部システム API機能テスト アプリケーション ルーターの仕様 REST エンドポイント Webクライアント (ブラウザー) 結合テスト mail() 関数の仕様 mail() 関数 他の様々な関数 単体テスト
  6. テストコードは契約を具体的に説明できる ログインす る カートに 入れる カートを 編集する 購入を確 定 支払う

    商品検索 発送 アプリケーションのコードでユースケースは表現できないが、 テストコードでは表現できる
  7. 良いユーザーストーリーの特徴 INVEST • Independent • Negotiable • Valuable • Estimable

    • Small • Testable 機能を考えるときに「どうテストするか」も一緒に考える テスト可能なビジネスルール
  8. 再掲: 長く続いたソフトウェアに起こること エンジニア視点 • コードから目的を読み取れない • 機能がどう動くのが正しいのか 分からない • 保守性を高める取り組みが

    後回しにされる • 保守性を高めたら壊れた 事業視点 • 開発がだんだん遅くなる • 開発者に仕様を聞いても返事がない • え、またリファクタリングしてんの? • リファクタリングしたら壊れたの? • メンテできないから作り直すの? • いつ新機能できるの?