我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

java-武浩杰-2021-3-15

[复制链接]
海底月是天上月学员认证 发表于 2021-3-15 19:49:22 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
1.单元测试
   1.白盒测试,JUnit是Java自带的的单元测试框架. Testing测试框架
   Python中的测试框架unittest,pytest ,方便组织用例
   提供测试前置,后置
   @Test修饰的方法是测试用例
   @BeforeEach(在每个方法前执行), @BeforeAll(在所有方法前执行一次) 测试前置
   @AfterEach, @AfterAll  测试后置
   2.白盒测试,针对最小的可执行单元进行测试,在Java中指方法
   白盒测试设计技术:
    语句覆盖(覆盖度低):  每个语句执行一次
    判定覆盖/分支覆盖: (a<=0||b<=0||c<=0)是一个判定点,这个判定点的TRUE/FALSE至少覆盖一次
                  用例1:a=0,b=1,c=1,判定的结果为TRUE
                  用例2:a=1,b=1,c=1,判定的结果为FALSE
    条件覆盖: (a<=0||b<=0||c<=0)是一个判定点. a<=0 是一个条件
                判定点是由一个条件或者多个条件组合成的
                每个条件的TRUE/FALSE至少覆盖一次
                用例1:a=0,b=1,c=1, a true   b  false   c  false  判定点的结果 TRUE
                用例2:a=1,b=0,c=0, a false  b  true    c  true   判定点的结果 TRUE
                用例3:a=1,b=1,c=1,a false   b  false   c  false  判定点的结果 FALSE
    判定_条件覆盖:每个条件的TRUE/FALSE至少覆盖一次,每个判定点的TRUE/FALSE至少覆盖一次.
    组合条件覆盖:判定点中个个条件可能的组合至少出现一次.
                用例1:a=0,b=1,c=1,   a决定判定点的结果
                用例2:a=1,b=1,c=1,
                用例3:a=1,b=0,c=1,   b决定判定点的结果
                用例4:a=1,b=0,c=0,   c决定判定点的结果




    路径覆盖(覆盖度高): 基于流程图的,把流程图画出来,覆盖每一条路径
    覆盖度越高,测试设计越复杂,用例越多,执行起来耗时
    最终的用例,多种测试设计方法组合在一起使用
操作sqlite数据库,实现对数据库的增删改查功能
JDBC Mysql,sqlite有对应的jar,maven的官网上下载
*/
public class SqliteDb {
    //连接数据库
    private Connection connect() {
        //jdbc:subprotocol:subname
        // dbc: 数据库类型:数据库相对于工程的路径
        String url = "jdbc:sqlite:src/equ/db/equ.db";
        try {
            //加载类
            Class.forName("org.sqlite.JDBC");
            //连接数据库
            Connection conn = DriverManager.getConnection(url);
            System.out.println("连接数据库成功");
            return conn;
        } catch (Exception e) {
            System.out.println("连接数据库异常,异常信息为:" + e.getMessage());
        }
        return null;
    }

    //断开数据库连接
    private  void disconnect(Connection conn){
        try {
            conn.close();
        } catch (SQLException e) {
            System.out.println("连接数据库异常,异常信息为:"+ e.getMessage());
        }
    }
    //执行sql语句
    //执行插入,删除,更新类的操作,返回true/false
    private boolean executeUpdate(Connection conn,String sql){
        //Statement  是执行sql语句的接口
        Statement statement = null;
        try {
            statement = conn.createStatement();
            int count = statement.executeUpdate(sql);
            System.out.println("执行sql语句成功,影响" +count+"条数据");
            statement.close();
            return count>=1;
        } catch (SQLException e) {
            System.out.println("执行sql语句异常,异常信息为:"+ e.getMessage());
        }
        return  false;

    }
    //执行Sql语句,执行查询类的操作,返回查询的结果
    private List<Equ> executeQuery(Connection conn, String sql){
        List<Equ> equs = new ArrayList<>();
        Statement statement = null ;
        try {
            statement = conn.createStatement();
            ResultSet rs = statement.executeQuery(sql);
            if(rs !=null){//查询结果不为空
                while(rs.next()) {
                    //根据列名获取每一列的值
                    String id = rs.getString("id");
                    String name = rs.getString("name");
                    String location = rs.getString("location");
                    String baoFei = rs.getString("baoFei");
                    String buyTime = rs.getString("buyTime");
                    String baoFeiTime = rs.getString("baoFeiTime");
                    String record = rs.getString("record");
                    //根据获取的信息构造Equ对象
                    Equ equ = new Equ(id,name,location,baoFei,buyTime,baoFeiTime,record);
                    equs.add(equ);
                }
                System.out.println("执行sql语句,查询到"+equs.size()+"条数据");
            }
        } catch (SQLException e) {
            System.out.println("执行sql语句异常,异常信息为:"+ e.getMessage());
        }
        return equs;
    }
    // 创建表
    private  static  void initTable(){
        SqliteDb db = new SqliteDb();
        Connection conn = db.connect();
        db.executeUpdate(conn,"create table  if not exists equ(id varchar(8) primary key,"+
                "name varchar(32),location varchar(32),baoFei varchar(32),buyTime varchar(32),"
                +"baoFeiTime varchar(16),record varchar(128))");
        db.disconnect(conn);
    }
ate(conn,"create table  if not exists equ(id varchar(8) primary key,"+
         "name varchar(32),location varchar(32),baoFei varchar(32),"+
         "buyTime varchar(32),baoFeiTime varchar(16),record varchar(128))");
db.executeUpdate(conn,"insert into equ values('10002','14寸笔记本电脑','1018房间','否','2021-1-1','无','无')");
db.executeUpdate(conn,"insert into equ values('10001','14寸笔记本电脑','1018房间','是','2021-1-1','2021-2-1','2015-1-1换主板;2016-2-2增加内存')");
db.executeUpdate(conn,"delete  from  equ where id='10002'");
List<Equ> equs = db.executeQuery(conn,"select * from equ;");
System.out.println(equs);
db.disconnect(conn);

SqliteDb.initTable();
Equ equ = new Equ("10005","电视","1019房间");
SqliteDb.addEqu(equ);
Equ equ1 = new Equ("10006","路由器","1019房间"
,"否","2019-4-5","无","");
SqliteDb.addEqu(equ1);
SqliteDb.deleteEqu("10001");
SqliteDb.queryAll();

回复

使用道具 举报

关注0

粉丝0

帖子30

发布主题
大家都在学
课堂讨论
一周热帖排行最近7x24小时热帖
关注我们
专注软件测试菁英教育

客服电话:17792550360

客服时间:9:00-21:00

卓目鸟学苑 - 专注软件测试菁英教育!( 陕ICP备2025058934号-2 )

版权所有 © 西安菁英教育科技有限公司 2023-2026