本文へスキップ
← Posts

現場のリアル物語①

2026-02-04

2012年の仕様書と失われたエビデンスたち

現場のリアル物語①: 2012年の仕様書と失われたエビデンスたち

私は現場でのポジションはテスト担当。具体的には、現在稼働しているETL1のバージョンアップに伴う単体テスト2
「FTP3で置く → SQL4流す → 実行 → 照合 → スクショ」で終わる……はずだった。

でも現実は、仕様書は風化し、エビデンスは消え、定義はズレ、正解が見えない。
その結果、テストは「確認」じゃなくて「推理」になり、最後は「本番っぽいもの」に近づけながら祈ることになる。

Note

作業は簡単なはずなのに、なぜか一番時間を吸われる。これ、毎回だ。


最初のミッション「単体テストを完了せよ」

依頼内容はシンプルだ。

  • サーバにFTPクライアント(GUI5)でファイルを置く
  • DBにSQLを投入する(SQL自体は書くけど、投入はGUI)
  • ETLを実行する
  • 出力を照らし合わせる
  • スクショを撮る
  • 仕様書を直す
  • エビデンスを揃える

やることだけ並べると、優しい世界に見える。

Note

ここで「余裕だな」と思った私。ここでフラグが立っているという伏線です。


環境に入った瞬間、空気が変わる

開始して最初に当たる壁がこれだった。

  • 仕様書が2012年ぐらいに作られた「古の仕様書」(今と動作違うやん…)
  • テスト内容によっては、肝心のエビデンス自体が存在しない(正解どれ?)
  • いつかの日に仕様が勝手に変わっていて、過去のテストデータが使えない(全部作るん?)
  • テーブル定義がどこかで変わっていて、環境によって定義が違う(データ壊れた?不具合?)

ここから先は、単体テストという名の「探索」になる。絶望。

Note

仕様書が古いのはまだいい。エビデンスがないのは闇。正解がないのは終わり。


敵はバグじゃない。「真実がない」

テストデータを通すと、当然のように違う結果が出る。
でも、それが何を意味しているのか分からない。

  • バージョンアップのせいで発生した不具合なのか
  • データが古くなって意図せず失敗するのか
  • 今までのルール自体を変える仕様変更なのか
  • 過去に“わざと変えた”テーブル定義変更の影響なのか

ここで、さらにややこしくなる要因が重なる。

  • 設計書が既にどこかへ行ってしまい、何が正しいか判断できない
  • 本番に合わせれば良さそうなのに、本番環境を直接確認する方法がない
  • 本番環境を触れるクライアント担当者が忙しくて捕まらない
  • 過去の仕様書やテストの内容が雑で、そもそも何が正しかったのかさえ曖昧

この世界のボスは“不具合”じゃない。参照点の喪失だ。

Note

推理ゲームのくせに、ヒントもログもない。いわゆる無理ゲー。


仕様書のテストが適当すぎて、心が折れる

テスト項目が雑だと、「何を証明したいのか」が曖昧になる。
曖昧なまま照合して、差分が出た瞬間にこうなる。

  • 過去と比較して「違う」ことだけは分かる
  • でも「どちらが正しいか」が分からない
  • だから「直すべきか」「仕様として扱うべきか」が決められない
  • 結果として、手が止まり、時間だけが溶ける

Note

ここで一番削られるのは時間じゃなくて気力。誰やねん、昔テストしたのは。


生存戦略「条件を先に整える」

だから最近は、いきなり過去のテストデータを通さない。
普通は最初に通して「変わらないこと」を確認して良いはずなんだけど、ここは土台が壊れてる。

先に“参照点”を固定する。いわば、テスト開始前のチュートリアル。

  1. 古の仕様書を眺める(いまの前提条件を把握する)
  2. 現行の設計でどうなる予定かを確認する(期待値の再構築)
  3. テーブル定義と合致しているか確認する(参照点を作る)
  4. そこまでやってから、恐る恐るテストを進める

そして最後に、祈る。全力で。

Note

祈りたくない。でも正解が消えると、人間は祈るしかなくなる。


終章:クリア条件を、少しだけ現代に寄せる

結論はこれ。

やることが簡単でも、正しさの基準が壊れていたら難しい。
必要なのは根性じゃなくて、「今の正」を作り直す作業だ。

  • 仕様書(風化しているなら、更新して“今の正”に寄せる)
  • 定義(テーブル定義を参照点として固定する)
  • テストデータ(使えないなら作り直し、由来と前提を残す)
  • エビデンス(欠損があるなら欠損として扱い、代替根拠を残す)

真実がないなら、真実を作るしかない。
この世界は簡単じゃない。でも攻略本は自分で作れる。

…いや、そもそもこんな乱雑な環境、アカンやろ!!ww

Note

いつか、祈らなくて済むテストがしたい。まずは正解を取り戻す。


用語メモ(脚注)

Footnotes

  1. ETL: Extract / Transform / Load。各種データやファイルを取り込み、変換し、別の形式で出力する処理(またはその仕組み)。

  2. 単体テスト: 機能やモジュール単位で、期待どおりに動くか確認するテスト。ここでは「ETLの機能単位」を対象にしている。

  3. FTP: サーバにファイルを転送するためのプロトコル(仕組み)。最近はSFTP/FTPSなどの“暗号化あり”が選ばれやすい。

  4. SQL: データベースを操作する言語。登録・更新・検索などを行う。

  5. GUI: 画面をポチポチ操作できるUI。いわゆる“黒い画面(CUI)”の対義語として使われることが多い。