2の累乗を活用した試験

先日のテスト業務で、以下のような機能について試験を行う機会がありました。

  • 4つのフロントサイトがあり、それらを管理する管理画面がある
    • 以降このページではサイト1,2,3,4と表現する
  • お知らせ機能があり、管理画面にてお知らせを登録しフロント画面に表示される仕組みがある
  • お知らせは一つのデータにサイトが1件紐づく構造をしている(サイトを跨いだお知らせは設定できない)
  • 管理画面のアカウントには各サイトの操作権限が設定でき、操作可能なサイトのお知らせのみ参照/操作が可能となっている
  • ログインしたアカウントが参照可能なお知らせ件数の合計が「公開中:X件」「公開予定:X件」という形で、ログイン後の画面に表示される

今回取り上げるのは件数の試験についてです

上記について公開中のデータについてはダミーデータが多々あり、ログインアカウント毎の件数に差異があったのでそのまま試験が可能でしたが、公開予定となるデータは件数が少なく、自分でデータを準備するところからの作業となりました。

問題点

単純に各サイトのデータ1件ずつ用意したとしても、画面に表示されるのが件数のみとなっているので、正しく集計されたかどうか担保が取れません。

例:サイト1のみ操作権限があるアカウントでログインし公開予定の件数が1件と表示されたとしても、どのサイトのデータを取得して1件となったかが分からない

そのため、各サイト毎のデータ件数を調整するよう工夫しました

方針

サイト毎にそれぞれデータを1,2,4,8件用意して件数の確認を行う

  • サイト1:お知らせ1件
  • サイト2:お知らせ2件
  • サイト3:お知らせ4件
  • サイト4:お知らせ8件

アカウントについては15パターン用意する
 ⇒権限あり/なしの2パターンが4つあるので、2×2×2×2=16通り、そこからどのサイトにも紐づいていないユーザーを除き15通り

パターン一覧

●は、アカウントごとの操作権限を持っているサイトを表しています

サイト1サイト2サイト3サイト4画面に表示される件数
アカウント11
アカウント22
アカウント34
アカウント48
アカウント53
アカウント65
アカウント79
アカウント86
アカウント910
アカウント1012
アカウント117
アカウント1211
アカウント1313
アカウント1414
アカウント1515

画面に表示される値が一意となるため、どのサイトのデータを取得したかを試験することができました。

纏め

あり/なしのパターンを組み合わせたい場合は、それぞれに2の累乗の値を設定していけば、合計値がパターン毎に一意な値となります。

linuxの権限設定などで登場するものと同じ仕組みですね。
⇒読み込み : r (read)、書き込み : w (write)、実行 : x (execlution)にそれぞれに4,2,1の値が振られていて、数字で権限設定可能となっている(4だと読み込み権限のみ、6だと読み込みと書き込み権限、7だと全権限があるなど)

今回は15パターンだったのでデータ準備が可能と判断し実施しましたが、これ以上パターンが増えるなら別アプローチも検討だと思います。

試験パターン検討の際に参考にしていただければと思います。