What is End to End Testing?

Khi tester được chỉ định bất kỳ ứng dụng để kiểm tra, từ thời điểm đó họ chịu trách nhiệm kiểm tra các ứng dụng có hoạt động tốt hay không bằng các kiến thức kiểm tra thực tế và kỹ thuật của họ.

Vì vậy, để mô tả nó về mặt kỹ thuật và đảm bảo rằng việc test được thực hiện hoàn toàn thì tester cần thiết thực hiện kiểm tra cuối cùng với thuật ngữ là "End to End Testing".

Trong bài viết này, chúng ta sẽ tìm hiểu "End to End Testing" là gì, cách làm của nó, tại sao nó là cần thiết, các ma trận được sử dụng, làm thế nào để tạo đầy đủ các trường hợp test cụ thể và một số vài khía cạnh quan trọng khác cũng được những gì. Chúng tôi cũng sẽ tìm hiểu về System testing và so sánh nó với End to End Testing.

Thế nào là "End to End Testing"?

End-to-end-Testing-1.png

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 của bất kỳ ứng dụng nào.

Chúng ta hãy lấy một ví dụ của giai đoạn "End to End testing" của account Gmail sẽ bao gồm các bước sau:

  • Launching trang đăng nhập Gmail thông qua URL.
  • Đăng nhập vào tài khoản Gmail bằng cách sử dụng thông tin hợp lệ.
  • Truy cập hộp thư đến. Mở, đọc và không đọc email.
  • Soạn email mới, trả lời hoặc chuyển tiếp bất kỳ email.
  • Mở mục Sent và kiểm tra email.
  • Kiểm tra thư trong thư mục Thư rác.
  • Đăng xuất khỏi ứng dụng Gmail bằng cách nhấp vào 'logout'

Hoạt động như thế nào

Để hiểu rõ hơn một chút, chúng ta hãy tìm hiểu nó hoạt động như thế nào qua ví dụ dưới đây:

Lấy một ví dụ của ngành ngân hàng. Rất ít người trong chúng ta đã phải thử chơi cổ phiếu. Khi một chủ tài khoản, mua bất kỳ cổ phiếu, một tỷ lệ phần trăm cụ thể của số tiền được trao cho các nhà môi giới. Khi các cổ đông bán cổ phiếu đó, cho dù anh nhận được lợi nhuận hoặc mất mát, một tỷ lệ phần trăm cụ thể của số tiền đó một lần nữa được trao cho các nhà môi giới. Tất cả các giao dịch này được phản ánh và quản lý bằng tài khoản. Toàn bộ quá trình phải đi kèm với quản lý rủi ro.

Khi chúng ta nhìn vào ví dụ trên, giữ End-to-End test trong đầu, chúng ta sẽ thấy rằng toàn bộ quá trình bao gồm nhiều con số cũng như các mức độ khác nhau của các giao dịch. Toàn bộ quá trình liên quan đến nhiều hệ thống có thể khó trong việc test.

Có 2 phương pháp khác nhau

1. End to End Testing ngang

Phương pháp này được sử dụng rất phổ biến. Nó xảy ra theo chiều ngang trên bối cảnh của nhiều ứng dụng. Phương pháp này có thể dễ dàng xảy ra trong một ứng dụng ERP(Enterprise Resource Planning) đơn. Lấy một ví dụ của một ứng dụng web dựa trên một hệ thống đặt hàng trực tuyến. Toàn bộ quá trình này sẽ bao gồm các tài khoản, tình trạng hàng tồn kho của các sản phẩm cũng như các chi tiết vận chuyển.

2. End to End Testing dọc

Trong phương pháp này, tất cả các giao dịch của bất kỳ ứng dụng được xác minh và đánh giá ngay từ khi bắt đầu đến khi kết thúc. Từng lớp của ứng dụng được test bắt đầu từ trên xuống dưới. Lấy một ví dụ của một ứng dụng dựa trên web mà Sử dụng mã HTML cho đến các máy chủ web. Trong trường hợp như vậy, API là cần thiết để tạo ra các mã SQL nhằm truy cập cơ sở dữ liệu. Tất cả các kịch bản tính toán phức tạp đòi hỏi phải xác nhận thích hợp và test chuyên dụng. Vì vậy phương pháp này là khó khăn hơn nhiều.

'White Box testing' cũng như 'Black Box testing' cả hai được kết hợp trong End to End Testing. Hay nói cách khác, chúng ta có thể nói, đây là sự kết hợp các lợi ích của cả hai test 'White Box testing' và 'Black Box testing'. Tùy thuộc vào loại phần mềm được phát triển, ở các cấp độ khác nhau cả hai kỹ thuật test 'White Box testing' và 'Black Box testing' được sử dụng khi cần thiết. Về cơ bản, End to End testing thực hiện cách tiếp cận theo hướng chức năng cũng như theo hướng kiến trúc cho bất cứ phần mềm hoặc chương trình nào để xác nhận các chức năng hệ thống.

Các tester cũng giống như việc test theo kiểu End to End, bởi vì việc viết test case phải xuất phát từ quan điểm của người sử dụng và phải theo các tình huống thực tế, việc làm đó có thể tránh được hai sai lầm phổ biến là 'Miss a bug' và 'Viết các testcase không có trong thực tế". Điều này mang lại cho tester một cảm giác rất tốt trong việc hoàn thành test .

Dưới đây là vài hướng dẫn đó phải được nhớ kĩ trong khi thiết kế các trường hợp test để thực hiện loại test này:

  • Testcase nên được tạo từ quan điểm của end user.
  • Nên tập trung vào test một số tính năng hiện có của hệ thống.
  • Nhiều tình huống này có thể được xem xét để tạo ra nhiều test cases.
  • Các tập hợp test case nên được tạo ra để tập trung vào nhiều kịch bản khác nhau của hệ thống.

Như khi chúng ta thực hiện bất kỳ trường hợp test, tương tự là trường hợp với test này. Nếu các trường hợp test là 'Pass' khi mà chúng cho Output ra như mong đợi, khi đó hệ thống đã pass qua End to End Testing. Tương tự như vậy, nếu hệ thống không cho kết quả mong muốn, thì cần phải retest lại các trường hợp trong vùng bị failure.

Tại sao chúng ta thực hiện End to End Testing

Trong kịch bản hiện nay, cũng như thể hiện trong sơ đồ trên, hệ thống phần mềm hiện đại bao gồm các kết nối của nó với nhiều sub-system. Điều này đã làm cho các hệ thống phần mềm hiện đại rất phức tạp. Những sub-system chúng ta đang nói về có thể trong cùng một tổ chức hoặc trong nhiều trường hợp có thể của các tổ chức khác nhau. Ngoài ra, các sub-system có thể được phần nào tương tự hoặc khác với các hệ thống hiện tại. Kết quả là, nếu có bất kỳ sự thất bại hay lỗi trong bất kỳ hệ thống phụ, nó có thể ảnh hưởng xấu đến toàn bộ hệ thống phần mềm dẫn đến sự sụp đổ của nó.

Những rủi ro lớn có thể tránh được và có thể được kiểm soát bởi các loại test:

  • Hãy kiểm tra và thực hiện kiểm tra lưu lượng hệ thống.
  • Tăng vùng phủ sóng test của tất cả các hệ thống phụ có liên quan với các hệ thống phần mềm.
  • Phát hiện vấn đề, nếu nó liên quan tới cả các sub-system, và nó có khả năng tăng hiệu năng toàn hệ thống.

Dưới đây đề cập rất ít các hoạt động được bao gồm trong quá trình kết thúc để kết thúc:

  • Nghiên cứu kỹ lưỡng các yêu cầu để thực hiện test này.
  • Thiết lập đúng môi trường kiểm tra.
  • Nghiên cứu kỹ lưỡng phần cứng và phần mềm yêu cầu.
  • Mô tả của tất cả các hệ thống phụ cũng như hệ thống phần mềm chính có liên quan.
  • Liệt kê các vai trò và trách nhiệm cho tất cả các hệ thống và sub-system có liên quan.
  • Test các phương pháp sử dụng theo test này cũng như các tiêu chuẩn của nó được mô tả.
  • Trường hợp test thiết kế cũng như theo dõi ma trận yêu cầu.
  • Ghi lại hoặc lưu các dữ liệu đầu vào và đầu ra cho mỗi hệ thống.

Thiết kế Framwork của End to End Testing

End-to-End-Testing-4.jpg

  1. Chức năng người dùng: Những hành động sau nên được thể hiện như 1 phần của việc xây dựng chức năng người dùng. Bảng liệt kê các tính năng của hệ thống phần mềm và các kết nối với sub-system. Đối với bất kỳ chức năng, theo dõi các tác vụ cũng như các đầu vào và đầu ra dữ liệu. Tìm các quan hệ, nếu có giữa người sử dụng các chức năng khác nhau. Tìm hiểu bản chất của các chức năng sử dụng khác nhau vi dụ nếu nó là độc lập hoặc được tái sử dụng.

  2. Điều kiện: Những hoạt động sau nên được thể hiện như 1 phần của việc xây dựng điều kiện xây dựng dựa trên các chức năng người dùng. Một tập hợp các điều kiện cần được chuẩn bị đối với mỗi chức năng sử dụng, Thời gian, điều kiện và những thứ khác có ảnh hưởng đến chức năng các yếu tố người sử dụng đều có thể được coi như là tham số.

  3. Trường hợp test: các yếu tố sau cần được xem xét để xây dựng các trường hợp test. Đối với mỗi kịch bản, một hoặc nhiều trường hợp test nên được tạo ra để kiểm tra mỗi và mọi chức năng của các chức năng sử dụng. Mọi điều kiện đơn nên được liệt kê như là một trường hợp test riêng biệt.

Các metrics có liên quan đến

Di chuyển đến các hoạt động quan trọng tiếp theo hoặc các số liệu liên quan đến việc test này:

  1. Tình trạng chuẩn bị Test case: Điều này có thể được theo dõi ở dạng đồ thị để đại diện cho sự tiến bộ của các trường hợp kiểm tra theo kế hoạch đang được chuẩn bị.

  2. Theo dõi hàng tuần của tiến trình test: Nó bao gồm cách thể hiện toàn diện tiến trình test trong tuần đó. Nó có thể được phản ánh thông qua đại diện tỷ lệ phần trăm các cases cho pass, thất bại, thực thi, không được thực hiện, không hợp lệ, vv .

  3. Tình trạng và báo cáo chi tiết cho Defects: Báo cáo tình trạng cần được chuẩn bị trên cơ sở hàng ngày để hiển thị trạng thái thực hiện test case cũng như Defects tìm thấy và ghi lại theo mức độ nghiêm trọng. Hàng tuần, tỷ lệ phần trăm của mở và đóng Defects nên được tính toán. Ngoài ra, dựa trên mức độ Defects và ưu tiên, tình trạng Defects nên được theo dõi trên cơ sở hàng tuần.

  4. Kiểm tra môi trường có sẵn để thực hiện End to End Testing: Điều này giữ một theo dõi của thời hạn thời gian kiểm tra môi trường được phân bổ cũng như thời gian kiểm tra môi trường thực tế sử dụng trong khi thực hiện End to End Testing.

Chúng tôi đã gần như nhìn thấy tất cả các khía cạnh của test này. Bây giờ chúng ta hãy phân biệt "System Testing" và "End to End Testing". Nhưng trước đó hãy để tôi cung cấp cho bạn một ý tưởng cơ bản của "System Testing", để chúng ta có thể dễ dàng phân biệt giữa hai hình thức kiểm thử phần mềm.

System Testing là các hình thức test bao gồm hàng loạt các test khác nhau mà mục đích là để thực hiện test sự hoàn chỉnh của hệ thống tích hợp. Hệ thống kiểm tra về cơ bản là một hình thức black box testing, nơi tập trung xem xét các làm việc của hệ thống dưới góc nhìn của người dùng trên các điều kiện thực tế.

System Testing bao gồm:

  • Test ứng dụng tích hợp đầy đủ bao gồm cả hệ thống chính.
  • Xác định các thành phần tương tác với nhau và trong hệ thống.
  • Xác minh các đầu ra mong muốn trên cơ sở các thông tin nhận được.
  • Phân tích kinh nghiệm của người dùng khi sử dụng các khía cạnh khác nhau của ứng dụng.

Trên đây chúng ta đã thấy các mô tả cơ bản của hệ thống test để hiểu nó. Bây giờ, chúng ta sẽ tìm ra sự khác biệt giữa "Hệ thống kiểm tra" và "End to End Testing".

Selection_033.png

Kết Luận

Sau khi hiểu được những khía cạnh khác nhau của End to End Testing, quá trình thực hiện, các metric, sự khác biệt giữa system test và End to End Testing, có thể đưa ra kết luận như sau:

Đối với bất kỳ phiên bản thương mại của phần mềm, End to End Testing đóng vai trò quan trọng vì nó kiểm tra toàn bộ ứng dụng trong một môi trường mà mô phỏng chính xác việc sử dụng ở trong thế giới thực như giao tiếp mạng, tương tác cơ sở dữ liệu, v.v.

Chủ yếu là, End to End Testing được thực hiện bằng tay do các chi phí của việc test tự động hóa tương đối cao đối với mọi tổ chức. Điều này không chỉ có lợi cho xác nhận hệ thống mà còn có thể được coi là hữu ích cho việc intergration test mở rộng.

Nguồn: http://www.softwaretestinghelp.com/what-is-end-to-end-testing/