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

書籍「テスト駆動」が 教えてくれること 教えてくれないこと 知っておくべきこと

kotauchisunsun
January 24, 2025
77

書籍「テスト駆動」が 教えてくれること 教えてくれないこと 知っておくべきこと

Nextbeat Tech Bar:第二回ソフトウェアテストについて考える会
https://nextbeat.connpass.com/event/339286/

kotauchisunsun

January 24, 2025
Tweet

More Decks by kotauchisunsun

Transcript

  1. 前職でのプロダクト保守運用の辛さ • 日々更新されるセキュリティパッチ • セキュリティアップデートするたびに壊れるプロダクト • 期日までに間に合わなかったら責任者に謝りに行く日々 • 終わったと思ったら始まるセキュリティアップデート •

    新機能を追加したくても作りこみにくいコードベース • 機能を追加すると増える手動テストのケース プログラムが直しにくい。 手動テストの工数が重くて辛い。 機能が多くなればテスト工数が重くなる。
  2. テスト駆動とは何か 実装 テスト 実装 テスト ③テストコードを書く ④テストが合格するように実装 ⑤必要であればリファクタリングする テストコードのみで テストは失敗(RED)

    テストは合格だが コードが汚い(GREEN) テストが合格し コードがきれい (Refactor) 自動テストをハーネス (安全装置)にしながら、コードをきれいに実装する技術 ①網羅したいテストケースをリスト化する ②テストケースを1つ選ぶ ⑥テストケースがなくなるまで②~⑤を繰り返す テスト
  3. 自動テストの分類 分類 スコープ 説明 単体テスト 個々の関数やクラス オブジェクトは正しく振舞っているか? また,オブジェクトは扱いやすいか? 結合テスト モジュール間の連携部分

    私たちが変更できないコード (ORMやフレームワーク) に対して,書いたコードが機能するか? 受け入れテスト (E2Eテスト) システム全体 システム全体が機能するか? ソフトウェア開発業務の実務としては結合テストとE2Eテストの書き方も必要 書籍『テスト駆動』の取り扱い領域
  4. テスト駆動開発と実践テスト駆動開発の適用領域の整理 ソフトウェアの種類 テストの分類 書籍『テスト駆動開発』 書籍『実践テスト駆動開発』 * 単体テスト 〇 〇 デスクトップアプリ

    結合テスト × 〇 E2Eテスト × 〇 モバイルアプリ 結合テスト × × E2Eテスト × × Webフロントエンド 結合テスト × × E2Eテスト × × REST API 結合テスト × × E2Eテスト × × 網羅されている領域は極わずか
  5. 結合テスト・E2Eテストの困難さ 単体テスト 結合テスト E2Eテスト 結合テスト E2Eテスト 結合テスト E2Eテスト REST API

    Webフロントエンド モバイルアプリ フレームワークに依存しないので、 スキルが分野に依存しない • Docker • ミドルウェアの扱い • ネットワーク • ブラウザの取り扱い • スナップショットテスト • VRT • 実機orエミュレータ • テスト端末へのインストール • 証明書の取り扱い 分野により結合テスト・E2Eテストに要求されるテスト技術が違う
  6. テスト駆動からプロダクトでの実践までの道 単体テスト 単体テスト 結合テスト E2Eテスト 単体テスト 結合テスト E2Eテスト ①テスト駆動開発で  単体テストによる

     テスト駆動を学ぶ ②実践テスト駆動開発で  デスクトップアプリに対し、  結合テストとE2Eテストの  テスト駆動手法を学ぶ ③プロダクトの  ソフトウェア領域の  結合テストとE2Eテストの  自動テストの手法を学ぶ テスト駆動の学習 プロダクトへの適用 アプリへの”適用例”の学習 3ステップを完了することでプロダクトでテスト駆動が実践可能となる
  7. 結合テスト・E2Eテストの困難性に対する執筆 ~BE~ • Go言語 • gorilla/mux • MySQL • Docker

    • Docker Compose • GithubActions サーバー構成を例にした E2Eテストの自動テストの構成の執筆 https://techbookfest.org/product/5060368671965184?productVariantID=4792676413079552 サーバーサイドの自動テスト環境に関して実 例を用いて説明した書籍は珍しい(はず)