admin管理员组

文章数量:1530353

绝大多数的应用都跟数据紧密相关,比如weixin,QQ,都需要存放大量的数据信息:联系人信息、发送的信息、朋友圈信息等等。这些信息绝大多数是存放在关系型数据库中。
因此,软件测试工程师对数据库的了解,是基本的要求。具体说来,测试工程师应该具备哪些知识呢?我们从测试的各个环节来讲吧。
首先,你需要了解软件的需求。软件的需求,涉及到数据的部分,比如字段的定义,类型,长度,特别是一致性(比如,一个用户名,在输入的时候用到,在打印输出的地方也会用到,在其他联系人的联系信息中也会用到)。因此,在了解软件需求的时候,我们需要一个“数据字典”,作为今后测试的基础。

 开始设计测试用例了,我们需要知道,如何获得基础的测试环境的预埋数据。比如,你想要测试存款功能,那么怎么获得一个账号呢?——从数据库中查找。你需要了解:1)如何访问数据库,数据库的配置信息;2)数据库访问的客户端;3)sql语句;4)数据库定义(就是你从那张表中查找数据);5)如何把查询出来的数据“取”到本地。对照数据字典,和需求,你还需要知道这些字段有那些限制,比如数据库的限制是否和需求一致;也可以查看是否软件的界面等符合数据字典的要求(一致性)。
此外,在设计检查点的时候——特别是数据库检查点,必须要了解你的检查点数据如何从数据库中查找出来?有时候不是一个table能够包含的,就需要多个表、甚至过滤、处理数据来比对。
然后,测试用例经过了评审,需要执行了。你需要知道如何准备测试环境,最重要的部分是准备测试的基准数据环境。可能用户会给你一个现有的数据库,那么需要你做数据清洗(可能),以保证客户信息不被泄露;现有的数据,可能存在的问题是很多边界条件没有数据,因此还需要“造”很多数据,这就需要你熟练使用create语句来创建数据,包括使用ER图工具来查看数据库结构。创建基础的数据环境完成之后,我们就需要备份这个数据库(打他base),你需要熟悉数据库的备份命令——备份是为了恢复,因为我们往往不会只测试一个轮次,起码需要回归。因此,还需要恢复数据库的命令语句。

  假设你要做自动化测试,那你要做的是把手工测试中的准备数据、数据库检查点,编写成sql的语句,俗称embed,潜入到脚本语言中。
  从以上来看,我们需要熟练的掌握数据库的知识,包括:数据字典、ER图,查询语句,创建数据的语句,以及如何在脚本中使用这些语句来访问数据库。

软件测试之必备数据库知识
数据库简介:
1.Oracle数据库
• 提起数据库,第一个想到的公司,一般都是Oracle(甲骨文)

2.SQL Server数据库:微软开发的,是web最流行的用于存储数据的数据库,广泛应用于电子商务,银行,保险,电力等与数据库有关的行业

收费且不好用,因此,如今用的越来越少
3.MySQL数据库(被Oracle收购)

4.操作命令:
• 启动:mysql; (Linux中启动:sudo service mysql start)
• 清屏:clear;
• 退出:exit;
登录(进入)mysql常用的是:mysql -u root -p; (-u用户名,-p用户密码,其中如果没有设置用户名则root为默认的用户名)
o 敲击后会提示输入密码(输入后没有显示,隐码输入),如果刚安装好MYSQL没设置密码,超级用户root是没有密码的,故直接回车即可进入到MYSQL中
• 显示当前所有数据库:show databases;
• 进入(切换到)一个数据库:use 数据库名;
• 显示当前数据库内容(数据库的所有表):show tables;
• 显示某个表的所有数据:select * from 表名;
• 显示表中的一些字段:select 字段1,字段2,字段3 from 表名; 例如:select id,name,salary from tbwork;
• 创建表:create table 表名
(id int,
name char(10),
age int,
score float);(各个属性和对应类型设置好即可)
例1:
create table stu
(id int,
name char(10),
age int,
score float);

o 显示表:show tables;
o 显示表stu的结构:desc stu;(或者describe stu;)
例2:创建表class,id设置为主键,班级人数默认值为30(如果你不设置人数默认为30): PS:一旦id设置为主键,则在插入数据不能重复,且插入数据时必须加上id
create table class
(id int primary key, (若要不为空:id int primary key not null,)
name char(20),
num int default 30);

o 插入:insert into 表名(字段) values(字段) PS:多个加s

  1. 接着插入一条数据到表stu:insert into stu(id,name,age,score) values(101,‘Tom’,20,98);
    PS:前面几个字段,后面对应几个字段,字符串用单引号或者双引号;
    2.插入一条数据到表class,不写班级人数:

    o 数据为:id是1004,name为Water
    o 命令:insert into class(in,name) values(1004,‘Water’);
    o 紧接着查询class的信息:select * from class; (发现1004的人数为30,因为没有插入人数,上面默认人数为30)
    • 修改表stu:
    o update 表名 set 修改字段和值 where 哪个id;
    o 例如:修改表stu中id为101的分数为96:update stu set score=96 where id=101;
    o 例如:表stu中每人年龄每过一年加1,怎么修改:update stu set age=age+1;
    o 修改stu的结构,在stu中增加地址addr:alter table stu add addr char(60); (此时select * from stu可以发现表中score后面多了addr一项)
    o 紧接着想在score和addr中间加生日bd:alter table stu add bd char(6) after score;
    o 接着想改bd为出生年份year:alter table stu change bd year int;
    o 删除字段year:alter table stu drop year;
    • 查询:
    o 选择查询某一列:select 字段 from stu; 例如:select id from stu; (多列加上多个字段即可)
    o 有条件选择某一行:select * from stu where 条件;
    o 例如:
    o select * from stu where id=101;
    o select * from stu where score>96;
    o select * from stu where score<96 and score >94;
    o select * from stu where score<96 and id=107;
    o select * from stu where score>97 or score<93;
    o select * from stu where name=‘Rose’;
    select * from stu where name like ‘xLx’;(like是通配符,xLx表示只要name中包含L的都选择查询出来)
    select * from stu where name like ‘Lx’;(Lx表示name中L在开头的)
    select * from stu where name like ‘xL’;(Lx表示name中L在最后的的)
    select * from stu where score like ‘x9x’;(分数score中有9的)


o
o select * from stu where id=101 or id=102 or id=103; 等价于:select * from stu where id in(101,102,103); (用in()集合更方便)
• 多表复合查询:
o 例如:
o 在上面的表中,查询表work中id等于表salary中工资salary为8500的wid的信息:select * from work where id=(select wid from salary where salary=8500);

本文标签: 工程师数据库测试知识软件