質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ドキュメント

ドキュメントは、IT用語では、ソフトウェアやハードウェアに関する情報であり、意図された目的、機能性、メインテナンスを含みます。ドキュメントは、多くの様々なフォームとフォーマットに存在しますが、その目的は常に教育することにあります。

csh

cshは、C言語スタイルの構文を持つUNIX系OSのシェルの1つのことです。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

Q&A

2回答

10415閲覧

単体テスト仕様書を作成したいが、どんなテストを実施すればいいのかが難しく分かりません。

退会済みユーザー

退会済みユーザー

総合スコア0

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

ドキュメント

ドキュメントは、IT用語では、ソフトウェアやハードウェアに関する情報であり、意図された目的、機能性、メインテナンスを含みます。ドキュメントは、多くの様々なフォームとフォーマットに存在しますが、その目的は常に教育することにあります。

csh

cshは、C言語スタイルの構文を持つUNIX系OSのシェルの1つのことです。

テスト駆動開発

テスト駆動開発は、 プログラム開発手法の一種で、 プログラムに必要な各機能をテストとして書き、 そのテストが動作する必要最低限な実装を行い コードを洗練させる、といったサイクルを繰り返す手法の事です。

0グッド

1クリップ

投稿2017/06/10 12:40

編集2017/06/10 12:44

以下のmain.cshの単体テスト仕様書を作成したいです。

#!/bin/csh -f set list = (str1 str2) set status = 0 foreach str ($list) sub1.csh $str if ($? != 0) then echo "sub1失敗" set status = 1 endif # sub2.cshのみ環境変数${USER}を引数としており、 # 異常終了によるメッセージは出力しない sub2.csh ${USER} sub3.csh $str if ($? != 0) then echo "sub3失敗" set status = 1 endif end sub4.csh $str if ($? != 0) then echo "sub4失敗" set status = 1 endif if (status == 0) then exit 0 else exit 1 endif

※sub1~4は単体テスト完了済みです。

現在、単体テストのテスト内容としては以下を考えています。
(1)sub1が異常終了する場合
・「sub1失敗」のメッセージが出力されること。
・mainの終了ステータスが1であること・
(2)sub3が異常終了する場合
・「sub3失敗」のメッセージが出力されること。
・mainの終了ステータスが1であること。
(3)sub4が異常終する場合
・「sub4失敗」のメッセージが出力されること。
・mainの終了ステータスが1であること。
(4)sub1,3,4がすべて正常終了する場合
・「sub1失敗」のメッセージが出力されないこと。
・「sub3失敗」のメッセージが出力されないこと。
・「sub4失敗」のメッセージが出力されないこと。
・mainの終了ステータスが0であること。

他にテストするケースとしてはsub1,sub2,sub3,sub4がそれぞれ正常終了、異常終了する全ての組み合わせのテストは必要でしょうか?
(例:sub1→正常終了 sub2→異常終了 sub3→異常終了 sub4→異常終了 等)
また、他にテストするべきケースはありますか?
よろしければ、理由も含めて教えていただきたいです。

単体テスト仕様書を書くのがどうも苦手で、どんなテストを実施すればいいのか、またそのテストを実施する理由はどうしてかを考えるのが難しいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

このプログラムを作る際の仕様書があるはずですよね。
仕様書の通りに動くことが必要なのでプログラムからはテスト仕様書は作れません。

プログラムが書いてあるとおりに動作するかというのはコンパイラーのテストをしているに過ぎません。

投稿2017/06/10 13:06

maiko0318

総合スコア876

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/06/10 13:13 編集

基本設計書も詳細設計書などの仕様書もありません。 ツール作成→単体テスト実施→詳細設計書作成という手順で行うよう依頼されています。 また、このツールは私以外の人が作成したものであり、私が単体テスト実施の依頼をされています。
maiko0318

2017/06/10 13:23

順序がおかしいです。 作らなければならないものっていうのは客のニーズに答えるものであり、 設計→仕様書→プログラミング→テストという順です。 ~という手順で、とお願いされたら「はい」ではなくて「それはおかしいです」というべきものです。 (1)sub1が異常終了する場合 ・「sub1失敗」のメッセージが出力されること。 それでいいのですか?という答えは客が持っています。
guest

0

工程ごとにドキュメントがあるのが正しいあり方だと思いますが、現実的にはそうでないケースもありますね。
基本的にはすべてを網羅して期待値を記入した上でテスト実施前に依頼元に確認してからテストを実施という流れになるかと思います。

私が某F社の方に教わったやり方は要因分析表を使うもので要因分析表示体がテスト設計になるというものでした。

要因分析表とはエクセルを使って横軸に入力要因を並べて縦軸に要因の入力パターンを列挙します。テストパターンは入力パターンの組み合わせとなるので横軸の最終列に期待値と結果を記入できるようにしておきます。入力パターンは仕様書があるなら仕様書から、なければ境界値付近、代表値などで取っていきます。
関数からの戻り値も入力要因だった気がしますが詳しいことは忘れました。

cshのスクリプトは読めないので表は適当です。。。

| パターン \ 要因| str1 | str2 | sub1の戻り値($?) | sub3の戻り値($?) | sub4の戻り値($?) | 期待値 | 結果 |
|:--|:--:|--:|--:|--:|
| 1 | NULL | NULL | 0 | 0 | 0 | | |
| 2 | 非NULL(長さ1) | NULL | 0 | 0 | 0 | | |
| 3 | 非NULL(長さ10) | NULL | 0 | 0 | 0 | |
| 4 | 非NULL(...) | NULL | 0 | 0 | 0 | | |
| 5 | 非NULL(...) | NULL | 0 | 0 | 0 | | |

正直無駄の多い方法だとは思いますが、エビデンスとしてきちんと残せますし、テスト設計者とテスト実施者を分けることが出来ますし、プログラムの把握にはつながると思います。

投稿2017/06/11 00:42

nullbot

総合スコア910

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/06/11 00:58

ご回答ありがとうございます。 要因分析表作ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問