测试中的代码覆盖率

Nee*_*eel 4 .net c# testing tdd code-coverage

我最近开始使用TDD,或者你可以说测试我的项目,在那里我找到了一些新东西(对我来说是新的东西),称为"代码覆盖率",它显示了在测试过程中你的代码覆盖了多少.而且我知道大多数老年人都会说它不可能拥有100%的代码覆盖率或者不是很好的做法来获得100%的代码覆盖率.这件事让我想知道这个代码覆盖如何工作我的意思是他们涵盖了哪些基础的代码?请告诉我们测试的主要用法.

我附上了这个问题的代码覆盖图像.在此输入图像描述

Mic*_*ers 5

实际上,100%的代码覆盖率是可能的,但取决于语言:

  • 有时导入或包含语句不会被考虑在内,因此100%是不可能的
  • 它主要取决于使用的工具(如上面的行被忽略或不被忽略)
  • 如果由于没有测试异常而未达到100%,那么这并不好.还应该进行恶劣天气测试

关于100%代码覆盖率的有用性:

  • 当然,越高越好
  • 至少应该测试所有行,特别是在像Python这样不太强大的tyep语言中.在C/C#等中,编译器会找到更多,但即便如此,也欢迎高代码覆盖率

即使是100%的代码覆盖率也不意味着代码是完美的:

  • 测试一行并不意味着执行完整的行(就像'if x && y'中只有if语句的一半...如果x导致False,则不再检查y.
  • 由于循环和程序流的顺序,变量的值可能不同,从而导致异常.因此,检查值的组合也很重要.

加成:

如果不需要100%的代码覆盖率(因为一切都需要时间,因此需要花钱),首先要关注代码中的高风险区域.首先跳过琐碎的方法,然后从复杂/高风险函数开始.

同样重要的是使用设计模式或代码结构来"帮助"单元测试:

  • 从逻辑代码中拆分(G)UI.(G)UI代码更难以进行单元测试.
  • 使用小功能,简化单元测试(并进行清晰的设计).
  • 使代码尽可能松散地连接.这样可以实现清晰的设计,也有助于简化单元测试(不需要使用大量的存根).
  • 考虑测试"框架",例如使用存根,包括向存根注入值以测试好的和坏的天气情况.