Kiểm thử hệ thống/System Testing là gì - Hướng dẫn tối ưu cho người mới bắt đầu

2636
30-12-2019
Kiểm thử hệ thống/System Testing là gì - Hướng dẫn tối ưu cho người mới bắt đầu

System Testing là một trong những cấp độ kiểm thử phần mềm có vai trò quan trọng đối với quá trình hoàn thiện sản phẩm, giúp đảm bảo dự án đạt chất lượng và hiệu quả tốt nhất. Hãy cùng Bizfly Cloud giải mã khái niệm System Testing là gì và vai trò của nó trong bài viết dưới đây!

Kiểm thử hệ thống trong kiểm thử phần mềm là gì?

Kiểm thử hệ thống hay còn gọi là System Testing, là kiểm tra lại toàn bộ hệ thống sau khi tích hợp, nhằm đảm bảo hệ thống đáp ứng các yêu cầu đề ra. 

System Testing sẽ được thực hiện sau integration testing. Đây là một bước giữ vai trò quan trọng trong việc cho ra đời một sản phẩm chất lượng cao.

Quá trình kiểm thử hệ thống phần cứng và phần mềm tích hợp được thực hiện để xác minh xem hệ thống có đáp ứng được các yêu cầu đặt ra hay không.

Verification/Xác minh: Thông qua kiểm tra và cung cấp bằng chứng khách quan về việc thỏa mãn các yêu cầu cụ thể.

Kiểm thử hệ thống/System Testing là gì - Hướng dẫn tối ưu cho người mới bắt đầu - Ảnh 1.

Nếu một ứng dụng có ba module A, B và C, thì việc kiểm tra sẽ được thực hiện bằng cách kết hợp các module A & B hoặc module B & C hoặc module A & C, và quy trình được gọi là kiểm thử Tích hợp/ Integration testing. Tích hợp toàn bộ 3 module và thực hiện kiểm tra như một hệ thống hoàn chỉnh được gọi là kiểm thử hệ thống.

Ví dụ về kiểm thử hệ thống:

Một nhà sản xuất xe hơi thường sẽ không sản xuất toàn bộ chiếc xe. Mỗi thành phần của xe như ghế ngồi, tay lái, gương, cáp, động cơ, khung xe, bánh xe, v.v sẽ.được sản xuất riêng biệt,

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 và xác minh này được gọi là Unit testing/kiểm thử Đơn vị.

Bây giờ, với việc một thành phần được ráp với thành phần khác, chúng sẽ được kiểm tra xem nếu việc lắp ráp gây ra 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 với nhau hay không, thì được gọi là kiểm thử tích hợp.

Và khi tất cả các bộ phận được lắp ráp, có phải chiếc xe đã sẵn sàng? Thực ra thì chưa.

Toàn bộ chiếc xe cần được kiểm tra khả năng thỏa mãn theo các yêu cầu cụ thể như: vô lăng điều khiển có mượt mà, phanh xe, bánh xe và các chức năng khác có hoạt động bình thường?, xe liệu vẫn chạy bền bỉ sau 2500 dặm liên tục, màu xe mcos hài hòa, xe có thể lái được trên bất kỳ loại địa hình nào, từ bằng thẳng đến gập ghềnh hay không v.v… 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 tách biệt với kiểm thử tích hợp.

Quá trình System Testing

System Testing (Kiểm thử hệ thống) được thực hiện theo các bước sau:

  • Tạo kế hoạch kiểm thử: Bước đầu tiên của quy trình liên quan đến việc tạo kế hoạch kiểm thử, trong đó người leader cần xác định phạm vi và mục tiêu của thử nghiệm, xác định chiến lược, lựa chọn giữa kiểm thử thủ công và tự động, chỉ định vai trò và trách nhiệm trong team...
  • Thiết lập môi trường kiểm thử: Tạo môi trường kiểm thử để kiểm tra chất lượng tốt hơn, chẳng hạn như: Các điều kiện cần thiết để bắt đầu và kết thúc kiểm tra hệ thống; Yêu cầu hệ thống của chương trình và các tính năng bạn định kiểm tra trong quá trình; Thời gian kết thúc kiểm thử… 
  • Tạo Test Case: Các Test Case được chuẩn bị trên cơ sở các trường hợp sử dụng và các yêu cầu của kiểm thử cũng như khách hàng/người dùng, chẳng hạn như kỹ thuật, giao diện người dùng, chức năng, hiệu suất, v.v.
  • Tạo Test Data: Sau khi team phát triển các Test Case, họ sẽ làm việc cùng nhau để chọn hoặc tạo dữ liệu kiểm thử được yêu cầu, đóng một vai trò quan trọng trong việc thực hiện kiểm thử hệ thống. Đây là những yếu tố input giúp team có được kết quả như mong muốn.
  • Thực thi Test Case: Sau đó, các Test Case đã tạo trước đó được thực thi. Team sẽ 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 mà họ gặp phải trong quá trình này. Ngoài ra, kết quả của kiểm thử cũng được ghi lại ở bước này.
  • Báo cáo & sửa lỗi: Trong giai đoạn này của quá trình, team sẽ báo cáo tất cả các lỗi và vấn đề đã ghi lại. Sau đó, lập trình viên hoặc nhà phát triển làm việc với nhóm kiểm thử để khắc phục và giải quyết vấn đề.
  • Kiểm thử hồi quy: Nó được thực hiện để kiểm tra các tác dụng phụ của quá trình kiểm thử để đảm bảo không có bất kỳ lỗi nào xảy ra.
  • Log Defects: Các lỗi được khắc phục trong bước này.
  • Lặp lại kiểm thử (nếu được yêu cầu): Sau khi tất cả các vấn đề và lỗi được giải quyết và khắc phục, team có thể lặp lại chu kỳ kiểm thử để có được kết quả mong đợi.

Một số chiến lược System Testing

System Testing có hơn 50 loại, dưới đây là một số chiến lược kiểm thử hệ thống phổ biến mà các công ty phát triển phần mềm lớn thường sử dụng:

1. Regression Testing (Kiểm thử hồi quy)

Regression Testing được thực hiện trong quá trình kiểm thử hệ thống để xác định có lỗi nào do sửa đổi trong bất kỳ phần nào khác của hệ thống hay không. Regression Testing đảm bảo rằng bất kỳ thay đổi nào được thực hiện trong quá trình phát triển không tạo ra các lỗi mới; các lỗi cũ sẽ không tồn tại khi bổ sung phần mềm mới theo thời gian.

2. Load Testing

Load Testing được thực hiện trong quá trình kiểm thử hệ thống để xác định liệu hệ thống có thể chịu tải real-time tốt khi có nhiều người dùng hay không.

3. Functional Testing

Kiểm thử chức năng của một hệ thống được thực hiện để đảm bảo rằng chức năng của sản phẩm đáp ứng các tiêu chí đã thiết lập trong khi vẫn nằm trong khả năng của hệ thống. Tester lập danh sách các chức năng quan trọng cần có trong hệ thống có đầy đủ hay không, và có thể được bổ sung trong quá trình kiểm thử chức năng và sẽ cải thiện chất lượng của hệ thống.

4. Recovery Testing

Recovery Testing được thực hiện trong kiểm thử hệ thống để xác nhận độ tin cậy của hệ thống và tất cả đều dựa trên kỹ năng khôi phục của hệ thống. Trong thử nghiệm này, chúng ta sẽ kiểm tra ứng dụng để xem ứng dụng phục hồi tốt như thế nào sau sự cố hoặc thảm họa.

5. Migration Testing

Migration Testing được thực hiện để đảm bảo tính linh hoạt của phần mềm, nếu hệ thống cần được sửa đổi trong cơ sở hạ tầng mới thì nó phải đảm bảo sẽ không gặp bất kỳ sự cố nào.

6. Usability Testing

Mục đích của kiểm thử này để đảm bảo rằng hệ thống thân thiện với người dùng và nó đáp ứng đúng mục tiêu đã đưa ra ban đầu.

7. Software & Hardware Testing

Kiểm thử này nhằm mục đích kiểm tra khả năng tương thích của phần cứng và phần mềm. Cấu hình phần cứng phải tương thích với phần mềm để chạy nó mà không gặp bất kỳ sự cố nào.

Phương pháp thực hiện

Quy trình được thực hiện sau khi làm xong kiểm thử tích hợp.

Kiểm thử hệ thống/System Testing là gì - Hướng dẫn tối ưu cho người mới bắt đầu - Ảnh 2.

Kiểm thử hệ thống thuộc loại kiểm thử hộp đen( Black Box Testing), là một phương pháp kiểm thử phần mềm dựa trên đầu vào và đầu ra của chương trình để test mà không cần quan tâm code bên trong của phần mềm ra sao. Mục đích chính là liệu nó có đáp ứng được sự mong đợi của người dùng hay không?

Kiểm thử bao gồm kiểm tra các vùng chức năng và phi chức năng của ứng dụng/sản phẩm.

Các tiêu chí chủ đạo: 

- Quá trình sẽ chủ yếu tập trung vào các yếu tố sau:

- Giao diện bên ngoài (UI/ UX) 

- Cách hoạt động của các function

- Độ tin cậy, Bảo mật

- Khả năng phục hồi

- Hiệu suất

- Vận hành và trải nghiệm người dùng

- Khả năng cài đặt

- Tài liệu tham khảo, hướng dẫn

- Tính khả dụng

- Load/Stress

Tại sao phải kiểm thử hệ thống?

# 1. Kiểm thử phần mềm là khâu vô cùng quan trọng trong quá trình phát triển 1 sản phẩm công nghệ. Nó chỉ ra lỗi và sai sót đã được thực hiện trong các giai đoạn phát triển. 

# 2. System testing đảm bảo độ tin cậy của khách hàng và sự hài lòng của họ về ứng dụng mà mình tạo ra  

# 3. Giúp tăng hiệu suất công việc do giảm được tối đa thời gian để tìm lỗi trên ứng dụng phần mềm hoặc sản phẩm nhiều lần

#4. Kiểm thử phần mềm là cần thiết vì nó giúp cung cấp các ứng dụng phần mềm cho khách hàng phân phối được hướng sản phẩm chất lượng cao hoặc chi phí bảo trì ứng dụng phần mềm thấp hơn, tiết kiệm hơn và do đó dẫn đến hiệu quả cao nhất và đáng tin cậy hơn.

Quá trình này đặc biệt đảm bảo rằng ứng dụng không dẫn đến bất kỳ lỗi nào, hạn chế tối đa những tốn kém trong tương lại hoặc trong các giai đoạn của quá trình phát triển sản phẩm 

Một số ví dụ về các nhiệm vụ thường ngày mà ST giúp giải quyết để thấy tầm quan trọng của quá trình này:

- Điều gì xảy ra nếu một giao dịch trực tuyến bị lỗi sau bước xác nhận?

- Điều gì xảy ra nếu một sản phẩm trong giỏ hàng trên web bán hàng trực tuyến không cho phép đặt hàng?

- Điều gì xảy ra nếu tab tạo thư mới trong tài khoản Gmail có lỗi?

- Điều gì xảy ra khi tải tăng lên trên hệ thống gây sự cố?

- Điều gì xảy ra nếu hệ thống gặp sự cố và không thể khôi phục dữ liệu như mong muốn?

- Điều gì xảy ra nếu cài đặt một phần mềm trên hệ thống mất nhiều thời gian hơn dự kiến và gặp lỗi?

- Điều gì xảy ra nếu thời gian phản hồi của website tăng nhiều hơn so với dự kiến trong khung giờ cao điểm?

- Điều gì sẽ xảy ra nếu website tải quá chậm đến nỗi người dùng không thể book được vé du lịch?

Trên đây chỉ là một vài ví dụ để cho thấy việc kiểm tra hệ thống sẽ ảnh hưởng như thế nào nếu không được thực hiện đúng cách.

Tất cả các ví dụ trên sẽ cho ra kết quả của việc kiểm tra hệ thống được thực hiện đúng hay không đúng. Tất cả các module tích hợp phải được kiểm tra để đảm bảo rằng sản phẩm hoạt động như yêu cầu.

System testing là kiểm thử White-box hay Black-box?

Kiểm thử hệ thống/System Testing là gì - Hướng dẫn tối ưu cho người mới bắt đầu - Ảnh 3.

Kiểm thử hệ thống có thể được xếp vào test Black-box.

Kỹ thuật test Black-box không yêu cầu kiến thức về code như với test White-box

Thực hiện kiểm thử hệ thống như thế nào?

Về cơ bản,System testing là một phần trong kiểm thử phần mềm và một kế hoạch kiểm thử phải luôn dành không gian cho loại kiểm thử này.

Để kiểm tra toàn bộ hệ thống, các yêu cầu và kỳ vọng phải rõ ràng và tester cũng cần phải hiểu cách sử dụng ứng dụng theo thời gian thực.

Ngoài ra, hầu hết các công cụ của bên thứ ba, các phiên bản và kiến trúc của HĐH đều có thể ảnh hưởng đến chức năng, hiệu năng, bảo mật, khả năng phục hồi hoặc khả năng cài đặt của hệ thống.

Bởi vậy, kiểm thử hệ thống đem đến một cái nhìn rõ ràng về cách ứng dụng sẽ được sử dụng và loại vấn đề nào nó có thể gặp phải trong thời gian thực. Thêm vào đó, tài liệu yêu cầu cũng quan trọng như việc hiểu ứng dụng.

Tài liệu cần rõ ràng và cập nhật có thể giúp người kiểm tra tránh được một số hiểu lầm, giả định và câu hỏi.

Nói tóm lại, một tài liệu yêu cầu rõ ràng và sâu sắc với các bản cập nhật mới nhất, kết hợp với sự hiểu biết về việc sử dụng ứng dụng thời gian thực sẽ giúp ST hiệu quả hơn.

Thử nghiệm này cần được thực hiện một cách có kế hoạch và có hệ thống.

Theo Bizfly Cloud tìm hiểu dưới đây là các bước trong quá trình thực hiện kiểm thử: 

Bước 1: Lên plan test

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 version) 

Bước 3: Thực thi test bao gồm thực hiện test và chạy test( chuẩn bị data test, chạy case và so sánh kết quả) 

Bước 4: Đánh giá kết quả thực thi và báo cáo kết quả test: 

Bước 5: Đóng hoạt động kiểm thử 

Kiểm thử hệ thống/System Testing là gì - Hướng dẫn tối ưu cho người mới bắt đầu - Ảnh 4.

Các vấn đề cần test?

Các vấn đề nêu dưới đây là các yếu tố trong quá trình kiểm thử:

- Test đầu cuối/end to end bao gồm xác minh sự tương tác giữa tất cả các thành phần cũng như với các thiết bị ngoại vi bên ngoài để chắc chắn rằng hệ thống hoạt động ổn định trong bất kỳ tình huống nào được đưa ra trong bài test.

- Test sẽ xác minh input được cung cấp cho hệ thống có cung cấp kết quả như kỳ vọng hay không.

- Xác minh nếu tất cả các yêu cầu về chức năng & phi chức năng được đã được test hay chưa và có hoạt động như mong đợi hay không.

- Ad-hoc test và chạy chẩn đoán có thể được thực hiện trong kiểm thử sau khi hoàn thành các test theo kịch bản. Các test này giúp phát hiện các lỗi không thể tìm thấy trong test theo kịch bản nhờ cho phép các tester tự do kiểm tra dựa trên kinh nghiệm và trực giác của mình.

Ưu điểm của System Testing: 

- Dễ dàng tự động hóa.

- Không cần truy cập mã nguồn, một số lượng lớn tester có kỹ năng vừa phải có thể kiểm tra ứng dụng mà không cần có nhiều kiến thức, ngôn ngữ lập trình hoặc hệ điều hành.

- Phù hợp và hiệu quả khi số lượng các dòng lệnh của hệ thống là lớn.

- Phân biệt được rõ ràng quan điểm của người dùng với quan điểm của nhà phát triển, hay còn gọi là có sự đánh giá khách quan.

Tham khảo https://www.softwaretestinghelp.com/system-testing/

BizFly Cloud là hệ sinh thái điện toán đám mây được vận hành bởi VCCorp - Công ty dẫn đầu trong lĩnh vực công nghệ và truyền thông tại Việt Nam. Với đội ngũ kỹ thuật viên trình độ cao và kinh nghiệm lâu năm làm việc trên các công nghệ khác nhau như cloud, mobile, web..., chúng tôi có đủ khả năng để hỗ trợ đưa ra những giải pháp và công nghệ toàn diện giúp doanh nghiệp chuyển đổi số thành công. Dành cho độc giả quan tâm tới các dịch vụ đám mây do BizFly Cloud cung cấp có thể truy cập tại đây.
SHARE