• 締切済み

ホワイトボックステスト

「パス」を網羅することがのホワイトボックステスト やり方だと思うのですが、どうして"「パス」を網羅すること"が "論理構造の正しさを確認すること"と同じになるのでしょうか。

みんなの回答

回答No.4

>仕様に乗っ取っているかどうかをテストするのは、ブラックボックス >テストになるのかな。 これは正解です。 >「論理構造が正しい」という言葉自体は、 >  ・実行時エラーにならない。 >  ・無駄なコードがない。 >と置き換えて考えても問題ないでしょうか。 > >ホワイトボックステストでは、プログラムが仕様に乗っ取って >いるかどうかをみるテストではないと。上記のことを確認するための >テストであると。 こっちの方はちょっと微妙ですね。 「論理構造が正しい」という言葉を、「実行時エラーにならない」と置き換えて考えても問題はないと思います。ただ、「無駄なコードがない」という言葉には置き換えれないと思います。 一般に、「見た目は全く同じ動作をしているけれども、無駄なコードをなくして将来的に機能拡張し易いコードに変更していく作業のこと」をリファクタリングといいます。 (A)論理構造は正しく(実行時エラーはなく)、仕様通りの動作をしているけれども、無駄なコードがあるプログラム (B)論理構造は正しく(実行時エラーはなく)、仕様通りの動作をしているのに加えて、無駄なコードがなく拡張性に優れたプログラム 手短にいえば、リファクタリングとは、(A)から(B)に修正することですね。 ホワイトボックステストともまた、「仕様に乗っ取っているのかどうかをみるテスト」でもあります。この辺りがややこしい所でもありますね。以下がブラックボックステストとホワイトボックステストの違いです。 ブラックボックステスト[機能テスト]→プログラム内の個々の処理は考慮せず、入力と出力の流れが仕様通りの動作となっているかを確認するためのテスト。 ホワイトボックステスト[構造テスト]→プログラムの一つ一つの処理の流れが、仕様通りの動作となっているかを確認するためのテスト。 実際の開発現場においては、余程の小規模でもない限り大半がチーム開発となります。そうなると、やはり個々のプログラマさんによっては無駄なコードがあったりなかったりと、ソフトウェアの品質にもバラツキが出てきたりします。 そのような中で、とりあえずブラックボックステストにおいては、お客様の要求している機能を満たしているのかどうかを見るわけです。(お客様も又、個々のソースプログラムが具体的にどのようになっているのかは知り得ないですよね。) はたまた、ホワイトボックステストにおいては、個々のプログラマによっていろいろと実装の違いや無駄なコードの有り無しがあるでしょうけど、ソースプログラムの処理1つ1つが、仕様を満たしているのかどうかをチェックするわけです。 仕様で決められているものの一つに、「パラメータ」がありますよね。ブラックボックスにおいては、あるパラメータを入力した時に、また別の期待されたパラメータが返ってきたら、それでテストとしてはOKなわけです。同じく、ホワイトボックスにおいては、仕様によって定められたパラメータを入力した時に、内部でそのパラメータが期待している通りに処理されているかをチェックするわけです。 つまるところ、"「パス」を網羅すること"と"論理構造の正しさを確認すること"の二つも、如何様にも読み取れそうです。「論理構造の正しさ」というのが、あるシステム内での仕様に限定されるものであれば、用はそのためのテストにおいて、「パス」の網羅率を上げていき、デバッグもきちんとこなしていって仕様通りの動作となっていることが確認できれば、その時点で上記の2つは同じとなります。(よく実務レベルでも、論理構造的におかしいのではないか?と開発者さんが声を上げても、設計者さんが「これが仕様です。」と言えば、それがまかり通ってしまうものです。→結果的に、「論理構造が正しい」ということになる!!) ただ、この「論理構造の正しさ」というのが、一般的なソフトウェアやコンピュータシステム全般の品質や信頼性などに係わってくるものであると仮定したのならば、#1さんのおっしゃる通りとなります。

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

他の回答者さんと同じく、"論理構造の正しさを確認すること"という表現は、少し分かりづらいように思われます。(何かしらの洋書を、そのまま訳したものなんでしょうかねえ?) ただ私が察するに、この文章を書かれた方は、用するに「背理法」のような考え方を述べたかったのだと思います。もちろん、以下のような手法を用いれば様々なテストケースを実施することができますが、そこから言えることというのは、単に言語仕様として正しい動作をしている、ということぐらいです。 ・ステートメント・カバレッジ[命令網羅] ・ブランチ・カバレッジ、デシジョン・カバレッジ[判定条件網羅] ・条件カバレッジ[条件網羅] ただ、考えられうるあらゆるテストケースやテストスイート[テストセット]を実施した上で、それでも何ら「論理構造が正しくないこと」が確認できなかったのならば、そもそも「論理構造は正しくないことはない」、つまり、「論理構造は正しい」という結論が導き出せると思います。(とにかく、最初の段階では論理構造が正しいのか、それとも正しくないのかどうかについて分からないので、とりあえず、「論理構造は正しくない」と仮定して、実に様々なテストケースを実施し、網羅率をどんどんあげていこう。そして、もしその仮定が正しかったならば、一つぐらいはバグが見付かるはずだ、という考えですね。それにもかかわらず、バグが一つもなかったのならば、実際には最初の仮定とは反対で、「論理構造は正しい」のではないか、ということです。)

参考URL:
http://www.jstqb.jp/syllabus.html
otaks
質問者

お礼

ご回答ありがとうございます。 「論理構造が正しい」という言葉自体は、   ・実行時エラーにならない。   ・無駄なコードがない。 と置き換えて考えても問題ないでしょうか。 ホワイトボックステストでは、プログラムが仕様に乗っ取って いるかどうかをみるテストではないと。上記のことを確認するための テストであると。 仕様に乗っ取っているかどうかをテストするのは、ブラックボックス テストになるのかな。

全文を見る
すると、全ての回答が全文表示されます。
  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.2

> ”「 パス」を網羅すること"が > "論理構造の正しさを確認すること" にはならないと思いますが、 逆の > ”「 パス」を網羅『できない』こと"で > "論理構造に『間違いがある』事を見つけること" は、ありえますね。 「絶対実行できないパス」があるということは、 分岐条件の設定を間違えているか、そもそも必要ない分岐かどちらかでしょうから・・・

otaks
質問者

お礼

ご回答ありがとうございます。 おっしゃることは基本的にNo.1さんと 同じことでしょうか。

全文を見る
すると、全ての回答が全文表示されます。
  • notnot
  • ベストアンサー率47% (4856/10272)
回答No.1

"「パス」を網羅すること"と"論理構造の正しさを確認すること"とは同じではないですね。 "「パス」を網羅すること" は単に未テストのコードがないということを示すだけです。そんなことで、論理構造の正しさが示せるなら、世の中正しいプログラムだらけです。

otaks
質問者

お礼

ご回答ありがとうございます。 >"「パス」を網羅すること" は単に未テストのコードがないということを示すだけです。 私もそう思いました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ホワイトボックステストの目的は・・

    ホワイトボックステストの目的は何でしょうか。 本などを読むと、ソースコードの論理構造の正しさを 確認すること、となっていまが、それがいまいち分かりません。

  • ホワイトボックステスト

    こんにちは。 ホワイトボックステストにおける 「判定条件網羅」「条件網羅」「複合条件網羅」の違いがわかりません。 参考書によると ・判定条件網羅・・・それぞれの判定条件が真の場合の処理と偽の場合の処理を、少なくとも1回は実行する ・それぞれの判定条件が真になる場合と偽になる場合の処理を、少なくとも1回は実行する。 ・複合条件網羅・・・判定条件が複合されているときに。起こりうるすべての場合について、少なくとも1回は実行する となっています。 特に「判定条件網羅」と「条件網羅」の違いがわかりません。 すみませんが、教えてください。

  • ホワイトボックステストの条件網羅について

    ホワイトボックステストの条件網羅について質問です。 (1)確認ですが、条件網羅のカバレッジはC2でいいのでしょうか? これは会社によって呼び方が違ったりしますか? それともISOかなんかで取り決めがあるのでしょうか? (2)条件網羅のやり方として、if( a or b )だとしたら aが1と0、bが1と0を試せばいいと言う事でしょうか? だから、パターンとして、 パターン1:aが0、bが1のとき。aが1、bが0のとき パターン2:aが1、bが1のとき。aが0、bが0のとき この二つのパターンがあるということでいいでしょうか? この理解があっているかご確認いただきたく。 よろしくお願いいたします。

  • ホワイトボックステスト と ブラックボックステストの違い

    現在、PHPで簡単なアンケートフォームを作り、自らチェックリストを作る作業をしているのですが、その際に作る、「ホワイトボックステスト」と「ブラックボックステスト」のテスト項目がほとんど同じになってしまい、違いがよく分かりません。 ホワイトボックステスト:コードの中身に着目し、全てのコードを実行するテスト。 ブラックボックステスト:入出力に着目し、プログラムが仕様に沿った動きをするかをチェックするテスト。 ということは、だいたい把握しています。 しかし、実際にチェック項目を作ると大差ないチェック項目になりませんか? 何が違うのか教えてください。 例えば:名前(全角10文字)、年齢(半角3ケタ)、性別(ラジオボタン) のフォームを作り、条件入力にはエラーを表示するというプログラムのチェックリストです。 よろしくお願いします。

  • ☆★☆ホワイトボックステストの条件網羅について質問です!☆★☆

    ☆★☆ホワイトボックステストの条件網羅について質問です!☆★☆ 判定条件網羅は、「判定文における真偽の分岐をいずれか少なくとも1回は実行する」となっており、 例えば A and B の条件があれば、 テストケースは No1 A=真 B=真 AandB=真 No2 A=真 B=偽 AandB=偽 No3 A=偽 B=真 AandB=偽 No3 A=偽 B=偽 AandB=偽 となり 要するに、判定条件網羅は「判定結果が真と偽になる結果をそれぞれ選べ!」と言うことで No1とNo2~No3のいずれかであると理解できます。 ・・・が、しかし 条件網羅は、「複数の条件が組み合わさっている場合、それぞれの条件について少なくとも1回は実行する」 と言った説明が教本ではされていましたが その答えが No2とNo3 となる理由が理解出来ません。 どなたか、条件網羅がなぜ上記のような回答となるのか ご説明を願いします。

  • ホワイトボックステストのテスト項目抽出方法について

    ホワイトボックステストのテスト項目抽出方法について 以下の2点を質問させてください。 (1)void型(戻り値なし)のメソッドのテストは普通行うものなのか? (2)メソッド内に他クラスのメソッドが含まれている場合はどうやってテストするのか? よろしくお願いします。

  • ホワイトボックスの良い点って何ですか?

    ホワイトボックスPCのメリットって何になるのでしょうか?

  • ブラックボックステストの内容について

    ITパスポート試験を勉強中の者です。 テスト技法に「限界値分析」「同値分割」がありますが、これはどの段階でのテストなのでしょうか?ブラックボックステストの範囲で行われるテストなのでしょうか? システム開発テストには、単体テスト、結合テスト、システムテスト、運用テストがあり区別が曖昧でよく分かりません。 特に「同値分割、限界値分析」はテスト技法なのでブラックボックステストに限らず、各段階のテストでなされるテストだと思うのですが良く分かりません。ブラックボックステストの中だけで行われるテストなのでしょうか? とすれば、ブラックボックステストはどの段階のテストに入るのでしょうか? ホワイトボックステストは単体テストで行われると記述してありましたが・・・。 文化系で理科系ではないので良く分かりません。宜しくお願いします。

  • ホワイトボックステスト関連の質問です。

    分岐網羅テストの際には、 全ての命令に肯定的な結果を出す場合と、 全ての命令に否定的な結果を出す場合とだけをカバーさせて、 肯定的な結果と否定的な結果との組み合わせを盛り込まないのでしょうか?

  • テスト、試験の方法について

    私は新人の社内SEです。主にCOBOLを使った設計、開発をしています。 プログラミングのテスト、試験の方法について、お伺いします。 私の会社は、試験の際のルールは特に決まっておらず、 そのプログラムが通るロジックが正常に動作するか、を網羅するくらいで、 あとはバグの条件を経験と勘で探ることをしています。 テスト不足で迷惑をかけることが多く、なんとかしたいと思い方方調べてみました。 すると、テストにはいろいろな手法があるらしい、ということがわかりました。 制御パステスト、境界値テスト、ホワイトボックステスト 、ブラックボックステスト ・・・分類と内容はまだよくわかりませんが、 世間一般ではこういった手法にのっとり行われるようだ、ということがわかりました。 Q1.私の会社のようなことをしているのは珍しいのでしょうか。 それともやはり経験と勘が頼りなのでしょうか。 Q2.ある手順にのっとって進めることで、ミスは減るのでしょうか。 外注、社内問いません。みなさんの状況と経験をお聞かせください。

このQ&Aのポイント
  • 銀行からの振り込み確認のかかってきた電話の質問に数字と♯を押して回答する時に反応しない。
  • 出来ない。自動接続でプッシュ回線にはなっている様子。だが、押してもなんの反応もない。
  • お困りの状況は、MFC-J737DNという製品名のプッシュ回線が使えない問題です。銀行からの電話で数字と♯を押すことができず、自動接続ではあるが反応がない状態です。
回答を見る