2010-03-17 23 views
7

Tôi đang làm việc trên một dự án mà chúng tôi chỉ có 13% phạm vi mã với các bài kiểm tra đơn vị của chúng tôi. Tôi muốn đưa ra một kế hoạch để cải thiện điều đó, nhưng bằng cách tập trung đầu tiên vào các lĩnh vực mà tăng phạm vi bảo hiểm sẽ mang lại giá trị lớn nhất. Dự án này là trong C#, chúng tôi đang sử dụng VS 2008 và TFS 2008 và các bài kiểm tra đơn vị ra được viết bằng MSTest.Xác định loại nào sẽ được hưởng lợi nhiều nhất từ ​​thử nghiệm đơn vị?

Tôi nên sử dụng phương pháp nào để xác định lớp nào chúng ta nên giải quyết trước? Tôi nên xem số liệu (mã hoặc cách sử dụng nào) (và làm cách nào để có được các số liệu đó nếu điều này không rõ ràng)?

+0

+1 Tôi đang đấu tranh với chính xác cùng một qeustion. – bitbonk

+0

Rất khó để trả lời chính xác, nhưng vùng lõi của ứng dụng phải có các bài kiểm tra đơn vị. –

Trả lời

2

Đối với một số liệu thống kê tốt và truy vấn xác định các phương pháp nhất định bạn chắc chắn có thể nhìn vào NDepend: http://www.ndepend.com/

NDepend lộ một ngôn ngữ truy vấn được gọi là CQL (Ngôn ngữ truy vấn mã) cho phép bạn viết các truy vấn đối với mã của bạn liên quan đến các thống kê nhất định và phân tích tĩnh.

Không có cách nào đúng để xác định lớp nào có thể hưởng lợi nhiều nhất, tuy nhiên bằng cách đặt ngưỡng của riêng bạn trong CQL, bạn có thể thiết lập một số quy tắc và quy ước.

+0

+1, NDepend trông khá tuyệt! –

4

Tôi khuyên bạn nên thêm các bài kiểm tra đơn vị vào tất cả các lớp bạn chạm vào, không phải trang bị thêm các lớp hiện có.

Hầu hết các ưu điểm của kiểm thử đơn vị là giúp lập trình viên mã và đảm bảo rằng "Bản sửa lỗi" không thực sự phá vỡ bất cứ điều gì, nếu bạn không thêm mã vào một phần mã mới mà không phải mọi sửa đổi, lợi ích kiểm tra đơn vị bắt đầu giảm.

Bạn cũng có thể muốn thêm các bài kiểm tra đơn vị vào các lớp mà bạn dựa vào nếu bạn không có gì tốt hơn để làm.

Bạn hoàn toàn cần thêm các thử nghiệm vào chức năng mới mà bạn thêm, nhưng bạn có lẽ cũng nên thêm các thử nghiệm vào chức năng hiện có mà bạn có thể phá vỡ.

Nếu bạn đang thực hiện một công cụ tái cấu trúc lớn, hãy cân nhắc việc nhận được mức độ phù hợp 80-100% trên phần đó trước tiên.

2

Giá trị lớn nhất của thử nghiệm đơn vị là để bảo trì, để đảm bảo rằng mã vẫn hoạt động sau khi thay đổi.

Vì vậy, hãy tập trung vào các phương pháp/lớp học có nhiều khả năng nhất/được thay đổi thường xuyên nhất.

Tiếp theo là tầm quan trọng là các lớp/phương pháp có logic ít rõ ràng hơn. Các bài kiểm tra đơn vị sẽ làm cho họ ít mong manh trong khi phục vụ như thêm "tài liệu" cho API hợp đồng của họ

+0

Bạn có biết cách xác định lớp nào được thay đổi thường xuyên nhất không? Không chắc chắn liệu tôi có thể lấy mẫu thông tin đó TFS –

+0

Đó là kiến ​​thức về lĩnh vực kinh doanh nhiều hơn là kiến ​​thức kỹ thuật, nhưng có thể tìm thấy một xấp xỉ gần đúng từ nhật ký hệ thống kiểm soát nguồn của bạn. – DVK

0

Sắp xếp tất cả các thành phần của bạn thành các cấp. Mỗi lớp trong một cấp độ nhất định chỉ nên phụ thuộc vào các thành phần ở cấp độ thấp hơn. (Một "thành phần" là bất kỳ nhóm lôgic nào của một hoặc nhiều lớp.)

Viết thử nghiệm đơn vị cho tất cả các thành phần cấp 1 của bạn trước tiên. Bạn thường không cần các khuôn khổ mocking hoặc một thứ vô nghĩa khác như vậy bởi vì các thành phần này chỉ dựa vào .NET Framework.

Khi cấp 1 xong, bắt đầu ở cấp độ 2. Nếu bạn làm bài kiểm tra cấp độ 1, bạn sẽ không cần phải thử các lớp đó khi bạn viết bài kiểm tra cấp 2.

Tiếp tục như thời trang, làm việc theo cách của bạn lên ngăn xếp ứng dụng.

Mẹo: Chia nhỏ tất cả các thành phần của bạn thành các cấp DLL cụ thể.Bằng cách đó bạn có thể đảm bảo rằng các thành phần cấp thấp không vô tình nhận sự phụ thuộc vào thành phần mức cao hơn.

1

Trong các bài kiểm tra đơn vị chung là một công cụ để bảo vệ chống lại hồi quy và hồi quy có nhiều khả năng xảy ra nhất trong các lớp có phụ thuộc nhiều nhất. Bạn không cần phải chọn, bạn nên kiểm tra tất cả các lớp, nhưng nếu bạn phải, hãy kiểm tra các lớp có hầu hết các phụ thuộc nói chung.

+0

sự lựa chọn không phải là những người sẽ được kiểm tra và những người thân sẽ không, nhưng xem xét thời gian nó sẽ đưa chúng tôi để có được tất cả các lớp được kiểm tra, tôi muốn biết bắt đầu từ đâu. Cảm ơn bạn đã gửi phản hồi có giá trị –

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