2015-02-03 28 views
6

Tiếng Anh có thể mơ hồ, và dường như có một giả định trong phương pháp sử dụng Gherkin, bất kỳ ai nói tiếng Anh ở một mức độ nào đó đều có thể viết và hiểu các trường hợp thử nghiệm, ngay cả trước khi bất kỳ mã nào được viết.Gherkin - làm thế nào để bạn viết một bài kiểm tra rõ ràng bằng tiếng Anh?

Vì vậy, làm thế nào để phương pháp hướng dẫn bạn làm việc, đưa ra các kịch bản thử nghiệm đơn giản sau đây mà cần tự động hóa:

Trong một ứng dụng Thư viện, để thêm một cuốn sách vào thư viện, người dùng nhấp vào Add, một Thông Tin Sách hộp thoại bật lên và người dùng được mong đợi điền vào tên sách, v.v. và nhấp OK.

Giả sử người QA viết như sau:

Scenario: clicking the Add button 
    Given a user who is already logged in to the application 
    When the user clicks the Add button 
    Then the Book Info dialog is displayed 

đủ đơn giản? Đây có phải là một thử nghiệm tốt không? tôi nghĩ tôi nói tiếng Anh nhưng tôi không hiểu.

Các trường trong hộp thoại phải trống, có lẽ một số trường phải có một số giá trị mặc định hoặc giá trị ban đầu. Có lẽ người thử nghiệm hy vọng việc thực hiện "Sau đó hộp thoại Thông tin Sách được hiển thị" để đảm bảo tất cả điều đó, nhưng người triển khai có biết điều đó không? truyền đạt như thế nào?

Có lẽ kiểm tra nên đã được viết như

Scenario: clicking the Add button 
    Given a user who is already logged in to the application 
    When the user clicks the Add button 
    Then the Book Info dialog is displayed and all the fields are empty 

Nó có thể mất một vài giây giữa Add nhấp chuột và hiển thị hộp thoại. Vì vậy, các thử nghiệm có thể thất bại vì việc thực hiện kiểm tra quá sớm nếu hộp thoại là lên, hoặc không chờ đợi đủ dài cho hộp thoại để hiển thị, và thử nghiệm không thành công.

Một người đang thực hiện kiểm tra thủ công không cần phải liên quan đến chính mình với vấn đề đó, trừ khi hộp thoại xuất hiện quá lâu. Vì vậy, ở trên chính xác như thế nào người này sẽ viết bài kiểm tra (do đó, điểm ở đây là người kiểm tra cần đủ thông minh để cân nhắc điều này hoặc một số nhà phát triển cần giải thích điều đó hoặc họ chỉ khắc phục sau khi thử nghiệm thất bại) . Bằng cách nào đó, hành động đơn giản này đòi hỏi thêm một số thông tin ... khi nào nó được truyền đạt giữa người viết bài kiểm tra và người thực hiện các hành động của bài kiểm tra? Khi nào thì bài kiểm tra đó được truyền đạt?

Có lẽ kiểm tra nên đã được viết như

Scenario: clicking the Add button 
    Given a user who is already logged in to the application 
    When the user clicks the Add button 
    Then the Book Info dialog is displayed within a couple of seconds and all the fields are empty 

hoặc có lẽ nó cần phải có được viết như sau:

Scenario: clicking the Add button 
    Given a user who is already logged in to the application 
    When the user clicks the Add button 
     And the user waits a couple of seconds 
    Then the Book Info dialog is displayed and all the fields are empty 

là người viết thử nghiệm bằng tiếng Anh dự kiến ​​sẽ

  1. viết tất cả các kỳ vọng trong hành động kiểm tra, ví dụ "Sau đó, hộp thoại Thông tin sách được hiển thị trong vài giây và tất cả các trường trống" hoặc
  2. viết câu lệnh ngắn như trong "hộp thoại Thông tin sách được hiển thị" nhưng sau đó viết tài liệu bổ sung mô tả (trong Tiếng Anh) ý nghĩa của tuyên bố này là gì, và tất cả những kỳ vọng là gì?
+1

Gợi ý định dạng nhỏ để làm cho các câu hỏi trong tương lai của bạn được định dạng tốt hơn: kiểm tra cách lập danh sách và đánh dấu cú pháp trên [trang này] (http://stackoverflow.com/help/formatting) và kiểm tra chỉnh sửa hiện tại . –

Trả lời

3

Trong trường hợp chung, tôi sẽ tranh luận (gần hơn) thứ hai.

Nếu bạn gây ô nhiễm cho các tình huống của mình bằng cách lặp lại "tiếng ồn" bằng cách thêm giả định, bạn đã mất đi ý tưởng ngắn gọn, được nhắm mục tiêu mà BDD muốn đạt được. Nó cũng trở nên khó khăn để biết nơi để dừng lại.

Điều đó nói rằng, nếu câu chuyện/kịch bản của bạn có các yêu cầu cụ thể xung quanh những điều này, hoặc thậm chí nếu bạn mong đợi nó có tác động đến chúng, thì không có gì để dừng việc thêm các điều khoản bổ sung như And all input fields are empty.

Hãy nhớ rằng, nếu bạn đang sử dụng một Agile methodology như Scrum, bạn sẽ có một riêng biệt Định nghĩa của Done đó, mặc dù kinh doanh nhiều hơn hoặc quá trình như thế nào, có thể chứa các yêu cầu "toàn cầu" để chấp nhận một câu chuyện. Chúng có thể bao gồm các mức độ bao phủ kiểm tra, hoặc các yêu cầu về hiệu suất ... được cho là đủ gần với những gì bạn thảo luận ở đây.

2

Tôi cho rằng vấn đề của bạn bắt đầu bằng mô tả kịch bản kém được viết (và kém quan niệm), và sai lầm đó xảy ra trong các bước kịch bản của bạn. "Nhấp vào nút thêm" không phải là một kịch bản, đó là một bước. Và bạn thậm chí ngầm thừa nhận càng nhiều càng tốt bằng cách biến nó thành bước của bạn. : D

Nếu tôi không biết mục tiêu của người dùng trong trường hợp này là gì và bạn đang cố gắng chứng minh cho người dùng thử nghiệm này thì tôi không thể cho bạn biết mức độ cụ thể bao gồm hoặc không bao gồm trong các bước của bạn.

Và, nếu không có tất cả giải thích và nền bạn cung cấp trong câu hỏi, sẽ không có cách nào lấy được bất kỳ nội dung nào từ văn bản Kịch bản của bạn.

Vì vậy, đây là một vết nứt tại một mô tả kịch bản thích hợp:

Scenario: An authenticated user invokes the add book dialog 

Nhưng có vẫn một vấn đề với kịch bản này. Cụ thể, nó vẫn không phải là một kịch bản. Đó là một hành động được thực hiện trong những điều kiện nhất định. Đó là tất cả. Tôi vẫn không biết người dùng đang cố gắng thực hiện điều gì.

Bây giờ tôi biết chính xác người dùng là ai, người dùng muốn hoàn thành và những gì chúng tôi hứa với người dùng đó: rằng anh ấy có thể thêm sách mới vào cơ sở dữ liệu thư viện.

Và bây giờ tôi biết những gì thử nghiệm của tôi phải chứng minh: rằng cuốn sách tôi (như một người dùng đã được xác thực) đã cố thêm vào, thực sự được thêm vào cơ sở dữ liệu. Và bây giờ, tôi có thể xây dựng một kịch bản đầy đủ như vậy:

Scenario: An authenticated user adds a new book to the library via the add book dialog 
    Given I am an authenticated user 
    And I have a new book to add to the database 
    When I add the new book via the add book dialog 
    Then the book info is displayed in the book list 

Bạn có thể sử dụng các định nghĩa bước để xây dựng mã sử dụng lại rằng "thêm một cuốn sách mới thông qua hộp thoại add cuốn sách", hoặc kiểm tra rằng "Tôi là một chứng thực người dùng "hoặc đảm bảo rằng" thông tin sách được hiển thị ". Và trong mã bước đó, bạn có thể rõ ràng như bạn muốn.

Nhưng nếu bạn đang sử dụng Gherkin để kiểm tra xác thực trường đầu vào, tự nó, thì bạn đang thử nghiệm công cụ sai. Nếu bạn muốn kiểm tra xem các trường nhập liệu có trống không khi hộp thoại được hiển thị, bạn nên viết các xét nghiệm đơn vị javascript (hoặc php, hoặc python, hoặc ruby). Nếu bạn muốn kiểm tra xem các trường nhập liệu có đang xác nhận hợp lệ không, bạn nên viết các bài kiểm tra đơn vị. Nếu bạn muốn kiểm tra xem hộp thoại hoặc hộp đèn có hoạt động chính xác hay không, bạn nên viết các bài kiểm tra chức năng. Nếu bạn muốn kiểm tra rằng dữ liệu trong các trường đó đang được lưu trữ đúng trong cơ sở dữ liệu, bạn nên viết các bài kiểm tra tích hợp chức năng.

Nhưng nếu bạn muốn thử nghiệm những lời hứa bạn đang thực hiện cho người dùng đang được lưu giữ, thì bạn nên viết Gherkin.Hay đúng hơn, Trình quản lý sản phẩm và Máy kiểm tra tự động của bạn nên viết nó. Nếu Test Automator của bạn đang cố viết các bài kiểm tra đơn vị với Gherkin, hãy nói với anh ta rằng anh ta đang làm sai. : D

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