我的账户
啄木鸟学院

专注软件测试菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

java_刘国平_2021.03.15

[复制链接]
果丹卷学员认证 发表于 2021-3-15 21:01:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
一、白盒测试
1.白盒测试,JUnit 是 Java自带的单元测试框架。Testng测试框架
    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||)是一个判定点,该判定点包含三个条件。
            判定点是由一个条件或多个条件组合成的。每个条件的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
            用例2:a=1,b=0,=1  b决定判定点的结果
            用例2:a=1,b=1,c=1  c决定判定点的结果
    路径覆盖(覆盖度高):基于流程图,把流程图画出来,覆盖每一条路径
    覆盖度越高,测试设计越复杂,用例越多,执行起来耗时。
    最终的用例,多种测试设计方法组合在一起使用。
二、SQLite增删改查
  1. package equ.utils;
  2. import equ.model.Equ;
  3. import java.sql.*;
  4. import java.util.ArrayList;
  5. import java.util.List;

  6. /*
  7. 操作sqlite数据库,实现对数据库的增删改查功能
  8. JDBC   Mysql、sqlite有对应的jar, maven的官网上下载。
  9. */
  10. public class SqliteDb {
  11.     //连接数据库
  12.     private Connection connect(){
  13.         //jdbc:subprotocol数据库类型:subname数据库相对于工程的路径
  14.         String url = "jdbc:sqlite:src/equ/db/equ.db";
  15.         try{
  16.             //加载类
  17.             Class.forName("org.sqlite.JDBC");
  18.             //连接数据库
  19.             Connection coon = DriverManager.getConnection(url);
  20.             System.out.println("连接数据库成功");
  21.             return coon;
  22.         }catch (Exception e){
  23.             System.out.println("连接数据库异常,异常信息为:"+e.getMessage());
  24.         }
  25.         return null;
  26.     }
  27.     //断开数据库连接
  28.     private void disconnect(Connection coon){
  29.         try{
  30.             coon.close();
  31.         }catch (SQLException e){
  32.             System.out.println("断开数据库异常,异常信息为:"+e.getMessage());
  33.         }
  34.     }
  35.     //执行sql语句,执行插入、删除、更新类的操作,返回true/false
  36.     private boolean executeUpdate(Connection coon,String sql){
  37.         //Statement是执行sql语句的接口
  38.         Statement statement=null;
  39.         try {
  40.             statement=coon.createStatement();
  41.             int count=statement.executeUpdate(sql);
  42.             System.out.println("执行sql语句成功,影响"+count+"条数据");
  43.             statement.close();//return之前释放
  44.             return count>=1;
  45.         }catch (SQLException e){
  46.             System.out.println("执行sql语句异常,异常信息为:"+e.getMessage());
  47.         }
  48.         return  false;
  49.     }
  50.     //执行sql语句,执行查询类的操作,返回查询的结果
  51.     private List<Equ> executeQuery(Connection coon,String sql){
  52.         List<Equ> equs = new ArrayList<>();
  53.         Statement statement=null;
  54.         try{
  55.             statement=coon.createStatement();
  56.             ResultSet rs =statement.executeQuery(sql);
  57.             if(rs !=null){//查询结果不为空
  58.                 while(rs.next()){
  59.                     //根据列名获取每一列的值
  60.                     String id=rs.getString("id");
  61.                     String name=rs.getString("name");
  62.                     String location=rs.getString("location");
  63.                     String baoFei=rs.getString("baoFei");
  64.                     String buyTime=rs.getString("buyTime");
  65.                     String baoFeiTime=rs.getString("baoFeiTime");
  66.                     String record=rs.getString("record");
  67.                     //根据获取的信息构造Equ对象
  68.                     Equ equ = new Equ(id,name,location,baoFei,buyTime,baoFeiTime,record);
  69.                     equs.add(equ);
  70.                 }
  71.                 System.out.println("执行sql语句,查询到"+equs.size()+"条数据");
  72.             }
  73.         }catch (SQLException e){
  74.             System.out.println("执行sql语句异常,异常信息为:"+e.getMessage());
  75.         }
  76.         return equs;
  77.     }

  78.     //创建表
  79.     public  static  void initTable(){
  80.         SqliteDb db = new SqliteDb();
  81.         Connection coon = db.connect();
  82.         db.executeUpdate(coon,"create table if not exists equ(id varchar(8) primary key,name varchar(32),location varchar(32),baoFei varchar(2),buyTime varchar(16),baoFeiTime varchar(16),record varchar(128));");
  83.         db.disconnect(coon);
  84.     }
  85.     //添加设备
  86.     public static  boolean addEqu(Equ equ){
  87.         //获取设备的属性
  88.         String id =equ.getId();
  89.         String name=equ.getName();
  90.         String location =equ.getLocation();
  91.         String baoFei=equ.getBaoFei();
  92.         String buyTime=equ.getBuyTime();
  93.         String baoFeiTime=equ.getBaoFeiTime();
  94.         String record = equ.getRecord();

  95.         SqliteDb db = new SqliteDb();
  96.         Connection coon = db.connect();
  97.         String sql=String.format("insert into equ values('%s','%s','%s','%s','%s','%s','%s');",id,name,location,baoFei,buyTime,baoFeiTime,record);
  98.         boolean bool =db.executeUpdate(coon,sql);
  99.         db.disconnect(coon);
  100.         return  bool;
  101.     }
  102.     //删除设备
  103.     public static boolean deleteEqu(String id){
  104.         SqliteDb db = new SqliteDb();
  105.         Connection coon = db.connect();
  106.         String sql=String.format("delete from equ where id='%s';",id);
  107.         boolean bool =db.executeUpdate(coon,sql);
  108.         db.disconnect(coon);
  109.         return  bool;
  110.     }
  111.     //查找设备
  112.     public  static  List<Equ> queryAll(){
  113.         List<Equ> equs =new ArrayList();
  114.         SqliteDb db = new SqliteDb();
  115.         Connection coon = db.connect();
  116.         String sql="select * from equ;";
  117.         equs =db.executeQuery(coon,sql);
  118.         db.disconnect(coon);
  119.         return equs;
  120.     }
  121.     //根据名字模糊查找
  122.     public static List<Equ> queryByName(String name){
  123.         //select * from equ where name like '%'
  124.         List<Equ> equs =new ArrayList();
  125.         SqliteDb db = new SqliteDb();
  126.         Connection coon = db.connect();
  127.         equs =db.executeQuery(coon,"select * from equ where name like '%"+name+"%';");
  128.         db.disconnect(coon);
  129.         return equs;
  130.     }
  131.     //更新设备信息,根据id修改其他信息
  132.     public static  boolean updateEqu(Equ equ){
  133.         String id =equ.getId();
  134.         String name=equ.getName();
  135.         String location =equ.getLocation();
  136.         String baoFei=equ.getBaoFei();
  137.         String buyTime=equ.getBuyTime();
  138.         String baoFeiTime=equ.getBaoFeiTime();
  139.         String record = equ.getRecord();
  140.         SqliteDb db = new SqliteDb();
  141.         Connection coon = db.connect();
  142.         String sql=String.format("update equ set name='%s',location='%s',baoFei='%s',buyTime='%s',baoFeiTime='%s',record='%s' where id='%s';",name,location,baoFei,buyTime,baoFeiTime,record,id);
  143.         boolean bool =db.executeUpdate(coon,sql);
  144.         db.disconnect(coon);
  145.         return  bool;
  146.     }
  147.     //测试代码
  148.     public static void main(String[] args) {
  149.         //建表
  150.         SqliteDb.initTable();
  151.         //添加设备
  152.         Equ equ1 = new Equ("10002","电视","1019房间");
  153.         SqliteDb.addEqu(equ1);
  154.         Equ equ2 = new Equ("10003","路由器","1019房间","否","2019-4-5","无","无");
  155.         SqliteDb.addEqu(equ2);
  156.         Equ equ3 = new Equ("10004","路由器","1019房间","否","2019-4-5","无","无");
  157.         SqliteDb.addEqu(equ3);
  158.         //删除
  159.         SqliteDb.deleteEqu("10001");
  160.         //查询所有
  161.         System.out.println(SqliteDb.queryAll());
  162.         //模糊查询
  163.         System.out.println(SqliteDb.queryByName("路由"));
  164.         //更新设备信息,根据id修改其他信息
  165.         Equ equ = new Equ("10001","笔记本","1020房间","否","2019-4-5","无","无");
  166.         SqliteDb.updateEqu(equ);
复制代码


回复

使用道具 举报

关注0

粉丝0

帖子15

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

客服电话:17792550360

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

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

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