一、了解什么测试中的bug 、以及流程 (一)市面上有哪些bug管理工具?特点是什么? 目前市面上用的bug管理工具还是挺多的,就比如:日事清、JIRA(付费)、Trac、Gitlab、pingCode、禅道(zentao)、QC、TAPD等,具体什么特点,读者名可以自行的去百度前三行了,详细很多官网或其他博主讲的已经非常详细了,这里就不一一解说了。其中很大公司使用的是禅道这款管理工具。 禅道是第一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。 有机会大家可以下载试着玩一下,需要软件包的朋友可以加我下面的QQ群或留言私聊我。
(二)你之前公司的bug管理流程是怎么样的? (很重要) 提单:测试人员发现bug,提交bug到bug管理工具(项目管理工具) 仲裁:公司里面有话语权的大佬 规范审核:测试经理对提交的bug进行规范审核 BUG管理流程一(重点):
BUG管理流程二:
bug管理流程(重点-参考BUG管理图一): (1)多名测试人员发现bug并且提交bug到bug管理工具。 (2)测试经理会对提交的bug进行规范审核。 (3)测试经理如发现提交bug已经存在则给到测试人员进行确认。 (4)测试人员确认是重复的bug则直接丢弃,如不存在则把bug重新给到测试经理进行规范审核该bug是否重复,如果确认不是重复的bug,测试经理则将bug发送至开发经理。 (5)开发经理分配给到具体的开发人员。 (6)开发人员会对bug进行确认,确认测试提交的bug是否为有效bug,如果该bug确认有效则会根据项目的进度,对bug进行修复(越严"重的bug修复的优先级越高),bug修复完成后,提交至测试经理。 (7)测试经理分配给到具体的测试人员进行回归测试(bug级别比较严重会直接给到bug的发起人进行回归测试)。回归测试通过则关闭bug,如果进行回归测试不通过,则把bug重新激活。
(三)bug的级别有哪些? | | | | | | | | 1、常规操作引起的系统崩溃、死机、死循环、白屏、crash。 2、造成数据泄漏的安全性问题,比如恶意攻击造成的账户私密信息泄露 3、涉及金钱,如支付类软件,金钱计算错误 | | | | 次主体功能 1、重要功能不能实现(例如:微信没有实现语音聊天、朋友圈,等) 2、错误的波及面广,影响到其他重要功能正常实现 3、非常规操作导致的程序崩溃、死机、死循环 (非常规操作:用户使用软件时不会进行的操作) 4、外观难以接受的缺陷(例如:直播平台的封面图片的失真、压缩,完全变形) 5、密码明文显示 | | | | 不影响产品的运行、不会成为故障的起因、但对产品外观和下道工序影响较大的缺陷 涉及到其他功能的使用 1、次要功能不能正常实现 2、操作界面错误(包括数据窗口内列名的定义,含义不一致)(例如:列名与列名下的内容不一致) 3、查询错误、数据错误显示 4、简单的输入限制未放在前端进行控制;(格式显示,如登录和注册中的格式判断可由前端判断) 5、删除操作未给出提示 | | | | 程序在一些显示上不美观,不符合用户习惯,或者是一些文字的错误 1、界面不规范 2、辅助说明描述不清楚 3、提示窗口文字未采用行业术语 4、界面存在文字错误 5、改进意见:可以提高产品质量的建议, 包括新需求和对需求的改进 |
(四)一条完整的bug应该包含哪些信息?
(五)bug的状态有哪些? | | | | | | | | | | | | | | | | | | | | | | | | | | | 回归bug时发现bug依然存在或者产生了新的bug,将bug状态修改为reopen |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 2、重现不了,与产品和开发一起确认关闭(依据bug的严重程度) | | | | | | | | | | | | | | | | | |
(六)bug面试问题 问:如果出现偶现bug怎么解决? 首先我会根据上次操作步骤进行重现,如果出现了BUG,我会截图并保存并比较BUG给开发,如若不能重现,我会反馈给测试经理或产品经理进行反馈。
二、MySql在Linux环境下安装 () 在线安装mysql命令: yum install mysql yum install mysql-server
三、MySql各种指令使用介绍 (一)MySQL服务语句 | | | | | | | | | | | | | | | | | | | mysqladmin -uroot password "123456" | | | | | | | |
(二)MySQL查询数据库、表结构语句 | | | | | | | | | | | | | | | | | | | | | | | | | | | | create table+表名(字段1名称 数据类型 约束,字段2名称 数据类型 约束) | | | | | | | | | | | | | int数据类型的存储数据值的范围为-2147483648 至 2147483647 | | | | | | | | | | | | | | | | | | 主键约束:具有唯一性,设置为主键的字段对应的值必须唯一 | | | | | | | | | | | | |
(三)MySQL修改表结构 | | | | | | desc+表名;(显示字段名称,数据类型,约束,备注) | | | | alter table +表名 rename +新表名 | | | | alter table +表名 change+原字段名+新字段名+数据类型+约束 | | | | alter table +表名 add+字段名+ 数据类型+约束; | | | | alter table +表名 add+字段名+ 数据类型+约束 first; | | | | alter table +表名 add+字段名+数据类型+约束 after+字段名; | | | | alter table +表名 add(字段1+数据类型,字段2+数据类型); | | | | alter table +表名 drop +字段; | | | | alter table +表名 drop 字段1,drop 字段2; | | | | alter table +表名 change 字段名+字段名+数据类型 auto_increment; | | alter table +表名 modif 字段名 +数据类型 auto_inrement; | | | | alter table student drop primary key; (如果同时有主键和自增约束,没办法直接删除主键约束,需要先删除自增约束,实例如下) alter table student modify id int; alter table student change id id int; | | | | alter table student modify sid int primary key auto_increment; | | | | | | | | alter table 表名 alter[size=10.5000pt] column 字段名 drop default; (若本身存在默认值,则先删除) alter table 表名 alter column 字段名 set default 默认值;(若本身不存在则可以直接设定) alter table 表名 change age age int not null default 222;(修改默认值方式二) alter table 表名 modify age int not null default 222;(修改默认值方式三) | | | | alter table student change sex sex varchar (20) ; | | alter table student modify sex varchar (20) ; | | alter table student modify class int first ; | | modif和change区别是modif不能改字段名称,而change可以;modif可以修改表字段位置,而change不可以。 |
(四)MySQL备份表,备份数据,备份数据库,还原数据库 | | | | | | | | | | | | insert into +表名 select * from+表名 注意点:插入的表必须要存在 | | | | insert into +表1(字段1,字段2) select 字段1,字段2 from表2 (表相同情况下)insert into +表1 select from表2 注意点: 1.插入的表必须存在 ⒉.插入的表是新表,没有数据。 | | | | mysqldump -uroot -p 数据库名>脚本名 | | | | |
(五)MySQL增、删、改语句 | | | | | insert into+表名+values(字段1值,字段2值..) | insert into+表名+values(字段1值,字段2值..),(字段1值,字段2值...) | | insert into+表名(字段1,字段2) values(字段1值,字段2值) | insert into+表名(字段1,字段2) values(字段1值,字段2值),(字段1值,字段2值) | | | | | | | | | | 注:TRUNCATE,DELETE,DROP放在一起比较: TRUNCATE TABLE:删除表中所有行,表结构,列,约束保存不变; DELETE TABLE:按条件删除表数据; DROP TABLE:删除表结构和表数据; | | | update+表名+ set+字段名 = 值 where 条件 |
(六)MySQL单表查询语句 | | | | | | select * from+表名 (“*”代表所有[size=10.5000pt]) | | | | | | | | | | select * from+表名 where 字段[size=10.5000pt]=值 (where后面接满足的条件[size=10.5000pt]) | | | | select * from+表名 where字段!=value[size=10.5000pt](“! =”代表不等于,也可以用符号”<>“代表不等于[size=10.5000pt]) | | | | select * from+表名where 条件1 and 条件2 (and关键字左右的两个条件必须同时满足[size=10.5000pt]) | | | | select * from+表名where条件1 or 条件2 (or关键字左右的两个条件至少满足1个,否则返回空[size=10.5000pt]) | | | | select * from +表名 where字段 between m and n (between...and ...指定一个范围) | | | | select *from+表名where字段in(值1,值2,值3) | | | | select * from+表名where字段not in(值1,值2,值3) | | | | select * from+表名where字段 is null(注意:字段是空不能写成字段=null) | | | | select * from+表名where字段is not null | | | | select * from+表名where字段like“%值%"(%用于匹配字段开头和结尾) | | | | select * from+表名 limit n(n指限定的下标,意思是前n行数据) | | select * from+表名 limit m,n(m指下标,n指限定的数量,下标为m的开始的n条数据) | | | | select * from+表名order by 字段 asc (order by ...asc 从小到大排序) | | | | select * from+表名order by 字段 desc (order by ... desc从大到小排序) | | | | select * from+表名group by字段 (group by ...根据字段分组) | | | | select *from+表名group by 字段 having 条件 (having跟在group by后面,作用相当于where) | 【拓展】检查字符长度:查找字符为7位、或大于7位的方法 | select * from student where length(name) >=7 select * from student where name like '_______' |
(七)MySQL聚合函数 | | | | | | | | | | | | | | | | | | | | | | | | | | select distinct(字段) from+表名 | 【实例】select class,sum(math) from student where sex=1 group by class having sum(math)>100; | | | | 3、group by后面不能接where,但是where后面可以接group by(相当于where先筛选过滤遍,然后在通过group by 进行分组) | | 5、group by分组函数的一般和聚合函数一起使用,不能和除了分组以外的字段结合使用 | |
(八)数据库用户权限操作 | 如何给普通的数据库用户赋予相应的权限(如增删改查)∶ | | use mysql; service iptables stop(补充:关闭linux系统防火墙[size=10.5000pt]) | 2.查询:mysql数据库服务器已经创建的所有用户 | select host,user from user; | | (本地用户)show grants for "用户名" @"localhost";(usage没有任何权限、all所有权限) | (远程用户)show grants for '用户名'@'%; | | (本地用户)insert into user(host,user,password)values('localhost','用户名',password('密码')); | (远程用户)insert into user (host,user, password) values("[size=10.5000pt]%",'用户名',password('密码')); | 创建用户后需要刷新下:flush privileges; | 注意:password('密码')的目的是为了给括号里面的密码进行加密、%表示远程用户 | | (部分权限)grant select,update,delete,drop on *.* to 'wang' @'localhost' identified by'123456' | (所有权限)grant all on *.* to '用户名' @'localhost' identified by'密码'; | 创建用户后需要刷新下:flush privileges; | 注意:*.*,第一个*表示所有库,第二个库表示所有表 | | grant all privileges on *.* to 'dcs'@'%' identified by '123456; | 授予一个普通用户dcs及密码为123456,允许其可以通过所有客户机访问本数据库下所有的库及所有的表,假如为localhost只能在本地进行访问。 | | update user set password=password(123456') where user='root;(修改root用户的密码) | | delete from user where user='zhongguo'and host='localhost;(删除用户) | | revoke all on *.* from 'dcs'@'%';(取消所有权限0 | revoke select,update,delete on *.* from 'dcs'@'%';(取消所有权限0 | | | | | | | 2、查询user表中存在哪些用户: select host,user,password from user; | 3、插入一个本地用户dcs,通过password函数对明文密码进行加密 insert into user(host,user,password) values("localhost","dcs",password("123456")); | | 5、查看本地用户dcs具有哪些权限(显示USAGE表示没有权限/ALL表示所有,然后再进行授权操作): show grants for "dcs"@"localhost"; | 6、授予本地用户dcs对所有的库下所有的表具有所有的操作权限: grant all privileges on *.* to "dcs"@"localhost" identified by "123456"; | | 8、移除本地用户dcs所有的库下所有表的所有权限: revoke all privileges on *.* from "dcs"@"localhost"; | 9、(拓展是否需要)修改数据库的用户密码: update user set password=password("654321") where user="dcs" and host="localhost"; 将本地用户dcs的密码修改为“654321” |
|