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 测试结果的预知性

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

    生命很短,请让生活更精彩一些!
  • 相关阅读:
    27. Remove Element
    列表变成字典
    1. Two Sum
    CVPR2019:What and How Well You Performed? A Multitask Learning Approach to Action Quality Assessment
    959. Regions Cut By Slashes
    118. Pascal's Triangle
    loj3117 IOI2017 接线 wiring 题解
    题解 NOI2019 序列
    题解 省选联考2020 组合数问题
    题解 Educational Codeforces Round 90 (Rated for Div. 2) (CF1373)
  • 原文地址:https://www.cnblogs.com/Aaron-007/p/10438229.html
Copyright © 2011-2022 走看看