検証と検証はテストプロセスの一部ですか?


9

多くのソースに基づいて、私はテストの目的ができるだけ多くのバグを見つけることであるとは信じていません-私たちはそれが機能するか機能しないかを確認するためにテストします。例えばfollowintはISTQBからのテストの目標です:

  1. (ソフトウェア製品)が指定された要件を満たしていることを確認します(その検証だと思います)

  2. (ソフトウェア製品)が目的に適合していることを示す(これは検証だと思います)

  3. 欠陥を検出する

    テストは検証、検証、欠陥検出であることに同意します。あれは正しいですか?


1
テストに関する本で最初に述べていることは、「テストはソフトウェアが正しく動作することを示すプロセスではありません。それは欠陥を見つけるプロセスです」です。そして、本はそのようなテストを定義する多くの理由をもたらします。つまり、検証は、ソフトウェアが要件を満たしていない場所を見つけるプロセスです。
superM 2012年

definitonによれば、検証は要件が満たされていることを保証します。実際、本はテストをソフトウェアの品質を測定するプロセスとして定義しています。それで、システムが機能しているかどうかを確認するためにシステムが機能している(ポジティブである)ことを確認している場合、バグを探していないのでテストではありませんか?:) Wikipediaの:テスト技術は、これに限定されないが、ソフトウェアのバグを見つけることを意図してプログラムまたはアプリケーションを実行するプロセス
ジョンV

テストという単語の境界を特定する最善の方法は、仮説をテストすることを考えることです。その場合、仮説に誤りや不正確さが存在しないことをテストしようとしているのですが、これは、その有用性を検証することとは異なります。または、それが適用可能かどうかを検証する場合、これは目的に関係なく、その全体の動作スコープを識別する場合にすぎません。
ジミー・ホッファ

「素敵な質問」のボーナスがあります:)
アンドリュー

回答:


1

正解だと思います。

  1. 検証と検証は異なるものであり、実際にはかなり明確に定義されています。このドキュメントはあまり好きではありませんが、ISO 9000ffはQAに非常に関連性が高く、検証とは製品とその要件を比較することであり、検証はそれが実際に顧客/ユーザーのニーズに適合しているかどうかを確認することと定義しています。 。

  2. どちらもテストを通じて行うことができます。検証を行うと、テストによってフォーム要件が生成されます。検証は、要件を直接参照せずにテストによって行われるテストにつながります。これはしばしば探索的テストと呼ばれていると思います。明らかに、それはユーザーの本当のニーズを真に理解している人によって行われなければならないので、本当のユーザーによるアルファとベータのテストは明白なオプションです。

  3. 理論的には、最初の2つでカバーされるものはすべてバグではないと主張できるので、別の目標としてバグを見つけることは意味がありません。しかし、実際には検証または検証できないものがあると思います。たとえば、セキュリティ:ソフトウェアシステムが攻撃に対して安全であることをどのように検証または検証しますか?代わりに、脆弱性を見つけようとします。この検索で​​は、問題が見つからない場合は何も検証または検証されませんが、成功した場合はバグが見つかります。


問題は、検証は動的であるが検証は静的であると多くのソースが言及していることです。とても混乱しています。それでは機能テストは何でしょうか?私はその動的な検証を言います。–
ジョンV

1
この検証と検証の定義を使用しているソースは何ですか?一方、私は-testで終わるものの定義について明確で一般的に合意していることを知りません。だから私はあなたのために機能テストが何であるか本当に知りません。
Jens Schauder、2012年

たとえば、ISO 12207は、検証プロセスとしてのみテストを制限しています。
ジョンV

3

ウィキペディアから:「...つまり、検証は、製品が実際にユーザーのニーズを満たしていること、および仕様がそもそも正しいことを確認し、検証は、製品が要件と設計仕様に従って構築されていることを確認しています。検証により、「正しいものを構築した」ことが確認されます。検証により、「正しく構築した」ことが確認されます。検証により、提供された製品が意図した用途を満たしていることが確認されます。

ユーザーのニーズをテストして、仕様がコードで正しいかどうかを確認することはできません。そのため、検証はテストでは行われません。

検証では、要件と設計が正しいことを前提としているため、コードを記述してテストできます(テスト)。


私は同意しません-テストは単にコードをテストするだけではなく、ドキュメントテストなどもあります。BTW、ウィキペディアはまた言います:ソフトウェアテストは、ソフトウェアプログラム/アプリケーション/製品を検証および検証するプロセスとして述べることができます。これがユーザーの望んだものであるかどうかに関係なく、その実行者と調査によるプログラム。
John V

実際にあなたは正しいです。テストプロセスにはテストの受け入れも含まれますが、ユニットテスト、統合テスト、システムテストについて説明しました。テストプロセス全体について考える場合、検証と検証はテストによって行われます。
Mert Akcakaya 2012年

1

現実の世界では、テストはソフトウェアの要件(ビジネス/機能/非機能)を満たすソフトウェアの検証です。これらの目的は、ソフトウェアが目的に合っているかどうかを判断することです。アプリケーションの要件を満たさない動作は欠陥です。ソフトウェアが目的に適しているかどうかを判断する前に、その重大度を重み付けする必要があります。

重大度が低い欠陥は、ソフトウェアを本番タイプの使用に渡す際の問題ではない可能性があります。重大度が高い場合は、修正を作成する必要がある場合があります。現実の世界では、すべてのソフトウェアに欠陥があり、一部はコーディングの問題であり、他は要件の欠落によるものです-未知の要件をテストできないため、テストされない可能性があります。


1

検証と検証には多くの定義があります。多くの人はV&Vタグを使用して両方を1つのアクティビティにグループ化しています。目的は、ソフトウェアが正しいことを行い、正しいことを確実にすることです。要件への準拠をチェックするか、バグを見つけようとするかは、このレベルでは必須ではありません。

テストは、検証と検証のための多くの手法の1つであり、その逆ではありません。コードレビューは別の1つであり、正式な検証であり、数学的証明がもう1つあります。

それでも、テストは、要件を満たしているかどうかを確認するためではなく、バグを見つけることを目的として実行する必要があります。

主な違いはテスターの心にあります。ソフトウェアが失敗したことを示すテストケースを構築する(バグを見つける)よりも、ソフトウェアが意図したとおりに機能することを示す(コンプライアンスをチェックする)テストケースを構築する方がはるかに簡単です。

優れたテスターは、安全な方法でソフトウェアを実行することではなく、ソフトウェアの破壊に情熱を傾けています。


ありがとうございます。ただし、要件が満たされていることを確認するためのテストも行わないでください。ソフトウェアが動作することを確認し(仕様を満たす)、欠陥を見つけようとします。つまり、バグを見つけることだけではありません。テストの主な目的はバグを探すのではなく、品質を測定することであると書いた本を覚えています。最初の点については、コードレビュー、数学の証明などもテストされており、静的と呼ばれています。
John V

要件とは対照的に、欠陥またはバグが存在します。仕事の性質は同じです。これは、テスターの効率を向上させるための考え方の違いにすぎません。私の最初の点については、ソフトウェアの検証で使用されるすべての用語の定義はたくさんあります(そして、チームに参加するときの最初のステップは、そのチームのローカルの方言を取得することです)。技術。静的テストはオキシモロンであるか、またはコードが「テスター」の頭の中で実行され、コンピューターによって実行されない、レビューからさほど遠くない別の手法を指します。
mouviciel 2012年

mouviciel:oxymoron?私はそうは思いません。静的テストとは、実行せずに起こり得る欠陥をチェックすることを意味します。これは完全に可能です(要件の問題、設計上の欠陥など)。要件を確認してバグをチェックすることは同じではありません。フィールドがint32値を保持できるかどうかをテストする必要があります。それが機能することをテストしています。そして、あなたは...バグのためにテストされて高い値を入力しようとすることができます
ジョン・V

1

これを実用的な観点から見てみましょう。テストでは、テストケースを定義する必要があります。通常、指定された要件に沿ってテストケースを定義し、「ハッピーデー」ケースと「エッジケース」をカバーする必要があります。特に、後者はソフトウェアを壊すことを意図して定義されることがよくあります。一部のテストが失敗すると、バグ/欠陥が表示されます。各要件に対して妥当な量のテストケースがあり、すべてのテストに合格した場合、すべての要件が満たさていることを完全に証明できていない可能性がありますが、その確率が向上しているため、検証を行いました。

したがって、質問のその部分については、バグの発見と検証は、同じプロセスの両面にすぎない場合があります。

  • テスト失敗:欠陥が見つかりました

  • テストに合格:検証済み(十分で適切なテストを提供する場合、少なくともある程度)

検証について:@Mertが指摘したように、検証は受け入れテストで実行できますが、他の形式のテストでは実行できません。したがって、一般にテストでは、一部の潜在的なユーザーによる受け入れテストとして行われた場合にのみ、検証は行われません。


0

それはすべて、「検証」の定義に依存します。たとえば、正式な検証は通常、QAチームによって行われるものではなく、開発者の責任です。それに伴うコストが高いため(知識のギャップと必要なリソース)、ほとんど誰も正式な検証を行いません。


0

ソフトウェアテストはQAと同じではありません。あなたはその権利を得ました。ソフトウェアテスト全体には、多くの段階(煙、ユニット、回帰、統合、ユーザーの受け入れなど)が含まれています。

したがって、ソフトウェアが要件に従って動作することを保証することは、QA(品質保証スペシャリスト-別名、何年も前は単にテスターと呼ばれていたもの)の目標です。ただし、テストだけではありません。QAにより、問題の製品の品質チェックを実行するための適切な一連のプロセスが実施されているか、少なくともプロジェクトの設計フェーズに組み込まれていることが保証されます。

したがって、理想的には、QAが一連の要件に照らしてアプリケーション検証することを期待し、ソフトウェアを破壊して欠陥を見つけるだけでテストするのではありません。


QAはテストだけではありません。開発プロセスの品質とQAのお得な情報...
ジョン・V

QAは、一連の要件に対してアプリケーションを検証します。
Yusubov、2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.