ソフトウェアテストのアート(読書ノート2)

次の書籍は、研究ノートのセクションの第二部の始まりです

ソフトウェアテストの第二部

  第5章単位(モジュール)テスト;第6章、より高いレベルの試験には、ケースの設計第4章を含みます

第4章テストケースの設計

   時間とコストの制約のため、設計、テストケースのセットを構築することができ、ほとんどのエラーで見つけることができる非常に重要になってきます。

  この章では、ユースケースを包括二つの方法であるように設計された場合に実際のテスト、よう、テストケースを設計するための一般的なブラックボックスとホワイトボックスアプローチを記載しています。まず、ホワイトボックステスト方法を補充し、任意にブラックボックステストケースを使用する方法、および。

  1、ブラックボックス

  目的を満たしていないブラックボックスには、同等の分割法、境界値法、原因と結果の図を含むプログラムの仕様は、(使用しない)場所を見つけることです。

  1)同値分割方法

  プログラムは、等価クラスの限られた入力範囲に分割され、試験等価クラスは、他の試験データクラスに相当します。同値分割テスト設計方法は、2つのステップがあります:(1)等価クラスを決定するステップと、(2)テストケースを生成します。

  (1)等価クラスを決定します

    等価クラスと有効無効に各グループを分割した後、次いで、最初の、2つ以上のグループ(クラス)に分割され、各入力条件(プログラム仕様の文またはフレーズ)を、選択し価格カテゴリ

外部入力条件 効果的な等価クラス 無効な等価クラス
番号は1から999までであってもよい(範囲) 1 <数<999 番号<1、数> 9​​99
車登録所有者(数値)1〜6個のへ 1-6の所有者があります。 以上の6のない所有者または所有者は、

車両は、バス、トラック、タクシー、電車やバイク(入力値の集合)である必要があります

車両を入力します。 トレーラー
識別子の最初の文字は英字でなければなりません(規定はケース「でなければなりません」) 最初の文字は文字です 最初の文字はアルファベットではありません

  (2)テストケースを生成します

    1.各等価クラスの数を設定します。

    2.書き込みテストケースは、より効果的にクラスが発見等価カバー

    明らかに無効な等価クラスをカバー3.書き込みテストケース、

  2)境界値分析

  境界条件は、まさにそれらの等価クラスの境界で、または境界、境界以下を超えて入力と出力の状態を参照してください。そして、ここで何も同値分割ありません

用例方法 データセレクター 入力/出力条件
同値分割 いずれかの要素は、缶 条件入力にのみ焦点を当てます
境界値分析 各境界要素 入力と出力が懸念されています

  境界条件に関する一般的なガイダンス

外部条件 境界条件
入力値の指定された範囲 国境を越えた場合のためにだけ、無効な入力デザインのユースケースを設計 +1.0 -1.0、-1.0、1.0はずの範囲で、設計-1.001 -1001に従うと
入力値の所定数 最小数のために、最大数は、ケースの設計の最小数より1つ多い、最小数未満であります 入力ファイルのレコードは1から255まで収容することができ、設計が0,1,255,256基づいている必要があります
所定の出力値レンジ 国境を越えた場合のために、念のデザイン、無効な出力のデザインを使用 プログラム控除額¥0.00¥1165.25に設計結果差し引か負量または¥1165.25ユースケースを超えながら、設計は、¥0.00¥1165.25の場合に控除されるべきです
所定の出力値の数 最小数のために、最大数は、ケースの設計の最小数より1つ多い、最小数未満であります 多くて4つよりレコードの必要な数を取得するための情報検索システムは、また、実施例5の表示のために設計された、0、1、4レコードの数を示すように設計されるべきです
Oである順序付けられたシーケンス(シーケンシャルファイル、線形リスト) シーケンスの最初と最後の要素

  図因果3)方法

  境界値分析と同値分割条件の入力の組合せを分析する必要はなく、図を引き起こし得ます。図因果オブジェクトは、高い収集システムの試験方法を用いて選択されます。いくつかの商用ソフトウェアを使用するときに理解することができ、助けることができます。

  2、ホワイトボックステスト

   ホワイトボックステストは、プログラムロジックのソースコードに焦点を当て、構造が正常に実行されます。ステートメントカバレッジ、デシジョンカバレッジ、条件カバレッジ決意/条件カバレッジ、複数の条件カバレッジ、を含みます。

  1)ステートメントカバレッジ

  定義:各ステートメントが少なくとも一度実行されるプログラム。  

public void foo(int a, int b, int x) {
    if (A>1 && B==0) {
        X = X/A;
    }
    if (A==2 || X>1) {
        X=X+1;
    }
}

   如果A=2,B=0,X=3,每条语句被执行一次,但并没有发现什么错误,没有什么用处。

  2)判定覆盖或分支覆盖

  定义:编写足够测试用例,使得每一个判断都至少有一个为真和为假的输出结果。

public void foo(int a, int b, int x) {
    if (A>1 && B==0) {
        X = X/A;
    }
    if (A==2 || X>1) {
        X=X+1;
    }
}

  如下图所示,如果按照判定覆盖定义去设计测试用例,只需要设计测试用例,涵盖路径ace和abd,或者涵盖路径acd和abe就可以满足要求。如果选择acd和abe路径,测试用例的输入A=3,B=0,X=3和A=2,B=1,X=1。如果第二个判断存在错误,测试用例是无法发现错误。

       

  3)条件覆盖

  定义:编写足够的测试用例,将一个判断中的每个条件的所有可能结果至少执行一次。条件覆盖比判定强,因为条件覆盖会使判断中每个条件都取两个结果(真和假)。

  比如在a点处有两个条件A>1和B=0,那么需要设计测试用例,能在a点处出现A>1,A<=1,B=0和B<>0的情况。

  虽然条件覆盖能够满足判断中条件的真假,但是对判断语句的真假不能满足。所以需要将判定覆盖和条件覆盖进行结合。

  4)判定/条件覆盖

  定义:设计足够的测试用例,将判断中每个条件的所有可能的结果至少执行一次,且将每个判断的所有可能的结果至少执行一次。

  如下图所示将判定和条件覆盖进行结合,但是因为A>1和B=0是相“与”的关系,A=2和X>1是相“或”的关系,在编译器中,如果“与”表达式中有个条件为“假”,则不会执行后续条件;如果“或”表达式中有个条件为“真”,不会执行后续条件。程序不能执行H中为假的分支,以及判断K中为真的分支。所以判定/条件覆盖可能不会发现逻辑表达式中的错误。 

 
  5)多重条件覆盖
  定义:编写足够多测试用例,将每个判定中的所有可能的条件结果的组合,以及所有的入口点都至少执行一次。存在循环情况下,多重条件覆盖准则所需测试用例数量远小于其路径数量。
    if(x==y && length(z)==0 && FLAG) {
        j = 1;
    }
    else {
        i = 1;
    }

  对以上判定语句进行分析,每个条件有以下三种情况

    1.x==y,x!=y

    2.length(z) ==0,length(z)<>0

    3.FLAG,!FLAG

  从三种情况进行条件组合,有8个测试用例

    1.x==y,length(z) ==0,FLAG

    2.x==y,length(z) ==0,!FLAG

    3.x==y,length(z)<>0,FLAG

    4.x==y,length(z)<>0,!FLAG

    5.x!=y,length(z) ==0,FLAG

    6.x!=y,length(z) ==0,!FLAG

    7.x!=y,length(z)<>0,FLAG

    8.x!=y,length(z)<>0,!FLAG

  3、错误猜测方法

  是一种依赖直觉的非正规过程。基本思想是列举出可能犯的错误或错误易发情况的清单,然后根据清单来编写测试用例。这种方法很难系统化,严重依赖于个人能力。

  假设测试一个排序程序,应探讨如下情况测试用例

  1.输入列表为空

  2.输入列表仅包含一个条目

  3.输入列表所有条目的值都相等

  4.输入列表已经排过序

  综上,测试用例的设计,首先,可以根据规格说明书文档,通过黑盒方法中的有效等价类和边界值分析方法进行设计;然后,根据测试经验用错误猜测方法增加更多的测试用例;最后,可以检查程序的逻辑结构,使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则进行用例设计。

 

おすすめ

転載: www.cnblogs.com/chengabc/p/11254877.html