又到了金三银四跳槽求职旺季。准备好一场面试不仅需要在简历上多下功夫,还需要为面试问答做好充足的准备,
以下是“本人”从面试经验中收集的,然后分门别类整理了这套面试题,很具备参考性,毕竟都是企业真实面试题目。
接下来,针对以下知识类型列出具体的面试点(其中包括笔试题和问答题),大家看完后一定要查缺补漏,找到欠缺的知识点,然后抓紧时间复习、参加面试
软件测试理论基础 软件测试工具篇 性能测试篇 自动化篇 数据库篇 Linux操作系统篇 综合题(思维,综合知识体系)
一、软件测试理论基础**
1. 软件测试策略有哪些?**
答案:黑盒测试、白盒测试、灰盒测试
拓展:很多童鞋分不清软件的测试策略、测试类型、测试方法等这类问题,在这里详细回答下。毕竟这些都是理论知识高概率面试题目。
2. 什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试
静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。
动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。
黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。
白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。
β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。
3. 按开发阶段划分,软件测试划分为哪几个阶段?
答案:按开发阶段划分,软件测试划分为单元测试、集成测试、确认测试、系统测试、验收测试。
拓展:
4. 一条软件缺陷(或者叫Bug)记录都包含了哪些内容?
答案:
bug编号;
bug严重级别,优先级;
bug产生的模块;
bug摘要,阐述bug大体的内容;
bug对应的版本;
bug详细现象描述、测试场景,包括一些截图等;
bug出现时的测试环境,产生的条件即对应操作步骤;
5. 简述BUG管理工具的工作过程。
6. 试着画软件测试模型W、V、H模型。
7. 接口请求的时候,有哪几种方法?
8. 什么是回归测试?
答案:回归测试: (regression testing): 回归测试有两类:用例回归和错误回归;用例回归是过一段时间以后再回头对以前使用过的用例在重新进行测试,看看会重新发现问题。错误回归,就是在新版本中,对以前版本中出现并修复的缺陷进行再次验证,并以缺陷为核心,对相关修改的部分进行测试的方法。
9. 完整的测试流程应该由哪些阶段组成?
二、性能测试篇
1. Loadrunner分哪三个部分?
Virtual User Generator:用于录制脚步
Mercury LoadRunnerController:用于创建、运行和监控场景
Mercury LoadRunner Analysis:用于分析测试结果
2. QTP中的Action有哪些,分别作用是什么?
可复用Action
不可复用Action
外部Action
3. Jmeter架包如何引用?
方法一:测试计划 通过 Add directory or jar to classpath 浏览导入jar
方法二:直接将需要引用的jar包放置到JMeter的lib目录,或者ext目录下
方法三:设置插件依赖路径,此时需要在jmeter.properties中添加依赖的路径,在jmeter 下新建对应的文件夹,将需要的jar包放入即可
4. 概述一下性能测试流程?
l 分析性能需求。挑选用户使用最频繁的场景来测试。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
l 制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
l 编写测试用例
l 搭建测试环境,准备好测试数据
l 编写性能测试脚本
l 性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
l 设计测试场景,运行测试脚本,监控服务器
l 分析测试结果,收集相关的日志提单给开发
l 回归性能测试
l 编写测试报告
5. 性能测试中,有哪些关键指标,分别指的是什么?
资源指标:
CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%。
内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%。
磁盘I/O: 磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作:存数据的时候对应的是写IO操作,取数据的时候对应的是是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能。
网络带宽:一般使用计数器Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。
系统指标:
并发用户数:某一物理时刻同时向系统提交请求的用户数。
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求。
平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间为3秒左右。
事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标。单位时间内系统可以成功完成多少个定义的事务,在一定程度上反应了系统的处理能力,一般以事务成功率来度量。
超时错误率:主要指事务由于超时或系统内部其它错误导致失败占总事务的比率。
6. 什么情况下要做关联,关联是怎么做的?
当脚本的上下文有联系,就用关联。比如登录的token关联,增删改查主键id关联等。
7. 有验证码的功能,怎么做性能测试?
l 将验证码暂时屏蔽,完成性能测试后,再恢复
l 使用万能的验证码
l 使用代码脚本解析(不推荐)
8. 如何脚本增强?
l 做参数化
l 做关联
l 添加事务
l 添加断言
l 添加集合点
l 添加思考时间
9. 你们系统哪些地方(哪些功能)做了性能测试?
选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单等。
10. 怎么分析性能测试结果?
首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率,CPU等指标是否满足需求;如果测试结果不可信,要分析异常的原因,修改后重新测试。
在确定性能测试结果可信后,如果发现以下问题,按下面的思路来定位问题.
三、自动化篇
1. Python序列中的元组、列表、字典有什么区别?
列表:列表是可变的,即可修改其内容。另外,列表有很多特有的方法。
元组:不可修改的序列,包括字符串,创建方法也很简单,用逗号隔开或小括号即可创建一个元组。
字典:字典可通过名称来访问其各个值的数据结构,这种数据结构称为映射,字典是python中唯一的内置映射类型,其中的值不按顺序排列,而是存储在键下,键可能是数字、字符串或元组。
2. 自动化测试模型?
3. 什么是持续集成?
持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。持续集成,最简单的形式是包括一个监控版本控制(SVN等等)变化的工具。当变化被发觉时,这个工具可以自动的编译并测试你的应用。
4. 你的自动化用例的执行策略是什么?
自动化测试用例的执行策略是要看自动化测试的目的,通常有如下几种策略:
(1) 自动化测试用例是用来监控的,在此目的下,我们就把自动化测试用例设置成定时执行的,如果每五分钟或是一个小时执行一次,在jenkins上创建一个定时任务即可。
(2) 必须回归的用例。有些儿测试用例,如BVT测试用例,我们在公司产品任何变动上线之前都需要回归执行。那我们就把测试用例设置成触发式执行,在jenkins上将我们的自动化测试任务绑定到开发的build任务上。当开发人员在仿真环境上部代码的时候,我们的自动化测试用例就会被触发执行。
(3) 不需要经常执行的测试用例。像全量测试用例,我们没有必要一直回归执行,毕竟还是有时间消耗的,有些非主要业务线也不需要时时回归。这类测试用例我们就采用人工执行,在jenkins创建一个任务,需要执行的时候人工去构建即可。
5. 自动化测试最大的缺陷是什么?
(1) 一旦项目发生变化,测试用例就需要改进,工作量大。
(2) 验证的范围有限,操作更加复杂,比如说简单的一个验证验证码,如果是人工识别很快就可以输入,但是自动化测试中会增添很多困难。那么这个时候速度也不如人工。
(3) 不稳定。
(4) 可靠性不强。
(5) 成本与收益。
6. 自动化测试的时候是不是需要连接数据库做数据校验?
(1) UI自动化不需要
(2) 接口测试会需要
7. 公司内一直在使用的测试系统(B/S架构)突然不能访问了,需要你进行排查并恢复,说出你的检查方法?
(1) 测试FTP是否正常可以登录,不能登录的直接问空间商那是空间商的问题直接联系他们。
(2) 空间赠送的三级域名是否能够访问网站打开网站(空间都赠送三级域名),如果也不能访问应该是空间问题。
(3) 在电脑的开始菜单运行中输入cmd,在弹出的黑框中输入:ping 你的域名;然后回车,如果看不到IP或IP地址与你的主机地址不符,则说明域名解析有误,是域名的问题得重新解析域名。
8. 什么是分层测试?
行业里面提的一般是金字塔的分层模型,UI测试;集成/接口测试;单元测试。
四、数据库篇
1. 数据库中的增删改查分别使用什么关键字?
Select update delete insert
2. MySQL中查询的2到5行怎么查询?
Select * from table where 字段 limit 2,3;
3. 数据库的聚合函数有哪些?
Avg()平均值,count()求个数,sum()求和,
六、Linux操作系统篇
1. Linux常用的命令有哪些?请说出5~10个
ls、cd、ll、mkidr、touch、cat、tar、vi、find、awk、grep、ps
2. 如何修改Linux时间?如果需要将时间改为2015-01-01,如何修改,请写出命令?
date -s
3. 在/var目录下会定义系统的启动日志相关信息,请查找对应的boot.log文件,并把它备份一份到/var/log下命名为testroad-boot.log.
dump
4. 在当前路径下,日志文件为log.log,如何实时查看日志文件打印的内容?请写出命令。
tail -10 filename
5. 系统/etc/sysctl.conf文件会定义系统内核的一些配置,查找和net有关的信息,并值打印前面5行信息。
grep ‘net’ file | sed ‘1,5p’
cat /etc/sysctl.conf | grep ‘net’|head -5
七、综合题(思维,综合知识体系)
1. 测试中发现一个Bug, 但是开发经理认为这不是一个bug,你应该怎么解决?
先将问题提交到缺陷管理库里面进行备案。然后获取判断的依据和标准:
l 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
l 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
l 根据用户的一般使用习惯,来确认是否是缺陷;
l 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。
2. 给你一个电商网站,你如何测试?
在这里插入图片描述
3. 如何测试一个纸杯?
答案:万变不离其踪,不管是一个水杯,一把椅子,一个电梯,测试的要点都可以基于以下要素。
l 功能度:用水杯装水看漏不漏;水能不能被喝到
l 安全性:杯子有没有毒或细菌
l 可靠性:杯子从不同高度落下的损坏程度
l 可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用
l 兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
l 易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
l 用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
l 疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等
l 压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
今天就先分享到这里