2011-07-26 31 views
11

Tôi đã được nghiên cứu thử nghiệm chấp nhận tự động trong vài ngày qua, tìm hiểu về BDD & JBehave, FitNesse & Slim, Selenium & WebDriver vvThử nghiệm chấp nhận tự động - Giao diện người dùng hoặc API?

Tôi vừa mới xem this video bằng cách Robert C. Martin nơi ông chứng tỏ làm thế nào để sử dụng FitNesse để viết và duy trì các bài kiểm tra như vậy. Đến cuối, ai đó hỏi xem các thử nghiệm này có chạm vào giao diện người dùng hay không. Martin tiếp tục giải thích rằng các thử nghiệm chấp nhận ghép nối với giao diện người dùng có thể tốn kém do các thay đổi đối với giao diện người dùng là khá thường xuyên. Tôi cũng có thể đoán rằng các bài kiểm tra như vậy chỉ có thể được viết sau khi giao diện người dùng đã được phát triển, điều này sẽ mang lại cho người kiểm tra đằng sau lịch biểu theo định nghĩa.

Tôi phải hỏi: phương án thay thế là gì? Martin dường như ngụ ý rằng các xét nghiệm nên được đánh một lớp ẩn có thể thao tác với lớp kinh doanh của ứng dụng. Sự hiểu biết của tôi là điều này sẽ yêu cầu công việc bổ sung, chưa kể rằng nó sẽ lộ ra một API mới cần được bảo đảm một lần trong môi trường sản xuất.

Có thể chạm vào lớp nghiệp vụ thông qua các dịch vụ ứng dụng là đủ không?

Trải nghiệm của bạn là gì?

Cảm ơn bạn đã chia sẻ!

Trả lời

9

Thật không may bạn cần cả hai. Nói chung, bạn sẽ muốn tự động hóa các bài kiểm tra lớp kinh doanh với một cái gì đó giống như thể dục. Tránh giao diện người dùng về cơ bản cung cấp cho bạn đảm bảo rằng quy tắc kinh doanh được xác định luôn hoạt động. Tự động hóa thông qua giao diện người dùng có thể yêu cầu bảo trì nhiều hơn. Tuy nhiên, về phía cộng thêm vì phần lớn giao diện người dùng sử dụng các cơ chế được cung cấp bởi nền tảng (ví dụ C#/Winforms), phần lớn các kiểm tra giao diện người dùng của bạn có thể chỉ khi thay đổi được thực hiện nếu bạn được bảo hiểm tốt với các loại kiểm tra khác (như lớp nghiệp vụ) . Các thử nghiệm tự động cần được duy trì và cập nhật nhưng các kiểm tra giao diện người dùng có xu hướng yêu cầu bảo trì nhiều hơn và thường ít đáng tin cậy hơn theo thời gian.

13

Kiểm tra thông qua giao diện người dùng hoặc nhấn trực tiếp vào lớp kinh doanh có thể được xem như hai loại kiểm tra khác nhau, với những ưu điểm và nhược điểm khác nhau.

Nếu bạn đang kiểm tra giao diện người dùng trực tiếp, thì bạn đang thử nghiệm những gì người dùng nhìn thấy và bạn không phải thay đổi mã để có thể kiểm tra nó. Tuy nhiên, nó trở nên khá khó khăn để kiểm tra trường hợp góc, hoặc làm thế nào hệ thống phản ứng với điều kiện đặc biệt (chẳng hạn như trường hợp ngoại lệ). Nó giống như Robert Martin nói, giòn. Nếu giao diện của bạn thay đổi, bạn cần thay đổi các thử nghiệm của mình. Vì vậy, kiểm tra thông qua giao diện người dùng phụ thuộc vào sự trưởng thành của giao diện người dùng của bạn. Sau này trong dự án, giao diện người dùng ổn định hơn, vì vậy việc kiểm tra qua giao diện người dùng có ý nghĩa hơn. Ngoài ra, kiểm tra một số nội dung thông qua giao diện người dùng là khó hoặc phức tạp.

Nếu bạn đang thử nghiệm lớp doanh nghiệp, bạn có thể dễ dàng kiểm tra điều kiện góc hơn và bạn ít bị ảnh hưởng bởi các thay đổi trong giao diện người dùng. Tuy nhiên, như bạn nói, phần mềm phải được viết theo cách như vậy để cho phép thử nghiệm loại này. Bạn thậm chí có thể phải trưng ra một giao diện mới để cho phép nó, mà sau đó phải được duy trì. Theo kinh nghiệm của tôi, đôi khi rất khó để các nhà phát triển hỗ trợ loại giao diện này. Nó được xem là không quan trọng như giao diện thực. Nhưng nó luôn luôn có thể. Loại giao diện này cần mua từ các nhà phát triển, nếu không bạn có nguy cơ bị 'không được hỗ trợ' theo thời gian.

Nếu bạn không có giao diện bên ngoài, hãy thử yêu cầu. Bạn không bao giờ biết, bạn có thể thuyết phục họ rằng đó là một ý tưởng hay. Nó dễ dàng hơn khi bắt đầu một dự án.

Nếu bạn có giao diện bên ngoài, hãy sử dụng giao diện đó để kiểm tra logic nghiệp vụ của bạn.

Nếu không, bạn sẽ phải sử dụng giao diện người dùng để kiểm tra những điều này. Một cách tiếp cận sẽ là sử dụng giao diện người dùng để thực hiện kiểm tra khói, để trả lời (các) câu hỏi sau đây: Phần mềm này có thể kiểm tra được không? Hãy suy nghĩ về những điều phổ biến bạn phải kiểm tra mỗi khi bạn nhận được một bản dựng từ dev. Tôi có thể đăng nhập, tôi có thể đăng xuất, trang chính có xuất hiện không, tôi có thể làm một đơn hàng đơn giản không? Chọn 5 hoặc 6 trong số những thứ này và xây dựng bộ thử nghiệm tự động để kiểm tra những điều này. Sử dụng các bài kiểm tra này làm hướng dẫn về số lượng chức năng bạn thực sự có thể kiểm tra thông qua giao diện người dùng và mức độ hữu ích của nó.

Sau đó, bạn có thể sử dụng đối số này làm đối số khi bạn đi tới nhà phát triển và yêu cầu giao diện bên ngoài.

+0

Bạn đề cập đến việc phát triển một giao diện bên ngoài: Tôi cho rằng giao diện này cần phải được triển khai trên thùng/máy chủ ứng dụng , được hiển thị thông qua một số cơ chế truy cập từ xa như dịch vụ web và được gọi từ xa từ thử nghiệm chấp nhận? Hoặc điều này có thực sự cần thiết nếu đó là một ứng dụng dựa trên Spring, nơi mà vùng chứa không thực sự bị khai thác? – Spiff

+1

Có, nó sẽ cần phải được triển khai và tiếp xúc là tốt. Nó có thể là một phần của cùng một gói, nhưng như bạn nói bạn sẽ cần phải có khả năng kích hoạt và vô hiệu hóa nó. –

1

Tạo giao diện để thử nghiệm là "giấc mơ của người thử nghiệm" nhưng việc bật/tắt nó sẽ là cơn ác mộng để triển khai. U có thể cần "thử nghiệm xây dựng" và "triển khai xây dựng" với các thử nghiệm khói khác nhau. Nhưng bất kỳ sự thỏa hiệp nào cũng tốt như kiểm tra tự động hóa UI giới hạn.

3

Tôi ủng hộ mạnh mẽ sử dụng chế độ tự động hóa không giao diện người dùng cho các thử nghiệm chấp nhận. Vấn đề bạn có thể phải đối mặt là bán ý tưởng cho những người thử nghiệm mã mù truyền thống, người sẽ tìm thấy khái niệm xác minh không trực quan về tiêu chí chấp nhận không đầy đủ. Tôi thích một cách giữa, nơi một tiêu chuẩn chấp nhận được kiểm tra bởi hai bộ kiểm tra. Tập đầu tiên hoàn toàn tập trung vào logic và do đó được thực hiện dựa trên lớp API/Service/Remote. Bộ này được tự động 100%. Tập thứ hai là xác minh giao diện người dùng của cùng một yêu cầu. Ý kiến ​​cá nhân của tôi không phải là để tự động hóa tập thứ hai vì những lý do được nêu trong các câu trả lời khác. Đối với một lớp để viết các bài kiểm tra chống lại, nó phụ thuộc vào đội. Nếu nhóm thực sự cam kết về chất lượng, họ sẽ thấy đây là một phần thiết yếu trong phát triển sản phẩm. Tuy nhiên, trong thế giới thực, nó là một khó bán. Trừ khi nó được gọi một cách rõ ràng từ khi bắt đầu một dự án, sẽ rất khó để trang bị thêm một giao diện như vậy trong một dự án đang chạy. Tôi sẽ đề nghị, nếu bạn muốn thực hiện các kiểm tra chấp nhận tự động, hãy thực hiện càng sớm càng tốt. Khi độ tuổi của sản phẩm, khả năng các hack như vậy được thực hiện giảm đáng kể.

2

Tôi chỉ có thể nói để thử nghiệm giao diện người dùng, Q & Một phong cách:

A) là giao diện người dùng của chúng tôi đã ổn định hoặc vẫn có khả năng thay đổi khá nhiều?

Ổn - tự động hóa mang lại giá trị thêm

có khả năng để thay đổi - không tự động, bạn sẽ dành nhiều thời gian duy trì (làm lại) những thử nghiệm này.


B) UI của chúng tôi ổn định, chúng tôi có nên tự động hóa càng nhiều càng tốt?

Không!

1) Mang tất cả các kịch bản thử nghiệm của bạn (ví dụ 100)

2) Quyết định là automatable (80)

3) Sắp xếp chúng bằng cách ưu tiên (blockers, quan trọng, nhỏ)

4) Tự động hóa các bộ chặn và các bộ phận quan trọng trước (ví dụ: 20/80)

Xem cách hoạt động và tự động hóa nhiều hơn nếu cần.


C) Tôi nên cân nhắc các yếu tố nào khác khi tự động hóa giao diện người dùng?

Tất cả mọi thứ như hình dưới đây (kiểm tra kim tự tháp là một khái niệm được phát triển bởi Mike Cohn):

enter image description here