基础的软件测试面试题及答案
1.自我介绍
虽然简历中都有信息,但是这也是一个必经的流程,不仅是展示个人信息和专业技能,同时也在展示语言组织能力,沟通能力甚至亲和力等等...
2.上一家公司测试和开发有多少人
国内的比例一般是1个测试对应4-5个开发(个别大公司可能对应的开发会到3)
3.介绍一下之前的测试流程
提前拿到需求自己先熟悉和找到疑问、错误的地方-需求评审会议-编写测试点(测试用例)-用例评审-提测后进行测试-提交bug-回归bug-输出测试报告
需求评审会议参与人员:产品、开发、测试
4.挑一个你的项目说一下
描述项目的概述、业务逻辑、功能模块。同时也可以介绍自己在项目中的角色定位,负责的模块,使用的测试方法和工具等.....(面试官也可能会突然多问一个,建议简历中的项目都准备一下)
5.用的什么数据库,版本号是多少。(专业技能上面试官可能会从专业技能的第一条开始提问)
Mysql、达梦、MongDB等等....
版本号请根据你熟悉的数据库描述
6.(我这里以Mysql为例)说一下左连接、右连接和自连接
left join 和 right join 其中left join是查询出左边的所有以及和右表关联的数据,而right join是查询出右表的所有和左表关联的数据。
自连接(inner join):from 表 别名1 表 别名2 where 表1.xx = 表2.xx
7.数据库的增删改
删除命令:delete、drop、truncate
delete :
用于从表中删除满足特定条件的行。
支持 WHERE 子句来指定删除条件。可以触发外键约束。
操作会逐行进行,因此对于大量数据的删除可能比较慢。
操作会记录详细的行更改日志,这有助于恢复数据或审计。
delete from 表名 where 条件
;
drop:
用于删除整个表或数据库对象(如表、视图、索引等)。
使用 DROP 删除表时,表的所有数据、结构和索引都会被删除,且不可恢复。
DROP 操作通常比 DELETE 快,因为它删除整个对象而不是逐行删除。
drop table 表名
;
truncate:
用于快速删除表中的所有行。
不支持 WHERE 子句,它删除表中的所有数据,但保留表结构和索引。
操作非常快,因为它通过删除整个表的数据页来工作,而不是逐行删除。
不能触发外键约束。
truncate table 表名
;
增加命令:insert into (upsert、copy into、insert into.....select 等等大家感兴趣可以自行了解)
insert into 表名 (字段名1, 字段名2, ...)
values (值1, 值2, ...)
修改命令:update()
update 表名
set 字段名1 = 值1, 字段名2 = 值2, ...
where 条件
;
使用limit来限制更新的行数
update 表名
set 字段名1 = 值1
where 条件
limit 数字
;
使用 UPDATE 命令时,务必使用 WHERE 子句精确指定要更新的行,以避免错误地更新整个表的所有行。
8.数据库索引是什么
数据库索引是数据库表中的一种数据结构,用于提高数据检索的效率。它类似于书籍的目录,可以快速定位到数据表中的特定数据行,而不需要扫描整个表。
优点:
显著提高查询速度,特别是对于大量数据。
可以加速排序和分组操作。
缺点:
索引需要额外的存储空间。
插入、删除和更新操作可能会变慢,因为索引本身也需要更新。
创建索引:
create index index_name on table_name (column1, column2)
;
删除索引:
drop index index_name on table_name
;
9.sql注入是什么
是一种安全漏洞利用技术,攻击者通过在Web应用程序的输入字段中注入恶意SQL代码,来试图操纵后端数据库。这种攻击可以导致数据泄露、数据丢失、数据篡改,甚至可以获取数据库的完全控制权。
简单注入:
在输入框中输入 or 1=1 如果应用程序没有过滤或转义,这将导致SQL语句永远为真,从而绕过登录验证。
select * from users where username = 'admin' or '1'='1' and password = '1234'
;
如何防御sql注入:
使用参数化查询:这是最有效预防SQL注入的方法。参数化查询确保用户输入被当作数据而非代码处理。
输入验证:验证所有输入数据,拒绝或转义可能包含SQL代码的输入。
限制数据库权限:应用程序连接数据库的账户应该只有执行必要操作的权限。
使用ORM框架:对象关系映射(ORM)框架通常会自动处理参数化查询。
定期审计和测试:定期对应用程序进行安全审计和渗透测试。
10.常用的linux命令
cd.. 返回上一级目录
cd/ 返回根目录
mkdir 目录名 创建目录
mkdir 目录名1 目录名2 创建两个目录
rmdir 目录名 删除目录名
rm -f file1 删除文件
rm dir1 删除目录
ls 查看目录中的文件
cat file 从第一个字节开始正向查看文件的内容
tac file 从最后一行开始反向查看一个文件的内容
tail -n 5 file 指定显示最后5行内容
tail -n +5 file 指定从第5行开始显示内容
文件搜索命令:find where
chown user1 file 改变一个文件所有人的属性
管道符 | 连接多个命令 命令1 | 命令2
grep 过滤信息
gzip file 压缩一个叫file的文件
查看进程管理: 静态 ps 动态 top
linux中的编辑器: vi vim 自动进入命令行模式