書いたこと
フロントエンドのテスト自動化を導入して失敗したことと次はこうしようという改善点
背景
昨年、フロントエンドの単体テストとフロントバックを通したEtoEテストの自動化をプロジェクトで取り組みました。実際に開発するうちに時間的余裕がなく自動化テストに対応できなくなりました。
失敗したこと
- プロジェクトメンバーの技術レベルを把握できていなかった
- テスト作成に必要な時間の指標と見積もりが出せていなかった
- テストを前提とした設計になっていなかった
失敗したこと詳細と改善
プロジェクトメンバーの技術レベルを把握できていなかった
開発時にプロジェクトメンバーから「テストライブラリの使い方やモックの方法を調べるのに時間がかかった。」や「調べてもわからないから教えて」という声が出ていました。実際にテストを作成するために必要な時間が2倍以上になっていたのでテストが重みとなり最終的にはやめてしまいました。ライブラリはjestとtestcafeという一般的なものを使用していましたが、一番初めにツールの使い方と勉強会、モックの共通化をしておくことで改善できたのかと思います。
テスト作成に必要な時間の指標と見積もりが出せていなかった
見積もり時にテストを作成した人は自分以外いなかったため、テスト作成に必要な時間が自分ベースの時間にになっていました。そのため、見積もり時にテスト時間を少なく見積もってしまい他のメンバーがテスト作成する時間を確保できませんでした。
改善としては、要素(axiosのモックがあると+?秒、cognitoのモックがあると+?秒など)ごとに必要時間を出して積み上げ式で計算したり、他の人に実際にテストを作成してもらって自分以外の時間を出すなどをすれば改善できたかと思います。
テストを前提とした設計になっていなかった
既存のプロジェクトに後からテスト自動化を導入したため、テストを前提としたつくりになっていませんでした。具体的にはhtml部分にテスト用のidやclassが指定されていないため、html要素を変更するたびに不要なテストの修正も必要になっていました。
改善としては、テストを前提とした設計に随時変更していくと良かったと思います。具体的にはhtml部分にidを振ったり、各機能ごとにファイルを分けることで機能ごとにモック化を行いやすいようにするなどです。
終わりに
テスト自動化はメンバーやソースがプロジェクトごとに違うため、プロジェクトごとに考える対応する必要があります。思い込みで自分以上のスピードで作業できるだろうと考えていたら、そうでもなかったということがわかりました。思い込みを排してちゃんとプロジェクトの特性を把握から始めることの大切さを知りました。