5

Tôi đang gặp một chút rắc rối. Chúng tôi có một hệ thống cổ xưa mà tôi đang viết thử nghiệm Behat. Nó hoạt động tốt cho hầu hết các phần. Nhưng tôi đã nhận thấy một vấn đề mà các bài kiểm tra Behat sẽ thất bại nếu dữ liệu tôi đang thử nghiệm chống lại môi trường hiện tại có nghĩa là cho/kéo từ một môi trường khác nhau. Ví dụ, nếu tôi kiểm tra tìm kiếm theo chức năng điện thoại trong QA và mong muốn nó trả về một id thực thể cụ thể, tôi không thể sử dụng cùng số điện thoại và id thực thể đó để kiểm tra trong RC hoặc Trực tiếp. Vì vậy, tôi muốn một cách có thể quản lý để duy trì dữ liệu thử nghiệm cho từng môi trường trong Behat.Có thể sử dụng dữ liệu bước khác nhau tùy thuộc vào môi trường hiện tại với Behat không?

Một vài suy nghĩ đã được ném xung quanh đây như đưa dữ liệu vào hồ sơ (rất không thể xem) hoặc tạo tệp CSV cho từng tính năng. Tôi cũng đang nghĩ về việc xây dựng tất cả các kịch bản dữ liệu cụ thể bằng cách sử dụng bảng hoặc kịch bản và có cột môi trường sẽ được sử dụng để kiểm tra môi trường hiện tại và bỏ qua khi hàng không cho môi trường hiện tại. Có thể sử dụng một nền hoặc một số móc khác để giúp đỡ với điều này.

Có ai biết cách tốt hay cách thực hành tốt nhất để xử lý nhiều môi trường với các bộ dữ liệu khác nhau trong mỗi bộ với Behat không?

Trả lời

5

Theo những người ở KNP Labs trong một khóa đào tạo của họ, thực hành tốt nhất là tạo dữ liệu cần thiết cho kịch bản thành công như là một phần của nền hoặc nền để bạn kết thúc với một bước đọc 7 số điện thoại "và định nghĩa bước chèn bảy số điện thoại có thể được dựa vào phần còn lại của kịch bản đó. Tất nhiên, điều đó thường không khả thi nếu bạn muốn chạy thử nghiệm đối với một trang web sản xuất và các chiến lược tôi đã thấy thực sự khác nhau tùy thuộc vào lượng dữ liệu cụ thể có liên quan và dữ liệu được tạo ra dễ bay hơi như thế nào. Do đó, thực tế tốt nhất cũng quy định rằng các tệp tính năng nên mô tả hành vi ứng dụng về mặt người thụ hưởng tính năng có thể được hiểu một cách hợp lý, không có điều gì phơi bày dữ liệu môi trường có điều kiện trong tệp tính năng sẽ là phương pháp tối ưu. Người dùng tính năng đích có lẽ không nhận thức được các môi trường khác nhau.

Nếu dữ liệu trên sản xuất đủ ổn định để viết thử nghiệm, tôi sẽ xem xét đặt tham số hoặc cấu hình trong behat.yml có thể được sử dụng để chỉ ra môi trường tại thời gian chạy và viết định nghĩa bước tùy chỉnh. Định nghĩa bước tùy chỉnh có thể cung cấp các giá trị sản xuất đã biết trong một trường hợp và chèn các giá trị đó vào các giá trị khác. Và Gherkin sẽ vẫn trông giống như "Tôi có 7 số điện thoại" để tính năng này sẽ tập trung vào giá trị kinh doanh và lợi ích cho người dùng chứ không phải môi trường thử nghiệm.

+0

Vâng, tình huống này chắc chắn là khó khăn. Tôi thích ý tưởng tìm cách khác để cung cấp dữ liệu cho môi trường bằng cách kéo từ một số chức năng tùy chỉnh và xác định số lượng để kéo trong cuộc gọi bước. – pthurmond

+1

Bí quyết với điều đó mặc dù bây giờ chúng tôi đã thực sự bắt đầu làm xói mòn tính hữu ích của Behat cho những người QA không phải là nhà phát triển. Tôi là nhà phát triển đầu tiên và là người thứ hai của QA trong trường hợp này (là Kỹ sư phần mềm trong Kiểm thử). Nhưng đối với hai người QA khác trong nhóm của tôi, tôi thực sự không thể mong đợi họ biết SQL vào thời điểm này, cũng không phải PHP. Ý tưởng là làm cho nó càng đơn giản càng tốt để nhập các bước và dữ liệu vào và sau đó có thể tự động hóa việc chạy thử nghiệm trên một máy chủ GUI-ít trong nền. – pthurmond

+0

Tôi sẽ nói điều này, chúng tôi đang bắt đầu một dự án mới sẽ thay thế hệ thống hiện tại. Trong thời gian này tôi đang đẩy mạnh cho họ để cung cấp cho chúng ta các phương pháp chúng ta cần để tiêm dữ liệu vào hệ thống trên bay, sau đó kiểm tra, và cuối cùng kéo nó trở lại. Thật không may, nó sẽ là một năm hoặc hơn trước khi chúng tôi hoàn toàn chuyển sang hệ thống mới mà chúng tôi hiện đang xây dựng. – pthurmond

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