Python

pythonによるTDD実践(1):pythonによるテスト駆動開発入門

開発とテスト

システム開発において、実装した機能がしっかり動作することを保証する必要があります。自動販売機を例にとれば、お金を入れてボタンを押せば商品が出てくる、お金が不十分ならそれを通知する、お釣りを返却する、といったように確認すべき項目があります。これらを確認するテストには大きく分けて二つの種類があります:

  • 自動テスト
  • 手動テスト

手動テストは、作った機能が正しく動いているか人手で確認する行為です。一方、自動テストではテスト用のプログラムを実行すれば、正しさを自動でテストしてくれるものになります。どちらも重要なテストですが、今回は開発時に用いる自動テストに焦点を当てて開発したいと思います。

テスト駆動開発

ここでは、テスト駆動開発(TDD)という考え方について解説します。テスト駆動開発では一般的に以下の手順で機能の開発をおこないます:

  • テストを書く
  • テストを実行、テストが失敗することを確認する
  • 機能の実装を進める
  • テストが成功することを確認する
  • コードをリファクタリングする

TDDの特徴的な点として、テストを最初に書く点が挙げられます。まずは実装したい機能の仕様からテストを作ります。次に、このテストを実行します。当然、機能は未実装なので、テストは失敗します(=テストが適切に失敗していることを確認しています)。次に、実際に機能を実装してテストが通ることを確認します。これで機能の実装自体は完了しています。保守性・可読性の良いコードを維持するために、最後にコードのリファクタリングを行います。これらのステップにより、動くことが保証され、さらにリファクタリングにより整理されたコードを書く(動く綺麗なコード)を書くことが目標となります。

次回以降について

次回以降は、pythonを用いたTDDの実践を解説したいと思います。

D.S S.O
データサイエンティストのS.Oです。