按关键词阅读: Python 软件 浏览器 Java
文章图片
代码覆盖率VS测试覆盖率
测试覆盖率和代码覆盖率是衡量代码有效性的最流行方法 。 这些术语有时会同时出现 , 因为它们的基本原理相同 。 但是它们并不是那么一致 。 很多时候 , 测试团队和开发团队对这两个术语的使用感到困惑 。 下面详细讨论代码覆盖率和测试覆盖率之间的区别的原因 。
概念
代码覆盖率:表示通过用Selenium或任何其他测试自动化框架进行的手动测试和自动化测试 , 测试用例覆盖的代码百分比 。 例如 , 如果源代码具有一个简单的if...else循环 , 则如果测试代码可以覆盖这两种情况(即if&else) , 则代码覆盖率将为100% 。
测试范围:包括测试作为功能需求规范 , 软件需求规范和其他必需文档的一部分而实现的功能 。 例如 , 如果要对Web应用程序执行跨浏览器测试 , 以确保应用程序可以在其他浏览器流畅运行 。 测试覆盖范围是已验证Web应用程序的浏览器兼容性的浏览器+操作系统组合的数量 。
代码覆盖率
开发人员在单元测试期间执行代码覆盖 , 以验证代码实现 , 尽可能多执行代码语句 。 大多数代码覆盖率工具都使用静态工具 , 将监视执行的语句插入代码中的必要位置 。 尽管添加检测代码会导致总体应用程序大小和执行时间增加 , 但与通过执行检测代码生成的信息相比 , 开销却很小 。 输出包含一个详细描述测试套件测试范围的报告 。
为什么要执行代码覆盖率
单元测试主要用于在单个单元级别上测试代码 。 由于单元测试是由开发人员自己编写的 , 因此他对应该作为单元测试的一部分包含的测试具有更好的可见性 。 单元测试有助于提高软件的整体质量 , 但是关于构成单元测试的测试数量始终存在疑问 。 测试套件中是否有足够数量的测试方案?我们应该添加更多测试吗?代码覆盖率是所有这些问题的重要衡量标准 。
随着产品开发的进行 , 新功能以及BUG修复补丁将添加到发布周期中 。 这意味着测试代码可能还需要进行更改 , 以使其与开发过程中所做的软件更改保持一致 。 在项目开始时设定的测试标准必须与后续的发布周期保持一致 , 这一点很重要 。 代码覆盖率可用于确保测试过程符合这些标准 , 并且质量最好的代码进入生产阶段 。
代码覆盖率越高 , 发生未检测到的错误的概率越低 。 在某些组织中 , 质量团队设置在将软件推向生产阶段之前需要实现的最小代码覆盖量 。 这样做的主要原因是为了减少在产品开发的后期阶段检测到错误的可能性 。
如何执行代码覆盖率
代码覆盖范围有不同的级别 , 代码覆盖率的一些常见子类型为:
- 分支机构的覆盖范围:分支机构的覆盖范围也称为决策覆盖范围 , 用于确保决策过程中使用的每个可能的分支都得到执行 。 例如 , 如果您要使用代码中的If ... An条件语句或DWhile语句合并后备跨浏览器兼容性 , 作为覆盖范围的一部分;通过提供适当的输入以使跨浏览器兼容的网站来确保对所有分支(即If , Else , While)进行测试 。
- 功能覆盖范围:功能覆盖范围可确保测试必要的功能(尤其是导出的功能/ API) 。 这还应包括使用不同类型的输入参数测试功能 , 因为这也将测试功能中使用的逻辑 。 一旦测试了代码中的所有功能 , 功能覆盖率将为100% 。
- 语句覆盖率:这是一种重要的代码覆盖率方法 , 其中必须以某种方式编写测试代码 , 即源代码中的每个可执行语句至少执行一次 。 这也包括极端情况或边界情况 。
- 循环覆盖:这种方法是确保源中的每个循环至少执行一次 。 可能会根据在运行时获得的结果执行某些循环 , 同样重要的是测试此类循环以使代码万无一失 。
仪器分为三种主要类型