2012-01-27 29 views
14

Tôi đang thực hiện một số thử nghiệm khói cho trang web của chúng tôi.Được đưa ra khi kiểm tra sau đó - Tôi có CẦN "Khi" không?

Tôi đang sử dụng định dạng Given/When/Then cho các bài kiểm tra chấp nhận tự động hiện có/Câu chuyện của người dùng. Nhưng bây giờ tôi muốn làm một bài kiểm tra khói ban đầu là:

Given I'm on the homepage

Then I should see "Welcome To The Site"

Tôi có thiếu cái gì? Là nó "ok" để không có một khi?

Công cụ sử dụng: MVC3, SpecFlow, Nunit, Watin

Trả lời

18

Đó là cú pháp hoàn toàn hợp lệ để bỏ sót bất kỳ Given, Khi hay Rồi -

(và thậm chí để trộn chúng trong bất kỳ thứ tự specflow không quan tâm.)

Tuy nhiên, với mục đích dễ đọc, chứ không phải bỏ qua Khi tôi thường rephrase Given, tức là

When I view the homepage 
Then I should see "Welcome To The Site" 

tôi thích để bỏ qua phần Given, vì Khi được cho là để chỉ ra những gì các hành động kiểm tra là .

Nếu mã cho các bước ràng buộc là như nhau và bạn muốn tái sử dụng nó, bạn luôn có thể ràng buộc của bạn nhất định và khi tôi đến cùng một phương pháp.

[Given(@"I'm on the homepage"] 
[When(@"I view the homepage"] 
public void NavigateToHomePage() 
{ 
    ... 
+1

Thực tế luồng không xuất hiện để thậm chí quan tâm cho dù bạn đặt tên cho một bước Given, khi hoặc sau đó miễn là nó liên kết với các quyền/khi/sau đó thuộc tính. Lựa chọn từ là hương vị và dường như chỉ thực hiện các bước theo thứ tự. – perfectionist

+0

Nó giống như người cầu toàn nói; specflow chỉ cần thực hiện các bước theo thứ tự được nêu trong tệp tính năng. Nó không thể quan tâm ít hơn về thuộc tính bạn sử dụng. –

+1

Doh - không có dòng mới trong nhận xét! Tôi khuyên bạn nên sử dụng Khi nào các bước để đánh dấu rõ hành động bạn đang thử nghiệm. Như trong Arrange Act Assert. –

-3

Bạn không cần khi nào. Tôi thích suy nghĩ của từ khóa Given/When/Then như

Given - Đây là bước chuẩn bị, làm bất cứ điều gì bạn cần để có thể thực hiện kiểm tra Khi nào - Đây phải là một hành động mà thử nghiệm của bạn sẽ xác minh. Sau đó - Đây sẽ là nơi bạn xác minh thử nghiệm của mình dựa trên hành động được thực hiện trong các bước Khi.

Như đề xuất trước đây, chúng chỉ ảnh hưởng đến thứ tự thực hiện.

+0

Bạn có thực sự muốn nói "Bạn KHÔNG cần một Khi"? Bạn có thể giải thích tại sao bạn nghĩ vậy? Phần còn lại của câu trả lời của bạn dường như gợi ý khi nào là quan trọng. –

-1

Xin lỗi cho sự sống lại chủ đề ...

tôi đã có thể đi với:

Given there is a homepage 
When I view the homepage 
Then I should see "Welcome To The Site" 

Tôi muốn giữ ít nhất một Given, WhenThen trong mỗi Scenario - không quên bạn cũng có thể sử dụng AndBut (không phải là chúng đặc biệt liên quan đến kịch bản này). Bạn thậm chí có thể tạo danh sách kiểu dấu đầu dòng với *.

11

Tôi nghĩ rằng bạn đang thực sự thiếu điểm ở đây. Bạn ALWAYS cần một When. Đó là điều bạn nên thử nghiệm! Những gì bạn có thể bỏ qua là Givens

Điều bạn nên nói là;

When I visit the homepage 
Then I should see "Welcome To The Site" 

Given When Then thực sự là một cách đại diện cho máy trạng thái tốt hơn.

Given some initial state (in your case, non) 
When I perform some action (in your case, visiting the homepage) 
Then I have some final state (in your case, text displayed to a user) 

Điều tôi muốn làm là suy nghĩ về mọi thứ phải có mặt để cho phép When xảy ra. Trong trường hợp của bạn dường như không có bất kỳ trạng thái ban đầu nào. Nhưng hãy xem xét nếu bạn đã có một số ứng dụng web. Bạn sẽ cần phải có một trạng thái ban đầu trước khi truy cập trang chủ (bạn cần đảm bảo rằng người dùng đã đăng nhập);

Given a user (user must be stored in the database) 
And the user is logged in (a logged in user must be in the session) 
When the user visits their homepage 
Then the user should see "Welcome To Your Homepage" 

Một kịch bản khác sẽ là;

Given no logged in user (some people would leave this Given out, but I add it for completness) 
When a user visits their homepage 
Then the user should be redirect to the login page 

Như một người nào đó đã chỉ ra chính xác, hầu hết các công cụ BDD không thực sự phân biệt giữa Given When Then nhưng bạn nên! Bản chất chi tiết của 'Given When Then' đã được chọn là dễ dàng hơn cho con người chúng ta hiểu và giúp các quá trình suy nghĩ của chúng ta. Một cỗ máy không thể quan tâm đến những gì bạn gọi là các bước. Với trường hợp này, bạn nên cố gắng hết sức để sử dụng các từ khóa chính xác mọi lúc.

0

tôi sẽ nói:

Given I have requested the home page 
When the home page loads 
Then I should see 'Welcome To The Site' 
0

Tôi có xu hướng xem Given như tương đương với điều kiện tiên truyền thống. Khi tương đương với hành động thử nghiệm. Và sau đó là tương đương với kết quả mong đợi.

Do đó, nếu không có điều kiện tiên quyết, tôi sẽ bỏ qua Với và chỉ cần tập trung vào khi nào và Sau đó:

When I'm on the homepage 
Then I should see "Welcome To The Site" 

Specflow sẽ cho phép bạn sử dụng Với hoặc Khi nào, nhưng Visual Studio cũng sẽ cho phép bạn viết một lớp duy nhất dài 1000 dòng. Chỉ vì cả hai đều có thể, không có nghĩa là 'đúng'.

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