• JAVA单元测试的用法和要点(入门篇)


    一、单元测试的目的?
          单元测试是编写测试代码,用以检测特定的、明确的、细颗粒的功能!  严格来说,单元测试只针对功能点进行测试,不包括对业务流程正确性的测试。现在一般公司都会进行业务流程的测试,这也要求测试人员需要了解需求! 测试人员也不好过啊~~

          目前开发所用的单元是Junit框架,在大多数java的开发环境中已经集成,可以方便开发自己调用!

    注意:单元测试不仅仅是要保证代码的正确性,一份好的单元测试报告,还要完整地记录问题的所在和缺陷以及正确的状态,方便后面代码的修复,重构和改进!

    二、单元测试做什么?

    一般来说,一份单元测试主要包括以下几个方面:

    ==============================================================================================
    1.接口功能性测试: 接口功能的正确性,即保证接口能够被正常调用,并输出有效数据!

    ------------------> 是否被顺利调用

    ------------------> 参数是否符合预期

    ==============================================================================================
    2.局部数据结构测试:保证数据结构的正确性
    ------------------> 变量是否有初始值或在某场景下是否有默认值
    ------------------> 变量是否溢出
    ==============================================================================================
    3.边界条件测试:测试
    ------------------> 变量无赋值(null)
    ------------------> 变量是数值或字符
    ------------------> 主要边界:最大值,最小值,无穷大
    ------------------> 溢出边界:在边界外面取值+/-1
    ------------------> 临近边界:在边界值之内取值+/-1
    ------------------> 字符串的边界,引用 "变量字符"的边界
    ------------------> 字符串的设置,空字符串
    ------------------> 字符串的应用长度测试
    ------------------> 空白集合
    ------------------> 目标集合的类型和应用边界
    ------------------> 集合的次序
    ------------------> 变量是规律的,测试无穷大的极限,无穷小的极限
    ==============================================================================================

    4.所有独立代码测试:保证每一句代码,所有分支都测试完成,主要包括代码覆盖率,异常处理通路测试
    ------------------> 语句覆盖率:每个语句都执行到了
    ------------------> 判定覆盖率:每个分支都执行到了
    ------------------> 条件覆盖率:每个条件都返回布尔
    ------------------> 路径覆盖率:每个路径都覆盖到了

    ==============================================================================================
    5.异常模块测试,后续处理模块测试:是否包闭当前异常或者对异常形成消化,是否影响结果!

    @BeforeClass 全局只会执行一次,而且是第一个运行
    @Before 在测试方法运行之前运行
    @Test 测试方法
    @After 在测试方法运行之后允许
    @AfterClass 全局只会执行一次,而且是最后一个运行
    @Ignore 忽略此方法

    对于每一个测试,我们都应该保持独立测试,以确保测试结果是有意义的。在程序中,经常会出现,当测试完一个方法后,其参数已经被系统保持或持久化下来。无疑会造成下一次的测试测试数据或者状态的不合理性!为了解决问题,对于此类场景,我们的测试代码必须具备初始化和收尾的能力。也即是@Before和@After的意义所在!

    同理@AfterClass和BeforeClass即是为了满足测试中,那些体积非常大,但只要一次初始化的代码块!

  • 相关阅读:
    ios 分享腾讯微博
    ios 分享微信
    elinput 价格校验 大于0保留2位小数,不包含01,01.1这种
    从范闲到许乐,从宁缺再到陈长生
    二进制流 ajax 实现图片上传
    php 操作redis 部分命令
    matlab 与vs2008联合编程的设置备忘
    新型机器人闯入职场:到底是工作缔造者还是工作终结者?
    c++ vs2008 多线程编程的样例
    虚拟试衣创业公司Fitiquette被印度电商Myntra收购
  • 原文地址:https://www.cnblogs.com/samanian/p/11446064.html
Copyright © 2020-2023  润新知