2011-12-13 30 views
8

Chúng tôi đang sử dụng BDD và sử dụng SpecFlow để thúc đẩy sự phát triển của chúng tôi (ATDD).Sử dụng SpecFlow để kiểm tra hồi qui từ đầu đến cuối

Nhóm QA của chúng tôi muốn xác định các thử nghiệm hồi quy đầu cuối của riêng mình (trong Gherkin/SpecFlow) và tái sử dụng các bước mà chúng tôi đã xác định.

(Xin lưu ý - Tôi biết rằng đây không phải là một ví dụ tuyệt vời nhưng nó phải cung cấp đủ thông tin chi tiết)

Xét nghiệm có thể bao gồm ..

  1. Đăng nhập
  2. Tìm kiếm một sản phẩm
  3. Chọn sản phẩm để mua
  4. Tạo đơn đặt hàng
  5. Chọn tùy chọn phân phối.
  6. Gửi đơn đặt hàng.
  7. Hủy đơn đặt hàng.

sẽ Điều này cho thấy một kịch bản như ..

Given Tôi đăng nhập
Khi tôi Tìm kiếm một sản phẩm
Và tôi Chọn một sản phẩm để mua
Và tôi Tạo đơn đặt
Và Tôi Chọn tùy chọn phân phối
Và tôi Gửi đơn đặt hàng
Và tôi Hủy đơn đặt hàng
Sau đó ?? !!

Điều này rõ ràng là sai vì chúng tôi không kiểm tra đầu ra ở từng bước.

Vì vậy này có thể được giải quyết như một chuỗi các kịch bản:

Kịch bản 1:
Với tôi đăng nhập
Khi tôi Tìm kiếm một sản phẩm
Sau đó, tôi nhìn thấy một danh sách các sản phẩm

Kịch bản 2:
Khi tôi chọn một sản phẩm để mua
Sau đó, tôi có thể tạo đơn đặt hàng

Kịch bản 3:
Khi tôi tạo ra thứ tự
Và tôi Chọn tùy chọn phân phối
Sau đó, tôi có thể gửi lệnh

vv vv

Vấn đề chính với điều này là rằng có vẻ như không có cách để xác định thứ tự/chuỗi mà các kịch bản được chạy trong (một đặc tính của nUnit?). Bởi vì có sự phụ thuộc giữa các kịch bản (chúng không được thiết lập cho một điểm bắt đầu biết) chúng phải được chạy theo thứ tự.

Câu hỏi của tôi là:

a) Chúng tôi đang cố gắng vừa với một chốt vuông trong một lỗ tròn?!

b) Có ai biết nếu có cách sử dụng SpecFlow/Gherkin theo cách này không?

c) Hoặc có ai biết lựa chọn thay thế nào không?

Rất cám ơn!

Trả lời

11

Tôi sẽ nói rằng bạn đang viết kịch bản của mình ở mức trừu tượng sai. Nhưng điều đó phụ thuộc vào những gì bạn muốn sử dụng chúng;

Nếu bạn muốn viết kịch bản thử nghiệm thì bạn đang đi đúng hướng ... nhưng nó sẽ là một cơn ác mộng để duy trì vì nó, trong trường hợp đầu tiên (kịch bản dài) sẽ rất giòn và trường hợp thứ hai (một số kịch bản) cần phải đảm bảo một lệnh thực hiện nhất định. Cả hai đều không được khuyến khích và được coi là chống mẫu.

Tôi khuyên bạn nên hợp nhất các bài kiểm tra ATDD mà bạn đang viết và trao đổi với bộ phận kiểm tra để xem xét vấn đề và bao gồm các trường hợp kiểm tra cần đảm bảo rằng hệ thống được kiểm tra kỹ lưỡng. Ai biết? Bạn thậm chí có thể học hỏi điều gì đó từ mỗi khác: P

Và khi bạn viết những "thông số kỹ thuật" (như tôi thích gọi chúng), bạn viết chúng ở mức cao hơn. Vì vậy, thay vì viết:

Given I am logged in 
When I Search for a product 
    And I Select a product to buy 
    And I Create an order 
    And I Select delivery option 
    And I Submit the order 

bạn viết một cái gì đó giống như

When I submit an order for product 'Canned beans' 

Trong bước định nghĩa đằng sau bước mà bạn thực hiện tất cả những gì tự động hóa (đăng nhập, duyệt đến trang sản phẩm, chọn các tùy chọn giao hàng, gửi đơn đặt hàng).

Tất cả điều này có thể được đọc trong những bài viết tuyệt vời về cách viết duy trì kiểm tra giao diện người dùng tự động hóa:

Tôi hy vọng điều này sẽ giúp

+0

Rất cám ơn câu trả lời của Marcus và các bài viết bạn liệt kê - rất hữu ích! Bây giờ tôi đã rõ ràng hơn một chút về quesion từ bài kiểm tra. Đó là 'chúng ta có là khả năng chuỗi các kịch bản đã viết với nhau để chạy theo thứ tự để thực hiện các kiểm tra hệ thống từ đầu đến cuối?' ví dụ. Đăng nhập sau đó duyệt các sản phẩm sau đó gửi đơn đặt hàng sau đó đăng ký tài khoản rồi chỉnh sửa tài khoản sau đó tìm kiếm đơn đặt hàng sau đó xem lệnh rồi hủy lệnh sau đó vv vv. dường như không phải là cách để chạy các kịch bản theo thứ tự cụ thể. –

+0

Cập nhật: nếu các kịch bản có tên '001 Thực hiện việc này', '002 Thực hiện việc đó', v.v. thì chúng được chạy theo thứ tự đó. Cảm thấy một chút hacky nhưng cho mục đích của chúng tôi điều này sẽ làm cho đến khi một giải pháp tốt hơn có thể được tìm thấy. –

+1

Tôi chắc chắn sẽ khuyên bạn nên chống lại các kịch bản viết phụ thuộc vào thứ tự. Điều đó sẽ khó duy trì ... –

Các vấn đề liên quan