某B社 / フリーランス(フルリモート・フルタイム)
既存システムのテストコード実装
【大規模システムの EOL 対応に向けた品質担保】 - Amazon Linux 2 の EOL 対応プロジェクトに、テストコードの実装担当として参画。 - バージョンアップ(Ruby 2.5, Rails 4.2 → Ruby 2.7, Rails 5.2)に向けた準備です。 - 2026.04 本番環境のバージョンアップを達成しました🎉(次の EOL が目の前ですが) 【開発環境】 - Ruby on Rails, RSpec, VSCode, GitHub Copilot Chat - GitHub Actions, GitHub Copilot - Docker Compose によるマルチコンテナ構成 - Delayed Job, ActiveRecord::Store, AASM, RubyXL, Sorcery - jBuilder(Presenter 層不在につき結構な頑張り屋さんに) 【テスト対象の概要】 - 460 Files 以上、実効行数: 33,000 Lines 以上 - 形態素解析エンジン、生成 AI との連携を含む、密結合で複雑なビジネスロジック - 数千行超え(最大 5,000 行以上)のコード群で、ファイル I/O とシェルコマンド実行が多め - テストを書いたことで初めて明るみになったバグとデッドコードが多数 - ソースコード中のコメント文(解説文)やドキュメント類が皆無 以下、実績です。 【テストカバレッジ(C0、C1)の劇的向上】 - 参画時 10% 台だった命令網羅率(C0)を、ほぼ単独で 91% 以上、分岐網羅率(C1)を 76% 以上まで引き上げました(examples 計 8,800 弱 )。 - テストの実装過程で、ドキュメント化されていないエッジケースや未知の不具合を発見しました。それらをテストケースで表現すると共に 30 件以上の bug issues を起票しており、それらの内容を共有して緊急性の判断をクライアントに委ねつつ進めております。 【自走力を発揮】 ドキュメント類がない状況下において、コードからビジネスロジックを読み解き、クライアントへの仕様確認(質問)をほぼゼロで遂行しております。 既存実装を正として、テストコードのみで「あるべき挙動」を定義し、テストコードに仕様を落とし込んでおります。 【プロジェクトの安全性を最優先した戦略を提案】 - 初期段階で SimpleCov を導入して計測環境を整備しました。 - Controller Spec に代わり Request Spec を提案し採用されました。 - 現行の挙動を維持することを厳守するべきと考え、「テスト実装中は、どんなに軽微でも元コードを修正しない」という方針を提案し「鉄の掟」として徹底。不確実性を排除し、プロジェクトの安定稼働を死守しました(元コードも修正してしまうと正しさの所在が解らなくなり、収拾がつかなくなることが予想できたため)。 【データに基づく意思決定のサポート】 肌感ではなく具体的な数値を伴った進捗率(%)を日次で報告することに加え、実績値(Actual)に基づいた着地予測(Forecast)を提示。物理的なリミットとリスクを可視化することで、クライアントが優先順位を判断するためのお膳立てを並行的に行いました。 【補足】 - ログイン認証やテスト実行で書き出されるファイルのクリーンアップなど、テストに必要な共通処理を整備しました。 - CI でのテスト並列実行にて、動的パスのファイル I/O がフレーキーになる問題がありましたが、モックを駆使することでクリアしました。 - レビュー対象が 600 行を超えない範囲で PR を分割しつつ進めました。また、ベストプラクティス(テスト対象と spec は一対)に反しますが、保守性を鑑みて "神 class" 達の spec をファイル分割して進めました。 - バージョンアップに伴う修正(廃止メソッド対応など)と手動による動作確認は、クライアントのリソースでご対応頂きました。