zoukankan      html  css  js  c++  java
  • 单元测试覆盖率

    摘自https://blog.csdn.net/m0_37499059/article/details/81224561

    1.前言
    通常情况下,项目经理or项目总监会分阶段的问测试负责人,本阶段的测试覆盖率是多少?在工作中,当被问到“如何提高代码质量”,回答无非如下几个,增加评审,代码规约,单元测试。不知起自何年何月,如今一些机构开始引入“单元测试覆盖率”的概念,并由此对程序员提出了覆盖率要达到70%,90%,以此来评判程序员工作的质量,以及产品的质量。这里先预为单元测试下定义以免混淆,即,基于Junit,类与代码级别的,与运行时无关的白盒测试。

    2.我的理解
    测试覆盖率应该区分自动化测试覆盖率和功能测试用例覆盖率。

    对于自动化测试覆盖率,应是=(自动化测试脚本执行过的代码/总代码)
    对于测试用例覆盖率,应是=(测试用例覆盖的功能点/产品设计的所有功能点)

    3.什么是单元测试
    单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确,通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。

    3.1好处
    1,单元测试不但会使你的工作完成得更轻松。而且会令你的设计会变得更好,甚至大大减少你花在调试上面的时间
    2,提高代码质量
    3,减少bug,快速定位bug
    4,放心地修改、重构
    5,显得专业(玩笑话)

    3.2注意
    1,不能只测试一条正确执行路径,要考虑到所有可能的情况
    2,要确保所有测试都能够通过,避免间接损害
    3,如果一个函数复杂到无法单测,那就说明模块的抽象有问题

    (1)语句覆盖法
    (2)分支覆盖法
    (3)条件覆盖法
    (4)组合条件覆盖法

    4.IDEA 单元测试覆盖技巧
    package com.example.demoo.junit;
    /**
    * Created by lanxinghua on 2018/7/26.
    */
    public class Myclass {
    public String test1(){
    return "test1!";
    }

    public String test2(){
    return "test2";
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    package com.example.demoo;
    import com.example.demoo.junit.Myclass;
    import org.junit.Before;
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    @SpringBootTest
    public class JunitTest {
    private Myclass myclass;
    @Before
    public void setUp() {
    myclass = new Myclass();
    }

    @Test
    public void testHello(){
    myclass.test1();
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    1)启动单元测试覆盖模式(Run “*” with Coverage)


    2)查看代码覆盖率结果


    工具栏按钮:


    3)生成代码覆盖率报告


    在里面 生成覆盖报告对话框打开,指定存储生成的报告的目标目录,并且可选择选中该复选框在浏览器中打开生成的HTML。


    扩展
    随着公司的发展,自动化测试脚本的持续集成逐渐要被做起来,那就面临一个自检的问题,我的测试脚本、测试用例是否全覆盖了开发的代码。如何直观地看到代码覆盖率?

    本地统计代码覆盖率:jacoco,cobertura
    远程统计代码覆盖率:jenkins上下载jacoco插件,并在构建后配置
    如果把测试工程(T)跟开发工程(D)分开为两个独立的工程,D部署在独立的服务器上,T工程该如何远程获取D的覆盖率数据呢?

  • 相关阅读:
    python奇技淫巧——max/min函数的用法
    mysql中InnoDB存储引擎的行锁和表锁
    supervisor进程管理工具
    Tornado源码分析 --- Cookie和XSRF机制
    Tornado源码分析 --- Redirect重定向
    Tornado源码分析 --- 静态文件处理模块
    Tornado源码分析 --- Etag实现
    Python环境管理--virtualenvwrapper
    记录
    由 '' in 'abc' return True 引发的思考----Python 成员测试操作
  • 原文地址:https://www.cnblogs.com/zhangfengshi/p/11396771.html
Copyright © 2011-2022 走看看