Làm thế nào để xác minh không bao gồm thử nghiệm thực tế?


8

Đã đọc rất nhiều về chủ đề này --- chẳng hạn như trên trang web Cơ bản kiểm thử phần mềm này về xác minh và xác thựcKiểm tra phần mềm và Đảm bảo chất lượng: Lý thuyết và thực hành của Naik và Tripathy --- Tôi vẫn không hiểu. Việc xác minh sẽ chứng minh rằng bạn đang xây dựng sản phẩm đúng, trong khi xác thực chứng minh rằng bạn đã xây dựng đúng sản phẩm. Nhưng chỉ các kỹ thuật tĩnh (đánh giá mã, kiểm tra yêu cầu ...) được đề cập là phương thức xác minh. Làm thế nào bạn có thể nói nếu nó được thực hiện chính xác nếu bạn không kiểm tra nó? Người ta nói rằng xác minh đảm bảo rằng sản phẩm đáp ứng các yêu cầu cụ thể. Một lần nữa, nếu chức năng được chỉ định để hoạt động bằng cách nào đó, chỉ bằng cách kiểm tra tôi có thể nói rằng nó hoạt động.

Bất cứ ai có thể giải thích điều này cho tôi xin vui lòng?


1
Bạn đang đọc cái này ở đâu? Thông thường, xác minh và xác nhận được coi là một hoạt động đơn lẻ bao gồm mọi thứ đi vào chất lượng sản phẩm. Cả hai kỹ thuật tĩnh và động là một phần của V & V.
Thomas Owens

Xin vui lòng cho biết sử dụng nơi bạn đang đọc này. Nó chỉ đơn giản là sai. Xem, ví dụ, liên kết này.
Peter K.

Ví dụ ở đây: softwaretestingfundamentals.com/verification-vs-validation Ngoài ra, một cuốn sách tôi đã nói tương tự, xác minh đó chỉ được thực hiện bằng phân tích tĩnh, trong khi xác thực bằng động (thử nghiệm thực tế)
John V

1
@ user970696 cuốn sách bạn có - bạn có phiền khi nói tiêu đề và tác giả của nó không? Ngoài ra, bạn đề cập đến "Wiki" - đây là gì?
gnat

1
@ user970696 Tôi không có sách, nhưng tôi có slide của họ từ đây . Chúng không xuất hiện để phân biệt bạn đang nói về. Ví dụ, Ch3 của các slide nói về "Kiểm tra đơn vị động" chắc chắn là xác minh, không phải xác thực (vì toàn bộ hệ thống không khả dụng).
Peter K.

Câu trả lời:


14

Khi câu hỏi này tạo ra một số tranh cãi, hãy để tôi bắt đầu câu trả lời này với lý lịch của tôi: Ngoài việc tiếp xúc với V & V trong công việc dự án hàng ngày, tôi đã làm việc vài năm trong bộ phận kỹ thuật phần mềm của trường cũ của tôi và là giảng viên cho công nghệ phần mềm. Mặc dù điều này không đảm bảo rằng bất cứ điều gì tôi nói là chính xác, tôi hy vọng nó ít nhất mang lại cho tôi lợi ích của sự nghi ngờ rằng có thể có một số sự thật trong câu trả lời này.

Hãy để tôi đảm bảo với bạn, rằng bạn không bối rối như bạn có thể tin bạn. Những gì bạn đã nêu trong câu hỏi của bạn cũng đúng như nó là sai lệch. Hãy để tôi chỉ ra đầu tiên, những gì bạn đã nêu chính xác:

  • Xác minh = xây dựng quyền sản phẩm so với xác thực = xây dựng đúng sản phẩm
  • Các kỹ thuật tĩnh là một phần của xác minh - chủ yếu vì chúng lấy chương trình của bạn và một số đầu vào chính thức xuất phát từ các yêu cầu và đánh giá chúng với nhau.
  • Xác minh đảm bảo thực hiện đúng các yêu cầu (nghĩa là bạn đã xây dựng nó đúng cách)

Bây giờ hãy để tôi dọn dẹp sự nhầm lẫn về thử nghiệm . Đầu tiên, như nhiều ý kiến ​​đã nêu trước đây, kiểm tra mã động thông qua các kiểm tra tự động (đơn vị, tích hợp, ...) thực sự là một phần của xác minh. Tuy nhiên, điều gây ra sự nhầm lẫn lớn nhất là những người trong quá trình xác nhận cũng sẽ nói về thử nghiệm , nhưng có nghĩa là một điều khác biệt: trong xác nhận, thử nghiệm thường liên quan đến một người sử dụng ứng dụng cho mục đích dự định của mình. Trong trường hợp tối ưu, đây là khách hàng của anh ấy / cô ấy.

Tuy nhiên, "lỗi" [1] được tìm thấy bằng cách kiểm tra xác minh và xác thực khác nhau về cơ bản:

  • lỗi kiểm tra xác minh: đây là những lỗi vi phạm yêu cầu của bạn theo cách này hay cách khác.
  • lỗi kiểm tra xác nhận: đây là các lỗi với chính sản phẩm bạn đã xây dựng, không phải chức năng của nó, do đó, chúng tiết lộ các lỗi trong các yêu cầu.

Đối với hầu hết mọi người, nó giúp xem xét các ví dụ cụ thể về các trường hợp V & V khác nhau. Sau đây là những ví dụ cực đoan về lỗi:

  • Bạn có một yêu cầu cấp thấp rằng "f (x) phải trả về x + 1" và việc triển khai "f" của bạn luôn trả về hằng số 2. Bạn có thể tìm thấy lỗi này bằng một số cách tiếp cận xác minh khác nhau, nhưng khách hàng của bạn có thể đã thắng ' Không tìm thấy nó trong khi xác thực, bởi vì bạn đang xây dựng một trang web mua sắm điện tử và anh ta không biết và cũng không quan tâm đến "f".

  • Bạn có một yêu cầu nói rằng "Hệ thống sẽ có thể xử lý 1000 yêu cầu mỗi giây với mức tải CPU tối đa là 80%". Một lần nữa, xác nhận sẽ có một thời gian khó khăn, giống như hầu hết các kỹ thuật tĩnh. Trên thực tế, cách đơn giản nhất để xác minh điều này là kiểm tra động ứng dụng của bạn bằng cách đập nó với các yêu cầu và theo dõi tải CPU của bạn trong thời gian đó.

  • Hãy xem xét các yêu cầu trên đối với "f" một lần nữa, lần này với việc thực hiện "chính xác". Tất cả các đánh giá, phân tích tĩnh và kiểm tra động của bạn sẽ báo cáo thành công, nhưng sau đó khách hàng của bạn kiểm tra phần mềm của bạn và nói với bạn rằng anh ta bỏ lỡ biểu tượng giỏ hàng trên trang web. Không có số lượng xác minh sẽ có thể tìm thấy lỗi này, vì bạn đã thực hiện nó trong giai đoạn yêu cầu.

Như bạn có thể thấy, "thử nghiệm" - nếu không được xác định chính xác hơn - là một phần của cả xác minh và xác thực, và trên thực tế, "thử nghiệm" nên được thực hiện cho cả hai.

[1] "lỗi" được sử dụng thông tục ở đây, để tránh sự phân biệt giữa lỗi, thất bại, sai lầm, lỗi, ...


Điều đó thực sự tuyệt vời! Rời khỏi rạp chiếu phim, tôi thực sự sẽ làm rõ: cả thử nghiệm dựa trên hộp đen hoặc thử nghiệm dựa trên trường hợp thử nghiệm đều là một phần của quy trình xác minh, ngoài thử nghiệm UAT của người dùng. Tôi có ở đây không?
John V

Nhưng tôi phải thêm rằng, ISO 12207: 2008 chỉ nêu các kỹ thuật tĩnh để xác minh: /
John V

Thật không may, nhiều nhà phát triển (hầu hết) không làm việc theo yêu cầu, vì vậy họ bị nhầm lẫn về sự khác biệt giữa Xác minh và Xác thực, do đó, sự lan tỏa mặc dù V & V giống nhau và thậm chí tệ hơn, Kiểm tra == QA.
mattnz

@Frank: Vâng, trong ISO tôi đã đề cập, nó đặc biệt đề cập đến việc thử nghiệm được tiến hành như một phần của xác nhận (7.2.5.3.2.1 và ..2). Tại sao có quá nhiều tranh chấp :(
John V

1
@ user970696: Chắc chắn, những phần đó đề cập rõ ràng đến việc kiểm tra đối với nhu cầu của người dùng . Hai phần tôi đã đề cập (ngầm: 7.2.4.3.2.3 và 7.2.4.3.2.4) The code implements proper event sequence, consistent interfaces, correct data and control flow, completeness, appropriate allocation timing and sizing budgets, and error definition, isolation, and recovery.The software components and units of each software item have been completely and correctly integrated into the software item--- bạn sẽ làm gì trong những điều đó mà không cần kiểm tra?
Peter K.

0

Thật vậy: xác minh chứng minh rằng bạn đang xây dựng sản phẩm đúng, trong khi xác thực bạn xây dựng sản phẩm phù hợp.

vì thế

  • xác minh đang chứng minh quy trình ... rằng bạn đã tuân theo các tiêu chuẩn và quy trình cần thiết, thường được kiểm tra bằng phân tích tĩnh và xem xét mã.
  • xác thực đang chứng minh sản phẩm kết quả ... rằng mã thực hiện những gì được yêu cầu, thường được kiểm tra bằng phân tích và kiểm tra động, để cho thấy rằng các đầu vào được chỉ định dẫn đến đầu ra được chỉ định

Tôi thường không trích dẫn Wikipedia , nhưng trong trường hợp này, nó hữu ích ...

Có thể tìm thấy giải thích chi tiết hơn về hai quy trình trong Quy trình vòng đời phần mềm ISO 12207 (một trong những câu trả lời khác gửi liên kết đến bản sao không được kiểm soát):

7.2.4.3.2 Nhiệm vụ xác minh

  • Yêu cầu xác minh
  • Xác minh thiết kế
  • Xác minh mã
  • Xác minh tích hợp
  • Xác minh tài liệu

7.2.5.3.2 Nhiệm vụ xác nhận

  • Chuẩn bị các yêu cầu kiểm tra, trường hợp và thông số kỹ thuật
  • Tiến hành các bài kiểm tra

Bây giờ, câu hỏi mở đầu hỏi tại sao xác minh không bao gồm thử nghiệm. Và mặc dù có một số câu trả lời khác, bởi các thành viên P.SE có uy tín cao, tôi nói với bạn rằng đó không phải là điểm của hoạt động xác minh , mà là của hoạt động xác thực .

Một số câu trả lời đề nghị bạn phải kiểm tra để xác minh mã hoặc tích hợp. Không - hoạt động đó là để chứng minh tính mô đun và các giao diện, v.v., chứ không phải thực thi.

Thực tế, những gì cuộc thảo luận này cho thấy có rất nhiều nhầm lẫn về việc xác minhxác nhận là gì và điều này không giúp ích gì bởi ranh giới là một khu vực màu xám và được định nghĩa hơi khác nhau trong các tiêu chuẩn khác nhau.

Điều quan trọng là cả hai phần của V & V phải được bảo hiểm, và miễn là đó là trường hợp sau đó về mặt ngữ nghĩa, nó không thực sự quan trọng cho dù đó là V hay V ... chỉ V và V.


Cảm ơn nhưng bây giờ tôi thực sự bối rối. Các ý kiến ​​cho câu hỏi cho thấy xác minh là giai đoạn thử nghiệm, bạn nói ngược lại.
John V

Tôi thấy bây giờ tôi đã có hai phiếu bầu xuống ... Tôi tò mò muốn biết tại sao mọi người nghĩ câu trả lời của tôi là sai?
Andrew

Vâng IMHO như đã nêu trong các ý kiến, xác minh là thử nghiệm thực tế, trong khi valiadion thiên về sự chấp nhận của người dùng đối với sản phẩm cuối cùng.
John V

Tôi hoàn toàn không đồng ý với tóm tắt đó. Trong thực tế, đó là đơn giản sai. Việc xác minh không liên quan gì đến thử nghiệm
Andrew

Vâng, nhìn vào các liên kết được cung cấp trong các ý kiến. Có vẻ như nó đã chấp nhận cách tôi nói, nhưng tôi cũng đọc những ý kiến ​​khác nhau. Nhưng đọc các văn bản của trường đại học, có ví dụ: Cách tiếp cận xác minh cố gắng khắc phục lỗi hoặc lỗi sản phẩm .. "
John V
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.