1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】Aメソッドは通るのにBメソッドで落ちる…テストデータ作成の落とし穴

1
Posted at

はじめに

ChatGPT Image 2026年6月29日 23_04_52.png

テストデータを作っていて、

「Aメソッドのテストは成功したのに、そのまま後続処理に流したらBメソッドでデータが消えてしまった」

という経験はありませんか?

私は実際の業務で、同じテーブルを複数のメソッドが利用する処理のテストケースを作成した際に、この問題に悩みました。

今回は、初学者向けに

  • なぜ途中でデータが消えるのか
  • テストデータをどう作ればよいのか
  • マトリクス表はどう考えればよいのか

を、ケーキ作りに例えながら解説します。

よくある状況

例えば、注文テーブルを利用する2つのメソッドがあるとします。

メソッドA:在庫確認を行う

確認するカラム

  • 商品ID
  • 在庫数
  • 確認フラグ

メソッドB:配送準備を行う

確認するカラム

  • 契約者ID
  • 配送区分
  • 削除フラグ

ここでやりがちなのが、

「今テストしたいのはAだから、Aで使うカラムだけ設定すればいい」

と考えてしまうことです。

しかし、そのデータがBに渡ると、Bで必要なカラムが未設定のため、データが除外されてしまう場合があります。

🍰ケーキ作りで考えてみる

少しイメージしやすくするために、ケーキ作りに例えてみます。🍰

A工程(形チェック)

確認する材料

  • 小麦粉

B工程(味チェック)

確認する材料

  • 砂糖
  • ミルク

失敗する例

A工程をテストしたいので、

  • 小麦粉あり
  • 卵あり

だけでケーキを作りました。

すると、

A工程 → 合格

になります。

しかしB工程では、

  • 砂糖なし
  • ミルクなし

なので不合格になります。

つまり、

「Aのテストデータとしては正しい」

けれど

「システム全体を通すデータとしては不十分」

の状態なのです!!

解決策

考え方はシンプルです。

今テストしたい項目以外は、すべて正常値で固定する

というルールです。

例えばAをテストしたい場合は、

小麦粉 砂糖 ミルク

を基準データとして作成します。

そのうえで、

小麦粉 砂糖 ミルク 期待結果
正常
× 異常
× 異常

のように、Aで確認したい項目だけ変化させます。

Bで利用する砂糖とミルクは常に正常値のままです。

実際のテーブルで考える

例えば以下のようなテーブルがあるとします。

ORDER_INFO
カラム名
product_id
stock_count
check_flag
contract_id
delivery_type
delete_flag

Aメソッド

if(stockCount > 0 && checkFlag.equals("1")) {
    // 処理実行
}

Bメソッド

if(contractId != null
    && deliveryType.equals("NORMAL")
    && deleteFlag.equals("0")) {

    // 配送処理
}

Aのテストケースを作る場合でも、

contract_id = "C001"
delivery_type = "NORMAL"
delete_flag = "0"

は必ず設定しておきます。

なぜなら、後続のBメソッドが参照するためです。

マトリクス表を作るときの考え方

私が意識しているのは次の3ステップです。

  1. メソッドごとに参照するカラムを書き出す
  2. 後続処理で必要なカラムも洗い出す
  3. テスト対象以外は正常値で固定する

この考え方で作成すると、

「せっかく作ったテストデータが途中で消える」

という問題をかなり防げるようになります。

おわりに

テストケース作成では、今テストしているメソッドだけを見るのではなく、その後の処理まで考えることが大切です。

私はこれをケーキ作りで考えるようにしています。

小麦粉と卵だけで形は作れても、砂糖とミルクがなければ最後の検査は通りません。

テストデータも同じです。

「主役以外の条件は正常値で固定する」

この考え方を覚えておくと、マトリクス表の作成がかなり楽になると思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?