どうもこんにちは!
サバ缶(@tech_begin)です。
あなたの現場では、テストコードを書いていますか?
単純に「実装+テストコード」で手間が2倍になるし、レビューもあるし……。
時間が掛かるあまり、いい加減になりがちの現場が多いです。
少なくとも私が経験した現場では、テストコードを書いていませんでした。
なので私自身、業務でテストコードを書いたことがありません😢
今回は、学習も含めてテストコードを書く意義についてまとめてみました!
テストコード とは?
一言で言うと、自分の書いたコードが、想定通りに動いているか確認するためのもの です。
プログラミングできても、それが想定通りに動いていなければ、やってる意味がありません。
例えば「このAメソッドは、引数の2つの値を足して返す」という機能を作ったとします。
であれば、「1と2を渡したら3で返ってくる」ことを確認するのがテストコードとなります。
主に単体テスト(メソッド単位)で使われています。
テストコードのメリット
以下のようなことが挙げられます。
- 開発者の意図が概ね掴める
- ある機能の想定している動きを元にテストコードが書かれるため、仕様書代わりになるなります。
- 上で挙げた例のように、足し算する機能なんだな、という風に。
- 対応確認がすぐできる
- 不具合対応をしたら、テストコードを実行して対応の確認が行えます。
- 不具合再現がすぐできる
- ある条件下で不具合が起きる場合、その値に置き換えてテストコードを実行すると再現できます!
プロジェクトメンバーの流動性が高い、継続的に保守していくプロジェクトであれば取り入れたいところです。
エクセル仕様書をたくさん管理するようなところに、無駄なリソースを割きたくないですよね……。
エクセルのテスト仕様書……。
根深いです。
テストコードのデメリット
以下のようなことが挙げられます。
- 継続的なメンテナンスが必要
- 仕様変更があった際に、そのままにしておくとゴミコードになってしまいます。
- テストコードを書くことを決めておくなどプロジェクトルールとしていないと、メンテナンスし続けるのは難しそうです。
- コスト(時間)がかかる
- コードを書き、さらにテストコードを書くので倍近くの時間がかかることになります。
- 品質担保のためとはいえ、時間がかかるのはネックです。
時間をかけて品質を上げていくか、最低限の品質は保ちつつスピード感を重視していくかは、判断の悩みの種になります。
ざっくりまとめ
テストコードは、自分が書いたコードが想定通りに動いているか確認するためのもの。
メリットは、仕様書代わりになる!確認する時が楽!
デメリットは、単純にコード書く時間が倍になる!
クライアントが品質を担保して欲しい場合は、
工数と見積金額が必然的に上がります。
次にオススメ
以下の記事では、Androidに焦点を当てて深掘りしています!
ぜひご一読ください😊