2009-07-30 36 views

Trả lời

4

Một tỷ lệ kiểm tra mã vạch tốt là cho phép bạn cảm thấy tự tin trong mã bạn đã viết và cũng cho phép bạn tái cấu trúc với sự tự tin bạn sẽ biết những gì bạn khu vực ffecting trong phần còn lại của ứng dụng của bạn. Tôi đã có tỷ lệ thử nghiệm khác nhau, từ 1: 1,5 đến 1: 2,5 hoặc hơn, nó thực sự có thể khác nhau tùy thuộc vào sự phức tạp của ứng dụng của bạn.

6

Mã số để kiểm tra tỷ lệ là một chút của một số liệu thống kê gây hiểu nhầm. Một phương pháp tốt hơn là sử dụng rcov, bạn có thể dễ dàng sử dụng phương pháp này bằng cách chạy rake spec:rcov

Trong khi phạm vi mã 100% đôi khi được giữ như một mục tiêu tuyệt đối, bạn nhanh chóng chạy vào law of diminishing returns. Cá nhân tôi nhằm mục đích bảo hiểm 90% mã trong tất cả các mã sản xuất; mặc dù điều này chủ yếu tùy ý tôi thấy dễ dàng hơn để có một số mục tiêu để nhắm tới.

+0

Tôi đồng ý với điều này, rcov có lẽ tốt hơn. Cũng có thể gây hiểu lầm, mặc dù, nếu nó thực sự là mã tầm thường thì phạm vi bảo hiểm có thể ít quan trọng hơn, nhưng không phải lúc nào cũng vậy. Đây thực sự là một lĩnh vực chủ quan. – nitecoder

+1

Bảo hiểm mã không phải là mọi thứ. rcov chỉ kiểm tra xem mã có được thực hiện trong thử nghiệm hay không. Nó sẽ không cho bạn biết nếu bạn không kiểm tra hoàn toàn các điều kiện của bạn. –

+0

@railsninja Tại sao mã vùng phủ sóng ít quan trọng hơn trong mã tầm thường? Bởi vì bạn sẽ làm cho ít sai lầm trong mã tầm thường? Tôi nghĩ một sự phân biệt tốt hơn là liệu đó có phải là mã sản xuất hay không. – Olly

1

Nó thay đổi. Mã đơn giản tôi mong đợi nhiều mã thử nghiệm như mã sản xuất. Mã phức tạp có thể dễ dàng xứng đáng nhận được gấp đôi mã kiểm tra. Do Test Driven Development và sẽ không phải lo lắng về tỷ lệ vì mọi thứ trong mã được điều khiển bởi một thử nghiệm và đó là điều quan trọng.

3

Chúng tôi đang nói về ý kiến ​​vào lúc này. Một tỷ lệ code-to-test tốt là một trong những mã của bạn được bao phủ trong phạm vi mà nó cần phải cho phép cả hai tự tin vào những gì được viết và tự tin rằng, khi bạn đang refactoring, bạn sẽ biết những gì đang phá vỡ tất cả xung quanh bạn.

Số là tốt, nhưng việc đặt quá nhiều cổ phiếu trong đó có thể nguy hiểm.

3

Mục tiêu của tôi không có mã chưa được kiểm tra được tiết lộ bởi rcov và heckle. Khi bạn nhận được tất cả các phạm vi bảo hiểm bạn có thể nhận được với rcov, sau đó bạn có thể chạy mã thông qua heckle. Heckle sửa đổi mã của bạn và cho bạn thấy những sửa đổi nào không bị bắt bởi các kiểm tra.

rspec biết về heckle. Sau khi cài đặt viên đá quý heckle: "spec foo_spec.rb -H Foo". Ồ, và nếu bạn gặp lỗi lạ, hãy cài đặt phiên bản 1.2.2 của ruby2ruby thay vì 1.2.4.

Dưới đây là hạch hỏi phàn nàn về một chức năng tôi nghĩ rằng tôi đã quy định đầy đủ:

The following mutations didn't cause test failures: 

--- original 
+++ mutation 
def model_matches?(substring) 
- s = substring.gsub(/\./, ".") 
+ s = substring.gsub(/\033!\032\002l\}\?V\010d\}\r\-\fyg,a\*jFT\003_"ga\016\020ufN\0066/, ".") 
    s = substring.gsub(/\*/, ".*") 
    s = "^#{s}$" 
    Regexp.new(s, "i").=~(@model) 
end 

--- original 
+++ mutation 
def model_matches?(substring) 
- s = substring.gsub(/\./, ".") 
+ s = substring.gsub(/\./, "\023GA3w+h-#z$?I;a\"k0n^r$\005io#l\023H1M{\034m") 
    s = substring.gsub(/\*/, ".*") 
    s = "^#{s}$" 
    Regexp.new(s, "i").=~(@model) 
end 

--- original 
+++ mutation 
def model_matches?(substring) 
- s = substring.gsub(/\./, ".") 
+ s = nil 
    s = substring.gsub(/\*/, ".*") 
    s = "^#{s}$" 
    Regexp.new(s, "i").=~(@model) 
end 

--- original 
+++ mutation 
def model_matches?(substring) 
    s = substring.gsub(/\./, ".") 
    s = substring.gsub(/\*/, ".*") 
    s = "^#{s}$" 
- Regexp.new(s, "i").=~(@model) 
+ Regexp.new(s, "v\022").=~(@model) 
end 

thế nào là mát?

Điều duy nhất tôi thấy rằng thực sự khó khăn để có được phạm vi kiểm tra đầy đủ là các thử nghiệm liên quan đến đồng thời, đặc biệt. điều kiện chủng tộc. Cố gắng chứng minh rằng một mutex hoặc một phần quan trọng phải được đặt ra có thể khó khăn. Đôi khi bạn có thể làm điều đó. Đôi khi, bạn chỉ cần nhún vai, đặt vào dòng mã bạn không biết cách kiểm tra và tiếp tục.

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