

今回はテストケースをメソッドごとに作成していくのですが最初のメソッドから詰まっています。  
テストケースの作成には

正常系入力データ 正常パターンすべて  
異常系入力データ 異常パターンすべて  
境界値 入出力要素が境界値およびその前後の値の場合  
複数要素（境界値） 入出力要素がリスト・配列の場合に、その項目が境界値の場合  
特殊値 入出力要素が特殊値の場合（ゼロ、ヌル値、空文字列など）  
複数要素（件数） 入出力要素がリスト・配列の場合に、その件数が0件、1件、n件の場合  
複数要素（特殊値） 入出力要素がリスト・配列の場合に、その項目が特殊値の場合  
分岐網羅 すべての分岐パスを網羅する  
繰り返し網羅 ループ0回、1回、通常回数、最大回数、最大回数-１回

とありますがでは実際にテストするメソッドはというと

[code]

    private static final String STRING_EMPTY = "";
    
    public void addValue(String reportFieldKey,String value){
            keyValue = new FieldKeyValuePair();
    
            if(reportFieldKey == null){
                keyValue.setReportFieldKey(STRING_EMPTY);
            }else{
                keyValue.setReportFieldKey(reportFieldKey);
            }
    
            if(value == null){
                keyValue.setValue(STRING_EMPTY);
            }else{
                keyValue.setValue(value);
            }
    
            recordInfo.add(keyValue);
    }
    
[/code]

という感じで受け取ったパラメータをFieldKeyValuePairというクラスにセットするというもの  
これの異常系などの考え方がわからないです。  
nullが入ってきたときは空文字列を入れるように制御しているので特殊値のパターンはできますが私には後は正常系が1つしか思いつきません

これのテストケースを他にどういう風に考えますか？  
教えていただけると幸いです。


CC BY-SA 3.0
2016-02-29T05:34:39.230
22651
2016-03-30T08:21:02.787
14410
question
java
テストケースの考え方


テスト対象のコードからテストを作成していると実装漏れなどを救えません。  
テスト対象のコードから作成するのではなく仕様(要件)をもとに作成します。

質問にはテスト対象のコードしか記載されてないので推測するしかありませんが  
一例として私がテストコードを書くとなった場合の考え方を例としてあげてみます。

引数「reportFieldKey」で指定したキー値を持つFieldKeyValuePairのオブジェクトが既にrecordInfoに存在した場合、期待する挙動はどれだろうか。  
(1)上書きする  
(2)エラーとする(xxxxExceptionがthrowされるなど。。。)  
(3)同じキーでも構わず追加

これはコードからテストコードを作成すると(3)としか考えられないが、addValue()の仕様は本当に(3)でよいのか？  
(1)であった場合は上書きされることを確認するテストコード (正常系)  
(2)であった場合はエラー(xxxxExceptionがthrowされる)ことを確認するテストコード(異常系)  
を作成する必要がある。 →仕様を確認する。

あとはどこまでやるかですが・・・  
仕様ではreportFieldKey, value の値には制御文字(改行コードやタブコードetc...)を許容する？  
許容しない場合はこれらのテストコードを作成する必要がある

全部許容する仕様なら…異常系テストはないかな？


CC BY-SA 3.0
2016-02-29T07:50:01.510
22658
2016-02-29T07:50:01.510
7343
22651
answer