最近試験データを大量につくることが多い。
試験データを作成する際にどんな試験を実施するかをイメージして試験データを作るとより良いアプリやシステムが作れるぞ。
ってことをこの記事では書きます。
※この記事では試験する際にどんなデータを用意したらよいか?を助けるものになります。
試験データを考える
私が試験データで考えること2つ
- データの優位性
- データのカーディナリティ
です。 データの優位性?カーディナリティ? まずはこの2つを説明しよう。
データの優位性
データの優位性ってなに?
私が思うデータの優位性というのは、 「人が見て、何のデータなのか理解出来ること」 です。
要は「〇×△□」というデータと「山田太郎」というデータだと 後者のほうが意味としては強いといえる(私が勝手に言っている)。
なぜこのような優位性が必要かというと、アプリの画面から確認する際に非常に試験がわかりやすくなる。
仮に名前を検索するアプリがあったとする。
画面に「〇×△□」と入力し検索するよりも、「山田」と検索したほうがより分かりやすい試験ができる(と信じている)。
通常アプリ使う時に「〇×△□」といれて入力する人はいないはずだ。
このように優位性を持たせることでよりユーザー目線の試験ができるわけだ。
どのように優位性を担保する?
答えは簡単だ。本番と同等のデータを使えばよい。
しかし本番のデータをそのまま持ってくのはセキュリティ的にダメだよね?
試験データ作成者の腕の見せ所になってくるわけだ。 今度記事にするので少々お待ちください。
データのカーディナリティ
カーディナリティとは?
カーディナリティとはデータの”濃度”や”ばらつき”のことを言います。
※ 正確には多くの意味がありますが最近はこの意味が一般的。
カーディナリティは高いと低いで表します。
カーディナリティが高いとは、データ全体に種類が多いこと言います。
例:100万件のクレジットカード番号があるとする。
クレジットカード番号はすべて一意であるため、カーディナリティは高いといえる。
カーディナリティが低いとは、データ全体に種類が少ないこと言います。
例:100万件の性別データがあるとする。
性別は男 or 女しかありえないためカーディナリティは低いといえる。
参考:https://www.shift-the-oracle.com/words/cardinality.html
なぜカーディナリティを考える?
基本的にデータアクセスには2つの種類がある。
- 全データをすべてアクセス
- ポイント(索引)を使ったアクセス
である。 全データをすべてアクセスする処理は、バッチ処理などに利用することがある。
バッチ処理などは全データの洗い替えをするケースが多く、データとしてカーディナリティは低くてもよい。
なぜか?どうせ全データにアクセスにするのでバラバラのデータを用意する必要はないのだ(暴論)
反対にポインタ(インデックス)を使ったアクセスは、
全データにアクセスしてしまうと余計な処理が発生してしまうことになる。
明らかに 「ポインタアクセス」より「全データアクセスして該当のデータを参照」 のほうが読み込むデータは少なくて済むよね。
※ 辞書を引くときにア行からワ行まで全部確認しているイメージ。
ID検索などアプリ画面を試験する際には、ポインタアクセスを意識したデータが必要だといえるのだ。
まとめ
要するにどんな試験をするかによって準備するデータが変わるってこと!
ざっくり言ってしまうと アプリの画面確認などの小さいデータのやり取りをする試験をする場合にはデータの優位性とカーディナリティに注意しろ!ってことです。
バッチ処理はある程度テキトーに大量データ作っておけばOKっす。
※注意 この記事はトンデモ俺様論であるため、鵜呑みにしては責任を負いません。
私自身の中で考えが変わったら記事を直します。