软件测试学习笔记

学习笔记

环境搭建

  • jdk
rpm -ivh jdk		#安装JDK
rpm -e  #删除

vi /etc/profile		#修改JDK环境变量
  JAVA_HOME=/usr/java/jdk1.8.0_11
  JRE_HOME=$JAVA_HOME/jre
  CLASS_PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
  PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
  export PATH CLASS_PATH JAVA_HOME JRE_HOME
source /etc/profile	#刷新环境变量配置
  • MySQL

    • yum安装

    • rpm安装

      • 挂载光盘
      # 通过ls显示/dev目录下的列表,然后通过管道符过滤
      ls -l /dev | grep cdrom			#找到光盘完整路径名
      mount /dev/cdrom /mnt/cdrom		#将光盘挂载到/mnt/cdrom
      
    • 安装

      rpm -ivh xxx
      
  • Tomcat

  • MySQL配置登录名权限

use mysql;
update user set host='%' where host='localhost'

Linux

文件
#切换到家目录
cd
cd ~
cd /root
cd /home/spj

df -h		# 查看磁盘空间使用情况

history		#查看历史命令
!518		#518位历史命令编号,此命令可以执行编号对应的历史命令

touch 新建文件.txt		# 创建文件

wc profile				# 查看profile文件的  行数  文字总数  字符数  文件名

cat -n file			# 查看文件,显示行号不忽略空行
head -5 file			# 查看文件,前5行

vi file
	gg		# 跳转到第一行
	G		# 跳转到最后一行
	nG		# 跳转到第n行
	/文本		# 查找 按n切换
	:%s文本1/文本2/g	# 替换 加/g的话会全局替换,不加的话只替换每行的第一个匹配到的字符串
	u		#撤销
	
# 查找文件
find -name # 按照文件名查找
	 -size # 按照文件大小查找 +number 表示大于 -number 表示小于
	 -perm # 按照文件权限查找 例如: find -perm 755
	 -user # 按照文件属主查找文件
	 -group # 按照文件所属的组查找文件
	 -mtime -n +n # 按照文件的更改时间来查找,-n表示文件更改时间在n天以内,+n表示文件更改时间在n天以外
	 -type # 查找某一类型的文件
	 # find多条件组合
	 -a # 与
	 -o # 或
	 -not # 非
用户
uidgidgroups
用户ID组ID所属组集合
#用户
useradd 	#添加用户[-g 组ID(将用户添加到特定的组)]
passwd	用户名	#设置密码
usermod -g 组 用户名		#编辑用户
userdel -r 用户名		#删除用户的同时把该用户的家目录删除
userdel 用户名			#删除用户,但是不删除家目录
id 用户名		# 查看用户的用户ID、组ID、所属组集合

tail /etc/passwd
test:x:501:501::/home/test:/bin/bash
用户名:x:用户ID:组ID:昵称:家目录:shell类型

tail /etc/shadow
test:!!:18206:0:99999:7:::
用户名:密码:				#当用户没有设定密码时,密码显示为!!

#用户组
groupadd 组名		# 创建组
groupmod
groupdel 组名		# 删除用户组

tail /etc/gshadow	# 查看用户组信息

权限
chmod u+x 文件名  #改变读写权限  [u][g][o][a]用户 组 其他人 所有   [r][w][x]读写可执行

chown 用户:用户组 # 改变用户,用户组

chgrp  用户组		# 改变用户组
打包
zip -c 源文件 > 目标文件			# 压缩
unzip 源文件 -d 指定目录		   	# 解压 [d] 指定目录
gzip -c 源文件 > 目标文件			# 压缩,源文件存在
gzip 源文件 > 目标文件				# 压缩,源文件不存在
gunzip 源文件					# 解压
gzip -d 源文件					# 解压

tar -cvf 目标文件 源文件		#打包文件
tar -zcvf 目标文件 源文件		#打包文件,在打包同时进行压缩 [C]指定目录
tar -xvf 源文件			#解包
tar -zxvf 源文件			#解包

连接
# 软连接
ln -s 源文件 目标文件

测试用例设计

随机测试存在的问题

  • 不知道是否全名的测试了所有功能,测试的覆盖率无法衡量。
  • 对新版本的重复测试很难实施。
  • 无法对测试质量进行有效评估。
  • 无法形成有效的知识积累。

测试用例的概念

​ 比较预期结果与实际结果是否一致

​ 测试用例可以作为新手测试指南,也可以作为测试日志。

属性与特征

CMNI工具

用例编号用例标题操作步骤预期结果实际结果测试结论

测试结论:OK (通过) NG (不通过) NA (阻塞)

实际结果

bug信息(bug ID)

测试数据

Excel技巧

Ctrl+; 插入当前日期

=ROW()-1 当前行-1

设计原则

设计用例原则
  • 测试用例对需求覆盖的完整性
  • 测试用例的有效性
  • 测试用例的可理解性
  • 测试用例的清晰性
  • 测试用例的可维护性

冒烟测试:测试基础功能,周边功能先不测

设计方法

  • 等价类
  • 边界值
等价类方法
边界值分析法
判定表法
  • 条件桩:判定的所有条件
  • 动作桩:根据条件作出的动作

通过测试:测试系统实现了需求说明书中存在的功能,确定程序是否满足目标。

失败测试:蓄意攻击软件的薄弱环节,证明一个系统不做不需要它做的事情。

在实际的测试工作中可以按照以下原则运用测试技术:

  • 在任何情况下都必须使用边界值分析方法。
  • 用等价类划分法补充一些测试用例。
  • 用错误推测法增加一些测试用例。
  • 如果程序功能说明中含有输入条件的组合,应该在一开始就选择用因果图法。
  • 如果程序的某功能适合自动测试,则可采用自动测试方法以及随机测试方法进行测试。

数据库

登录

sqlplus 		-- 登录

alter user scott account unlock;		-- 解锁用户

conn				-- 切换用户

scott/tiger@orcl	-- 使用scott用户登录

alter user scott identified by tiger  -- 使用管理员用户把scott用户的密码修改

-- 创建用户
create user 用户名 identified by tiger

scott/tiger@orcl

空值

任何值和空值做算数运算返回的结果都是空值。

nvl(参数1,参数2)
若参数1不为空,返回参数1
若参数为空,返回参数2

select * from 表名 where 字段名 is null   -- 查询字段为空
select * from 表名 where 字段名 is null	 -- 查询字段不为空

强制修改列名显示

给自定义列名加双引号

连接符

|| 将两项结果拼接到一列显示(拼接字符串)

虚拟表

DUAL是一张虚拟表

select 字段 distinct from 表名		-- 去重
select sysdate from dual;		-- 获取当前系统时间

oracle下所有表挂靠在用户名下

select tname from tab;			-- 查找当前用户有哪几张表

数据类型

number(5) 最大长度为5位

number(7,2) 最大长度为7位,其中有两位小数

基础函数

to_date(‘2019-11-08 14:56:00’,‘yyyy-mm-dd hh:mi:ss’); 将字符串按指定格式转换为时间

to_char(sysdate,‘yyyy-mm-dd hh:mi:ss’) 将当前时间转化为指定格式字符串

分页

-- 实现一
select
 *
from(
 select emp.*,rownum rn from emp where rownum <= 10
) t
where 
 t.rn >= 5
 
 -- 实现二
 select
  *
 from(
  select emp.*,rownum rn from emp
 ) t
 where t.rn >=5 and t.rn <= 10
 
 -- 实现三
 select 
  *
 from(
  select emp.*,rownum rn from emp
 ) t
 where t.rn between 5 and 10

测试题

-- 1、查询emp表,显示薪水大于2000,且工作类别是MANAGER的雇员信息
select * from emp where sal > 2000 and job = 'MANAGER'

-- 2、查询emp表,显示年薪大于30000,工作类别不是MANAGER的雇员信息
select * from emp where (sal+nvl(comm,0))*12 > 30000 and job != 'MANAGER'

-- 3、查询emp表,显示薪水在1500到3000之间,工作类别以“M”开头的雇员信息
select * from emp where (job like 'M%') and (sal between 1500 and 3000)

-- 4、查询emp表,显示佣金为空且部门号为20或30的雇员信息
select * from emp where comm is null and deptno in (20,30)

-- 5、查询emp表,显示佣金不为空或部门号为20的雇员信息,按照薪水降薪排序
select * from emp where (comm is not null) or deptno = 20 order by sal desc

-- 6、查询emp表,显示年薪大于30000,工作类别不是MANAGER,且部门号不为10或40的雇员信息,要求按雇员姓名进行排序
select * from emp where ((sal+nvl(comm,0))*12 > 30000 and job != 'MANAGER') and deptno not in(10,40) order by ename 
 

单组函数

函数名功能
upper(str)将小写转化为大写
lower(str)将大写转化为小写
initcap(str)首字母大写
length(str)获取字符串的长度
nvl(em1,em2)非空判断,若em1为空返回em2,否则返回em1
nvl2(em1,em2,em3)非空判断,若em1为空返回em3,否则返回em2
replace(str,str1,str2)将str中的str1替换为str2
substr(str,pos,[length])返回从pos位开始截取str,截取length位后的字符串
floor(dou)向下取整
mod(num1,num2)取余,返回num1除num2后的余数
round(num1,num2)四舍五入,精确到小数点后num2位,num2默认是0
trunc(num1,num2)只舍不如,精确到小数点后num2位,num2默认是0
add_months(date,num)返回date时间在num月后的时间
last_day(date)返回输入时间的当前月最后一天
next_day(date,‘星期六’)返回距离输入时间最近的星期六
months_between(lastdate,fristdate)返回输入两个时间相隔的月数

转换函数

函数功能
to_date(str,form)将字符串按form格式转为日期
to_char(date,form)将输入时间按form格式转为字符串
to_number(str)将字符串转为数字

分支函数

函数功能
decode(字段,条件1,实现1,条件2,实现2,默认实现)判断字段,如果条件1符合就执行实现1,依次类推
case 字段 when 条件1 then 实现1 else 默认实现 end字段判断字段,如果条件1符合就执行实现1,依次类推

举例:

select decode(deptno,10,sal*1.5,20,sal*2,sal) from emp;

select job,sal,
  case job
    when 'SALESMAN' then sal+300
    when 'ANALYST' then sal+500
    else sal
  end
from emp;

分组函数(聚合函数)

函数功能
sum()求和
avg()求平均
max()求最大值
min()求最小值
count()求数量

00937:聚合函数不能与普通列同时检索,否则会报出 00937 的错误。除非有group by

00979:检索字段不在group by分组条件中

00934:where中不可以有分组,可以用having代替where做限制条件

group by可以提供多个分组条件,每个分组条件以","分隔。与order by的用法类似。

多表连接

select dname from emp,dept where emp.deptno = dept.deptno and ename='SCOTT';

select dname from emp join dept on emp.deptno = dept.deptno where ename='SCOTT';

-- 在join on的on中可以使用and来做多个条件判断
select dname from emp join dept on emp.deptno = dept.deptno and ename='SCOTT';

-- 需要两表之间有同名字段
select dname from emp join dept using(deptno) where ename='SCOTT';

-- 需要两表之间有同名字段
select dname from emp natural join dept where ename='SCOTT';

举例:

-- 在join on的on中可以使用and来做多个条件判断
select 
  emp.sal,salgrade.grade
from emp 
join salgrade on emp.sal >= salgrade.losal and emp.sal <= salgrade.hisal;

select
  emp.sal,salgrade.grade
from emp
join salgrade on emp.sal between salgrade.losal and salgrade.hisal;

-- 自连接
select t1.ename,t2.ename
from emp t1
join emp t2 
  on t1.mgr = t2.empno;

子查询


-- 单行子查询
select *
from emp
where deptno = (select deptno from emp where ename = 'SCOTT')
and ename = 'SCOTT'

-- 多行子查询
in (结果集)    -- 适用于等值比较
any (结果集)   -- 比较结果集返回的每一个结果,符合其中任意一个条件就返回true
all (结果集)   -- 比较结果集返回的每一个结果,符合其中全部条件就返回true

rownum只能用在比较<,<=时

集合运算符

union并集
intersect交集
minus差集

数据类型

number   可指定长度,默认38
int      22位整数
char     定长字符串 5位
varchar2 可变长字符串
date     日期类型

DML

可以回滚

create table emp2 as select * from emp

insert into tab2 select * from tab1

update tab2
set (feil1,feil2) = (
    select feil1,feil2 from tab1
)

rollback     -- 回滚
commit       -- 提交

DDL

不可以回滚,执行后立即生效

创建表
create table tab1 (
id number(2),
name varchar2(10)
)

create table tab2 as select * from tab1
修改表
-- 添加列
alter table tab add (feil1 type1,feil2 type2)

-- 删除列
alter table tab drop column feil;
alter table tab drop (feil1,feil2);

-- 编辑列
alter table tab modify feil type;

-- 修改列名
alter table tab rename column feilname1 to feilname2

-- 修改表名
rename tabname1 to tabname2
alter table tabname1 rename to tabname2

-- 清空表中数据
truncate table tab

删除表
  1. 从Oracle10g开始,删除数据库表的时候并不是真正删除,而是放到了recyclebin中,这个过程类似Windows中删除的文件放在回收站
  2. 通过show recyclebin可以查看被删掉的表的详细信息,或者查询 select * from recyclebin;/select * from user_recyclebin;
  3. 回收表的命令:flashback table 原表名 to before drop;
  4. 清空回收站:purge recyclebin;
  5. 删除表时不经过recyclebin:drop table 表名 purge;
-- 将表放入回收站
drop table tab;

-- 强制删除
drop table tab purge;

-- 查看回收站
select * from user_recyclebin;

-- 回收表
flashback table tab to before drop;

-- 清空回收站
purge recyclebin;

约束

Oracle有如下类型约束:

  • not null
  • unique key
  • primary key
  • foreign key
  • check
-- 查看约束
select * from user_constraints where table_name = 'tab'

-- 删除约束
alter table tab drop constraint 约束名

-- 使约束失效
alter table tab disable constraint 约束名

-- 使约束生效
alter table tab enable constraint 约束名

涉及到单列的是列级约束

涉及到多列的是表级约束

主键

非空约束、唯一约束

-- 添加主键
-- 1、创建表时添加主键
create table tab (
feil   type  primary key
)

-- 2、创建表后添加主键
alter table tab add primary key (feil)
alter table tab add constraint 主键名 primary key (feil)  -- 指定名字

-- 删除主键
alter table tab drop primary key cascade;

外键

一张表的外键必须是另一张表的主键

在向外键所在列插入值时,该值必须在另一张表中能找到对应的值

-- 添加外键
-- 普通外键约束
alter table tab 
add constraint 外键名 foreign key (主表字段)
references 外键表(外键表字段,该字段是外键表的主键)
-- 级联外键约束
alter table tab 
add constraint 外键名 foreign key (主表字段)
references 外键表(外键表字段,该字段是外键表的主键) on delete cascade
-- 置空外键约束
alter table tab
add constraint 外键名 foreign key (主表字段)
references 外键表(外键表字段,该字段是外键表的主键) on delete set null
非空
-- 添加非空约束
alter table tab modify feil not null

-- 添加唯一约束
alter table tab modify feil unique

视图

view

一段查询的快捷方式

修改视图中的数据,原表的数据也会改变

为了保护表结构不被发现,也可以保护表中的数据。同时也简化了查询的语句。

-- 创建视图
create view view1 as select * from tab

-- 创建或替换视图
create or replace view 
as 
select * from tab
where xxxxx with check option    -- 限制跟新,不能修改where中所用的条件的数据

-- 使用视图
select * from view1

with check option
with read only
-- 使用聚合函数做出的视图默认是只读的

索引

-- 创建索引
create index indexName on tab(feil)

权限

-- 赋予用户创建视图权限
grant create view to 用户名
grant create any view to 用户名

-- 回收用户创建视图权限
revoke create view from 用户名
revoke create any view from 用户名

grant     -- 赋权 
revoke    -- 回收权限

-- 赋予会话权限
grant create sessin to 用户名

-- 赋予连接者角色
grant connect to 用户名

-- 赋予资源管理者权限(可操作表)
grant resource to 用户名

-- 赋予user2查看user1的tabName表的权限
grant select on user1.tabName to user2
      insert
      update
      delete
      all

-- 系统权限传递
grant resource to userName with admin option
-- 对象权限传递
grant select on user1.tab to user2 with grant option

connect    -- 连接者

resource   -- 资源者

当系统权限放权给第三方后,第二方权限被回收后,第三方不受影响

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值