okuzawatsの日記

Android / Kotlin / GitHub Actions Enthusiast 🤖

「単体テストの考え方 / 使い方」を読みました

目次

単体テストの考え方/使い方 (Vladimir, (2022)) を読みました。2022年末から話題になっていて、Amazonでは品切れの状態が続いていた本です。物理書店に行くと割と置いてあるみたいです。自分も年末に物理書店で購入し、興味深く読みました。

さて、この本は単体テストの質を高め、ソフトウェアに価値をもたらすための本です。

ソフトウェアに価値をもたらす単体テスト

単体テストには、ソフトウェアに価値をもたらす単体テストとそうでない単体テストがある、というのが本書の主張です。そして、ソフトウェアの成長を支え、価値をもたらす単体テストを書くためにはどうすればよいのか、ということが論じられています。

わかりやすい例でいうと、プロダクトコードをリファクタリングした時に(壊れるべきでないのに)壊れてしまうテストは、価値が低いです。本書では、こういったテストをリファクタリングに対する耐性がないテストであるとし、改善が必要であるということを論じています。

単体テストとアーキテクチャ

また本書では、ソフトウェアのアーキテクチャにも論が及びます。単体テストを扱った書籍で何故アーキテクチャの話をするのでしょうか?それは、単体テストの質を向上するためには、プロダクトコードのアーキテクチャを改善しなければならないためです。

こちらもわかりやすい例をあげると、「Humble Object」の話に触れられています。これはテストを書きにくい箇所を質素(Humble)にし、テストを書きやすい部分を抜き出してテストを書きにくい箇所を包み込むようにしていく、という考え方です(いろいろな本に書かれています)。

また、特に強い印象を受けたのは、ヘキサゴナルアーキテクチャの一種として紹介された、関数型アーキテクチャという考え方です。これはアーキテクチャの中心を関数型で構成し(Functional Core)、その外側にMutable Shellを置くというものです。常に関数型アーキテクチャを採用することが正解というわけではありませんが、考え方としてはとても興味深いと思いました。

モック

また、モック主義者で触れたように、モックの使い方もひとつの論点となっています。記事にも書きましたが、このあたりの考え方についてはアップデートして行きたいと思っています。

Reference

  1. Vladimir Khorikov, 須田智之(訳), (2022), 単体テストの考え方/使い方, マイナビ出版

#Test #Reading

書いている人 😎

profile

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。

👉 もっと詳しく

著書 ✍

Android 依存性注入 ヒッチハイク・ガイド🧳

Androidアプリでの依存性注入(Dependency Injection)に入門するためのガイダンスです。依存性注入の概念やメリットを理解し、Dagger Hiltを用いてAndroidアプリに適用する方法を解説しています。

販売サイトへ🏃

ソフトウェアデザイン 2023年6月号📚

特集「クリーンアーキテクチャとは何か?」の第5章「モバイルアプリ開発における実践」を執筆しました。

販売サイトへ🏃

Android クリーンアーキテクチャ ヒッチハイク・ガイド🧳

Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。

販売サイトへ🏃

Android ユニットテスト ヒッチハイク・ガイド🧳

Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。

販売サイトへ🏃

Android MVVMアーキテクチャ入門🛠

Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。

販売サイトへ🏃

関連記事 👀

お問い合わせ✉️

Androidアプリ開発、特にレガシープロジェクトに関するご相談はこちらまで📨

お名前

メールアドレス

お問い合わせ内容