はじめに

ソフトウェアテストにおいて使用されるブラックボックステスト技法の1つに「境界値テスト(Boundary Value Testing)」があります。今回は、元号変換のテストをテーマにテストケースを考えてみようと思います。

境界値テストの基礎

境界値テストでは、入力値の境界近くで問題が発生しやすいことを前提に、いくつかのポイントについて重点的に評価します。

1. 境界値とその前後

一般的に取りうる値の範囲について、最小値/最大値に加えてその前後の値を選んでテストします。例えば、値の範囲が1~100の場合、テストすべき値は、0、1、100、101になります。

2. 不正な値

値が空である、負数、最大値を超える値、異常値(例.極端に大きな/小さな値)

3. 対象外の値

数値ではなくテキスト(英子、記号など)、小数

4. 範囲内の値の近似値

小数を受け付ける場合、さらに精度を上げて入力してみる。例えば、値の範囲が1.0~2.0の場合、1.01や1.99などを入力してみる。

例えば、西暦での日付入力の境界値を考えると、年/月/日毎に以下の境界値は評価することになります。

年(西暦)1~2025 ※西暦0年は存在しない、未来年は受け付けないとする。
1~12
1~28、29、30、31

元号変換(年号変換)に関する境界値

元号変換(年号変換)に関する境界値テストでは、上記に加えて各元号の最後の日、最初の日やその他いくつか注意すべきポイントがあります。

1. 元号切り替えの年
元号切替和暦(最後の日 → 最初の日)西暦(最後の日 → 最初の日)
明治 → 大正明治12年7月29日 → 大正元年7月30日1912年07月29日 → 1912年07月30日
大正 → 昭和大正15年12月24日 → 昭和元年12月25日1926年12月24日 → 1926年12月25日
昭和 → 平成昭和64年1月7日 → 平成元年1月8日1989年01月07日 → 1989年01月08日
平成 → 令和平成31年4月30日 → 令和元年5月1日2019年04月30日 → 2019年05月01日
2. うるう年

一般的には以下のように定義されています。
・西暦が4で割り切れる年はうるう年になる。
・ただし、100で割り切れる年はうるう年ではない。
・ただし、100で割り切れる年はうるう年ではない。

3. 異常な日付

・存在しない日付 ※赤字は誤り
 例. 明治12年7月30日、明治13年1月1日、
   大正元年7月29日、大正15年12月25日、大正16年1月1日、
   昭和元年12月26日、昭和64年1月8日、昭和65年1月1日、
   平成元年1月7日、平成31年5月1日、平成32年1月1日、
   令和元年4月30日
・過去年や未来年
 例. 明治元年(1868年)より前、令和10年 ※明治以前に生まれて生存している人はほぼいない
・存在しない年月日
 例. 令和0年、0月、13月、0日、32日

最後に

このように、正しく境界値を評価することでソフトウェアに潜むバグを見つけることが出来るかもしれません。
特に元号変換のテストでは注意すべきポイントが多いので、是非気を付けてケースの洗い出し、テスト実施をしたいところです。