🙄
単体テスト自動化について独り言
技術的なことはなく、単体テストについてのただの独り言です。
ここ最近はフロント言語だったり、cloudだったりやりたいことが多すぎるのですが、
CI/CDについてからの単体テスト自動化(UnitTest)について考える機会が増えたので備忘録的に残したいと思います。
手動・自動どちらで単体テストを実施するにしても、下記作業は一般的に行うものだと思いますが、しかし私は納期に追われて蔑ろにすることが多かったです・・・。
- 単体テスト設計
- データ設計
- 単体テスト実装
- 単体テスト実施
(単体テストってテスト設計しないのかな・・・情報求)
考え始めたきっかけとしては、単体テストコードの勉強をしようと思い、過去案件のソースコードを見直したことが背景にあります。
見直しのさなか、いくつかの壁にぶち当たりましたが、一言でいうと、複雑。
少し例を挙げると・・・。
- データ取得ロジックは、エンジニアごとにバラバラ
- 似たような関数もチラホラ(似てるけど微妙に再利用できない)
- 共通化や部品化してないので1関数が超大作
→1ファイルあたりの情報量が多い
など
試しに1日頑張ってみたのですが、期間的な理由で既存ソースに対してテストコードを書くのは結果断念しました。
テストコードを適用するにしても、先に挙げた課題が割と足を引っ張って、作業コストがかかりすぎてしまう。
なので、単体テストの食わず嫌いを治すために・・・。
共通化・シンプル設計/実装(可読性) の重要性を感じました。
- テーブル設計もシンプル
→データ設計・テストデータの実装のスピードUP↑ - 共通化+テストコード
→再利用性向上し結果実装コストDOWN↓ - シンプル設計(メソッドの細分化)
→実装コストDOWN↓、テスト設計コストDOWN↓ - ソースコードレビュー+リファクタリング
→複雑性の排除で品質UP↑
そして、モチベーションアップ!!
・・・は別問題として(笑)
私が現在のスキル・経験から思うところをしては以上になります。
テスト時代から思ってた網羅性だのカバレッジだのに焦点を当てたアウトプットしたいですね。
CI/CDの関連知識も、実は別途記事書いたんですけど、もう少し整理しないとなという段階。
Discussion