ソフトウェア開発者の日常

こだわりなく書きたいことを書いていきます。

デバッグ用のログの出力と処理速度を天秤にかける

ロジックを新たに作成し、一見正しく動作していました。
結合テストをすると、処理結果のデータが正しくなく、動作が正しくありません。
デバッグ用のログ出力をどんどん追加して何度も試していけば、どこが正しくないのかわかります。
何度も試したいところですが、データ数が多いため、むやみやたらに追加すると、ログの出力が負荷となって結合テストを1度行うだけでも処理に時間がかかるようになります。

一点のデータに対してデバッグ用のログを出力

処理結果のデータにはシステムの処理上、一意の値のインデックスが割り振ってあります。
デバッグ用のログから、処理結果のデータが正しくなくなっているインデックスがわかります。

一意の値のインデックスがわかるので、一意の値のインデックスが利用でる箇所では、一意の値のインデックスの場合だけ、デバッグ用のログ出力を行うようにプログラムを改修します。
一意の値のインデックスが利用できない箇所では、正しくないデータがとりうる値を用いて判定して、デバッグ用のログ出力を行うようにプログラムを改修します。

こうしてデバッグ用のログ出力追加とテストを繰り返して、正しくない箇所を特定して修正ができました。

プログラミング
unsplash-logoJohn Schnobrich

デバッグ用のログを追加する箇所が的確であれば、すぐに正しくない箇所を特定して修正ができます。
どこが影響しているんだろうと、どこにデバッグ用のログを追加すればいいかと悩む状態だと、時間がかかります。
結合テストをする段階での修正作業は、完了まで手間がかかります。