• 测试从业人员常用的数据库技能整理


    本篇文章主要列举一些测试人员常用的SQL技能,作为一名测试从业人员,一般涉及到数据库的那些方面,希望给一些入门但是没头绪的小伙伴一些帮助。

        首先梳理一下本人在工作中遇到的一些数据库使用场景(我目前从事的是管理系统网站的测试):

    •  本地搭建测试环境,数据库的导出导入
    •  页面上报SQL异常分析
    •  数据库简单的增删改查
    •  批量插入数据或者是查询
    •  树结构查询

     1、本地搭建测试环境,数据库的导出导入

      项目开发的初期,或者说测试介入测试的时候,一般是集成测试阶段,一般是在开发库上开发,如果开发人数较多,经常会造出一些脏数据,不利于我们验证,或者测试,此时我们需要有一个专门用于测试的干净数据库,如果公司服务器可以开个账号最好,如果不可以,也可以在本地导入一个数据库辅助测试。

      流程一般是:从服务器导出dmp文件 >> 在指定服务器创建用户、赋权>> 将导出的dmp文件导入到指定数据库的指定用户(以ORACLE数据库11G为例)

    •  导出

       将user1的所有资源导出为/home/oracle目录下的test.dmp文件,输入日志为同级目录下的log.log文件

    exp user1/123456 file=/home/oracle/test.dmp log=/home/oracle/log.log owner=user1
    •  创建用户、赋权

      创建表空间,表空间名字为TEST,存储文件为TEST.ORA,初始带下为524兆,空间不够时每次自增100兆。

    create tablespace TEST datafile 'TEST.ORA' size 524m autoextend on next 100m;

       创建用户名为test,密码默认为123456,指定表空间为TEST

    create user test identified by 123456 default tablespace TEST;

    赋权,给test增加连接、访问资源、管理员权限

    grant connect,resource,dba to test;
    •  导入 

    将导出的dmp文件导入到指定用户

    imp test/123456 file=E:/test.dmp log=E:/log.log fromuser=user1 touser=test ignore=y

     2、页面上报SQL异常分析

      上文也说了,项目初期,问题肯定会存在,比如说表缺失或者字段缺失等等问题,web界面上会报比较明显的问题,此时你需要把日志中的对应sql拎出来执行分析问题,找到缺失的表或者对应的表和字段,在SVN上找到对应的脚本,在测试数据库执行一下,此时问题就解决了(这种小问题,需要测试人员自己解决,不然都找开发,一方面是效率太低,一直打扰别人工作,因为很常见,另一方面是显得测试价值更低【手动捂脸】)

    PS:一般情况下,开发库都是齐全的,可以直接找到然后生成对应的脚本,刷一下即可。

     3、数据库简单的增删改查

      数据库其实还是和测试息息相关的技能,像简单的查询定位问题,插入测试数据来减少工作量,以及部分字段类型长度的修改这些简单技能还是需要掌握的,市面上搜一下测试工程师,SQL基本都是必备技能了,可以不精通,但是必须要会~

     4、批量插入数据或者是查询

    ----循环修改记录
    declare
      P_id varchar2(100);
      P_Name varchar2(100);
      conNum number;
    begin      
         --循环记录中的 P_id、P_Name(查询结果集循环)--
         for item in (select A.P_id,A.P_Name from VIEW_1 A) loop
             -- 将查询到的数据赋值给变量 --
             P_id := item.P_id;
             P_Name := item.P_Name;      
             -- 获取 P_Name 是否存在(查询结果集赋值)---
             select COUNT(*) into conNum from VIEW_2 where NAME=P_Name;
             --判断是否存在,存在则将结算单位ID赋给货主的TmsCode --
             if conNum = 1 then
                  dbms_output.put_line('存在');
                    --执行修改--
                  update VIEW_2 set VIEW_2.VIEW_2 = P_Name where NAME = P_Name;
             else
                  dbms_output.put_line('不存在');
                  --执行新增--
             end if;
                    
          end loop;    
    end; 

      5、树结构查询

    connect by 是结构化查询中用到的,其基本语法是:
    select * from tablename
    start with 条件1
    connect by 条件2
    where 条件3;
    例:
    select * from table
    start with org_id = 'AAA'
    connect by prior org_id = parent_id;

      其中 :

    CONNECT BY :代表的是父子连接关系, PRIOR运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。
    START WITH:不但可以指定一个根节点,还可以指定多个根节点。

    新手上路,有问题欢迎指正【手动谢谢】~ 

     

     

  • 相关阅读:
    java中Excel导出
    springmvc接收各种参数
    restTemplate使用
    java中io流的操作
    在线Cron表达式生成器
    springBoot实现socketio
    maven的使用
    idea中导入githup项目
    java 单例模式之线程安全的饿汉模式和懒汉模式
    spring定时任务的集中实现
  • 原文地址:https://www.cnblogs.com/leixs/p/13176900.html
Copyright © 2020-2023  润新知