Dự án của tôi cần lớn đến mức nào để tôi kiểm tra đơn vị? [đóng cửa]


86

Tôi giả định rằng dự án của tôi được tách riêng đủ để cho phép thử nghiệm đơn vị. Nhưng lớn như thế nào, chính xác, về mặt phân thân và chức năng, dự án của tôi cần phải làm cho thử nghiệm đơn vị có giá trị?

Tất cả chúng ta đều phạm sai lầm và không ai hoàn hảo, nhưng tôi coi mình là một lập trình viên giỏi để xử lý các lỗi của các dự án nhỏ khi bước qua. Hoặc là thử nghiệm đơn vị là một điều cần thiết khó khăn cho dù dự án của bạn có quy mô như thế nào?


26
Giả định lớn không chính xác mà bạn đưa ra là dự án chỉ dành cho bạn và hiện tại nó chỉ dành cho bạn . Điều gì nếu bạn để nó trong một vài tháng, làm một cái gì đó khác, sau đó trở lại với nó? Bạn có tự tin tương tự về việc trở thành một "lập trình viên đàng hoàng" (không liên quan gì đến việc có nên kiểm tra hay không)? Điều gì nếu một người khác tiếp quản dự án của bạn ...? Một blogger tuyệt vời (đáng buồn là không còn hoạt động) đã viết rằng bạn nên luôn luôn "phục vụ cho người đọc mã, không phải là người viết mã".
Amos M. Carpenter

6
Làm thế nào về điều này (có nghĩa là cho C # .NET): int x = 3 * (1/3); giá trị được lưu trữ trong x sau khi hoạt động hoàn thành là gì? Quan điểm của tôi thậm chí là một mã dòng có thể yêu cầu kiểm tra vì nó có thể dẫn đến lỗi, vì bạn không biết hoặc vì bạn biết nhưng đã làm sai mã.
NoChance

2
@aaamos, tôi nghĩ bạn thiếu quan điểm của tôi. Việc tôi được hỏi câu hỏi này một mình cho thấy tôi cũng xem xét việc phục vụ cho người đọc mã.
Lamin Sanneh

13
Đã thực hiện cả hai cách, tôi có thể nói với bạn rằng việc viết các bài kiểm tra dễ dàng hơn rất nhiều khi bạn thực hiện (nghĩa là trong khi dự án còn nhỏ) hơn là quay lại và viết các bài kiểm tra đơn vị sau này khi bạn cảm thấy dự án đã gặp một số tùy ý " chúng ta nên viết bài kiểm tra ngay bây giờ "điều kiện.
Wonko the Sane

1
Bạn đang hỏi sai câu hỏi. Không quan trọng là dự án lớn như thế nào. Câu hỏi là, bạn quan tâm đến mức nào nếu nó đúng? Nếu tính chính xác là quan trọng, hơn các bài kiểm tra đơn vị là một cách hiệu quả để cải thiện tính chính xác.
Đánh dấu E. Haase

Câu trả lời:


206

Dự án của bạn đã đủ lớn rồi.

Theo kinh nghiệm của tôi, một lớp và một hàm đã đủ để xem xét nhu cầu kiểm thử đơn vị.

    class Simple {
        boolean reallySimple() {
            return true; // how do we make sure it doesn't change to false?
        }
    }


    class SimpleTest {
        void assertReallySimple() {
            // ensure reallySimple return value isn't changed unexpectedly
            UnitTestFramework.assertTrue(new Simple().reallySimple());
        }
    }

24
Chắc chắn bạn nên bắt đầu sớm hơn, tại điểm chức năng 0 lớp / 0 ... nếu bạn đang theo dõi TDD :)
Kaz Dragon

115
+1. Nếu chương trình của bạn đủ lớn để có lỗi, thì nó đủ lớn để kiểm tra đơn vị.
Jason Orendorff

9
@JasonOrendorff: Tôi đang chế nhạo nó thành một poster và đặt nó trong văn phòng của tôi. Xuất sắc.
Justin ngày

Ngoài ra, nó cho phép tái cấu trúc "an toàn".
Timo

7
Mặc dù tôi không nhất thiết không đồng ý với tình cảm, nhưng mã của bạn thực sự đơn giản đến mức bạn có thể thoát khỏi chỉ bằng các xác nhận thay vì các bài kiểm tra đơn vị đầy đủ.
Chuu

109

Tôi chưa bao giờ mua ý tưởng "bạn phải kiểm tra mọi thứ", mặc dù chắc chắn có những người ngoài kia có (xem câu trả lời của gnat !).

Theo tôi thấy, những lợi ích chính của thử nghiệm đơn vị là:

  1. Giúp đảm bảo thay đổi không phá vỡ mọi thứ.
  2. Giúp bạn thiết kế các giao diện hợp lý cho các lớp của bạn (vì nó buộc bạn phải là khách hàng theo mã của riêng bạn).
  3. Giúp tài liệu về cách mã của bạn dự kiến ​​sẽ được sử dụng.

Về cơ bản, bạn cần cân nhắc thời gian cần thiết để viết và duy trì các bài kiểm tra chống lại các yếu tố này.

Số 1 thường là đủ để làm cho nó đáng để viết bài kiểm tra. Theo kinh nghiệm của tôi,> 95% mã được sửa đổi sớm hay muộn.


8
Đồng ý với điều này - khi làm việc trong một cửa hàng dành cho nhà phát triển, bạn cần cân bằng giữa chất lượng phần mềm và kiểm tra mọi thứ (có thể chiếm rất nhiều thời gian của bạn). Đừng quên rằng mỗi khi bạn thực hiện thay đổi, bạn có thể cần phải sửa đổi các bài kiểm tra đơn vị của mình cho phù hợp
Matt Wilko

1
Bạn không nên kiểm tra mọi thứ, nhưng bạn nên kiểm tra mọi hành vi tiếp xúc với thế giới bên ngoài. Có / chắc chắn là chi phí bảo trì để kiểm tra, và như Kent Beck đã nói trong một số câu trả lời SO (tôi nghĩ đó là SO) - kiểm tra đủ để bạn tự tin rằng mã của mình là chính xác.
Wayne Werner

10
Tôi muốn nói thêm rằng nếu bạn chỉ thực hiện kiểm tra tự động tối thiểu, kiểm tra đơn vị là mức sai để nhắm mục tiêu. Thay vào đó, hãy thực hiện các bài kiểm tra tích hợp / khói ở mức cao để đẩy một vài bộ dữ liệu qua ứng dụng của bạn đến hết mà không chế nhạo bất cứ điều gì. Bạn muốn các bài kiểm tra này thực hiện càng nhiều cơ sở mã của bạn càng tốt và bao gồm tất cả các trường hợp sử dụng thông thường và đường dẫn thực thi. 75% cơ hội biết các thay đổi của bạn đã phá vỡ một cái gì đó, ở đâu đó, trong ứng dụng có lợi hơn 5% cơ hội biết bạn đã phá vỡ một sốClass.OneOfTheHandfulOfTestedFifts ().
Dan Neely

3
Uh, tôi nghĩ rằng bạn đã bỏ lỡ một điều: "Hãy chắc chắn rằng mã hoạt động theo đúng nghĩa của nó!"
BlueRaja - Daniel Pflughoeft

3
@ BlueRaja-DannyPflughoeft: Thật ra, sẽ chính xác hơn khi nói: "Đảm bảo mã vượt qua các bài kiểm tra đơn vị bạn đã viết!"
vaughandroid

34

Thật đơn giản: bạn không cần kiểm tra đơn vị nếu bạn sẽ loại bỏ chương trình sau khi chạy nó một lần.

Nếu điều này có vẻ quá mức đối với bạn, hãy xem xét ý nghĩa của sự thay thế. Nếu có một số kích thước dưới mức mà thử nghiệm đơn vị không trả, bạn sẽ phải tiếp tục phán xét trong đầu: "Tôi đã đạt đến kích thước ma thuật chưa? Tôi có nên bắt đầu viết thử nghiệm không?" Bây giờ, các lập trình viên nổi tiếng là xấu trong việc dự đoán tương lai, và họ nổi tiếng là xấu khi đánh giá kỹ năng của chính họ. Mã trông rõ ràng đối với bạn bây giờ sẽ trở nên khó hiểu, ngay cả với bạn, thậm chí bằng cách chờ đợi một tháng. Một dự án mà bạn chắc chắn, tích cực chắc chắn sẽ không bao giờ được sử dụng nữa và bạn chỉ loanh quanh với cơ hội từ xa rằng bạn có thể muốn tìm kiếm cách bạn đã giải quyết một cái gì đó trước đó, sẽ được yêu cầu lại và sẽ nhận được yêu cầu thay đổi.

Do đó, rất có khả năng bạn sẽ đánh giá sai việc kiểm tra có hữu ích hay không và khi bạn bắt đầu cần kiểm tra, bạn đã không chắc chắn 100% về ngữ nghĩa chính xác để kiểm tra thực sự là gì. Vì tôi tin rằng tất cả ngoại trừ các chương trình một lần tầm thường đều kiếm được lợi nhuận từ các bài kiểm tra đơn vị, tôi coi chi phí cho việc nỗ lực cho các bài kiểm tra không bao giờ được chạy lại là không đáng kể đối với các rủi ro khi mở rộng mã chưa được kiểm tra và hiểu sai.


22
Các lập trình viên nổi tiếng là kém trong việc đánh giá kỹ năng dự đoán tương lai của chính họ
superM

3
@superM Tôi đồng ý với bạn. Chương trình "chạy một lần và vứt đi" mà tôi đã viết trong suốt sự nghiệp ngắn ngủi của mình, được chạy vài ngày một lần và trở nên quan trọng trong kinh doanh. Tôi gọi đó là "tạm thời" hay còn gọi là hiệu ứng tạm thời vĩnh viễn .... thở dài
Jalayn

@Jalayn Không phải là câu trả lời đơn giản là người ta nên quay lại và thêm các bài kiểm tra đơn vị ngay khi nhận ra điều này?
Cornel Masson

@CornelMasson Bạn hoàn toàn đúng, hy vọng rằng thường rất khó để thuyết phục các nhà quản lý rằng "vẫn chưa kết thúc" vì các bài kiểm tra bị thiếu :-)
Jalayn

@Jalayn: Quá đúng!
Cornel Masson

22

Cách đây một thời gian tôi đã tìm thấy một bài viết hay: Tại sao thử nghiệm đơn vị tăng tốc độ phát triển . Nó có thể giúp bạn trả lời câu hỏi.

... Điều gì sẽ xảy ra nếu codebase ... được cung cấp một bộ thử nghiệm đơn vị đáng kể. Một tập hợp có thể nói rằng: nếu tất cả các thử nghiệm thành công, tôi đảm bảo rằng mã vẫn thực hiện những gì nó nên làm và nếu một thử nghiệm thất bại, nó sẽ hiển thị chính xác cho bạn biết một số hành vi bị phá vỡ. Điều này thật tuyệt, tôi có thể thay đổi mã để thêm những thứ tôi muốn mà không phải đi lang thang nếu mã vẫn làm những gì cần làm, tôi chỉ cần chạy ... kiểm tra và tôi có niềm tin. Đây là một thế giới tuyệt vời để trở thành một kỹ sư phần mềm. Tôi nhận thấy rằng tôi có thể tiến nhanh hơn ...

Tôi có niềm tin tôn giáo.

Đây có lẽ là lý do quan trọng nhất tại sao các bài kiểm tra đơn vị tăng tốc độ phát triển trong bối cảnh doanh nghiệp.

Tôi có thể tin tưởng rằng mọi thứ vẫn hoạt động nếu tất cả các bài kiểm tra vượt qua. Nếu các bài kiểm tra thất bại, họ sẽ chỉ ra chính xác nơi vấn đề đặt ra ...

... Bạn phải có phạm vi kiểm tra đơn vị caokiểm tra đơn vị tốt . Khi các điều kiện này được tôn trọng, bạn sẽ thấy mình trong tình huống nỗ lực thêm chức năng mới gần như không phụ thuộc vào kích thước của ứng dụng và về lâu dài nó sẽ tăng tốc độ phát triển .

Michael Feathers đã giới thiệu trong một trong những cuốn sách của mình hai cách làm việc với những thay đổi trong mã:

  • chỉnh sửa và cầu nguyện,
  • bao gồm và sửa đổi.

Không quan trọng là cơ sở mã lớn như thế nào.


18

Theo Kent Beck trong câu trả lời của mình cho câu hỏi Stack Overflow Bài kiểm tra đơn vị của bạn sâu bao nhiêu? , bạn nên kiểm tra mã mà bạn có xu hướng bị sai.

Nếu tôi thường không mắc một loại sai lầm nào (như đặt các biến sai trong hàm tạo), tôi sẽ không kiểm tra nó.


4
Điểm tốt, và điều này ngụ ý rằng câu hỏi của OP là sai; việc kiểm tra có liên quan gì đến quy mô của dự án hay không. Một cơ sở mã 5 dòng có thể cần các xét nghiệm và phương pháp 1 dòng trong một cơ sở mã lớn có thể không (mặc dù những điều khác trong cơ sở mã đó làm).
Nathan Long

Điều này có thể hoạt động cho các dự án nhỏ mà bạn đang làm việc một mình, nhưng đối với một dự án được thực hiện cho công việc (nơi bạn không kiểm soát ai sẽ làm việc trong tương lai) hoặc bất cứ điều gì có thể là nguồn mở, bạn cần để kiểm tra mọi thứ Và bạn cần bắt đầu ngay lập tức vì sau này sẽ "quá khó để lấp đầy tất cả các mã đã được viết"
xaxxon

@xaxxon: Kent thực sự nói về điều đó trong cùng một câu trả lời mà Mansuro liên kết với câu nói: "Khi viết mã cho một nhóm, tôi sửa đổi chiến lược của mình để kiểm tra cẩn thận mã mà chúng ta, có thể có xu hướng sai."
henko

Không, điều đó vẫn cực kỳ thiển cận. Bạn không thể biết ai sẽ làm việc với mã trong tương lai. Đây là kiểu tư duy ảnh hưởng đến các nhà phát triển cơ sở.
xaxxon

5

Kiểm tra đơn vị được thực hiện để tiết kiệm thời gian và cải thiện:

  • theo dõi lỗi
  • tái cấu trúc và / hoặc viết lại mã
  • Thử nghiệm hội nhập
  • kiểm tra hồi quy, vv

Đó là phải viết bài kiểm tra đơn vị cho các phần tương đối phức tạp của chương trình.

Nếu bạn chắc chắn rằng viết bài kiểm tra đơn vị bây giờ sẽ không tiết kiệm thời gian của bạn trong tương lai, bạn có thể bỏ qua nó. Tuy nhiên, bạn không bao giờ biết, và cá nhân tôi không thể nghĩ đến một trường hợp khi nó rẻ hơn (theo thời gian, tiền bạc và thần kinh) không viết bài kiểm tra đơn vị mà thay vào đó làm tất cả các bài kiểm tra bằng tay.


Nói chung là một câu trả lời tốt, vì vậy +1. Tuy nhiên, tôi nghĩ rằng điểm cuối cùng của bạn bỏ lỡ thực tế là bạn vẫn muốn / cần kiểm tra thủ công bài kiểm tra đơn vị của mình!
vaughandroid

@Baqueta, có thể tôi không nghe rõ, nhưng tôi không có ý nói rằng các bài kiểm tra đơn vị thay thế hoàn toàn bài kiểm tra thủ công
superM

4

"Tôi có nên kiểm tra đơn vị này không" thường có thể được trả lời bằng cách trả lời câu hỏi sau: "Điều quan trọng là chức năng này có hoạt động tốt không và điều quan trọng đối với tôi là khi nào nó ngừng hoạt động?"

Tất nhiên, nó phức tạp hơn thế nhiều, nhưng đó là một cách tốt để bắt đầu. Cuối cùng, bạn cũng sẽ cân nhắc xem mã đã được kiểm tra hay chưa nhờ vào việc sử dụng chức năng khác, hoặc liệu thời gian của bạn sẽ được sử dụng tốt hơn trong chức năng khác, v.v.


4

Trừ khi bạn sẽ viết mã mà không kiểm tra nó, bạn sẽ luôn phải chịu chi phí kiểm tra.

Sự khác biệt giữa việc có các bài kiểm tra đơn vị và không có chúng là sự khác biệt giữa chi phí viết bài kiểm tra và chi phí để chạy nó so với chi phí kiểm tra bằng tay.

Nếu chi phí viết bài kiểm tra đơn vị là 2 phút và chi phí để chạy bài kiểm tra đơn vị thực tế bằng 0, nhưng chi phí kiểm tra mã thủ công là 1 phút, thì bạn sẽ hòa vốn ngay cả khi bạn đã chạy thử nghiệm hai lần.


Trong nhiều năm, tôi đã hiểu sai rằng tôi không có đủ thời gian để viết bài kiểm tra đơn vị cho mã của mình. Khi tôi viết bài kiểm tra, chúng là những thứ nặng nề, nặng nề, điều đó chỉ khuyến khích tôi nghĩ rằng tôi chỉ nên viết bài kiểm tra đơn vị khi tôi biết chúng là cần thiết.

Gần đây tôi đã được khuyến khích sử dụng Phát triển hướng thử nghiệm và tôi thấy đó là một tiết lộ hoàn chỉnh. Bây giờ tôi tin chắc rằng tôi không có thời gian để không viết bài kiểm tra đơn vị .

Theo kinh nghiệm của tôi, bằng cách phát triển với thử nghiệm trong tâm trí, bạn kết thúc với các giao diện sạch hơn, các lớp và mô-đun tập trung hơn và nói chung là RẮN hơn , mã có thể kiểm tra.

Mỗi lần tôi làm việc với mã kế thừa không có kiểm tra đơn vị và tôi phải kiểm tra thủ công một cái gì đó, tôi cứ nghĩ "việc này sẽ nhanh hơn rất nhiều nếu mã này đã có kiểm tra đơn vị". Mỗi lần tôi phải thử và thêm chức năng kiểm tra đơn vị vào mã có độ khớp cao, tôi cứ nghĩ "việc này sẽ dễ dàng hơn nhiều nếu nó được viết theo cách tách rời".


Phiên bản TL; DR :

Viết một bài kiểm tra khi chi phí viết bài kiểm tra, cộng với chi phí để chạy nó nhiều lần bạn cần có khả năng thấp hơn chi phí kiểm tra thủ công nhiều lần bạn cần.

Mặc dù vậy, hãy nhớ rằng nếu bạn sử dụng TDD, chi phí viết bài kiểm tra có thể sẽ giảm khi bạn làm tốt hơn và trừ khi mã hoàn toàn không quan trọng, bạn có thể sẽ chạy các bài kiểm tra của mình thường xuyên hơn bạn mong đợi.


3

Kiểm tra ngay khi bạn quan sát hồi quy xảy ra hoặc sợ gây ra một số với các chỉnh sửa của bạn và không nhận thấy.

Kindle sợ hãi, hãy để nó phát triển đến một kích thước phù hợp: bạn càng kiểm tra sớm thì càng tốt.

Xin lưu ý: tùy thuộc vào vai trò của bạn trong dự án, bài kiểm tra đơn vị có thể không phải là loại bài kiểm tra duy nhất bạn muốn viết.

Mọi người đều bị ám ảnh một cách chính đáng với các bài kiểm tra đơn vị , bởi vì các thực hành kiểm tra chính thống tồi tệ trong quá khứ; nhưng nếu bạn chưa bao giờ thử nghiệm trước đây, bạn thực sự nên tập trung vào thử nghiệm nói chung , thử nghiệm đơn vị sẽ không giải quyết được các vấn đề của thế giới.


1
Tôi thấy bạn chỉ điểm nhưng không phải là đơn vị kiểm tra điểm khởi đầu cơ bản cho các lập trình viên khởi động. Và bạn cũng có thể giải thích rõ hơn về ý của bạn bằng cách "kiểm tra nói chung". Cảm ơn.
Lamin Sanneh

1
Có ít nhất hai loại thử nghiệm khác - thử nghiệm tích hợp và thử nghiệm chấp nhận. Các bài kiểm tra đơn vị bao gồm một đơn vị cụ thể (ví dụ: chức năng này của lớp này được cho là Frab the Fizz). Bạn giả định / sơ khai tất cả các vị trí khác mà lớp đó tương tác, truyền dữ liệu đó là dữ liệu giả mạo. Khi bạn thực hiện các bài kiểm tra tích hợp, bạn kết hợp hai (hoặc nhiều) lớp để đảm bảo rằng các lớp của bạn đi cùng nhau theo cách bạn nghĩ họ nên làm. Cuối cùng, bạn xây dựng đủ các bài kiểm tra mà bạn đang thực hiện kiểm tra từ đầu đến cuối toàn bộ hệ thống của mình, đôi khi được gọi là "kiểm tra khói".
Wayne Werner

Ngoài ra còn có thử nghiệm hồi quy tòa án. Kiểm tra hồi quy thường lớn hơn kiểm tra đơn vị, có thể mất một ngày để xây dựng, có thể ngụ ý truy cập vào dữ liệu kiểm tra và môi trường kiểm tra đặc biệt. Trên thực tế, các bài kiểm tra đơn vị là một bài kiểm tra hồi quy (kiểu cũ) nhỏ hơn, kiểu dáng đẹp hơn và dễ bảo trì hơn.
ZJR

1

Tôi tin rằng đó không phải là quy mô của dự án mà là loại dự án quyết định có nên sử dụng thử nghiệm hay không.

Nếu bạn đang làm việc trên một bằng chứng về khái niệm, hoặc trên một số dự án khác mà mục tiêu là học từ mã hóa, thì không cần phải thử nghiệm. Nếu dự án có nghĩa là được sử dụng, thậm chí có thể được đưa vào sản xuất, thì nó nên được thử nghiệm.

Một trích dẫn từ "Clean Code" của Robert C. Martin : "Nếu nó tầm thường để viết, thì nó không đáng để kiểm tra", vì vậy không có lý do gì để bỏ qua việc thử nghiệm cho các chương trình ngắn và tầm thường.


0

Đây thực sự không phải là vấn đề kích thước - đó là những gì bạn làm với nó (và nó bao nhiêu tuổi). Nếu tôi loay hoay tìm hiểu cách thức công nghệ hoạt động và lên kế hoạch loại bỏ mọi thứ (chúng tôi gọi đây là một đột biến trong Scrum), tôi sẽ chỉ viết mã mà không cần thực hiện nhiều thử nghiệm. Nếu bạn đang có kế hoạch phát triển nó hơn nữa (ngay cả khi bạn chỉ đang loay hoay), bạn nên viết các bài kiểm tra xung quanh mã. TDD là một kỹ thuật thiết kế ngay cả trước khi nó là một kỹ thuật thử nghiệm. Bạn muốn có một bức tranh rõ ràng về những gì bạn muốn mã thực hiện trước khi bạn bị ràng buộc trong các chi tiết của việc thực hiện. Tôi cũng sẽ KHÔNGkhuyên bạn nên cố gắng viết các bài kiểm tra đơn vị rộng rãi xung quanh số lượng lớn mã kế thừa. Cố gắng xác định những phần phức tạp (có độ phức tạp chu kỳ / mã spaghetti cao đối với chúng) và những phần bị hỏng thường xuyên (chúng thường sẽ giống nhau). Như những người khác đã đề xuất, tôi sẽ đọc cuốn sách của Kent Beck về TDD và chắc chắn đọc cuốn sách của Michael Feather. Những gì họ không bao gồm rất nhiều là khía cạnh chính trị để viết bài kiểm tra đơn vị xung quanh mã. Rất nhiều nhà phát triển ghét phải thay đổi mã của họ để làm cho nó có thể kiểm tra được và rất nhiều nhà phát triển không cảm thấy cần phải kiểm tra mã. Đó là một cái gì đó chúng ta phải làm việc như một nghề. Mọi kỷ luật kỹ thuật khác được yêu cầu phải chứng minh (thường là về mặt toán học) rằng công việc của họ đáp ứng các đặc điểm kỹ thuật. Chúng ta nên làm như vậy.


-1

Liên kết một Dự án trong giới hạn của các lớp hoặc chức năng và sau đó đánh giá nếu điều này phù hợp với thử nghiệm đơn vị có thể sai. Có rất nhiều lợi ích của việc kiểm thử đơn vị một ứng dụng nhưng vẻ đẹp thực sự bắt đầu khi bạn phải duy trì một ứng dụng hoặc phải làm việc trong môi trường phân tán. Vì vậy, sự lựa chọn đến đây. Ngay cả một thay đổi nhỏ trong mã của bạn cũng có thể gây ra thảm họa.
Tôi không chỉ đề xuất 'Kiểm tra đơn vị' mà còn đề nghị kiểm tra phạm vi bảo hiểm mã của bạn, đảm bảo tối đa mã của bạn được bảo vệ bằng Kiểm tra đơn vị. Ngưỡng cho phạm vi bảo hiểm mã không được nhỏ hơn 95% và mục tiêu phải ở khoảng 100% . Bạn có thể tìm các công cụ để theo dõi phạm vi bảo hiểm mã của bạn và tạo một báo cáo.
Visual Studio cung cấp dữ liệu bảo hiểm -http://msdn.microsoft.com/en-us/l
Library / ms182496 (v = vs.80) .aspx Ngoài ra, bạn có thể sử dụng NCover hoặc dotCover.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.