End-to-End Testing là gì?

End-to-end testing, also known as E2E testing, is a way to make sure that applications behave as expected and that the flow of data is maintained for all kinds of user tasks and processes. This type of testing approach starts from the end user's perspective and simulates a real-world scenario.

Kiểm thử phần mềm là giai đoạn quan trọng để đảm bảo chất lượng phần mềm. Sản phẩm chất lượng tốt luôn mang đến sự hài lòng cao hơn cho cả người tạo ra sản phẩm và người dùng. Nói cách khác, một sản phẩm chất lượng là cố gắng loại bỏ defect ở mọi mức độ. Thuật ngữ "End to End Testing" được định nghĩa như một phương pháp test nhằm xác định liệu việc thực hiện các ứng dụng có theo yêu cầu hay không. Nó được thực hiện từ đầu đến cuối theo các kịch bản như trong thế giới thực ví dụ như: thông tin liên lạc của các ứng dụng với phần cứng, mạng, cơ sở dữ liệu và các ứng dụng khác.

Lý do chính của việc thực hiện test này là để xác định sự phụ thuộc khác nhau của ứng dụng cũng như đảm bảo rằng thông tin chính xác được trao đổi giữa các thành phần khác nhau của hệ thống. Nó thường được thực hiện sau khi hoàn thành giai đoạn function test và system test.

Tại sao End to End Testing lại quan trọng?

Mục đích chính của End-to-End Testing bao gồm:

  • Đảm bảo sản phẩm phối hợp tốt với bất kỳ hệ thống con nào của nó.
  • Kiểm tra tất cả luồng của hệ thống từ đầu đến cuối hệ thống.
  • Xác thực các yêu cầu từ góc nhìn người dùng cuối.
  • Xác định các vấn đề trong các môi trường không đồng nhất.
  • Giảm lượng thời gian test xoay vòng (testing cycle time)
  • Xác định các kịch bản kiểm thử mới (new test scenario)
  • Xác định các nhu cầu tiềm ẩn mới (new business needs) 
  • Xác định các vấn đề liên quan đến bảo mật, tính toán vẹn dữ liệu và các sự đứt gãy tại các luồng dữ liệu

Khi nào thực hiện End to End Testing?

End to End testing thường được thực hiện khi:

  • Một sản phẩm đã đủ điều kiện kiểm thử hệ thống trong đó tất cả các chức năng đã được bao phủ.
  • Khi môi trường phụ thuộc được xác định và có sẵn để tiến hành thực hiện theo flow.
  • Khi Tester được trang bị kiến thức cần thiết và thử nghiệm hiện vật.
  • Khi Tester có các công cụ thích hợp để phân tích luồng dữ liệu.

Sự khác nhau giữa System Testing và End to End Testing

Dưới đây là một vài điểm khác biệt giữa System Testing và End to End Testing

System Testing End to End Testing
Bảo đảm kiểm thử cả chức năng và phi chức năng của hệ thống Bao gồm cả việc kiểm thử giao diện xem xét tất cả các hệ thống nguồn & đích
Thực hiện sau khi đã hoàn thành kiêm thử tích hợp Thực hiện sau khi hoàn thành kiểm thử hệ thống cho bất kỳ sản phẩm phần mềm nào
Tất cả các tính năng được thực hiện cho sản phẩm sẽ được xem xét kỹ lưỡng để khám phá các kết quả không mong muốn. Các luồng quy trình sẽ được kiểm tra cùng với front end & back end.
Tester phải hiểu rõ chức năng của hệ thống Tester phải hiểu rõ về luồng dữ liệu và luồng nghiệp vụ của hệ thống

System Testing và End-to-End Testing dễ bị nhầm là giống nhau. Thực tế là 2 loại kiểm thử khác nhau với phạm vi test, cách thức test rất khác nhau. Trong khi End-to-End kiểm tra luồng hoạt động từ đầu đến cuối hệ thống bao gồm tất cả các hệ thống phụ thuộc cùng một quy trình khép kín không có sự tác động từ một bên thứ ba, thì System Testing sẽ kiểm tra cùng một chức năng với tập hợp các bộ dữ liệu đầu vào khác nhau để đánh giá phản hồi. Nếu như End-to-End Testing được ví như kiểm tra tính hữu dụng, vừa đủ và đúng, thì System Testing được ví như kiểm tra độ bền, độ sâu.