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

    单元测试

    例子

    /**
     * @author xxx
     * @date 2021/9/24
     */
    public class Main {
        public int example(int x,int y,int z){
            int result=0;
            if(x>=3&&y==0){
                result=z+x;
            }
            if(z<=5||x<z){
                result=result+x;
            }else {
                result=result+y;
            }
            return result;
        }
    }
    
    

    流程图

    image-20210924200025539

    语句覆盖 statement coverage

    判定表达式之外的语句,全部覆盖

    判定表达式之后的语句

    result = z+x

    result = result + y

    result = result + x

    只要覆盖这3条语句,就是语句覆盖

    覆盖了方法的全部代码行

    测试代码

    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    /**
     * @author xxx
     * @date 2021/9/24
     */
    public class MainTest {
        Main main = new Main();
        @Test
        public void test(){
            int expect = 4;
            int acutual = main.example(4,0,6);
            assertEquals(expect,acutual);
        }
    
    }
    
    

    测试运行

    image-20210924201543962

    单元测试的好处,设计过测试脚本后,可以无限次反复执行。

    回归测试 regression testing

    指修改了旧代码后,重新进行测试,以确保修改没有引入新的错误或者导致其他代码发生错误。

    判定覆盖 decision coverage

    测试用例能够使得程序中每个判定表达式的值为true和为false的分支都至少执行一次测试

    条件覆盖 condition coverage

    使得程序中 每个判定表达式的每个条件 的可能取值都至少满足一次

    判定-条件覆盖 decision-condition coverage

    使得程序中每个判定表达式的结果的可能取值都至少满足一次

    并且使得程序中 每个判定表达式的每个条件 的可能取值都至少满足一次

    多重条件覆盖 multiple condition coverage

    多重条件覆盖实现了对每个条件组合的覆盖,不仅覆盖了所有条件的真假、判定的真假,还有不同条件的组合

    但是测试覆盖率高,测试效率低

    修正的条件判定覆盖 modified condition/decision coverage

    要让每个判定的所有分支执行一次(判定覆盖)

    每个条件的可能结果要执行一次(条件覆盖)

    每个判定中每个条件必须能独立影响一个判定的输出

  • 相关阅读:
    AngularJS:添加检查密码输入是否一致的功能
    Clojure:两步发送iOS推送通知(apns)
    Openfire:解决乱码问题
    iOS:让UIView覆盖导航栏
    python 图片压缩存储
    jQuery 树形结构
    jsTree
    Mrakdown文本编辑器
    Flask jQuery ajax
    flask-sqlalchemy分表解决方案
  • 原文地址:https://www.cnblogs.com/studentWangqy/p/15332579.html
Copyright © 2011-2022 走看看