魂の生命の領域

AWS とか Python とか本読んだ感想とか哲学とか書きます

テスト駆動開発読むぞオイ

概要

導入

テスト駆動開発でやろう、という開発プロジェクト(こういう名前のプロジェクトではないです)に参加していて テスト駆動Python をベースに unit テストや function テストを書いたりしていたのですが、結局現時点までテストを先に書くということができていないという実情があります(ほかの人はやってる)。 あと、テスト駆動開発というとどうやら意味が複数あるみたいで、

  • テストを先にガッツリ書いてそれ単体でレビューしたりするフェーズがあってその次のフェーズにテスト対象のコードを書く?というパターン
  • 先に単純なテストを書いてそれを満たすコードを書いてテストの詳細を詰めてそれに合わせてコードの詳細を詰めて…を繰り返すパターン

があるみたいで、「正直よくわからん」となっていました。

そんなわけでちゃんと自分で聖典を読んでテスト駆動が何たるかを学ぼうと思い至りました。 ちなみにこの記事は本を読む前に枠だけ作ってます。 ブログの書き方もテスト駆動を意識してみたというわけです。 単体テストよろしく各章ごとに先に目次だけでも作ろうかと思いましたが 30 章ぐらいあるので諦めました。 でも溜め込むと面倒なので小出しにしていきたい。

もう少し真面目に読む

…と、上に書いたことが本を購入してちょっとしたあとぐらいに書いた内容です。

このテスト駆動開発という本ですが、序盤は Java を想定して書かれています。 新人研修を受けた2年前(もうそんなに経ってるのか)は Java をやっていましたので雰囲気としては理解できるのですが、 IDE も込みで自分の環境に入れたくないので目で追うだけにしていました。 Step by Step な書き方なので目で追っていてもちゃんと読める本ですからね。ありがたいことです。 とは言いましてもちゃんと手を動かして読んだ方が身につくものも違うと思ったので、私が一番親しんでいる Python で翻訳しながら読み進めていくことにしました。

そして実をいうと Python はそれなりに得意なつもりなのですが、ちゃんとクラスを定義して云々という書き方をやったことがないのですよね。 というわけで、テスト駆動開発を学ぶ & Pythonオブジェクト指向ぽく書く という二つの目的が大いなる目的となります。

github.com

ちゃんとリポジトリも作って晒しています。 チャプターが細かく設定されているのでその単位で commit していく所存です。 仕事で GitHub は割と使っているのですがオープンソース開発をやっているわけでもないので、外部からは草が見えない状態だったのですよね。 つまりそれだけの理由で public リポジトリにしています。

ちなみに pytest について詳しく書かれた テスト駆動 Python という本を買った割りに標準ライブラリの unittest を使って書いています。 もう少し慣れたら…ね…。 pytest 版にできたらいいな、なんつって…

先ほども触れたようにチャプターの設定が細かいので頻繁に commit することができそうで、平日でもちょっとした隙間時間に取り組めそう & 草も割と容易に生やせそうです。

頑張っていきましょー。

追記