Trong quá 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ừ unit testing tới acceptance testing, quá trình này đảm bảo rằng tất cả các thành phần của sản phẩm được kiểm tra kỹ lưỡng, không có bất kỳ trở ngại nào. System testing, một cấp độ kiểm thử phần mềm quan trọng, được thực hiện sau integration testing và trước acceptance testing. Trong bài viết này, chúng ta sẽ tìm hiểu về kiểm thử hệ thống.
I. Kiểm Thử Hệ Thống Là Gì?
Kiểm thử hệ thống là quá trình theo dõi 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 và đã được tích hợp đầy đủ, dựa vào đặc tả và các yêu cầu chức năng đã được xác định trước. Nó trả lời câu hỏi "Liệu hệ thống có hoạt động đúng với yêu cầu hay không?"
Trong quá trình kiểm thử hệ thống, chỉ có các tính năng làm việc bên ngoài của phần mềm được đánh giá. Điều này có nghĩa rằng kiểm thử hệ thống không đòi hỏi bất kỳ kiến thức nội bộ nào về code, lập trình, thiết kế, v.v. Nó hoàn toàn dựa trên quan điểm của người dùng.
II. Đặc Điểm Của Kiểm Thử Hệ Thống
Dưới đây là một số đặc điểm quan trọng của kiểm thử hệ thống:
-
Trong vòng đời phát triển phần mềm, kiểm thử hệ thống là cấp độ kiểm thử thực hiện nhiệm vụ kiểm tra đa số phần mềm hoặc hệ thống.
-
Nó đánh giá chức năng của hệ thống hoàn chỉnh theo yêu cầu chức năng đã được quyết định trước.
-
Ngoài việc kiểm tra chức năng, kiểm thử hệ thống cũng xác minh và xác nhận yêu cầu nghiệp vụ và kiến trúc của phần mềm.
-
Staging server có thể được sử dụng như một môi trường để thực hiện kiểm thử.
-
Kiểm thử hệ thống thuộc loại kiểm thử hộp đen.
-
Nó có thể bao gồm cả kiểm thử chức năng và phi chức năng.
-
Mục tiêu của kiểm thử hệ thống là giảm sự cố và bảo trì sau khi triển khai sản phẩm.
-
Yêu cầu đội ngũ kiểm thử độc lập với nhóm phát triển.
III. Khi Nào Thực Hiện Kiểm Thử Hệ Thống
Trong vòng đời kiểm thử phần mềm, kiểm thử hệ thống được thực hiện sau khi hoàn thành unit & integration testing và trước khi bắt đầu acceptance testing. Dưới đây là các tình huống khi người kiểm thử có thể thực hiện kiểm thử hệ thống, 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 & integration testing.
-
Trước khi bắt đầu acceptance testing.
-
Sau khi tích hợp hoàn toàn các mô-đun.
-
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.
-
Sau khi môi trường kiểm thử đã sẵn sàng.
IV. Điều Kiện Tiên Quyết Của Kiểm Thử Hệ Thống
Dưới đây là một số điều kiện tiên quyết quan trọng của kiểm thử hệ thống:
-
Phần mềm phải được thống nhất kiểm tra.
-
Kiểm thử tích hợp đã được thực hiện trên sản phẩm.
-
Phần mềm phải được phát triển hoàn chỉnh.
-
Trước khi thực hiện quy trình kiểm thử hệ thống, phải đảm bảo rằng môi trường kiểm thử đã sẵn sàng.
V. Các Loại Kiểm Thử Hệ Thống
Dưới đây là danh sách các loại kiểm thử hệ thống mà các công ty phát triển phần mềm lớn thường sử dụng:
-
Kiểm thử khả năng sử dụng - Usability Testing: Tập trung vào khả năng người dùng dễ dàng sử dụng ứng dụng và linh hoạt trong việc kiểm soát xử lý và khả năng của hệ thống để đáp ứng mục tiêu.
-
Kiểm thử tải - Load Testing: Kiểm thử tải là cần thiết để biết rằng phần mềm sẽ hoạt động hiệu quả dưới tải thực tế.
-
Kiểm thử hồi quy - Regression Testing: Kiểm thử hồi quy đảm bảo rằng không có lỗi mới phát sinh trong quá trình triển khai phần mềm và không có lỗi cũ từ các module mới.
-
Kiểm thử phục hồi - Recovery Testing: Thử nghiệm tính năng phục hồi của phần mềm khi xảy ra sự cố và chứng minh rằng phần mềm có thể phục hồi thành công.
-
Kiểm thử di chuyển - Migration Testing: Đảm bảo rằng phần mềm có thể chuyển từ cơ sở hạ tầng hệ thống cũ sang cơ sở hạ tầng hệ thống mới mà không gặp sự cố.
-
Kiểm thử chức năng - Functional Testing: Kiểm thử tính đầy đủ của chức năng. Tester có thể lập danh sách các chức năng bổ sung mà sản phẩm có thể phải cải thiện trong quá trình tiếp tục kiểm thử.
-
Kiểm thử phần cứng / phần mềm - Hardware/Software Testing: Tập trung vào tương tác giữa phần cứng và phần mềm trong quá trình kiểm thử hệ thống.
VI. Quy Trình Kiểm Thử Hệ Thống
Quy trình kiểm thử hệ thống bao gồm các bước sau:
Bước 1: Lên kế hoạch kiểm thử.
Bước 2: Phân tích và thiết kế: Tạo testcase và các bước kiểm tra chi tiết cho mỗi phiên bản.
Bước 3: Thực thi kiểm thử: Chuẩn bị dữ liệu kiểm thử, thực hiện kiểm tra và so sánh kết quả.
Bước 4: Đánh giá kết quả kiểm thử và báo cáo kết quả.
Bước 5: Kết thúc hoạt động kiểm thử.
VII. Ví Dụ Về Kiểm Thử Hệ Thống
Hãy tưởng tượng một nhà sản xuất ô tô, họ không sản xuất toàn bộ chiếc xe. Thay vào đó, họ sản xuất từng thành phần như ghế ngồi, tay lái, gương, động cơ, khung xe, bánh xe, v.v. Sau khi sản xuất, từng thành phần sẽ được kiểm tra độc lập để xác định xem có hoạt động đúng cách hay không, được gọi là unit testing.
Khi các thành phần được lắp ráp với nhau, họ sẽ được kiểm tra để xem liệu việc lắp ráp có gây bất kỳ tác động nào đến chức năng của từng thành phần và liệu cả hai thành phần này có hoạt động trơn tru cùng nhau hay không, được gọi là kiểm thử tích hợp.
Tuy nhiên, toàn bộ chiếc xe cần phải được kiểm tra khả năng hoạt động theo các yêu cầu cụ thể, chẳng hạn như vô lăng điều khiển, hệ thống phanh, bánh xe, và các chức năng khác. Kiểm thử hệ thống chứng minh rằng chiếc xe đáp ứng các yêu cầu này và có khả năng hoạt động trơn tru trong mọi tình huống. Toàn bộ quá trình kiểm tra này được gọi là kiểm thử hệ thống và hoàn toàn khác biệt so với kiểm thử tích hợp.
VIII. Sự Khác Biệt Giữa Kiểm Thử Hệ Thống và Kiểm Thử Chấp Nhận
Kiểm thử hệ thống và kiểm thử chấp nhận là hai cấp độ kiểm thử khác nhau. Dưới đây là một số sự khác biệt giữa chúng:
-
Kiểm thử hệ thống được thực hiện để kiểm tra xem phần mềm đáp ứng các yêu cầu đã quy định, trong khi kiểm thử chấp nhận được thực hiện để kiểm tra xem phần mềm đáp ứng yêu cầu của khách hàng.
-
Kiểm thử hệ thống được thực hiện bởi những người phát triển và nhân viên kiểm thử, trong khi kiểm thử chấp nhận được thực hiện bởi khách hàng, người dùng và các bên liên quan.
-
Kiểm thử hệ thống kiểm tra cả yêu cầu chức năng và phi chức năng, trong khi kiểm thử chấp nhận chỉ kiểm tra yêu cầu chức năng.
-
Trong kiểm thử hệ thống, toàn bộ hệ thống được kiểm tra, bao gồm cả chức năng. Trong khi kiểm thử chấp nhận, chỉ có các chức năng được kiểm tra.
-
Kiểm thử hệ thống được tiến hành trước kiểm thử chấp nhận.
-
Kiểm thử hệ thống liên quan đến kiểm thử phi chức năng như hiệu năng và stress testing. Trong khi đó, kiểm thử chấp nhận liên quan đến kiểm thử chức năng như giá trị biên, phân vùng tương đương và bảng quyết định.
-
Kiểm thử hệ thống có thể chứa các trường hợp kiểm thử bất thường, trong khi kiểm thử chấp nhận chứa các trường hợp kiểm thử thông thường.
-
Các lỗi tìm thấy trong quá trình kiểm thử hệ thống có thể được sửa dựa trên mức độ ưu tiên. Trong khi đó, các lỗi tìm thấy trong kiểm thử chấp nhận được coi là sự thất bại của sản phẩm.
-
Kiểm thử hệ thống thực hiện với dữ liệu giả, trong khi kiểm thử chấp nhận sử dụng dữ liệu thời gian thực.