最近、私は「強化」するために仕事でビジネスクリティカルなプロジェクトを継承しました。このコードは、過去5年間にわたって作成され、多くの人に渡されてきました。もはや会社にいないコンサルタントとフルタイムの従業員は、この非常に繊細で非常に機密性の高いアプリケーションを破壊しました。私たちのほとんどは、レガシーコードまたはこのタイプのプロジェクトに対処する必要があります...開発者であることの一部です...しかし...
ゼロユニットとゼロシステムテストがあります。ロジックは、ストアドプロシージャ、ビュー(はい、ビューと言いました)、およびコードの間で混ざり合っています(理由もなく複製されることもあります)。ドキュメンテーション?そうだね。怖いです。はい、最小限の「微調整」またはリファクタリングを行うことは非常に神聖です。1つの小さな事故、そして私の雇用主にとって大きな収入の損失と潜在的な法的問題があるでしょう。
それで、何かアドバイスはありますか?私の最初の考えは、既存のコードに対してアサーション/単体テストを書き始めることです。ただし、ストアドプロシージャには多くのロジックが組み込まれているため、これまでのところしかできません。(ストアドプロシージャをテストすることは可能ですが、ソースコードロジックの単体テストと比較すると、歴史的にはるかに困難です)。別のまたは追加のアプローチは、アプリケーションが関数を実行する前後のデータベースの状態を比較し、コードを変更してから、データベースの状態を比較することです。