Python, web, Algorithm 技術的なメモ

技術的なメモを書いていきます.pythonistaを目指しています.

TDDBCを終えて

TDDBCを終えての感想

今回は,旭川Python勉強会 の一環として@shuji_w6eさんと共同でTDDBCを開催しました.@shuji_w6eさんのおかげで素晴らしい勉強会にすることができました. ありがとうございました.また,開催にあたりLocal様にご支援頂いております.誠にありがとうございます.Local様のおかげで円滑に勉強会を開催することができました.

TDDBCとは

TDDBCとは

TDD Boot Camp(TDDBC) とは、テスト駆動開発(Test Driven Development)について、
座学だけでなく、実習形式で手を動かして体得することを目的とするイベントです。

TDDBC公式ホームページより引用

イベント概要

イベントは以下のように進みました.なおレビューは三回程ありました. 初めにTDD・テストに関する講演を行って頂き,TDDでペアプロを行いました.

講演で使用されたスライドはこちらをご覧下さい.

時間 内容
11:00〜12:15 TDD, ユニットテストに関する講演
12:15〜12:30 ペアプロとお題の説明
12:30〜13:30 ペア作成、昼食、自己紹介など
13:30〜15:00 演習(前半)
15:00〜15:30 レビュー①
15:30〜17:00 演習(前半)
17:00〜17:30 レビュー②
17:30〜17:50 振り返り

TDD・テスト(に関する講演)のまとめ

TDD(Test Driven Development)とはソフトウェア開発手法の1つです. TDDは次のサイクルで開発を行います.

  • はじめにテストコードを書く
  • テストが成功する必要最低限のコードを書く
  • テストに成功している状態を維持しリファクタリング

このサイクルを素早く回すのがTDDです. TDDは開発者が安心して開発を行えるようにする 開発手法であって,品質保証をするものではありません. ですが,安心してリファクタリング等,開発が行えるので 結果的に品質は向上すると思います. 

イベント終了後にTDDを実践してみて, 安心してコーディングが出来るだけでなく 仕様設計もロジックをコーディングする前にできるため 非常に開発を助けてくれると実感できました. (イベントはイベント終了後に復習し自分のものにするまで続いていますよ!)

TDD体験

今回はペアプログラミングでTDD体験をしました. お題はMarkdownパーサー作成でした.

Markdownパーサは例えばstringsを 通すと<p>strings</p>を返すようなプログラムです. 作成にあたり,まずテストコードを書き, テストを通すようにコーディングし, リファクタリングする,この3つの過程を繰り返し行いました.今回はペアプロだったので,1人のコーディング時間は5 ~ 10分くらいで,1機能を実装したら交代していました.

テストコードを書くにあたり注意する点は下記の4つのステップをなるべく1つのテスト関数の中で実装することです.

  • setup(事前準備)  事前条件や必要なデータを作成する
  • execute(実行)  対象となるメソッド・関数を呼ぶ
  • verify(検証)  期待値と実測値を比較する
  • TearDown(後処理)  例えば,テストのために作成した値の削除など

実際の例は以下のようになります.

  • MarkdownParser.pyがロジックコード
  • test_MarkdownParser.pyがテストコード

テスト実行結果

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

okとでたらテスト成功です!

テストコードではあえてハードコードして 仕様を明確にします.従ってテストコードでは 仕様を明確にするための繰り返し処理の記述,ハードコードなどは許容されています. しかし,コードが読みにくくなる場合は

class ...


    def setUp(self):
        #setup code

上記のようにsetUpでまとめるなり,繰り返し利用される コードを関数でカプセル化した方が良いと思います.

まとめ

イベントでTDDの楽しさ・重要さを肌で感じることができました. また,イベント終了後に実践することで より理解を深める事ができTDDの素晴らしさを知る事ができました. 今ではテストコードを書かないと不安でコーディングできませんwww ペアプロももの凄く楽しかったです.またペアプロしたいです!

TDDBCのおかげで効率的に開発できる手法を知る事ができ,まだまだですがTDDで開発を 行えるようになりました. TDDBCの皆様,旭川python勉強会の皆様,local様,イベントに参加して下さった 方々のおかげで素晴らしい勉強会にする事ができました. ありがとうございました! :D

おまけ

TDDBC終了後はプログラミングの本等に付属している練習問題を TDDを利用して解くと容易にTDDへの理解が深まると思います.

TDDBCの終了記念で頂いたブレスレットです

f:id:samuraiT:20140217224346j:plain