ホーム DoRuby テストデータ作成時の注意点

テストデータ作成時の注意点

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

テストデータで決定する数値は無作為に決定していると、予期せぬ矛盾が発生する事がある。

その注意点を記述する。

 問題点

例えば商品のテストデータを作成する場合を考える。

商品の値段は当然自然数である。

これは税抜価格であっても税込価格であっても当てはまるが、1点異なる部分がある。

税抜価格は単純に決定された値であり、この値を導いている値はないのに対して、税込価格は税抜価格から導かれて決定する。

つまり税込価格は税抜価格の関数になっている。

この関数をfとした場合、f(x)は

f(x) = floor(1.08x)

と表現できる。このfはN→Nの写像になっており、下記の様にF(y)を定義すると、Fはfの逆関数になる

F(y) = ceil(y/1.08)

テストデータとして、税込価格を決定する場合、ランダムに自然数が発生する様なプログラムでは、例えば1700という値になる可能性がある。これを関数Fによって

F(1700) = 1575

と税抜価格を算出したとすると、実際のf(1575)は1701の為、誤差が発生する。

 原因

この誤差はfの逆関数が存在する事と矛盾する様に見えるが、そうではなく、この写像fがN→Nにおいて全射でない点が問題である。

このfの定義域はN全体であるが、値域はN全体ではなく、1700というのが値域外の数値である事が原因である。

(つまり f(x) = 1700 を満足するxは存在しない)

 結論

テストデータを作成する際は、それを導いている値があるかないかを意識する必要がある。

導いている値がある場合、その関数の写像において全射であるかを考え、

全射でない場合は、値域外の数値にならない様、データを工夫する必要がある。

記事を共有

最近人気な記事