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

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

新規登録して質問してみよう
ただいま回答率
85.48%
ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

2回答

3838閲覧

ホワイトボックス試験のテスト項目

Thrush

総合スコア58

ユニットテスト

ユニットテストは、システムのテスト手法の一つで、個々のモジュールを対象としたテストの事を指します。対象のモジュールが要求や性能を満たしているか確認する為に実行します。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2017/05/15 10:21

###ホワイトボックス試験のテスト項目
C++で組み込みのソフトウェアを作っています。
作成しているコードに対して、ホワイトボックス試験でC1カバレッジ100%を指示されています。
C1カバレッジ100%を要求された場合、以下のようなループ処理内に条件分岐がある関数はどのような試験項目を挙げるべきでしょうか。

C++

1 2bool 3condition(); 4 5void 6target_func() 7{ 8 for (int i = 0; i < 100; ++i){ 9 if (true == condition()) 10 /*何らかの処理*/ 11 else 12 /*何らかの処理*/ 13 } 14}

「C1の定義としてはどういう試験項目になるのか」と「現場の現実解としての試験項目の上げ方」を教えてください。

###補足
・C1カバレッジ100%は、おそらく掛け声だけ(になると思う)なので回答の際はカバレッジはあまり気になさらないでください。
・単体試験の前任者には「担当者のやりやすいように試験項目をつくってよい」と言われているため、
最悪適当に試験項目を作ることはできます。コードが与えられたときの試験項目の上げ方にルールがないと気持ち悪いので質問しました。

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

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

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

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

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

guest

回答2

0

ベストアンサー

「C1の定義としてはどういう試験項目になるのか」と「現場の現実解としての試験項目の上げ方」を教えてください。

カバレッジ100%と言う時点で、厳密に計測する気がないのは明らかなので、現実解という観点で。

  1. まずカバレッジ100%であることを説明する、テストの役には立たない資料を作成します。ここでは、ソースコード中の if 文の分岐がいくつあるので、テスト項目をいくつ設けました、と「なんとなく数字でわかった気になる」「上司うけする」資料にします。
  2. 実際のテストは「テスターとしての経験を動員して」バグを見つけられるような、カバレッジとか気にせず、ソースコードのホットスポットとなる部分を頑張ってテストします。

残念なことに、1. の作業が単純に増えるだけで、テストがよりよくなったりしませんが、仕方ないと諦めます。

「カバレッジ100%なのに、なぜこんなに品質が悪いんだ?」みたいなイチャモンをつけられやすくなるので、1. の作業時間は限界まで小さくして、カバレッジ100%を達成するためにテストの時間が余分にかかる、と説明しつつ、2.の作業時間を増やして下さい。

投稿2017/05/15 12:52

koko_u

総合スコア936

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

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

Thrush

2017/05/16 14:46

回答有難うございます。 教えていただいた現実解でいくしかなさそうですね。 大変参考になりました。
guest

0

厳密に言えば、条件分岐を全て網羅すべしがC1なので、ループ内の如何に関わらず、試験が必要です。
そもそも、ループ内での条件分岐は、脱出条件などが多いので、重要になるのではないでしょうか。
また、ループ内でそれ以外の条件分岐は本当にループ内である必要があるのかの検討が必要で、
ループの外に出しても意味が変わらない場合はリファクタリング対象になるでしょうし、やはり必要との
ことであれば、試験は必要ということにもなるかと。
さらに、ループ回数により条件が変わるのか否かは実装マターになりますが上記のようにループ内に
条件分岐が必要な場合、基本的にはループ回数により条件が変わるはずですので、ループ回数により
試験項目を決定するということになるのではないでしょうか。

投稿2017/05/15 11:45

t_obara

総合スコア5488

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問