zoukankan      html  css  js  c++  java
  • 软件测试学习(3)

    这次的博客主要介绍一下软件测试第一次上机实验的内容

    这次上机我们主要进行Java的一些常用的测试工具的安装与使用,在这里稍微介绍一下这次使用的几种工具

    junit:JUnit是一个Java语言的单元测试框架。

    它包括以下特性:
    1、用于测试期望结果的断言(Assertion)
    2、用于共享共同测试数据的测试工具
    3、用于方便的组织和运行测试的测试套件
    4、图形和文本的测试运行器
    通过Junit我们可以用一种全新的方法(断言)验证程序运行结果的正确性,避免了大量手动测试的繁琐工序,我们想要测试一个加法函数的运算结果,我们只需要断言这个函数的运算结果和我们的预期结果相同就可以了。如:
    assertEquals(3,add(1,2));

    就是断言add(1,2)的运算结果为3。

    Hamcrest:Hamcrest 是一个测试的框架,它提供了一套通用的匹配符 Matcher,灵活使用这些匹配符定义的规则,程序员可以更加精确的表达自己的测试思想,指定所想设定的测试条件。

    Junit的功能虽然强大,但是当我们进行一些范围测试的时候如判断一个函数的运算结果在20和40之间,如果用枚举的方法测试就显得过于繁琐

    但是我们如果使用Hamcrest可以这样做

    assertTrue((40>30) && (40<50)) 

    断言40>30且40<50

    eclemma:EclEmma是一个开源的软件测试工具,可以在编码过程中查看代码调用情况、也可以检测单覆盖率。我们通过安装EclEmma可以明显的看出那些代码得到了运行那些没有得到运行,以及各个判断语句的执行结果。

    然后简单说一下这次的上机内容以及过程

    首先是用Eclipse安装上述的三个测试工具,然后写一个判断三角形是等边、等腰或者两者都不是的函数并使用junit测试运行结果

    我使用的是myEclipse

    对于JUnit和Hamcrest,我们在创建好的工程中在build path中加入这两个jar包即可

    具体方法如下:

    在项目的JRE system library上右键选择build path->configure build path

     

    选择add external jars

    选择两个jar包即可,前两个工具的添加就完成了

    对于第三个工具安装

    选择help->install from site

    输入网址:http://update.eclemma.org/

    点击add,name可以随便填写,选中eclemma,使用默认选项,一直next直到finish即可,然后重启myEclipse就可以使用这个工具了

    具体的函数的实现非常简单,我连同测试部分的代码一同贴在这里

    package cn.tju.st;
    
    public class Triangle {
        public int a;
        public int b;
        public int c;
        public Triangle(int x,int y,int z)
        {
            a=x;
            b=y;
            c=z;
        }
        public String judge() {
            if(a==b&&b==c)
                return "equilateral";
            else if(a==b||b==c||c==a)
                return "isosceles";
            else {
                return "scalene";
            }
        }
    }
    package cn.tju.st;
    
    import static org.junit.Assert.*;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    
    
    public class TestTriangle {
    
        @Before
        public void setUp() throws Exception {
            System.out.println("This is before test");
        }
    
        @After
        public void tearDown() throws Exception {
            System.out.println("This is after test");
        }
    
        @Test
        public void test() {
            Triangle tri = new Triangle(3,3,3);
            assertEquals("equilateral",tri.judge());
            tri = new Triangle(2,3,3);
            assertEquals("isosceles",tri.judge());
            tri = new Triangle(3,3,1);
            assertEquals("isosceles",tri.judge());
            tri = new Triangle(3,5,3);
            assertEquals("isosceles",tri.judge());
            tri = new Triangle(3,4,5);
            assertEquals("scalene",tri.judge());
            tri = new Triangle(5,6,7);
            assertEquals("scalene",tri.judge());
        }
    
    }

    在测试部分我主要使用是before、test、after三个标签,

    before标签下一般用于在测试开始之前进行初始化

    test标签下是测试的内容

    after标签下的内容一般是进行资源的释放或者进行补充测试 

    我们上述三个标签后,在选择Run as的方式的时候会多出一个选项

    选择junit test就可以进行测试了

    下面放一下测试成功和测试失败的截图

    我们可以通过junit的窗口看到测试是否成功,测试失败的话,测试失败的行数,预期运行结果和实际运行结果,同时在控制台我们看可以看到before和after部分的输出

    到此,这次上机的内容基本就完成了,另外补充一下EclEmma的用法

     

    我们会发现在run下多出了coverage last launched就是说对上次的运行结果进行覆盖测试

     

    绿色部分的代表运行的语句,红色的代表未运行的语句,黄色的强调的是判断语句

    后续我还会增加一些junit和Hamcrest使用的补充

  • 相关阅读:
    ROS+clion多节点调试
    argparse模块用法实例详解
    Python3中的bytes和str类型
    elk日志过滤文档
    centos7普通用户无法切换为root用户处理
    Hyper-V迁移方案
    中小互联网电商(电商)公司研发部门组织架构
    基于Redis实现令牌桶限流
    异步与协程
    C# 同步上下文及死锁
  • 原文地址:https://www.cnblogs.com/ljc825/p/5289163.html
Copyright © 2011-2022 走看看