Trong ngữ cảnh Testing, 2 khái niệm Verification (Xác minh) và Validation (Xác nhận) được sử dụng rộng rãi. Trong đa số các trường hợp, chúng ta thường coi chúng có cùng nghĩa nhưng thực ra nó là 2 khái niệm khác nhau.
IEEE/ANSI định nghĩa verification là qui trình đánh giá một hệ thống hoặc một thành phần để xác định xem liệu các sản phẩm của một giai đoạn phát triển nhất định có đáp ứng được những yêu cầu được định tại thời điểm bắt đầu của giai đoạn đó không.
Rất nhiều sản phẩm phần mềm khi go-live không dùng được vì các chức năng hoạt động cứng nhắc, đáp ứng được Verification nhưng không đáp ứng đc Validation.
IEEE/ANSI định nghĩa validation là qui trình đánh giá một hệ thống hoặc một thành phần trong suốt quá trình phát triển hoặc lúc kết thúc của quá trình phát triển để xác định xem liệu nó có được làm ra đúng như những yêu cầu cụ thể như những yêu cầu lúc đầu đưa ra không.
Nói một cách ngắn gọn:
- Verification đảm bảo rằng "bạn đi đúng hướng" (“you built it right”).
- Validation đảm bảo rằng "bạn xây đúng cái mong muốn" (“you built the right thing”).
Hai khía cạnh của task V&V
- Xác nhận yêu cầu (Quan điểm của người sản xuất về chất lượng)
- Phù hợp với nhu cầu sử dụng (Quan điểm người tiêu dùng về chất lượng).
Quan điểm của người sản xuất về chất lượng, theo nghĩa đơn giản, có nghĩa là nhận thức của người phát triển về sản phẩm cuối cùng. Quan điểm của người tiêu dùng về chất lượng có nghĩa là người dùng nhận thức về sản phẩm cuối cùng. Khi thực hiện task V & V, phải tập trung cả hai quan điểm về chất lượng. Để bắt đầu, trước hết hãy tìm hiểu các điều khoản và thử khám phá các điều khoản đó theo các tiêu chuẩn khác nhau
Verification là gì?
Verification là một quá trình đánh giá các sản phẩm làm việc trung gian của một vòng đời phát triển phần mềm để kiểm tra xem liệu rằng chúng ta có đi đúng hướng để tạo ra sản phẩm cuối cùng.
Vậy câu hỏi ở đây là: Các sản phẩm trung gian là gì? Đó có thể bao gồm các tài liệu được tạo ra trong các giai đoạn phát triển như, đặc tả requirement, tài liệu thiết kế, thiết kế database, sơ đồ ER, các Test Case, Traceability Matrix …Đôi khi chúng ta có khuynh hướng bỏ qua tầm quan trọng của việc xem xét các tài liệu này nhưng chúng ta nên hiểu rằng tự mình rà soát lại có thể tìm ra nhiều điểm bất thường tiềm ẩn mà khi phát hiện hoặc sửa trong giai đoạn phát triển sau đó có thể rất tốn kém.
Nói cách khác, cũng có thể khẳng định rằng Verification là một quá trình để đánh giá các sản phẩm trung gian của phần mềm để kiểm tra xem sản phẩm có đáp ứng các điều kiện đặt ra trong khi bắt đầu một giai đoạn
Validation là gì?
Validation là quá trình đánh giá sản phẩm cuối cùng để kiểm tra xem phần mềm có đáp ứng được yêu cầu nghiệp vụ không? Hoạt động Validation bao gồm smoke testing, functional testing, regression testing, systems testing etc…
Tìm hiểu sự khác nhau giữa Verification và Validation:
Verification:
- Đánh giá các sản phẩm trung gian để kiểm tra xem nó có đáp ứng các yêu cầu cụ thể của từng giai đoạn không.
- Kiểm tra xem sản phẩm có được xây dựng đúng theo yêu cầu và đặc điểm kỹ thuật thiết kế không.
- Kiểm tra xem "Chúng tôi xây dựng sản phẩm đúng không"?
- Điều này được thực hiện mà không cần chạy phần mềm.
- Bao gồm tất cả các kỹ thuật test tĩnh Ví dụ bao gồm các bài đánh giá, kiểm tra và hướng dẫn.
Validation:
- Đánh giá sản phẩm cuối cùng để kiểm tra xem nó có đáp ứng được yêu cầu nghiệp vụ không.
- Xác định xem phần mềm có phù hợp với nhu cầu sử dụng và đáp ứng yêu cầu nghiệp vụ không.
- Kiểm tra "Chúng tôi xây dựng đúng sản phẩm"?
- Được thực hiện cùng với việc chạy phần mềm.
- Bao gồm tất cả các kỹ thuật test động Ví dụ bao gồm tất cả các loại test như smoke test, regression test, functional test, systems test và UAT.
Verification và Validation theo các tiêu chuẩn khác nhau:
ISO / IEC 12207:2008:
Các hoạt động Verification
- Xác minh yêu cầu: tham gia review các yêu cầu.
- Xác minh thiết kế: tham gia đánh giá của tất cả các tài liệu thiết kế bao gồm HLD và LDD.
- Kiểm tra code: thực hiện review code.
- Xác minh tài liệu: kiểm tra hướng dẫn sử dụng và các tài liệu liên quan khác.
Các hoạt động Validation
- Chuẩn bị các tài liệu Test Requirement, Test Case và các thông số test khác để phân tích các kết quả test.
- Đánh giá rằng yêu các Test Requirement, các Test Case và các thông số kỹ thuật khác phản ánh yêu cầu và phù hợp để sử dụng.
- Test các giá trị biên, stress và các chức năng.
- Test các thông báo lỗi và trong trường hợp có bất kỳ lỗi nào, ứng dụng sẽ kết thúc.
- Kiểm tra xem phần mềm có đáp ứng các yêu cầu nghiệp vụ và phù hợp để sử dụng hay không.
CMMI:
Các hoạt động Verification
- Thực hiện peer reviews.
- Xác minh các work product được lựa chọn.
- Chuẩn hóa quy trình bằng cách thiết lập các qui tắc để lên kế hoạch và thực hiện các bài đánh giá.
Các hoạt động Validation
- Xác nhận rằng các sản phẩm và các component của sản phẩm là phù hợp với môi trường.
- Khi validation được thực hiện, nó được theo dõi và kiểm soát.
- Rút ra bài học kinh nghiệm và thu thập thông tin cải tiến.
- Thiết lập một quy trình nhất định.
IEEE 1012:
Mục tiêu của hoạt động Verification và Validation như sau:
- Phát hiện và sửa lỗi sớm.
- Khuyến khích và tăng cường sự can thiệp của quản lý vào bên trong qui trình và rủi ro sản phẩm.
- Cung cấp các biện pháp hỗ trợ đối với vòng đời phần mềm, nhằm tăng cường sự tuân thủ các yêu cầu về schedule và budget.
Task V&V trong các giai đoạn khác nhau của vòng đời phát triển
Một vòng đời phát triển có các giai đoạn khác nhau. Verification và validation được thực hiện trong từng giai đoạn của vòng đời. Chúng ta hãy cùng tìm hiểu.
#1. V & V tasks – Lập kế hoạch:
- Xác minh hợp đồng
- Đánh giá tài liệu khái niệm
- Phân tích rủi ro
#2. V & V tasks – Phân tích yêu cầu:
- Đánh giá các yêu cầu phần mềm
- Đánh giá / phân tích các giao diện
- Lập kế hoạch Systems Test
- Lập kế hoạch Acceptance Test
#3. V&V tasks – Giai đoạn thiết kế:
- Đánh giá thiết kế phần mềm
- Đánh giá / Phân tích giao diện (UI)
- Lập kế hoạch Integration test
- Lập kế hoạch Component test
- Tạo test design
#4. V&V Tasks – Giai đoạn triển khai:
- Đánh giá source code
- Đánh giá tài liệu
- Tạo Test case
- Tạo Test Proceduce
- Thực hiện các Component Test Case
#5. V&V Tasks – Giai đoạn test:
- Thực hiện các System Test Case
- Thực hiện các Acceptance Test Case
- Update tracebility metrics
- Phân tích rủi ro
#6. V&V Tasks – Giai đoạn cài đặt và kiểm tra:
- Kiểm tra việc cài đặt và cấu hình
- Kiểm tra lần cuối cài đặt candidate build (bản build phát hành nội bộ)
- Tạo Test Report cuối cùng
#7. V&V Tasks – Giai đoạn hoạt động:
- Đánh giá những hạn chế mới
- Đánh giá những đề xuất thay đổi
#8. V&V Tasks – Giai đoạn bảo trì:
- Đánh giá các bất thường
- Đánh giá migration
- Đánh giá tính năng retrial
- Đánh giá những đề xuất thay đổi
- Xác nhận các vấn đề của production
Kết luận Verification và Validation
Các quy trình V & V xác định xem sản phẩm có hoạt động đúng yêu cầu và phù hợp với nhu cầu sử dụng không. Nói một cách đơn giản (để tránh nhầm lẫn), chúng ta chỉ cần nhớ rằng Verfication có nghĩa là hoạt động review hoặc kỹ thuật kiểm tra tĩnh và validation nghĩa là hoạt động thực hiện test thực tế hoặc kỹ thuật kiểm tra động.