6

私はセレンが初めてで、ファズテストも行っています。Selenium IDE では、固定されたテスト ケースのみが許可されているようです。しかし、ファズ テストが役立つようです。

ファズ テストの背後にあるもの、Selenium が提供するテストの種類は、ブラック ボックスまたはホワイト ボックス テストです。

どんな助けでも大歓迎です。

4

2 に答える 2

15

短い答えの場合:

  • Selenium は主にブラック ボックス テストに関するものですが、Selenium を使用してよりホワイトなテストを行うこともできます。
  • Selenium RC を使用すると、Selenium IDE よりもはるかに自由にファズ テストを実行できます。

長い答えについては、以下を参照してください。

この投稿では、Selenium RC を使用して Web アプリケーションをランダムにテストするという概念について説明しようと思います。

通常、Selenium のようなブラックボックス テスト手法を使用すると、

  • (1) 特定のフィールドに任意の値を入力します
  • (2) 特定の HTML フォームでテストするフィールドを選択します
  • (3) 実行順序/ステップを選択して、特定のフィールド セットをテストします。

基本的にあなた

  • (1) を使用して、HTML フォームの特定のフィールドをテストし (フィールドの最大長を適切に選択したか)、そのフィールドの値の JavaScript 処理をテストします (例: "t" を今日の日付に変換し、"+1" を明日の日付に変換します)。日付)、およびその変数のバックエンド データベースの処理 (VARCHAR の長さ、数値文字列の数値への変換など)。
  • (2) を使用して、すべての可能なフィールドをテストします
  • (3) を使用して、フィールド間の相互作用をテストします。ユーザー名フィールドがパスワード フィールドの前に入力されなかった場合にポップアップする JavaScript アラートはありますか? 特定の条件のときにデータベース (Oracle など) トリガーが「ポップアップ」しますか?満たされません。

すべて (すべての変数の可能な組み合わせによって構築されたプログラムのすべての状態) をテストすることは、理論上でも不可能であることに注意してください (たとえば、文字列を解析するために使用される小さな関数をテストすることを検討してください。その場合、文字列にはいくつの可能な値がありますか?) . したがって、実際には、リソース (時間、お金、人) が限られている場合、Web アプリケーションの「最も重要な」実行パスのみをテストする必要があります。パスは、(a) 頻繁に実行される、(b) 仕様からの逸脱が重大な損失を引き起こすという、より多くのプロパティを持っている場合、より「重要」と呼ばれます。

残念ながら、アプリケーションのすべてのユース ケースを記録し、最も頻繁に使用されるものを選択しない限り、どの実行ケースが重要であるかを知ることは困難です。これは非常に時間のかかるプロセスです。さらに、少なくとも実行されたユースケースのいくつかのバグでさえ、それがセキュリティ ホールである場合、多くの問題を引き起こす可能性があります (たとえば、ある PHP ページの URL 処理に小さなバグがあると、誰かがすべての顧客のパスワードを盗むなど)。

そのため、何かを実行してすべてをスキャンすることを期待して、テスト スペース (つまり、これらのユース ケースで使用される値のスペース) をランダムにスキャンする必要があります。これはファズ テストと呼ばれます。

Selenium RC を使用すると、すべてのフェーズ (1)、(2)、および (3) を簡単に実行できます。Java、PHP、CSharp、Ruby、Perl などのサポートされている言語でプログラミングを行うことにより、任意の実行ステップで任意のフィールドの任意の値をテストできます。 、パイソン。

以下は、これらすべてのフェーズ (1)、(2)、および (3) を実行する手順です。

  • HTML フィールドのリストを作成して、簡単に繰り返し処理できるようにします。HTML フィールドが十分に構造化されていない場合 (従来の理由)、 (1) XPathの形成を簡素化し、(2) XPath の解決を高速化し、(2) XPath の解決を高速化し、 (3) 翻訳の煩わしさを避けるため。これらの新しく追加された selenium-id の値を選択する際に、(a) 連続した番号を使用する、(b) 一貫性を形成する名前を使用することにより、ファジングしながら自由に反復できます。
  • ステップを制御する確率変数を作成します。たとえば、rand_step
  • フィールドを制御する確率変数を作成します。たとえば、rand_field
  • 最終的に、特定のフィールドに入力された値を制御する確率変数を作成します。たとえば、rand_valueです。
  • ここで、ファジング アルゴリズム内で、最初にrand_stepの値を反復処理し、次にその反復ごとにrand_fieldを反復処理し、最後にrand_valueを反復処理します。

とはいえ、ファズ テストは、限られた実行時間の後にアプリケーションのユース ケース値の空間全体をスキャンするのに役立ちます。「Microsoft Internet Explorer、Microsoft Word、Microsoft Excel などの一般的なクライアント側アプリケーションに影響を与える新たな脆弱性が次々と出現しています。これらの脆弱性の大部分は、ファジングによって発見されたものです

しかし、ファズ テストには欠点がないわけではありません。その 1 つは、これらすべてのランダム性が与えられたテスト ケースを再現する機能です。ただし、次のいずれかを実行することで、この制限を簡単に克服できます。

  • 一定期間使用するバッチファイルで事前にテストケースを生成し、このファイルを段階的に適用する
  • その場でテストケースを生成し、それらのケースをログに記録する
  • 失敗したケースのみをログに記録します。
于 2012-05-18T10:47:30.180 に答える
3

Seleniumがブラックボックスかホワイトボックスかについてさらに答えるには。

ブラックボックスとホワイトボックスの定義

  • ブラック ボックス: 1 つのボックス (通常はアプリ全体) が入力を受けているときに正しい出力を提供するかどうかを確認します。理論的には、考えられるすべての入出力ペアが検証されれば、アプリケーションにバグはありません。
  • ホワイト ボックス: ソースの制御フローをチェックします。理論的には、すべての実行パスに問題なくアクセスできれば、アプリケーションにバグはありません。

しかし実際には、すべての入出力ペアを実行することも、すべての実行パスを実行することもできません。

  • 時間
  • お金
  • 人々

Selenium の場合: 値を入力するか、Web アプリケーションで特定のクリックを行うことでユーザーを模倣し、ブラウザーが目的の動作を提供するかどうかを待ちます。Web アプリケーションの内部機能が実際にどのように機能するかを知りませんし、気にしません。これが、典型的な Selenium テストがブラックボックス テストである理由です。

于 2012-05-18T10:56:33.260 に答える