2009-01-04 31 views
7

Tôi đã tự hỏi liệu có ai ở đây có kinh nghiệm trong đơn vị thử nghiệm các ứng dụng LOB (thường là CRUD).Thử nghiệm các ứng dụng .NET cho doanh nghiệp (LOB)?

Tôi đã thử nghiệm các công cụ kiểm thử đơn vị tích hợp trong Visual Studio, nhưng tôi thấy khó khăn khi chạy các thử nghiệm đánh vào cơ sở dữ liệu. Kể từ khi thay đổi dữ liệu, và kết hợp với thực tế là tôi có ít ý tưởng những gì tôi đang làm, có vẻ như rất khó để tạo ra kết quả mong đợi và khẳng định chống lại chúng. Ngoài ra tôi thậm chí còn nghe nói rằng bạn không nên chạy thử nghiệm đơn vị đối với cơ sở dữ liệu ... nhưng làm thế nào để mọi người khác thực hiện kiểm thử đơn vị trên phần mềm CRUD LOB?

Tôi nghe rất nhiều về TDD và tích hợp liên tục với thử nghiệm, nhưng có vẻ như tôi thậm chí không thể tạo các bài kiểm tra đơn vị để bắt đầu, tôi thực sự không thể sử dụng các phương pháp đó. Nó làm cho kể từ khi một sản phẩm như Notepad sẽ là một dễ dàng để tạo ra các bài kiểm tra đơn vị cho ... bạn có một số tiền nhất định của các tính năng và những tính năng nên luôn luôn sản xuất cùng một kết quả. Nhưng với các ứng dụng LOB, bạn có những thứ như Đơn đặt hàng có thể được tạo hoặc xóa hoặc sửa đổi trong môi trường thử nghiệm của bạn.

Mọi thông tin chi tiết sẽ được đánh giá cao!

Trả lời

1

Thông thường với CRUD, bạn sẽ cần phải Mock hoặc sử dụng IOC Container cho lớp truy cập dữ liệu của bạn để bạn không phải lúc nào cũng nhấn cơ sở dữ liệu và "dữ liệu có thể thay đổi".

Với các bài kiểm tra đơn vị, bạn luôn mong đợi các giá trị giống nhau, vì vậy việc kết nối nó với cơ sở dữ liệu thường sẽ gây ra sự cố.

Kiểm tra RhinoMocks hoặc Đảo ngược vùng chứa kiểm soát.

+0

moq cũng rất tuyệt, http://code.google.com/p/moq/ – Chance

1

Tôi tạo cơ sở dữ liệu cơ sở và sử dụng dbUnit để xuất nó sang một tập hợp các tệp XML. Phần đầu tiên của bài kiểm tra là xóa sạch và điền vào cơ sở dữ liệu thử nghiệm với đường cơ sở. Sau đó, bạn sẽ có thể khẳng định các bài kiểm tra đơn vị so với các giá trị dự kiến.

1

Thử nghiệm tự động là một danh mục rộng, chứa hai danh mục nhỏ hơn: Kiểm tra đơn vị và Kiểm tra tích hợp.

Kiểm tra đơn vị là thực hành xác định các đơn vị nhỏ nhất trong chương trình của bạn và viết các quy trình kiểm tra chúng cách ly với nhau. Khi các đơn vị nhỏ nhất của chương trình của bạn được kết hợp chặt chẽ với nhau, có thể khó kiểm tra chúng trong sự cô lập với nhau. Trong trường hợp đó, có những kỹ thuật và công cụ để giúp bạn (chế nhạo và chế nhạo khuôn khổ). Để kiểm tra đơn vị hiệu quả, codebase của bạn cần phải được viết theo một cách cụ thể, một cách hỗ trợ kiểm thử đơn vị - các đơn vị nhỏ nhất của chương trình của bạn không được kết hợp với nhau. Hầu hết các chương trình không được xây dựng với nguyên tắc này trong tâm trí, và do đó, họ rất khó để kiểm tra đơn vị. Kiểm tra đơn vị nơi bạn có thể, và giữ nguyên nguyên tắc đó cho bất kỳ mã mới nào bạn viết, để bạn luôn có thể kiểm tra mã mới của mình.

Kiểm tra tích hợp là thực hành xác định các tính năng là đơn vị lớn của chương trình tích hợp nhiều đơn vị nhỏ hơn và viết các thủ tục kiểm tra chúng một cách riêng biệt với các đơn vị lớn khác trong chương trình của bạn. Ví dụ, một thủ tục kiểm tra rằng lớp persistence của bạn lưu chính xác các đối tượng vào lưu trữ liên tục và lấy các đối tượng từ lưu trữ liên tục một cách chính xác là một thử nghiệm tích hợp, vì nó kiểm tra cả lớp persistence của bạn cũng như đường dẫn TCP/IP, cấu hình cơ sở dữ liệu, cơ sở dữ liệu lược đồ, dữ liệu đã có trong cơ sở dữ liệu và tương tác giữa dữ liệu đã có trong cơ sở dữ liệu và mã của bạn đang làm gì. Chắc chắn kiểm tra tích hợp, ngoài thử nghiệm đơn vị.

Ngoài ra, hãy tạo một cơ sở dữ liệu riêng hoàn toàn cho mục đích kiểm tra tích hợp tự động.Cố gắng tránh chạy thử nghiệm tích hợp tự động trên cơ sở dữ liệu sản xuất hoặc phát triển, bởi vì bạn sẽ chỉ gặp phải vấn đề.

+0

đọc rất hay, cảm ơn! –

0

tôi stumbled khi cùng một vấn đề, bạn không có nhiều lựa chọn ...

  • rollback sau mỗi lần kiểm tra (sử dụng xtUnit cho NUnit hoặc thuộc tính rollback MbUnit). hoạt động tốt cho các thử nghiệm đơn vị điển hình của các hoạt động CRUD.
  • sử dụng chiến lược khôi phục sao lưu trước khi kiểm tra. Điều này sẽ làm cho việc thực thi kiểm tra đơn vị được thực hiện lâu dài. Tuy nhiên điều này được hỗ trợ bởi MbUnit (2.X các thuộc tính không có trong thân cây 3.x)
  • tạo/thả một db bằng cách sử dụng các tập lệnh sql.

Lợi thế lớn nhất với 2 tùy chọn cuối cùng là bạn có thể sử dụng chúng trong khi thực hiện kiểm tra tích hợp (như khi tự động hóa giao diện người dùng nơi bạn cần hỗ trợ thay đổi cơ sở dữ liệu trên một số tầng khác (máy chủ vật lý)).

Tôi sử dụng cái cuối cùng kết hợp với Watin cho ứng dụng web. Đối với WPF và Win32 hãy xem White, có vẻ đầy hứa hẹn.

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