Trong quy trình kiểm thử phần mềm, người kiểm thử thực hiện nhiều cấp độ kiểm thử khác nhau, từ kiểm thử đơn vị đến kiểm thử chấp nhận, để đảm bảo tất cả các thành phần của sản phẩm được kiểm tra kỹ lưỡng. System testing (kiểm thử hệ thống) là một trong những cấp độ kiểm thử quan trọng, được thực hiện sau kiểm thử tích hợp (integration testing) và trước kiểm thử chấp nhận (acceptance testing). Bài viết này sẽ đi sâu vào system testing, giúp bạn hiểu rõ hơn về quy trình này.
Mục Lục
- 1 System Testing Là Gì?
- 2 Đặc Điểm Của System Testing
- 3 Khi Nào Thực Hiện System Testing?
- 4 Các Lĩnh Vực Chính Của System Testing
- 5 Điều Kiện Tiên Quyết Của System Testing
- 6 Quy Trình System Testing
- 7 Các Loại Kiểm Tra Được Thực Hiện Trong System Testing
- 8 Lý Do Thực Hiện System Testing
- 9 Sự Khác Biệt Giữa System Testing & Acceptance Testing
- 10 Kết Luận
System Testing Là Gì?
Kiểm thử hệ thống (system testing) là một phương pháp kiểm tra và đánh giá hành vi của một sản phẩm hoặc hệ thống phần mềm hoàn chỉnh, đã được tích hợp đầy đủ. Quá trình này dựa trên các đặc tả và yêu cầu chức năng đã được xác định trước. System testing giúp trả lời câu hỏi quan trọng: “Liệu hệ thống hoàn chỉnh có hoạt động đúng theo yêu cầu hay không?”.
System testing thường được thực hiện theo phương pháp hộp đen (black box testing), nghĩa là chỉ các tính năng hoạt động bên ngoài của phần mềm được đánh giá. Quá trình này không đòi hỏi kiến thức nội bộ về code, lập trình, thiết kế, v.v., và hoàn toàn dựa trên quan điểm của người dùng.
Đặc Điểm Của System Testing
- Trong Vòng đời phát triển phần mềm (SDLC), system testing là giai đoạn kiểm tra toàn bộ phần mềm hoặc hệ thống.
- Đánh giá chức năng của hệ thống hoàn chỉnh dựa trên các yêu cầu chức năng đã được xác định trước.
- Xác minh và xác nhận các yêu cầu nghiệp vụ và kiến trúc của phần mềm.
- Máy chủ staging có thể được sử dụng làm môi trường để thực hiện kiểm thử.
- Là một loại kiểm thử hộp đen.
- Bao gồm cả kiểm thử chức năng và phi chức năng.
- Giảm thiểu sự cố và bảo trì sau khi triển khai.
- Yêu cầu đội ngũ kiểm thử độc lập với nhóm phát triển.
Khi Nào Thực Hiện System Testing?
Vòng đời kiểm thử phần mềm bao gồm nhiều cấp độ kiểm thử khác nhau. Do đó, cần hiểu rõ thời điểm system testing được thực hiện. Dưới đây là các tình huống mà người kiểm thử có thể thực hiện system testing, bằng tay hoặc với sự hỗ trợ của các công cụ kiểm tra:
- Sau khi hoàn thành unit testing và integration testing.
- Trước khi bắt đầu acceptance testing.
- Sau khi tích hợp hoàn toàn các module.
- Sau khi hoàn thành quy trình phát triển phần mềm, dựa trên Đặc tả yêu cầu phần mềm (SRS).
- Sau khi môi trường thử nghiệm sẵn sàng.
Các Lĩnh Vực Chính Của System Testing
System testing tập trung vào nhiều khía cạnh quan trọng của hệ thống, bao gồm:
- Hiệu suất: Đảm bảo hệ thống phần mềm thực hiện theo yêu cầu của người dùng mà không gặp bất kỳ lỗi hoặc sự cố nào.
- Bảo mật: Bảo vệ sản phẩm khỏi mọi vi phạm bảo mật, đánh cắp dữ liệu, v.v., có thể gây mất dữ liệu và thông tin quan trọng của tổ chức.
- Phục hồi: Đảm bảo khả năng phục hồi của hệ thống diễn ra theo mong đợi.
- Giao diện: Kiểm tra giao diện của sản phẩm, đảm bảo tất cả các yêu cầu được đáp ứng chính xác và không có sự cố xảy ra khi các thành phần của hệ thống được tích hợp với nhau.
- Khả năng cài đặt: Đảm bảo sản phẩm được cài đặt và triển khai vào môi trường production mà không gặp bất kỳ khó khăn và sự cố nào.
- Tính khả dụng: Đảm bảo trải nghiệm hệ thống của người dùng là tối ưu nhất.
- Tài liệu: Đảm bảo độ chính xác của tài liệu.
- Tải/Stress: Đảm bảo hệ thống thực hiện và hoạt động chính xác dưới tải trọng và mức tải khác nhau.
Điều Kiện Tiên Quyết Của System Testing
Dưới đây là một số điều kiện tiên quyết quan trọng của system testing:
- Phần mềm phải được thống nhất kiểm tra.
- Kiểm thử tích hợp (integration testing) đã được thực hiện trên sản phẩm.
- Phần mềm nên được phát triển hoàn chỉnh.
- Môi trường kiểm tra đã sẵn sàng trước khi thực hiện quy trình kiểm tra hệ thống.
Quy Trình System Testing
Vì tầm quan trọng của system testing là rất lớn, việc xác định quy trình của nó là điều quan trọng để đảm bảo quy trình được thực hiện chính xác, không bỏ sót bất kỳ chi tiết hay bước quan trọng nào. Quy trình system testing có thể khác nhau tùy theo dự án, tuy nhiên, có sáu bước phổ biến:
- Tạo Kế Hoạch Kiểm Tra (Test Plan): Xác định phạm vi và mục tiêu kiểm tra, chiến lược, lựa chọn giữa kiểm tra thủ công và tự động, xác định tiêu chí đầu vào và đầu ra, phân công vai trò và trách nhiệm.
- Tạo Test Case: Các trường hợp thử nghiệm được chuẩn bị dựa trên các use case và các yêu cầu của thử nghiệm, chẳng hạn như kỹ thuật, giao diện người dùng, chức năng, phi chức năng, hiệu suất, v.v.
- Chọn Test Data: Sau khi tạo test case, chúng sẽ phối hợp với nhau để chọn hoặc tạo test data cần thiết. Đây là những điều kiện đầu vào giúp nhóm nhận được kết quả mong đợi.
- Thực Hiện Test Case: Thực hiện kiểm thử các test case đã được tạo trước đó, liên tục theo dõi quá trình và ghi lại bất kỳ sự khác biệt hoặc vấn đề nào gặp phải. Đầu ra của thử nghiệm cũng được ghi lại ở đây.
- Báo Cáo & Sửa Lỗi: Báo cáo tất cả các lỗi và sự cố được ghi lại cho thành viên của team. Sau khi báo cáo, lập trình viên hoặc nhà phát triển làm việc với nhóm thử nghiệm để khắc phục và giải quyết vấn đề.
- Lặp Lại Chu Trình Kiểm Tra (Nếu Cần): Sau khi tất cả các vấn đề và lỗi được giải quyết và khắc phục, nhóm kiểm thử lặp lại chu trình kiểm tra để có kết quả như mong đợi.
Các Loại Kiểm Tra Được Thực Hiện Trong System Testing
System testing là sự kết hợp của các kỹ thuật kiểm thử đa năng, cho phép xác nhận hiệu suất và chức năng tổng thể của sản phẩm. Mỗi kỹ thuật kiểm tra này tập trung vào các khía cạnh khác nhau của sản phẩm và phục vụ các yêu cầu khác nhau của khách hàng/người dùng. Các loại system testing bao gồm:
-
Kiểm tra cài đặt: Kiểm tra chức năng mong muốn của phần mềm sau khi cài đặt thành công cùng với tất cả các yêu cầu cần thiết.
-
Kiểm tra chức năng: Đánh giá hoạt động đúng của phần mềm theo các yêu cầu được xác định trước.
-
Kiểm tra khả năng phục hồi: Đánh giá khả năng phục hồi của sản phẩm một cách nhanh chóng bằng cách cố gắng làm cho phần mềm bị crash hoặc fail.
-
Kiểm tra khả năng tương tác: Đảm bảo khả năng phần mềm tương thích và tương tác với phần mềm hoặc hệ thống khác.
-
Kiểm tra năng suất: Kiểm tra phản ứng, độ ổn định, khả năng mở rộng, độ tin cậy và các số liệu chất lượng khác của phần mềm dưới các khối lượng công việc khác nhau.
-
Kiểm tra khả năng mở rộng: Xử lý các vấn đề liên quan đến khả năng mở rộng của phần mềm.
-
Kiểm tra độ tin cậy: Đánh giá mức độ của phần mềm, giữa hai lỗi và thời gian cần thiết để sửa chữa.
-
Kiểm tra hồi quy: Đảm bảo chức năng ban đầu của phần mềm sau mỗi lần sửa đổi.
-
Kiểm tra tài liệu: Đánh giá tài liệu, được chuẩn bị trước và trong giai đoạn thử nghiệm.
-
Kiểm tra bảo mật: Đánh giá các tính năng bảo mật của phần mềm để đảm bảo, bảo vệ, tính xác thực, bảo mật và tính toàn vẹn của thông tin và dữ liệu.
-
Kiểm tra khả năng sử dụng: Đảm bảo tính năng thân thiện với người dùng của phần mềm và ngăn chặn người dùng cuối gặp phải sự cố trong quá trình sử dụng sản phẩm phần mềm.
Lý Do Thực Hiện System Testing
- Đảm bảo sản phẩm đáp ứng các tiêu chuẩn chất lượng.
- Xác minh hệ thống phần mềm đáp ứng các yêu cầu chức năng, kỹ thuật và kinh doanh theo yêu cầu của khách hàng.
- Ngăn ngừa lỗi hệ thống và sự cố trong quá trình thực hiện với môi trường thật.
- Được thực hiện trong một môi trường tương tự như môi trường production, cho phép các nhà phát triển cũng như các bên liên quan có được ý tưởng về phản ứng của người dùng đối với sản phẩm.
- Đóng một vai trò quan trọng trong việc cung cấp một sản phẩm chất lượng cho người dùng cuối.
- Các Yêu cầu nghiệp vụ và Kiến trúc ứng dụng được kiểm tra.
- Đảm bảo rằng đầu vào được cung cấp đầu ra/kết quả như mong đợi.
Sự Khác Biệt Giữa System Testing & Acceptance Testing
Mặc dù được thực hiện sau System Testing, nhiều người thường cho rằng Acceptance Testing cũng là một phần của System Testing. Dưới đây là một vài điểm so sánh:
| System Testing | Acceptance Testing | |
|---|---|---|
| 1. Định nghĩa | Là loại kiểm tra đầu cuối và loại hộp đen. | Là một loại kiểm tra chức năng. |
| 2. Mục đích | Đảm bảo rằng hệ thống đáp ứng các yêu cầu được chỉ định của khách hàng. | Đảm bảo sự tuân thủ của sản phẩm với các yêu cầu nghiệp vụ. |
| 3. Thời điểm thực hiện | Sau khi hoàn thành integration testing. | Sau khi system testing. |
| 4. Đối tượng thực hiện | Tester cũng như developer. | Tester cũng như khách hàng. |
| 5. Phạm vi kiểm tra | Có thể là loại thử nghiệm chức năng và phi chức năng. | Chủ yếu là loại thử nghiệm chức năng. |
Kết Luận
System testing là một phần không thể thiếu trong vòng đời kiểm thử phần mềm, được thực hiện khi quá trình phát triển phần mềm hoàn tất và sản phẩm đã trải qua kiểm thử đơn vị và tích hợp. Thử nghiệm này không giới hạn ở một khía cạnh hoặc thành phần của sản phẩm mà được sử dụng để kiểm tra toàn bộ hệ thống phần mềm, điều này làm cho nó trở thành một phần quan trọng của bất kỳ chu kỳ thử nghiệm nào và do đó nó được thực hiện bởi tester, những người mong muốn cung cấp trải nghiệm người dùng tốt nhất.
