単体テスト支援 ファイルシミュレーション機能の活用 - Hitachi...テスト1...
Transcript of 単体テスト支援 ファイルシミュレーション機能の活用 - Hitachi...テスト1...
© Hitachi, Ltd. 2017. All rights reserved.
株式会社 日立製作所
version 1.1(201705)
単体テスト支援 ファイルシミュレーション機能の活用
COBOL活用ガイド No.002
COBOL2002 Developer Professional 単体テスト支援
トレーニング
© Hitachi, Ltd. 2017. All rights reserved.
はじめに
1
本資料はCOBOL2002製品群をより便利に活用するためのガイドです。 本資料は以下の製品が対象です。
COBOL2002 Developer Professional 03-04以降 COBOL2002 Developer Professional(64) 03-04以降
本資料は「COBOL活用ガイド 単体テスト支援ファーストステップガイド」の内容を前提としています。 「単体テスト支援ファイルシミュレーション機能の活用」では ファイルアクセスを行うCOBOLプログラムの単体テスト方法を紹介します。 演習内容は以下です。
ファイルシミュレーション機能を用いた単体テスト 演習にかかる時間の目安は約30分程度です。
© Hitachi, Ltd. 2017. All rights reserved.
Contents
COBOL活用ガイド No.002
単体テスト支援ファイルシミュレーション機能の活用
トレーニング
2
1. 単体テスト支援
2. ファイルシミュレーション機能で単体テストを実行してみましょう
3. まとめ
© Hitachi, Ltd. 2017. All rights reserved.
COBOL活用ガイド No.002
単体テスト支援ファイルシミュレーション機能の活用
トレーニング
3
1. 単体テスト支援
© Hitachi, Ltd. 2017. All rights reserved.
1-1. 単体テスト支援とは
4
準備が簡単に! 結果確認が簡単に! 繰り返しテストが簡単に!
テスト対象 プログラム
呼び出し元 ダミープログラム <自動生成>
呼び出し先 ダミープログラム <自動生成>
CSV
テスト データ
GUI
単体テスト支援
テスト プロジェクト
結果レポート テスト1 [OK] テスト2 [NG] : カバレージ情報 C0 [100%] C1 [ 80%] :
単体テスト支援
ソース修正
テスト実行
結果確認
定期 実行 入力
修正 ソース
差分テスト データ
バグを早期に発見したい!
手作業のテストではもう対応できない!
そのお悩み 単体テスト支援が解決します!
© Hitachi, Ltd. 2017. All rights reserved.
1-2. ファイル入出力を行うプログラムの単体テスト
5
テスト対象 プログラム
テスト用 実ファイル
従来,ファイル入出力を行うプログラムに対して単体テストを実施するには 準備などが大変でした。
テストケースの分だけファイルの実体を用意するのが大変!
テストケースごとに ファイルの割り当てや 結果の確認が面倒!
入出力エラーの 再現が大変!
© Hitachi, Ltd. 2017. All rights reserved.
1-3. ファイルシミュレーション機能
6
ファイルシミュレーション機能を使うことで準備などの手間が削減でき, 開発効率の向上に役立ちます。
テスト対象 プログラム
単体テスト支援 ファイルシミュレーション機能
ファイルの実体は不要! テストデータの設定だけ!
テストごとの ファイルの割り当てや 結果確認が自動!
入出力エラーの シミュレーションもOK!
© Hitachi, Ltd. 2017. All rights reserved.
COBOL活用ガイド No.002
単体テスト支援ファイルシミュレーション機能の活用
トレーニング
7
2. ファイルシミュレーション機能で
単体テストを実行してみましょう
© Hitachi, Ltd. 2017. All rights reserved.
2-1. 演習内容
8
ファイルシミュレーション機能を用いてファイルアクセスを行うプログラムの単体テストを行います。 本演習ではファイルの読み込み/書き込みを行うプログラムに対して,「正常に読み書きができたケース」と「入出力エラーが発生したケース」の2つのケースをテストします。
テスト対象 プログラム
単体テスト支援 ファイルシミュレーション機能
テストケース1(正常)
テストケース2(エラー)
© Hitachi, Ltd. 2017. All rights reserved.
2-2. テスト対象のプログラム
9
テスト対象のプログラム[SUMSALES]について説明します。 機能仕様: 各店舗の売り上げデータを集計するプログラムです。 1つの店舗の売り上げデータは1つのレコードに記載され 1つのファイルに全店舗の売り上げデータが記載されます。 これを入力ファイルとして合計値を計算し,その値を出力ファイルに出力します。
プログラム
SUMSALES
入力 出力
'ShopA' ¥5,000
'ShopB' ¥9,000
'ShopC' ¥ 300
1
2
3
Read ¥14,300 1
Write
© Hitachi, Ltd. 2017. All rights reserved.
2-3. 作成するテストケースの概要
10
この演習では2つのテストケースを作成します。
プログラム
SUMSALES
入力 出力 'ShopA' ¥5,000
'ShopB' ¥9,000
'ShopC' ¥ 300
1
2
3 Read
¥14,300 1 Write
3店舗の売り上げデータをテストデータとして入力ファイルのレコードに設定し その集計結果を期待値として確認します。
入力ファイルをReadしたときに入出力エラーが発生するようテストの設定を行い プログラムがエラーリターンすることを確認します。
テストケース1 [正常ケース]
テストケース2 [入出力エラーケース]
プログラム
SUMSALES
入力
Read
エラーリターン (ERRORFLAG=1)
© Hitachi, Ltd. 2017. All rights reserved.
2-4. 全体の流れ
11
大まかな手順です。
テスト対象 プログラム
単体テスト支援 ファイルシミュレーション機能
テストケース1(正常)
テストケース2(エラー)
準備
サンプルコードの準備
テストプロジェクトの作成
スタブ設定ページの確認
テストケースの作成
テストケース1の作成
テストケース2の作成
テストの実行
テスト結果の確認
テストケース1の詳細結果確認
テストケース2の詳細結果確認
カバレージの結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-5. サンプルコードの準備
12
サンプルコードの準備 サンプルコードのファイルを任意のフォルダに作成します。 以降は例として以下に置いたものとして説明します。
D:¥cblsample
D:¥cblsample¥sumsales.cbl
サンプルコードは「付録1. サンプルコード」に 記載しています。 テキストをコピー&ペーストして,サンプルコードの ファイルを作成してください。
TIPS
準備するファイルは以下の1つです。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-6. テストプロジェクトの作成
13
単体テスト支援を起動します。 スタートメニューから「COBOL2002 Professional Tool Kit」→「単体テスト支援」をクリックします。
スタートページから「新しいプロジェクトを作る」をクリックします。
「新しいプロジェクトを作る」ダイアログで以下の値を入力して,「作成」をクリックします。
テストプロジェクト作成時に,テストプロジェクト作業フォルダが存在しない場合には,作成するかどうかを問い合わせるダイアログが表示されるので,「OK」をクリックしてください。
TIPS
テストプロジェクト名
sumsales
COBOLソースファイル
D:¥cblsample¥sumsales.cbl
テストプロジェクト作業フォルダ
D:¥cblsample¥sumsales
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-7. スタブ設定ページの確認
14
ファイル入出力処理を含むプログラムでは自動的にファイルシミュレーションを行うよう設定されます。 ここではその設定がされていることを確認します。
メニューから「プロジェクト」→「スタブ設定ページを表示」をクリックします。
「スタブ設定ページ」では副プログラムやファイルのシミュレーションの設定や確認を行えます。 「入出力するファイル名」に"IN-FILE"と"OUT-FILE"のチェックボックスがオンになっていることを確認します。 このチェックボックスがオンになっているファイル名に対して,単体テスト実行時にファイルシミュレーションが行われます。
確認が完了したら「スタブ設定ページ」画面を閉じます。 「スタブ設定ページ」のタブのバツマークをクリックします。 単体テスト実行時に実ファイル入出力を行いたい場
合には「スタブ設定ページ」の「入出力するファイル名」欄から該当するファイルのチェックボックスをオフにします。
TIPS
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-8. テストケース1の作成(1)
15
これからテストケースを2つ作成します。 まずは正常な処理を確認するテストケースです。
画面左側の「テストプロジェクト」のツリーから"新しいテストケース"を右クリックして,右クリックメニューから「名前の変更」をクリックします。
「名前の変更」ダイアログで新しい名前に以下の値を入力して「OK」をクリックします。
新しい名前
正常ケース
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-9. テストケース1の作成(2)
16
次にこのテストケースにテストデータを設定します。 このテストケースでは入力ファイルおよび出力ファイルのテストデータを設定します。
画面右側の「設定」の「ファイル」タブを選びます。
まず入力のIN-FILEのテストデータを設定します。 ここでは3つのレコードと終了条件を設定します。
1つ目のレコードのテストデータを設定します。 「テストデータ(代入値)」のREAD文の"1"個目のテストデータとして以下のデータを入力します。
SHOPNAME
'ShopA'
SALES
5000
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-10. テストケース1の作成(3)
17
2つ目のレコードのテストデータを設定します。 まずREAD文の"1"個目のテストデータのプルダウンをクリックし,リストの末尾の"追加"をクリックします。
"2"個目のテストデータを設定する画面が表示されるので,以下のデータを入力します。
SHOPNAME
'ShopB'
SALES
9000
3つ目のレコードのテストデータを設定します。 2つ目のレコードの設定と同様に,"3"個目テストデータを追加して,以下のデータを入力します。
SHOPNAME
'ShopC'
SALES
300
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-11. テストケース1の作成(4)
18
終了条件を設定します。 このテストケースでは正常に読み込みが完了することを確認するため,「終了条件」のプルダウンから以下を選択します。
終了条件
AT END指定の文を実行
入力ファイルIN-FILEに対するテストデータの設定は完了しました。 次は出力ファイルOUT-FILEへの設定を行います。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-12. テストケース1の作成(5)
19
OUT-FILEへテストデータを設定します。 「ファイル名」のプルダウンから"OUT-FILE"を選択します。
「テストデータ(期待値)」のWRITE文の"1"個目のテストデータに,以下の値を入力します。
TOTALSALES
14300
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-13. テストケース2の作成(1)
20
2つ目のテストケースを作成します。 このテストケースでは入出力エラーを確認します。
メニューから「テストケース」→「追加」をクリックします。これで「テストプロジェクト」のツリーに"新しいテストケース"が1つ追加されます。
画面左側の「テストプロジェクト」のツリーから"新しいテストケース"を右クリックして,右クリックメニューから「名前の変更」をクリックします。
「名前の変更」ダイアログで新しい名前に以下の値を入力して「OK」をクリックします。
新しい名前
入出力エラーケース
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-14. テストケース2の作成(2)
21
このテストケースにテストデータを設定します。 画面右側の「設定」の「ファイル」タブを選択します。
入力ファイルで入出力エラーを発生させるので,ファイル名が"IN-FILE"であることを確認します。
1回目のREAD文で入出力エラーを発生させるため,レコードの設定は不要となります。 そのため「削除」ボタンをクリックし,レコードの設定を削除します。 削除するとREAD文の"-"個目のテストデータと表示されます。
「終了条件」を設定します。 プルダウンから以下の値を選択します。
終了条件
入出力エラーを発生させる
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-15. テストケース2の作成(3)
22
入出力エラーが発生するとデータ項目のERRORFLAGに1が設定されプログラムの返却値となります。この値を確認します。
画面右側の「設定」の「プログラム終了時」タブを選択します。
「期待値」として以下の値を設定します。
ERRORFLAG
1
これでテストケースの設定は全て完了しました。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-16. テストの実行
23
単体テストを実行します。 メニューから「テスト実行」→「すべてのテストケースを実行」をクリックし,表示されるダイアログで「OK」をクリックします。 単体テストが実行されますので少し待ちます。
すべてのテストケースの実行が完了すると画面下部の出力画面にテストプロジェクト結果レポートが表示されます。 このレポートには実行したテストケースの結果が一覧で表示されます。 判定結果がすべて"OK"となりテスト完了です。 テスト自体はこれで完了ですが,実行したテストケースの詳細結果を見てみましょう。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-17. テストケース1の詳細結果確認(1)
24
詳細な結果ではテストケースの各データの値などの情報を表示できます。 まず1つ目の"正常ケース"の詳細結果を見てみます。
画面左側の「テストプロジェクト」ツリーのテスト実行結果から,先ほど実行した結果のツリーを展開して結果レポートの"正常ケース"をダブルクリックします。
画面下部に"正常ケース"のテストケース結果レポートが表示されます。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-18. テストケース1の詳細結果確認(2)
25
出力ファイルに出力されたデータの値を確認します。 「出力文の実行結果」から項目を右クリックして,右クリックメニューから「結果を表示」をクリックします。
「ファイルシミュレーションの結果」ダイアログが表示されます。 このダイアログではシミュレーションを行ったレコードの各要素の値を見ることができます。 "正常ケース"ではデータ項目"TOTALSALES"の値が14300で設定した期待値と一致していることから判定結果が"OK"となっていることが分かります。
結果の値を表示するダイアログは「出力文の実行結果」だけでなく「入力文の実行結果」の各項目についても表示できます。
TIPS
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-19. テストケース2の詳細結果確認(1)
26
2つ目のテストケース"入出力エラーケース"の詳細結果を確認します。
画面左側の「テストプロジェクト」ツリーのテスト実行結果から,先ほど実行した結果のツリーを展開して結果レポートの"入出力エラーケース"をダブルクリックします。
画面下部に"入出力エラーケース"のテストケース結果レポートが表示されます。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-20. テストケース2の詳細結果確認(2)
27
入出力ファイルで入出力エラーを発生させたときの情報を確認します。 「出力文の実行結果」から項目を右クリックして,右クリックメニューから「結果を表示」をクリックします。
「ファイルシミュレーションの結果」ダイアログが表示されます。 "入出力エラーケース"では1回目のREAD文をプログラムが実行したタイミングで"入出力エラーを発生させる"動作がシミュレーションとして行われたことが確認できます。
また「結果の値と判定結果」のデータ項目"ERRORFLAG"も期待値と値が一致し,判定結果が"OK"となっていることが分かります。
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
Progress
2-21. カバレージの結果確認
28
最後にカバレージの結果を確認します。 画面中央の「ソーステキスト」の左側にカバレージ情報が表示されています。実行された文は色がつきます。 今回のテスト実行の結果,通常の入出力処理および入出力エラー処理の全ての処理がテスト実行されたことがわかります。
また,「テストプロジェクト」ツリーのテスト実行結果からカバレージレポートをダブルクリックすると,「出力」にカバレージレポートが表示されます。 こちらからでもC0/C1メジャーが共に100%となっていることが確認できます。
ファイルシミュレーション機能により,入出力エラーの処理も簡単にテストすることができ,カバレージ網羅性を上げるのにも効果的です。 これで詳細結果も一通り確認できました。 この演習もここで完了です!
準備 テストケース1作成 テストケース2作成 実行 結果確認
© Hitachi, Ltd. 2017. All rights reserved.
COBOL活用ガイド No.002
単体テスト支援ファイルシミュレーション機能の活用
トレーニング
29
3.まとめ
© Hitachi, Ltd. 2017. All rights reserved.
3-1. 演習内容のまとめ
30
テスト対象 プログラム
単体テスト支援 ファイルシミュレーション機能
テストケース1(正常)
テストケース2(エラー)
ファイルシミュレーション機能を利用した単体テストについて演習を行いました。 演習では,基本的な入力と出力のテストデータの設定方法,および入出力エラーの発生のシミュレーションの設定方法や実行結果の確認について手順を紹介しました。
© Hitachi, Ltd. 2017. All rights reserved.
3-2. まとめ
31
テストごとの ファイルの割り当てや 結果確認が自動!
入出力エラーの シミュレーションもOK!
テスト対象 プログラム
単体テスト支援 ファイルシミュレーション機能
単体テスト支援のファイルシミュレーション機能を活用することで,ファイル入出力を行うプログラムの単体テストの手間を削減でき,開発効率の向上に役立ちます。
ファイルの実体は不要! テストデータの設定だけ!
ファイルシミュレーション機能以外にも,単体テスト支援は単体テストに有用な機能を取り揃えています。それらについてはCOBOL活用ガイドなどで紹介していますので,ご参照ください。
© Hitachi, Ltd. 2017. All rights reserved.
3-3. 補足
32
他の活用ガイドの紹介 COBOL2002活用ガイドシリーズは随時拡充/更新する予定です。 詳細はCOBOL2002のWebサイトまたは問い合わせください。 お問い合わせ先 URL:http://www.hitachi.co.jp/soft/cobol/
© Hitachi, Ltd. 2017. All rights reserved.
付録1. サンプルコード
33
sumsales.cbl 000100* COBOL活用ガイド#002 000200* ファイルシミュレーション機能の活用 サンプルコード 000300* 000400* All Rights Reserved. Copyright (C) 2016, Hitachi, Ltd. 000500 IDENTIFICATION DIVISION. 000600 PROGRAM-ID. SUMSALES. 000700 ENVIRONMENT DIVISION. 000800 INPUT-OUTPUT SECTION. 000900 FILE-CONTROL. 001000 SELECT IN-FILE ASSIGN TO FILE001. 001100 SELECT OUT-FILE ASSIGN TO FILE002. 001200 DATA DIVISION. 001300 FILE SECTION. 001400 FD IN-FILE. 001500 01 INDATA. 001600 05 SHOPNAME PIC X(10). 001700 05 SALES PIC S9(5) USAGE PACKED-DECIMAL. 001800 FD OUT-FILE. 001900 01 OUTDATA. 002000 05 TOTALSALES PIC S9(9) USAGE BINARY. 002100 WORKING-STORAGE SECTION. 002200 01 LOOPFLAG PIC 9. 002300 01 SUMSALES PIC 9(9). 002400 LINKAGE SECTION. 002500 01 ERRORFLAG PIC 9. 002600 002700 PROCEDURE DIVISION RETURNING ERRORFLAG. 002800 002900*ファイル入出力エラー処理 003000 DECLARATIVES. 003100 IO-ERR SECTION. 003200 USE AFTER STANDARD ERROR PROCEDURE IN-FILE. 003300 MOVE 1 TO ERRORFLAG. 003400 EXIT PROGRAM. 003500 END DECLARATIVES. 003600
003700*初期化処理 003800 MOVE 0 TO ERRORFLAG. 003900 MOVE 0 TO SUMSALES. 004000 MOVE 0 TO LOOPFLAG. 004100 004200*店舗データの読み込みと集計 004300 OPEN INPUT IN-FILE. 004400 PERFORM UNTIL LOOPFLAG = 1 004500 READ IN-FILE 004600 AT END MOVE 1 TO LOOPFLAG 004700 NOT AT END COMPUTE SUMSALES = SUMSALES + SALES 004800 END-READ 004900 END-PERFORM. 005000 CLOSE IN-FILE. 005100 005200*集計結果の出力 005300 OPEN OUTPUT OUT-FILE. 005400 MOVE SUMSALES TO TOTALSALES. 005500 WRITE OUTDATA. 005600 CLOSE OUT-FILE. 005700 005800 EXIT PROGRAM. 005900 END PROGRAM SUMSALES.
© Hitachi, Ltd. 2017. All rights reserved.
商標類など
34
商標類 HITACHIは株式会社 日立製作所の商標または登録商標です。 その他記載の会社名,製品名などは,それぞれの会社の商標もしくは登録商標です。