Tại sao bạn nghĩ rằng BDD và thử nghiệm tích hợp là khác nhau?
BDD chỉ có nghĩa là lái xe thiết kế của bạn thông qua các hành vi mong muốn, thường được thể hiện thông qua một tập hợp các bài kiểm tra chấp nhận.
Các thử nghiệm này có thể là 'kiểm tra tích hợp' liên quan đến nhiều dịch vụ [vi] hoặc có thể là các thử nghiệm xác định hành vi mong muốn của một dịch vụ hoặc một lớp duy nhất trong dịch vụ đó. Lý tưởng nhất là sẽ có một kết hợp của các bài kiểm tra ở tất cả các cấp độ này. Điều quan trọng là bạn chỉ định hành vi bạn muốn và sử dụng hành vi này để thúc đẩy sự phát triển.
Cách hệ thống của bạn được triển khai ở một mức độ nào đó, không liên quan miễn là nó thể hiện hành vi mong đợi. Đối với các bài kiểm tra cấp cao xử lý hệ thống như một hộp đen, điều này là đúng và bạn càng đi thấp và bạn càng gần với mã thực tế thì điều này sẽ trở nên kém hiệu quả hơn (vì bạn đang thử nghiệm hiệu quả tại thời điểm đó). Vì vậy, tôi sẽ tập trung vào hành vi mong đợi từ các tính năng mới và viết thông số kỹ thuật cho các thử nghiệm chấp nhận này trước, sau đó triển khai các dịch vụ của bạn để thực hiện hành vi yêu cầu thêm các bài kiểm tra cấp thấp hơn theo cách thiết thực, ghi nhớ rằng mức độ thấp hơn, các bài kiểm tra càng có nhiều khả năng chúng trở nên mong manh và cần được thay đổi khi bạn thay đổi việc triển khai của mình.
EDIT
Dựa trên câu hỏi chỉnh sửa của bạn.
Tôi không đồng ý rằng các kiểm tra BDD chỉ nên kiểm tra logic nghiệp vụ. Trong thực tế, thông thường các bài kiểm tra BDD tập trung nhiều hơn vào việc thử nghiệm toàn bộ hệ thống, với tất cả các phần được tích hợp với nhau. Có nói rằng BDD chỉ là một kiểu thử nghiệm bằng cách xác định hành vi mong muốn và có thể được áp dụng cho bất kỳ cấp độ nào của ứng dụng. Bạn có thể kiểm tra một lớp đơn bằng cách chỉ định hành vi sử dụng cú pháp Gherkin, và đôi khi chúng ta làm điều này. chúng tôi cũng xác định hành vi mong đợi của toàn bộ hệ thống bằng cách sử dụng Gherkin và hành vi dự kiến của các dịch vụ của chúng tôi riêng lẻ. Các thử nghiệm này sẽ tự nhiên có định dạng hơi khác tùy thuộc vào mức chúng tôi đang nhắm mục tiêu.
Đối với các bài kiểm tra hệ thống, chúng tôi có thể có đặc điểm kỹ thuật như thế này:
Scenario: user can perform action A
Given I am a user with access to some feature A
And feature A is enabled for the user
When I call perform action A with parameters 'Bob' and 'John'
Then A 'BobJohn' is created
And notifications are sent to the current user
cho các dịch vụ cá nhân chúng ta có thể làm xét nghiệm như
Scenario: create messages are handled correctly
Given the service is set up
When a message arrives to create a 'BobJohn'
Then a new entry is added to the database with the key 'BobJohn'
And an outgoing notification message for 'BobJohn' is created
Đối với các lớp học cá nhân chúng ta có thể làm xét nghiệm như
Scenario: Notifier class should send notifications via all users preferred means
Given the current user wants notification by Twitter
And the current user who wants notification by email
When I send the notification 'BobJohn' to the current user
Then the twitter notifier should be invoked with 'BobJohn'
And the email notifier should be invoked with 'BobJohn'
Đây là tất cả các bài kiểm tra kiểu BDD nhưng chúng kiểm tra các khía cạnh khác nhau của sys tem.
Tác giả của BDD in Action cho rằng chúng tương thích: http://www.slideshare.net/wakaleo/bdddriven-microservices – ngm
Cảm ơn bạn đã chú ý đến nó. Tôi chỉ đọc một số bài báo được viết bởi JF thông minh, chúng tôi chia sẻ các quan điểm tương tự về câu hỏi đó. Ông nói rằng chúng tương thích với các giai đoạn phát triển khác nhau. Nếu kiến trúc giải pháp làm cho nó có thể (tôi hy vọng một kiến trúc gốc làm cho nó có thể), BDD phù hợp tối ưu cho các thử nghiệm chấp nhận kinh doanh. Sau khi kiểm tra chấp nhận là OK, kiểm tra tích hợp nhằm thử nghiệm giải pháp đối với cơ sở hạ tầng mục tiêu. Tách Mối Quan Tâm. Ông tuyên bố đẩy trở lại chấp nhận mặc định cho các nhà phát triển từ hội nhập thử nghiệm là một sự lãng phí thời gian. Tương thích, nhưng không giống nhau. –