オブジェクト指向ソフトウェアのテストケース|Date.incrementメソッドのテスト

 オブジェクト指向テクノロジは、より優れたシステム構造とより標準化されたコーディング スタイルを生み出しました。オブジェクト指向テクノロジにより、データ使用のセキュリティが大幅に最適化され、プログラム コードの再利用性が向上しました。このため、一部の人々は、オブジェクト指向テクノロジで開発されたプログラムは、テストを実行する必要はありません。なお、オブジェクト指向技術の基本的な考え方ではソフトウェアの品質は高いほうが良いとされていますが、どのようなプログラミング技術を使ってもプログラマーのミスは避けられず、また、オブジェクト テクノロジを使用して開発されたソフトウェア コードは再利用率が高く、エラーが再発する可能性が高いため、多数のエラーが再発するのを防ぐために厳密なテストが必要です。この記事では、Date.increment メソッドのテストについて紹介します。

01.クラスの説明

CRC (クラス責任コラボレーター、クラス責任コラボレーター) は、現在人気のあるオブジェクト指向分析およびモデリング手法です。CRC モデリングでは、ユーザー、設計者、開発者がすべて参加して、オブジェクト指向プロジェクト全体の設計を完了します。

CRC カードは、クラス名、クラスの責任、およびクラスの協力関係の 3 つの部分で構成されるインデックス カードの標準的なコレクションであり、各カードはクラスを表します。クラス名は、カードによって記述されるクラスの名前であり、CRC カード全体の先頭に書かれます。クラスの責任には、クラスが自身の情報を理解し、その情報がどのように使用されるかが含まれます。この部分は、 CRC カードの左側に記述されます; クラスの連携関係は、現在のクラスに関連する他のクラスを指し、そこを通じて必要な情報を取得したり、関連する操作を実行したりできます。この部分は右側に記述されますCRC カードの。

このメソッドをテストするときは、まず「クラス責任コラボレーター」(CRC) カードを使用して Date クラスを記述し、次に、図 1 に示すように、Date クラスの疑似コードに基づいてプログラム図を分析する必要があります。

■ 図 1 testIt クラスと Date クラスのプログラム図

CalendarUnit クラスは、継承したクラスから値を設定するメソッドと、継承したクラスの属性を 1 増やすことができるかどうかを示す Boolean メソッドを提供します。疑似コードは次のとおりです。

class CalendarUnit(
//abstract class
int currentpos;
CalendarUnit(pCurrentpos)
currentpos = pCurrentpos;//结束 CalendarUnit
setCurrentpos(pCurrentpos)
currentpos = pCurrentpos;//结束 setCurrentpos
abstract protected Boolean increment();
}

 Date.increment メソッドをテストするには、クラス testIt をテスト ドライバーとして開発する必要があります、つまり、テスト日付オブジェクトを作成し、オブジェクト自体に 1 ずつ増加するように要求し、最後に新しい値を出力します。疑似コードは次のとおりです。次のように。

class testItl
main()(
testdate = instaniate Date(testMonth,testDay,testYear);
Testdate.increment();
Testdate.printDate();
//结束 testIt

表 2 に示すように、Date クラスの CRC カード内の情報を以下に示します。

■表2 日付型CRCカード

 Date クラスの擬似コードは次のとおりです。

class Date{
private Day d;
private Month m;
private Year y;
public Date( int pMonth,int pDay,int pYear){
y = instaniate Year(pYear);
m = instaniate Month(pMonth,y);
d = instaniate Day(pDay,m);
)//结束 Date构造函数
increment()
if(!d.increment()){
if(!m.increment())
y.increment();
m.setMonth(1,y);
else
d.setDay(1,m);
//结束 increment
printDate()
System.out.println(m.getMonth() +"/" + d.getDay() + "/"+ y.getYear());
}//结束 printDate
}//结束 Date

 testItクラスとDateクラスのプログラム図を図2に示します。

 

■ 図 2 testIt クラスと Date クラスのプログラム図

02.テストケースを設計する

「ブラック ボックス テスト」セクションで紹介したように、等価クラス テストは、ロジックを多用するユニットにとって賢明な選択です。Date.increment 操作は、次のように日付の 3 つの等価クラスを処理します。

D1={日付:1≤日付<月の最後の日}。

D2={日付: 日付は 12 月以外の最後の日付です}。

D3={日付: 日付は 12 月 31 日です}。

実際、Date.increment プログラム グラフに対応するパスは 3 つあります。

パス1:9-10-18。

パス2:9-10-11-12-13-14-17-18。

パス3:9-10-11-15-16-17-18。

これらは Date.increment のベース パスを構成し、Date.increment プログラム グラフの循環複雑度が 3 であることを計算するのは難しくありません。さらに、これらの同値クラス、特に D1 は、月の指定なし、つまり、それが何月であるかを指定せずに最後の日付を参照する、大まかに定義されているようです。このようにして、問題はさらに Month.increment メソッドのテストに変換されます。

おすすめ

転載: blog.csdn.net/qq_41640218/article/details/132706747