常见面试题
SVN在测试中的使用
Checkout代码
进行代码对比
从代码的差异中锁定测试范围
重点测试变更的代码涉及到的功能模块
更高效的发现与定位BUG
JMeter 支持的协议是:
web:HTTP,HTTPS站点的Web1.0的Web 2.0 (ajax, flex and flex-ws-amf)
Web Services: SOAP / XML-RPC
通过JDBC驱动程序的数据库
目录: LDAP
面向消息的服务通过JMS
Service: POP3, IMAP, SMTP
FTP 服务
TCP
java对象
本地命令或shell脚本
JMeter 特点
以下是一些 JMeter 的特点:
它是免费的。开放源码软件。
它具有简单,直观的图形用户界面。
JMeter中负载和性能测试许多不同的服务器类型:网站 - HTTP,HTTPS,SOAP,数据库通过JDBC,LDAP,JMS,邮件 - POP3
它是独立于平台的工具。在Linux / UNIX,JMeter中JMeter中shell脚本点击可以调用。在Windows上,它可以调用启动jmeter.bat文件。
它具有完整的Swing和轻量级组件支持(预编译的JAR使用包javax.swing中*)。
JMeter 测试计划存储为XML格式。这意味着可以使用文本编辑器生成一个测试计划。
它的完整的多线程框架,允许并发多线程和同步采样不同的功能由单独的线程组采样。
它是高度可扩展的。
也可用于执行应用程序的自动化测试和功能测试。
JMeter是如何工作的?
JMeter中模拟一组用户发送到目标服务器的请求和回报目标服务器/应用程序的性能/功能的统计数字表明,通过表格,图形等
这里是我们使用非 GUI 模式运行测试脚本时可以使用的一些命令:
-h 帮助 -> 打印出有用的信息并退出
-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
-t 测试文件 -> 要运行的 JMeter 测试脚本文件
-l 日志文件 -> 记录结果的文件
-r 远程执行 -> 启动远程服务
-H 代理主机 -> 设置 JMeter 使用的代理主机
-P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
例如:
jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080
软件缺陷判定标准:软件没有实现产品规格说明所要求的功能模块;软件中出现了产品规格说明指明不应该出现的错误;软件实现了产品规格说明没有提到的功能模块;软件没有实现虽然产品规格说明没有明确提及但应该实现的目标;软件难以理解,不容易使用,运行缓慢
1、需求测试:查看使用说明书
2、功能测试:能不能写字
3、界面测试:查看笔的外观
4、可靠性:笔从不同高度落下摔坏的程度
5、安全性:笔有没有毒或细菌
6、可移植性:笔在不同的纸质、温度等环境下是否可以使用
7、兼容性:笔是否可以装不同颜色、大小的笔芯
8、易用性:是否方便使用、方便携带
9、压力测试:给笔不断的增加重力,观察压力多大时压坏
10、震动测试:笔在包装时,各面震动,检查是否能应对恶劣的公路、铁路、航空运输
11、跌落测试:笔包装时,在多高的情况下摔不坏。
12、破坏测试
1、请描述一下性能测试流程?
参考答案:
1.获取有效的性能测试需求、明确测试目标
2.编写测试计划(也称为测试方案和测试策略)
3.搭建测试环境或确认环境的可用性
4.设计压测脚本,优化脚本
5.进行基准测试(目的是验证测试环境、脚本、正确可用)
6.进行正常测试,选择场景 设计场景
7.压测过程中进行观察监控指标,进行分析
8.得到性能测试报告进行分析,通过图表合并、指标背离的方法得出性能结论
9.编写测试报告
2、请问一下测试计划包括那些内容?
参考答案:项目背景、测试环境、测试内容、测试范围、测试工具及方法、测试时间安排、人员安排。
3、请问一下测试报告包括那些内容?
参考答案:项目背景、测试环境、测试内容、测试范围、测试版本记录、BUG统计、测试通过标准、测试评估、测试需求覆盖率、测试总结。
5、性能测试的并发数是怎么算出来的?
参考答案:根据系统的访问用户数,一个用户的访问时长,和系统的运行时长;
根据C = nL/T来计算平均的并发用户数
例:假设有一个OA系统,该系统有3000个用户(可以看注册信息),平均每天大约有400个用户要访问该系统(日志文件查看),对一个典型用户来说,一天之内用户从登录到退出该系统的平均时间为4小时,在一天的时间内,用户只在8小时内使用该系统。
则根据公式(1)和公式(2),可以得到:
C = 400*4/8 = 200
C’≈200+3*根号200 = 242
6、你们一般用多少用户做并发?
参考答案:我们要确定系统并发用户数,一般情况下需要先确认需求,如果需求不明确,首先需要去找相关人员调研,去获取系统的访问用户数,和系统的业务使用情况。
7、性能测试的分类都分哪几类?
参考答案:压力测试、负载测试、并发测试、稳定性测试、大数据测试
8、你认为性能测试最难的是什么?
参考答案: 性能测试最难的是调优、还有分析性能结果找性能的瓶颈;
9、性能测试服务器资源是如何监控的?
参考答案: 1、winds环境,首先打开远程连接;
2、关闭防火墙;
3、保证被监视的windows系统开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service
4、必须确保是超级管理员用户
LINUX 环境, 必须装start进程;
之后的LR中添加服务器IP,监控cpu、内存、硬盘、IO等
10、性能测试报告包括哪些内容?
参考答案:性能测试的范围、性能测试的方法、性能测试环境、性能测试的数据、性能测试的场景、性能测试结果、性能测试通过的标准、遇到的问题及瓶颈、性能测试总结;
11、性能测试中如何调优?
参考答案:性能测试调优一般有开发人员来做, 测试人员只负责找到性能瓶颈;
因为性能调优,不单是只掌握系统业务,还需要了解数据库设计架构、系统设计架构、开发代码、中间件和服务器层面的配置信息等;
12、性能测试指标都包括哪些
参考答案: 响应时间、吞吐量、TPS、点击率、事物成功率、服务器(CPU、内存、I\O);
13、你做过自动化测试吗?
我原来公司没有从事自动化,不过我正在学习中,我理解的自动化测试并不是所有公司和项目都适合做,因为自动化的前提是需要项目稳定的基础,项目周期太短、需求频繁变化、软件操作流程上带有很大的随机性都不适合做自动化。目前公司中大部分都采用的selenium或appium框架,我现在正在学习selenium+python。
14、你认为自动化的难点和核心是什么?
我认为定位应该算自动化的核心,因为会有一些比较难定位到的元素,需要我们想各种方法去捕获到;
15、那你都用什么方法来解决难定位的问题?
我一般都用用Xpach的方法来解决,当然也得分框架;
18、你们接口测试如何开展的?
参考答案:1、首先需要获取接口的地址和参数;利用接口工具来测试接口;
2、需要了解接口的业务知识;
3、需要了解接口的数据库层面知识;
19、接口测试的工具都包括哪些?
postman、jmeter等
20、简述或详述下之前项目的测试流程?
结合简历上的项目经历,描述测试流程
21、简述下常用的用例设计方法并举例说明
参考答案:常用的黑盒测试用例方法有,等价类、边界值、场景法、因果图、错误推测法;
等价类:分有效等价类和无效等价类。页面的输入框,利用等价类方法来测试;比如QQ登陆的界面,成功就是有效,失败就是无效
边界值 根据输入和输出范围的边界上进行判断;例:一个输入框要求1-100,边界值需要测试0、1 100、101
场景法 根据业务规则来设定; 例:系统中的业务流程都可以用场景法来设计;
因果图 根据输入的条件来判断输出的条件
错误推断 根据自己以前的经验进行测试 例:输入框输入空格,查询框输入sql注入
22、你认为测试计划中那部分比较重要,为什么?
参考答案:测试进度和人员工作安排; 因为把控不好项目测试时间进度会直接影响项目的上线和质量;
23、缺陷的严重等级如何划分,并举例说明?
参考答案:
建议:客户建议,建议性错误,对软件的改进意见或者建议
轻微:使操作者不合理或者不方便或遇到麻烦
一般:功能问题,但是不影响功能使用,或者是提示信息问题等;
严重:主要功能丧失,严重影响系统要求
致命:不能执行正常工作功能或重要功能,因软件原因导致系统死机
24、比较负载测试,容量测试和强度测试的区别?
参考答案:
负载测试:负载测试就是对服务器稳定性以及负载能力方面的测试;
容量测试:检查软件在异常条件下的行为
强度测试:为了确定系统在最差工作环境的工作能力,也用于验证标准工作压力下的各种资源的最下限指标
25、测试结束,产品发布的标准是什么?
参考答案:
覆盖率达到100%;
领导同意上线;
系统测试通过;测试用例全部执行完成、主要以上Bug全部解决;
性能测试通过;
27、描述缺陷的生命周期?
参考答案:
新建—>指派—>打开—>修复—>验证—>通过关闭(不通过打回)—>重新打开
28、当开发人员说你提交的bug不是BUG时,你如何应付?
参考答案:
1、先给开发演示你的BUG,并拿出需求说明给他看,先单独沟通;
2、再找需求人员或者项目经理确认BUG并沟通;
注意:沟通方法和语气;
29、您认为做好测试用例设计工作的关键是什么?
参考答案:
首先熟悉需求和业务,明确测试的范围和内容,利用设计测试用例的方法和技巧来覆盖功能点全面;
30、功能测试和接口测试的区别是什么?
参考答案:
功能测试只是测试这个产品产件的功能 不需测试软件产品的内部结构和处理过程但是接口测试是保证服务器的正确和稳定
主要测试这些系统对外部提供的接口 查看正确性和稳定性
31、描述下之前web项目或移动端项目的整个测试流程?
参考答案:
33、冒烟测试用例 回归测试用例 全量测试用例 有什么区别,何时使用?
参考答案:
冒烟测试用例指每个版本中的主流程; 冒烟测试用在发版之后验证版本是否可接收测试;
回归测试用例指每个版本中本次回归测试的用例; 回归测试用在每个版本回归上次版本的BUG或者版本修改的功能以及已测试过的功能;
全量是全部的测试用例; 主要用在全部测试时候。
34、举例说明 bug的录入规范
参考答案:
1、言简意赅 语意明确 让开发人员一眼能看出问题出在哪里
2、定义好bug的优先级 bug的严重程度
3、重现步骤描写明确、写明环境和使用的角色、并截图说明
4、使开发人员可以准确的重现该bug
35、怎么判断一个bug 是前端代码问题还是后端接口问题?
参考答案:
1、前端主要是指客户端层面的问题, 后端主要是指提交后服务器处理返回及数据库交互层面的问题;
例:可以从请求跟响应这一过程判断,如果前端已经把数据发送给了后端,后端没有返回数据则是后端问题;
如果前端在用户输入数据之后发送请求,前端没有带数据在请求中就是前端的问题
36、测试工作进行到一半是,发现时间不够,你如何处理?
参考答案:
1、加班完成任务,制定测试策略,按功能优先级测试,先测试主要流程;
2、和领导沟通,协调加测试人员。
37、常用的adb命令有哪些?请随便写一个monkey脚本,并解释其中参数的含义?
38、描述下测试阶段、测试方法?
参考答案:单元测试、集成测试、系统测试(冒烟测试、功能测试、回归测试)、性能测试、验收测试;
等价类,边界值,场景法、因果图、错误推断法
39、性能测试的分类?
参考答案:
压力测试、负载测试、并发测试、大数据测试
43、性能测试中什么是集合点,为什么要设,怎样设置?
参考答案:
设置多个用户到达某个执行点,同时触发同一个事务,同时模拟负载,实现用户并发的性能测试。直接在需要并发的事物前面加上集合点函数即可。
44、软件工程的v模型 w模型 H模型
参考答案:
答:(1).软件测试过程模型-V模型
是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;
局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现
(2).软件测试过程模型-W模型
在V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题
局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整
(3).软件测试过程模型-H模型
在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行
46、简述下性能测试的步骤
参考答案:
1.获取有效的性能测试需求,明确测试目标
2.编写测试计划(也成为测试方案和测试策略)
3.搭建测试环境或确认测试环境可用性
4.设计压测脚本,优化脚本
5.进行基准测试(目的是验证测试环境、脚本 正确可用)
6.进行正常测试,选择场景 设计场景
7.压测过程中观察监控指标,进行分析
8.得到性能测试报告进行分析,通过图表合并、指标背离的方法得出性能结论
9.编写测试报告
47、简述使用loadrunner的步骤
参考答案:
分析业务需求
录制或者编写测试脚本
增强优化脚本
场景设计执行测试
保存测试结果
分析测试结果,找出瓶颈
49、LoadRunner由哪些部件组成
参考答案:
virtual user generator
contorller
analysis
50、什么是场景?场景的重要性有哪些?如何设置场景?
参考答案:
场景:模拟真实性能环境中,用户运行状况。
1.通过场景来模拟并发用户的操作,性能测试结果才具有代表性。
2.在运行过程中也需要关注场景性能测试值,观察测试过程是否正常。
1.选择场景中需要的脚本
2.选择为目标场景,还是指定的手工场景
3.设置用户数、加减压方式、集合点策略、IP欺骗、负载均衡;连接监控服务器设备
4.设置执行
51、请解释一下如何录制web脚本?
LR通过转发请求,来捕获数据包,来形成脚本
52、为什么要创建参数?如何创建参数?
参数:
客户端访问服务器时,客户端向服务器传输动态变化的数据,就需要用到参数化1.确定要参数化的数据
2.设定规则形式来取值
53、什么是关联 手动关联和自动关联的区别
参考答案:
关联
客户端访问服务器时,服务器返回给客户端一些动态变化的值,导致客户端无法再次运行,我们把这些写死在脚本里的值,换成变量的方式,以变量的形式替换录制时的静态值,从服务器端获取动态数据;这种动态获得服务器响应内容的方法被称作关联。
自动关联是LR工具帮你找到的,比如按CTRL+F8 可以进行自动关联,这种方法可以满足一些简单的需求,使用比较方便,但有可能找的不全面或者不是最有效的;或者当LR工具找不到关联时,我们就要考虑手动关联了。而手工关联是自己写关联函数,但前提是先要找到所关联值的左右边界;如果指
定左边界和/ 右边界, VuGen 将搜索这些边界之间的文本。手工关联能更精准的定位到关联的值;
55、一个页面性能要求页面响应时间不能超过2秒,测一下系统支持的并发量,怎么进行测试?
参考答案:
1、先需要跑一个基准测试,根据系统特点,先跑一个基准并发用户量;
2、再根据基准并发的结果来逐渐的加大或减少用户,直到跑到达到响应时间不能超过2秒的要求的最大范围;
56、TPS是什么?
TPS:每秒钟系统能够处理事务的数量
57、您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同?
功能测试 性能测试
功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性
58、请以您以往的实际工作为例 详细的描述一次测试用例设计的完整的过程?
参考答案:
1、熟悉需求和系统(原型);了解业务知识和数据库方面的知识;
2、根据系统的需求特点来设计测试用例方法,详细写测试用例;
3、测试用例评审;
59、描述下loadrunner的工作原理?
参考答案:
LoadRunner通过脚本的方式,模拟多用户,长时间实施并发负载的过程,并且能实时性能监测来确认和查找问题。
60、Web测试和移动端测试有什么区别?
参考答案:
1、web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。
(1)web是通过浏览器访问,所以需要测试浏览器的兼容性和系统有分辨率;
(2)移动端需要测试客户端的不同版本和客户端的屏幕大小、还有屏幕旋转等功能;
2、Web项目,不需要测试安装卸载,移动端需要测试安装卸载、耗电量、流量等功能;
61、在智能手机(android)上安装客户端的过程中需要注意哪些方面(写测试点)?
参考答案:
1)安装的版本是否对应;
2)软件安装后的是否能够正常运行,安装后的文件夹及文件是否写到了指定的目录里。
3)软件安装向导的UI测试
4)软件安装过程是否可以取消,点击取消后软件安装的情况。
5)软件安装过程中意外情况的处理是否符合需求(如死机,重启,断电)
6)安装空间不足时是否有相应提示
7)安装后没有生成多余的目录结构和文件
8)对于需要通过网络验证之类的安装,在断网情况下尝试一下
63、请列举测试手机客户端视频观看功能时都需要考虑哪些方面
参考答案:
关闭打开按钮、视频频率大小、声音调节、快进退后按键、暂停、播放进度条、视频的标准,高清,蓝光
、画面移动、播放视频倍数、片尾片头、截图录屏、网络连接、文件格式;
64、内连接和外连接,自联接有什么区别?
参考答案:
内连接:只返回两张表中所有满足连接条件的行
外连接分左连接和右连接;
左连接:是返回两张表中所有满足连接条件的行 并且把左表不满足条件的也查询出来;
右连接;右连接是返回两张表中所有满足连接条件的行 并且把右表不满足条件的也查询出来;
自联接:自查自己,把自身表虚拟成一个新表;最终连接的都是同一个表;
65、怎么使用fiddler工具抓取手机上的数据包?
参考答案:
fiddler要抓APP的包,需要先设置Fiddler的代理和端口,手机上也需要设置自定义IP和端口;
使用参考:
在工具栏,找到tools-》 fiddler options
在htts选项卡中选中decrypt https traffic和ignore server certificate errors在connections选项卡中,选择端口8888
在黑窗口中查询自己的ipconnfig 地址
打开手机找到手机wifi网络,并修改该wifi网络详情(长按wifi选择->修改网络)->显示高级选项
代替选择手动,用前面在电脑记下来的ip地址输进去,和那个端口地址8888
手机访问网页,手机打开网页。
然后电脑端中就可以看到访问的数据。
66、什么是monkey测试,使用monkey测试主要做什么?
参考答案:
1、monkey测试是Android平台自动化测试的一种方法,通过monkey程序来模拟用户真实行为,对设备上的程序进行施压,看程序多久会出现异常。
2、monkey主要就是用于对Android平台进行模拟用户的按键,触屏,手势输入等随机流的一种稳定性测试,看多久会出现异常。
67、常用的monkey命令并解释参数的意义?
68、简述下alpha测试和beta测试的区别?
参考答案:
Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用(上线)环境下进行的测试
Alpha testing (α测试),是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试
69、如果让你测app的升级,你怎么测,写出测试点?
参考答案:
1. 正常的下载升级过程,升级之后查看升级的功能是否可用,且原版本的功能是否正常
2. 考虑iOS和安卓的下载渠道不同
3. 考虑网络的影响
2G/3G/4G wifi下是否都能正常升级或者能够基于流量的影响进行智能下载
4. 考虑中断下载和升级过程后是否和继续或者重新下载和升级
手动中断后可以继续进行相关操作
5. 考虑断电和内存不足的问题
能够继续进行相关升级,对于内存有友好的提示
6. 考虑应用权限问题
如果新版本对于应用权限有了扩展,需要进行权限确认
7. 考虑不同机型
升级测试需要对各种机型进行覆盖测试
8. 选择升级情况下旧版本的兼容性
如果不是强制升级,那新旧版本的app同时运行时必不可少的,此时需要考虑新旧版本并行时后台接口的兼容性。在进行旧版本功能兼容性验证时,可以进行主要流程的测试和变更的接口影响到的功能详细验证,这样可以缩小测试范围,减少测试时间同时又能保证相应的变更都进行了测试。
9. 覆盖升级后新版本的使用情况
10. 除了新版本自身的新功能验证之外,要进行主要业务流程的验证。
11. 在覆盖升级前,需要模拟使用旧版本的用户进行缓存数据的创建,然后进行升级,确认缓存数据升级后可以正常显示,相关功能工作正常。
70、针对目前常见的手机验证码 你会如何进行测试?
参考答案:
1、在输入正常手机号情况下,能否发送验证码,且验证码是否可用;
2、验证码是否可重复使用;
3、输入错误验证码;
4、超时后再输入验证码;
5、输入错误手机号,能否发送验证码;
6、验证码多久能再次发送; 且再次发送后是否还能再用上一次的验证码;
7、断网情况下是否可发送验证码;
71、回归测试在什么时候进行,都进行哪些回归;
参考答案:
回归测试在每个版本中发版之后,冒烟测试之后需要回归测试;
以往版本bug的回归,以往版本修改的功能回归, 之前版本的功能回归, 系统测试完成之后的大回归;
72、如何制定测试计划中的测试周期,一般都分几轮测试;
参考答案:
测试周期制定首先需要参考项目的开发计划和项目的进度里程碑;
一般情况下,我们会制定小版本的两轮测试, 大版本的两轮回归;
73、之前测试过程中遇到过哪些风险,都怎么处理的?
参考测试风险自己表达
1).测试需求和范围的变化
2).项目计划变更,开发及其他环节进度延长
3).设计时间不足
4).对需求理解偏差大
6).项目提交日期变更
74、web浏览器测试怎么做兼容?
参考答案:
浏览器兼容性主要测试各种浏览器下不同版本的;因浏览器型号和版本过多,兼容性没法穷尽测试;
所以首先需要了解用户所需的浏览器版本,和常用的浏览器型号;针对性的做兼容性;当然IE浏览器下的各个版本测试可以用IEtest工具;
75、常用的adb命令。Shell命令、 linux命令?
参考答案:
adb命令:adb devices、adb install [-r] [-s]、adb uninstall [-k] <软件名>、adb push <本地路径> <远程路径>
shell命令:pwd | xargs -i basename {}、ps -ef、grep -v、grep -w、
Linux命令:cd、cp、rm、mkdir、rmdir
76、怎么拿到手机上的log日志?
这里用到的是adb工具包来进行APP运行日志的抓取。
78、做测试多久了?以前做过哪些项目?你们以前测试的流程是怎样的?用过哪些测试工具?
自己表达
79、软件测试项目从什么时候开始?为什么…