System Testing: What? Why? & How?

System Testing là gì?

System testing là một loại kiểm thử được yêu cầu để kiểm tra hành vi của hệ thống sau khi đã được tích hợp hoàn chỉnh dựa trên các tài liệu đặc tả kỹ thuật (RSR). Trọng tâm chính của loại kiểm thử này là đánh giá các yêu cầu nghiệp vụ/ chức năng/ các yêu cầu của người dùng cuối. Đây là loại kiểm thử hộp đen, hoạt động kiểm thử được thực hiện bên ngoài của phần mềm, được đánh giá bởi sự hỗ trợ của tài liệu yêu cầu và nó hoàn toàn dựa trên quan điểm của người dùng. Đối với loại kiểm thử này không yêu cầu người kiểm thử phải có kiến thức về thiết kế nội bộ, code hoặc cấu trúc chương trình. Kiểm thử này chỉ được tiến hành sau khi đã hoàn thành việc kiểm thử tích hợp, trong đó các kiêu cầu chức năng hoặc phi chức năng đều được xác minh.

Trong hoạt động kiểm thử tích hợp, người kiểm thử tập trung vào việc tìm lỗi/khuyết tật trên các module tích hợp. Nhưng trong kiểm thử phần mềm hệ thống, người kiểm thử tập trung vào việc tìm lỗi/khuyết tật dựa trên hành vi của ứng dụng, thiết kế phần mềm và mong muốn của người dùng cuối.

Tại sao system testing là quan trọng:

a) Trong vòng đời phát triển phần mềm, System Testing đóng vai trò như là mức độ đầu tiên của hoạt động kiểm thử hệ thống một cách tổng thể. b) Trong bước kiểm tra này, kiểm tra xem hệ thống có đáp ứng được yêu cầu chức năng hay không. c) System Tesing cho phép bạn kiểm thử, xác nhận và xác minh cả yêu cầu về cấu trúc ứng dụng và các yêu cầu nghiệp vụ. d) Ứng dụng/ Hệ thống được kiểm thử trong một môi trường đặc biệt giống với môi trường thực tế nơi mà ứng dụng/phần mềm sẽ được triển khai sau đó. Nói chung, một nhóm riêng có nhiệm vụ và trách nhiệm thực hiện system tesing. Hệ thống kiểm thử được thực hiện trên một môi trường kiểm thử tương tự với môi trường nơi mà sản phẩm được phát hành. Vì vậy, điều này có nghĩa là bạn đang kiểm thử phần mềm ứng dụng giống như trên môi trường thực tế.

Kiểm thử phần mềm được phân thành các mức độ khác nhau:

Giống như với hầu hết các quy trình kỹ thuật, kiểm thử phần mềm là một trật tự có quy định, trong đó tất cả nên được thực hiện. Các mức độ kiểm thử khác nhau được sử dụng trong quá trình kiểm thử, mỗi mức độ của kiểm thử nhằm mục đích thử nghiệm khác khía cạnh khác nhau của hệ thống. Dưới đây là danh sách các loại kiểm thử phần mềm được sắp xếp tuần tự có tổ chức:

Unit testing: Kiểm thử được thực hiện trong quá trình phát triển trong khi developer hoàn thành việc phát triển các unit. Đối tượng của việc kiểm thử này là xác định tính đúng đắn của module. Mục đích của việc kiểm thử này là kiểm tra xem các bộ phận riêng lẻ có hoạt động như mong đợi hay không. Về cơ bản, unit testing thường được thực hiện bởi developer.

Integration testing: Kiểm thử tích hợp hệ thống được bắt đầu khi các module riêng lẻ được tích hợp thành một nhóm. Một dự án phần mềm điển hình bao gồm nhiều module riêng lẻ và được phát triển bởi nhiều developer khác nhau. Vì vậy, kiểm thử tích hợp là tập trung để kiểm tra xem sau khi các module tích hợp có giao tiếp được với nhau hay không. Điều quan trọng là phải kiểm tra xem hiệu ứng của mỗi module trên toàn bộ mô hình của chương trình. Hầu hết các vấn đề của phần mềm được tìm thấy trong loại kiểm thử này.

System testing: Đây là bước đầu tiên để kiểm thử ứng dụng trên sản phẩm phần mềm hoàn chỉnh đã được tích hợp đầy đủ trước khi nó được phát hành.

Acceptance testing: Sự chấp nhận cử người dùng là một loại kiểm thử do khách hàng thực hiện để chứng minh phần mềm thỏa mãn tất cả yêu cầu của khách hàng và khách hàng chấp nhận sản phẩm. Đây là kiểm thử beta của sản phẩm và được đánh giá bởi những người dùng cuối thực sự. Mục đích chính của kiểm thử này là để xác nhận việc kết thúc để kết thúc dòng chảy kinh doanh.

Các tiêu chí để thực hiện System Tesing:

  • Unit Testing phải được hoàn tất.

  • Các module phải được tích hợp đầy đủ.

  • Các tài liệu đặc tả phát triển phần mềm được hoàn thành.

  • Môi trường kiểm thử đã sẵn sàng để cho việc kiểm thử (tương tự như môi trường Staging).

Làm thế nào để System Testing?

Các bước cần thực hiện trong System Testing của phần mềm:

Bước 1) Bước đầu tiên và quan trọng là chuẩn bị System Test Plan:

Tất cả các điểm được cover trong System Test plan có thể thay đổi tùy theo các tổ chức khác nhau cũng như dựa trên kế hoạch dự án, chiến lược kiểm thử và kế hoạch kiểm thử chính.

  • Mục tiêu và mục đích
  • Phạm vi
  • Các vùng quan trọng cần tập trung
  • Kiểm thử chuyển giao
  • Chiến lược kiểm thử để kiểm thử hệ thống
  • Schedule kiểm thử
  • Các tiêu chí đầu vào và đầu ra
  • Các tiêu Suspension & resumption để system testing
  • Môi trường kiểm thử
  • Vai trò và trách nhiệm
  • Thuật ngữ

Bước 2) Bước thứ 2 là tạo các Test Case:

Nó rất giống với việc viết function test case. Trong test case bạn nên viết ra test scenario và use case. Ở đây bạn nên xem xét các loại kiểm thử khác nhau như: kiểm thử chức năng, kiểm thử hồi quy, kiểm thử Smoke, kiểm thử Sanity, kiểm thử Ad-hoc, kiểm thử thăm dò, kiểm thử khả năng sử dụng, kiểm thử GUI phần mềm, kiểm thử khả năng tương thích, kiểm thử hiệu suất, kiểm thử khả năng chịu tải, kiểm thử xử lý lỗi, kiểm thử khả năng mở rộng, kiểm thử bảo mật, kiểm thử dung lượng, kiểm thử cài đặt, kiểm thử phục hồi, kiểm thử độ tin cậy, kiểm thử khả năng tiếp cận...

Trong khi viết test case bạn cần kiểm tra các test case có bao gồm tất cả các yêu cầu về chức năng, phi chức năng, kỹ thuật và giao diện người dùng hay không.

Bước 3) Tạo test data được sử dụng để System testing.

Bước 4) Thực hiện automated test case.

Bước 5) Thực hiện các trường hợp kiểm thử thông thường và câp nhật test case nếu có sử dụng bất kỳ công cụ quản lý nào.

Bước 6) Báo cáo lỗi, xác minh lỗi và thực hiện kiểm thử hồi quy.

Bước 7) Lặp lại vòng đời kiểm thử (nếu cần).

Link tham khảo: http://www.softwaretestingclass.com/system-testing-what-why-how/