zoukankan      html  css  js  c++  java
  • 单元测试基础知识(二)

    6 单元测试设计原则和任务

    6.1 三原则

    为了提高开发人员的代码质量,编写高质量的单元测试,要遵守3R(Responsible, Reliable, Repeative)原则,具体含义如下:

    Responsible: 谁开发谁负责测试,在哪里开发就在哪里测试。

    Reliable: 测试case要可靠,并且是值得信赖的,对于底层的任何改动都要能够及时感知。

    Repeative: 所有单元测试用例都要能够重复运行。能够重复运行就能够进行回归测试、覆盖率统计等等。

    6.2 单元测试任务

    一般来说,单元测试任务包括:

    1、接口功能测试:用来保证接口功能的正确性。

    2、局部数据结构测试(不常用):用来保证接口中的数据结构是正确的

    (1)比如变量有无初始值

    (2)变量是否溢出

    3、边界条件测试

    (1)变量没有赋值(即为NULL)

    (2)变量是数值(或字符)

    a.主要边界:最小值,最大值,无穷大(对于DOUBLE等)

    b.溢出边界(期望异常或拒绝服务):最小值-1,最大值+1

    c.临近边界:最小值+1,最大值-1

    (3)变量是字符串

    a.引用"字符变量"的边界

    b.空字符串

    c.对字符串长度应用"数值变量"的边界

    (4)变量是集合

    a.空集合

    b.对集合的大小应用"数值变量"的边界

    c.调整次序:升序、降序

    (5)变量有规律

    a.比如对于Math.sqrt,给出n^2-1,和n^2+1的边界

    4、所有独立执行通路测试:保证每一条代码,每个分支都经过测试

    (1)代码覆盖率

    a.语句覆盖:保证每一个语句都执行到了

    b.判定覆盖(分支覆盖):保证每一个分支都执行到

    c.条件覆盖:保证每一个条件都覆盖到true和false(即if、while中的条件语句)

    d.路径覆盖:保证每一个路径都覆盖到

    (2)相关软件

    a.Cobertura:语句覆盖

    b.Emma: Eclipse插件Eclemma

    5、各条错误处理通路测试:保证每一个异常都经过测试

    7 单测用例设计注意事项

    7.1独立性

    单元测试用例在设计和数据准备的过程中,需要保持良好的独立性,确保本测试的数据是不需要依赖其他输出的,这样减少相互影响。

    7.2尽量脱离被测代码的束缚

    在测试用例设计的过程中,尤其是测试用例编写在代码编写完成后进行的,一定小心被代码实现功能所影响,多考虑异常分支和异常数据。

    7.3面向对象的语言单元测试特点

    面向对象的语言进行单元测试还有一定的特点,对于每一个类,可能他出现在程序中的情况各不相同,在进行测试的时候,可以结合上面介绍的方法,根据内部方法相互调用逻辑,完成测试设计。

    大体划分两个方向,一个是功能性的,就是类似黑盒的方法,仅仅关注实现的功能点是否正确;另一个就是结构性测试,需要分析类中的方法相互实现逻辑,进行类似白盒测试,确保每个分支覆盖。

    8 单元测试用例编写技巧

    8.1使用断言

    使用断言而不是Print语句许多新手开发人员习惯于在每行代码之后编写System.out.println语句来验证代码是否正确执行。这种做法常常扩展到单元测试,从而导致测试代码变得杂乱。除了混乱,这需要开发人员手动干预去验证控制台上打印的输出,以检查测试是否成功运行。更好的方法是使用自动指示测试结果的断言。

    8.2 考虑负面场景

    除了正面情景,还要测试负面情景和边缘情况通常,开发人员会花费大量的时间和精力编写测试用例,以确保应用程序按预期工作。然而,测试负面测试用例也很重要。负面测试用例指的是测试系统是否可以处理无效数据的测试用例。

    8.3 测试结果的预知性

    构建具有确定性结果的测试,一些方法不具有确定性结果,即该方法的输出不是预先知道的,并且每一次都可以改变,为该方法编写测试用例不会有任何用处。

    生命很短,请让生活更精彩一些!
  • 相关阅读:
    SysRq组合键是一组"魔术组合键"
    iptables FTP脚本
    (转)SSH的端口转发
    进制转换
    指定的参数已超出有效值的范围
    静态类
    接口
    快捷键,移到最上层
    gitbook
    nginx服务无法停止(Windows)
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/10438229.html
Copyright © 2011-2022 走看看