面试题锦集

1、请问一下测试计划包括那些内容?

项目背景、测试环境、测试内容、测试范围、测试工具及方法、测试时间安排、人员安排。

2、请问一下测试报告包括那些内容?

项目背景、测试环境、测试内容、测试范围、测试版本记录、BUG统计、测试通过标准、测试评估、测试需求覆盖率、测试总结。

3、你们性能测试如何做的?

1、首先需要了解性能测试需求,明确测试目的,获得有效的性能需求;

编写性能测试计划\方案; 

2、搭建性能测试环境,准备性能测试数据,相关资源准备;

3、录制性能测试脚本,对脚本进行优化调整;设计测试场景,执行性能测试并收集测试结果,分析结果系统调优及回归测试;

4、性能测试通过后编写性能测试报告;

4、性能测试的并发数是怎么算出来的?

根据系统的访问用户数,一个用户的访问时长,和系统的运行时长;

根据C = nL/T来计算平均的并发用户数


例:假设有一个OA系统,该系统有3000个用户(可以看注册信息),平均每天大约有400个用户要访问该系统(日志文件查看),对一个典型用户来说,一天之内用户从登录到退出该系统的平均时间为4小时,在一天的时间内,用户只在8小时内使用该系统。

  则根据公式(1)和公式(2),可以得到:

  C = 400*4/8 = 200

  C’≈200+3*根号200 = 242 

5、你们一般用多少用户做并发?

我们要确定系统并发用户数,一般情况下需要先确认需求,如果需求不明确,首先需要去找相关人员调研,去获取系统的访问用户数,和系统的业务使用情况。  

6、性能测试的分类都分哪几类?

参考答案:压力测试、负载测试、并发测试、稳定性测试、大数据测试 

7、你认为性能测试最难的是什么?  

性能测试最难的是调优、还有分析性能结果找性能的瓶颈;

8、性能测试服务器资源是如何监控的?

1、winds环境,首先打开远程连接;

          2、关闭防火墙;

          3、保证被监视的windows系统开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Service 

          4、必须确保是超级管理员用户

         LINUX 环境, 必须装start进程;

之后的LR中添加服务器IP,监控cpu、内存、硬盘、IO等

9、性能测试报告包括哪些内容?

参考答案:性能测试的范围、性能测试的方法、性能测试环境、性能测试的数据、性能测试的场景、性能测试结果、性能测试通过的标准、遇到的问题及瓶颈、性能测试总结; 

10、性能测试中如何调优?

性能测试调优一般有开发人员来做, 测试人员只负责找到性能瓶颈;

因为性能调优,不单是只掌握系统业务,还需要了解数据库设计架构、系统设计架构、开发代码、中间件和服务器层面的配置信息等;

11、性能测试指标都包括哪些 

参考答案: 响应时间、吞吐量、TPS、点击率、事物成功率、服务器(CPU、内存、I\O);

12、你做过自动化测试吗?

我原来公司没有从事自动化,不过我正在学习中,我理解的自动化测试并不是所有公司和项目都适合做,因为自动化的前提是需要项目稳定的基础,项目周期太短、需求频繁变化、软件操作流程上带有很大的随机性都不适合做自动化。目前公司中大部分都采用的selenium或appium框架,我现在正在学习selenium+python。

13、你们接口测试如何开展的?

1、首先需要获取接口的地址和参数;利用接口工具来测试接口;

           2、需要了解接口的业务知识;

           3、需要了解接口的数据库层面知识;

14、简述下常用的用例设计方法并举例说明

软件测试可分为白盒、黑盒及灰盒,我们公司的白盒测试都是由开发团队完成的。下面说

下我所使用过的测试用例设计方法:

1. 等价类及边界值,一般这两个测试用例的设计方法我是联合起来使用的,因为等价类就是将输入域划分成有效等价类及无效等价类,

而边界值正好是关注刚刚等于,刚刚小于以及刚刚大于输入域的数据。比如密码输入框的长度问题,我们公司的密码长度范围为6-18位

这样通过等价类及边界值的理论,我们只需要选择5,6,7,17,18,19作为测试用例进行密码输入框长度的验证用例。

2.错误推断法,这个用例设计的思路就是,基于我的经验及对业务的理解,预先判断软件中那些位置可能容易出现问题,通过这个预判,

我曾经发现过我们公司的系统没有对单引号和双引号进行过滤,导致,当用户输入单引号时系统直接返回错误信息,进而通过这个问题,

通过sqlmap完成了此字段的sql输入。

3.判定表法:这个测试用例的设计方法我主要运行在检索框输入的测试用例中,其中将所以的输入条件定义位条件桩,将全部的输出结果

定义位结果桩,并按照判定表法的设计原则对全部的条件进行测试用例的设计,并分析测试用例的结果是否有冗余,如果有我将合并冗余项

4.业务流程法:这个测试方法 我主要是搭建测试用例框架使用,意思就是通过模拟客户使用软件的正常业务流程进行测试用例的设计工作

测试用例的思路:

首先,应完全了解需求规格说明书,保证在写测试用例时,对需求说明书中的每一句话都充分的理解,其次我会询问其他测试人员

之前是否有参加过相似类型软件的测试工作,在此类软件测试中

15、你认为测试计划中那部分比较重要,为什么?

测试进度和人员工作安排; 因为把控不好项目测试时间进度会直接影响项目的上线和质量;

16、缺陷的严重等级如何划分,并举例说明?

建议:客户建议,建议性错误,对软件的改进意见或者建议

轻微:使操作者不合理或者不方便或遇到麻烦

一般:功能问题,但是不影响功能使用,或者是提示信息问题等;

严重:主要功能丧失,严重影响系统要求

致命:不能执行正常工作功能或重要功能,因软件原因导致系统死机

17、比较负载测试,容量测试和强度测试的区别?

负载测试:负载测试就是对服务器稳定性以及负载能力方面的测试;

容量测试:检查软件在异常条件下的行为

强度测试:为了确定系统在最差工作环境的工作能力,也用于验证标准工作压力下的各种资源的最下限指标

18、测试结束,产品发布的标准是什么?

覆盖率达到100%;

领导同意上线;

系统测试通过;测试用例全部执行完成、主要以上Bug全部解决;

性能测试通过;

1、根据测试文档

  测试需要根据《系统需求规格说明书》、《软件产品原型交互图》、《软件产品验收标准》《软件产品效果图》进行软件的单元测试、集成测试、系统测试和验收测试。单元测试要开发人员自己测试,测试人员需要进行集成测试、系统测试和验收测试。

  2、制定测试用例

  测试人员设计测试用例,测试时可以作为测试结束的一个参考标准。在功能测试用例通过率达到100%,非功能性测试用例达到95%以上。

  3、查看势缺陷修复率

  随着测试时间的推移,我们根据调试平台上的bug减少。测试到一定阶段,缺陷又成下降趋势,直到发现的无严重缺陷。我们可以通过缺陷的趋势图线的走向,来判定测试是否可以结束。软件缺陷在测试生命周期中我们分成几个严重等级,它们分别是:很严重、严重、小错误、一般4中。我们确定测试结束,很严重和严重BUG修复率必须达到100%,不允许存在功能性的错误、小错误和一般的BUG修复率要达到80%以上,允许存在一些不影响功能的小错误可以暂时不用修改。

  4、验收测试

  我们根据验收标准进行测试。测试到一定阶段,达到或接近《软件产品验收标准》, 测评中心向项目经理提交测试报告 ,终止测试、进行交付。

19、您认为做好测试用例设计工作的关键是什么?

首先熟悉需求和业务,明确测试的范围和内容,利用设计测试用例的方法和技巧来覆盖功能点全面;

20、功能测试和接口测试的区别是什么?

功能测试只是测试这个产品产件的功能 不需测试软件产品的内部结构和处理过程但是接口测试是保证服务器的正确和稳定

主要测试这些系统对外部提供的接口 查看正确性和稳定性

21、冒烟测试用例 回归测试用例 全量测试用例 有什么区别,何时使用?

冒烟测试用例指每个版本中的主流程; 冒烟测试用在发版之后验证版本是否可接收测试;

回归测试用例指每个版本中本次回归测试的用例; 回归测试用在每个版本回归上次版本的BUG或者版本修改的功能以及已测试过的功能;

全量是全部的测试用例; 主要用在全部测试时候

22、举例说明 bug的录入规范

1、言简意赅 语意明确 让开发人员一眼能看出问题出在哪里 

2、定义好bug的优先级 bug的严重程度

3、重现步骤描写明确、写明环境和使用的角色、并截图说明

4、使开发人员可以准确的重现该bug

23、怎么判断一个bug 是前端代码问题还是后端接口问题?

1、前端主要是指客户端层面的问题, 后端主要是指提交后服务器处理返回及数据库交互层面的问题;

例:可以从请求跟响应这一过程判断,如果前端已经把数据发送给了后端,后端没有返回数据则是后端问题;

如果前端在用户输入数据之后发送请求,前端没有带数据在请求中就是前端的问题

24、软件工程的v模型 w模型 H模型

(1).软件测试过程模型-V模型

是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;

局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现

(2).软件测试过程模型-W模型

在V模型的基础上,增加千开发阶段的同步测试,形成W模型;测试与开发同步进行,有利用尽早的发现问题

局限性:仍把开发活动看成是从需求开始到编码结束的串行活动,只有上一阶段完成后,才可以开始下一阶段的活动,不能支持迭代,自发性以及变更调整

(3).软件测试过程模型-H模型

在H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行

25、简述下性能测试的步骤

1.获取有效的性能测试需求,明确测试目标

2.编写测试计划(也成为测试方案和测试策略)

3.搭建测试环境或确认测试环境可用性

4.设计压测脚本,优化脚本

5.进行基准测试(目的是验证测试环境、脚本 正确可用)

6.进行正常测试,选择场景 设计场景

7.压测过程中观察监控指标,进行分析

8.得到性能测试报告进行分析,通过图表合并、指标背离的方法得出性能结论

9.编写测试报告

26、简述使用loadrunner的步骤

分析业务需求

录制或者编写测试脚本

增强优化脚本

场景设计执行测试

保存测试结果

分析测试结果,找出瓶颈

27、什么是场景?场景的重要性有哪些?如何设置场景?

场景:模拟真实性能环境中,用户运行状况。

1.通过场景来模拟并发用户的操作,性能测试结果才具有代表性。

2.在运行过程中也需要关注场景性能测试值,观察测试过程是否正常。

​1.选择场景中需要的脚本

​2.选择为目标场景,还是指定的手工场景

​3.设置用户数、加减压方式、集合点策略、IP欺骗、负载均衡;连接监控服务器设备

​4.设置执行

28、为什么要创建参数?如何创建参数?

参数:

客户端访问服务器时,客户端向服务器传输动态变化的数据,就需要用到参数化

1.确定要参数化的数据

2.设定规则形式来取值

29、什么是关联  手动关联和自动关联的区别

关联

客户端访问服务器时,服务器返回给客户端一些动态变化的值,导致客户端无法再次运行,我们把这些写死在脚本里的值,换成变量的方式,以变量的形式替换录制时的静态值,从服务器端获取动态数据;这种动态获得服务器响应内容的方法被称作关联。

自动关联是LR工具帮你找到的,比如按CTRL+F8 可以进行自动关联,这种方法可以满足一些简单的需求,使用比较方便,但有可能找的不全面或者不是最有效的;或者当LR工具找不到关联时,我们就要考虑手动关联了。而手工关联是自己写关联函数,但前提是先要找到所关联值的左右边界;如果指定左边界和右边界, VuGen 将搜索这些边界之间的文本。手工关联能更精准的定位到关联的值;

30、一个页面性能要求页面响应时间不能超过2秒,测一下系统支持的并发量,怎么进行测试?

1、先需要跑一个基准测试,根据系统特点,先跑一个基准并发用户量;

2、再根据基准并发的结果来逐渐的加大或减少用户,直到跑到达到响应时间不能超过2秒的要求的最大范围;

31、描述下loadrunner的工作原理?

LoadRunner通过脚本的方式,模拟多用户,长时间实施并发负载的过程,并且能实时性能监测来确认和查找问题。

32、Web测试和移动端测试有什么区别?

1、web项目,一般都是b/s架构,基于浏览器的,而app则是c/s的,必须要有客户端。

(1)web是通过浏览器访问,所以需要测试浏览器的兼容性和系统有分辨率;

(2)移动端需要测试客户端的不同版本和客户端的屏幕大小、还有屏幕旋转等功能;

2、Web项目,不需要测试安装卸载,移动端需要测试安装卸载、耗电量、流量等功能;

33、什么是monkey测试,使用monkey测试主要做什么?

1、monkey测试是Android平台自动化测试的一种方法,通过monkey程序来模拟用户真实行为,对设备上的程序进行施压,看程序多久会出现异常。   

2、monkey主要就是用于对Android平进行模拟用户的按键,触屏,手势输入等随机流的一种稳定性测试,看多久会出现异常。

34、简述下alpha测试和beta测试的区别?

Beta testing(β测试),测试是软件的多个用户在一个或多个用户的实际使用(上线)环境下进行的测试

Alpha testing (α测试),是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试

35、如何制定测试计划中的测试周期,一般都分几轮测试;

测试周期制定首先需要参考项目的开发计划和项目的进度里程碑;

一般情况下,我们会制定小版本的两轮测试, 大版本的两轮回归;

36、之前测试过程中遇到过哪些风险,都怎么处理的?

参考测试风险自己表达

1).测试需求和范围的变化

2).项目计划变更,开发及其他环节进度延长

3).设计时间不足

4).对需求理解偏差大

5).项目提交日期变更

37、什么是fiddler:

Fiddler目前最常用的HTTP网页抓包调试工具之一。

Fiddler的工作原理:

Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1,端口:8888。

举个例子,fiddler它就像是一个中介,有客户端,fiddler代理服务器,web服务器。假如客户端是地产老板,fiddler是中介,web是买房人。客户端-请求-fiddler代理服务器-请求-web服务器-响应-fiddler代理服务器-响应-客户端(地产老板告诉中介房子要多少钱,中介告诉买房人,买房人交钱给中介,中介再给地产老板。)

它是一个方便且免费,功能强大的抓包软件。Fiddler无需配置,下载之后即可使用。

我们也可以用fiddler抓包工具,查看移动端运行时接口的情况,但是必须要保证移动端和电脑在同一wifi网络内,移动端连接的同意网络的wifi并进行设置

38、缺陷的要素就是缺陷的记录中的要素:

所属产品、所属项目、所属模块、所影响版本(发现问题所在版本)、缺陷错误类型、所属操作系统、所属机型或浏览器、分配人、缺陷严重程度级别、解决优先级、缺陷标题、缺陷重现步骤、缺陷所属需求、缺陷对应用例、缺陷附件

39、使用jmeter和postman测试接口时一些基础简单的流程 首先需要了解

1.数据库连接的参数  涉及的表和字段

2.接口的URL,参数和名称

3.了解请求这个接口,数据库会发生什么变化

接口测试一般介入的时间是在整个项目未开发完成之前,提前进行接口测试,可以提前发现一些业务逻辑问题,方便进行web、app功能测试时,少出现一些技术性bug

主要过程 

首先需求评审,熟悉业务和需求

然后开发提供接口文档(必须提供接口说明、url、请求方法、请求参数、参数类型、请求参数说明及返回参数说明)

接着编写接口测试用例

之后进行用例评审

然后提测后开始测试

最后提交测试报告

接口测试和功能测试差不多,每个接口都会测试正常数据,异常数据和边界值,也会有预期结果,jmeter和postman都可以使用断言来判断预期结果,

接口测试时,A接口的返回值需要在B接口中引用时,还会用到关联,jmeter主要用正则表达式实现提取内容,存放到变量里,然后在接口中通过${变量名}的方法调用

postman是通过js脚本存变量,然后通过{{变量名}}引用传递变量

过程中接口变量需要参数化,jmeter和postman可以通过读取csv文件进行参数化,读取时需要设置csv中每列数据对应的变量值

另外jmeter还可以用来做接口的性能,而Postman只能模拟单客户端的单次请求

1.运行jmeter.bat,启动jmeter

2. 创建测试计划:

3. 添加线程组

4. 添加http默认请求:(用来配置公共参数,不是http请求)

5.添加http请求信息头

6. 添加http请求

7. 添加监听器:

可以添加多个监听器,这里我们添加几个“图形结果”、“察看结果树”、“聚合报告”

8. 试运行点击执行可以查看各个“监听器”的结果

9. 修改线程组的线程数等参数,用于压力测试

点击左侧树形导航中的“线程组”

设置上面几个参数,模拟的总的请求数是:线程数*循环次数。执行一下,用“图形结果”监听器查看一下常关注的指标有:并发,吞吐量,cpu占用率,内存使用率等

可以再添加一些请求线程组,调整线程数和并发时间来进行压力性能测试。

postman使用类似,在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹

移动端monkey测试:

monkey稳定性测试主要是针对安卓客户端,一般是在安卓功能测试稳定之后进行的。我们之前是下午下班前把monkey运行起来,设定好一些获取日志的规则以及运行次数,等程序运行完成,自动对日志进行分析,找到出现的crash或内存溢出等异常情况,然后自动发邮件给测试、开发部门。第二他开发同事就可以第一时间进行处理。基本上经常多次且长时间的稳定性测试后程序的异常崩溃情况会很少了。

之前的项目里刚开始使用monkey稳定性测试时,只是设置简单的参数比如包名、日志级别、 随机数、事件间隔时间进行测试。后来发现很多随机操作没有意义,我们又指定了事件运行概率,比如把点击操作、横竖屏操作、滑动操作出现概率加大,这样基本上随机测试可以更接近于用户的真实操作。并且刚开始学习使用monkey测试时,都是等执行完毕手工去手机里down日志,然后查询错误再提交给开发,这样显得效率低,我们后来也是通过写python脚本的方式实现了一键执行、自动分析日志、自动判断发送邮件给开发人员,这样效率提升了不少。

40.解释一下覆盖图和关联图的区别?

覆盖图:合并两个图的内容,使用同一个X轴,合并图左Y轴显示当前图的值,合并图右Y轴显示被合并图的值。

关联图:当前活动图的Y轴变为合并图的X轴,被合并图的Y轴变成合并图的Y轴。

41.Vuser_init中包括什么内容?

Vuser_init中包含在脚本执行过程中只需执行一次的脚本。一般来说,所有需要初始化的都可以放在vuser_init里面,比如登录。

42. Vuser_end中包括什么内容?

vuser_end中一般包含退出的过程,比如退出系统,主要在脚本执行完成或停止时运行,在设置了迭代次数时,vuser_end和vuser_int均只执行一次。

43.什么是think time?think_time有什么用?

思考时间:用户在各步骤之间停下来进行思考的时间,由于用户基于其经验水平和目标而与应用程序进行交互操作,因此技术水平更高的用户工作起来可能会比新用户要快。

  通过启用思考时间,可以使 Vuser在负载测试期间更准确地模拟其对应的真实世界用户。

44.Bug用例要素

缺陷id 状态 类型 所属项目 所属模块 缺陷提交时间 缺陷提交人(检测者) 严重程度  优先级别  缺陷描述信息 测试步骤  测试前置条件  测试数据 期望结果  实际结果

45、测试完成的标准

(1)测试用例达到一定的覆盖率(2)测试结果达到测试结束的标准(3)一些基本的功能全部实现(4)规定登记的bug都fix了,一些bug由于等级低好可以留着,代码不需要做大的修整,框架也不变了

46、软件测试流程

需求分析--测试计划--编写测试用例--搭建测试环境--执行用例--提交Bug--评估--总结

47、用例要素

编号、模块、前置条件、步骤、预期结果、实际结果、通过否、备注

48、移动端测试流程

测试资源的确认以及准备、测试用例的设计与评审、UI测试、功能测试、中断测试、兼容性及适配性测试、性能测试、稳定性测试、测试报告的输出与评审

49、接口测试:

需求评审,熟悉业务和需求、开发提供接口文档、编写接口测试用例、用例评审、 提测后开始 测试、提交测试报告

50、用例要素:

用例编号、接口模块、接口标题、url、输入定义、输出定义、输入参数、hearder、P/N、输出结果

51、用过哪些测试工具,分别介绍一下

    我用过pycharm,是由JetBrains打造的一款测试软件,用来进行自动化测试。

52、介绍一下常用的几种定位方式

    ID \ name \ class name\xpath\text

53、如何去定位属性动态变化的元素

    我一般都会用xpath的方法来解决,当然也得分框架

54、你认为自动化测试的核心是什么

    我认为自动化测试的核心是定位,因为会有一些比较难定位到的元素,需要我们想各种方法去捕获到

55、性能测试中什么是集合点?为什么要设置集合点?怎么设置集合点?

集合点主要是用来聚集虚拟用户的,在controller中可以对集合点触发条件进行设置,

当虚拟用户到达集合点后会停止接下来要进行的操作,直到满足集合点的触发条件,

此时在集合点上的用户同时开始操作相同的动作,也就形成了所谓的“并发”;

简而言之就是可以设置并发数。

插入集合点是为了衡量在加重负载的情况下服务器的性能情况。

在测试计划中,可能会要求系统能够承受1000 人同时提交数据,

在LoadRunner 中可以通过在提交数据操作前面加入集合点,

这样当虚拟用户运行到提交数据的集合点时,

LoadRunner 就会检查同时有多少用户运行到集合点,

如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,

当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,

从而达到测试计划中的需求。

说明:在脚本中设置了“集合点”后,当运行场景时可以对集合点进行设置,

可以设置当百分之多少用户到达时,系统开始执行以下操作,

详细的可以参考中文的用户手册

设置集合点方法:

1、其中录制脚本script view中添加:lr_rendezvous(“XXX”);

2、在录制脚本的tree view里添加:rendezvous-XXX;

56、性能测试服务器资源你是如何监控的?

Windows资源监控:首先打开LR服务,要关闭windows下的防火墙,需要开启以下的两个服务Remote?Procedure?Call(RPC)和Remote?Registry?Service,ping?windows的ip成功

打开LR,设计场景,添加Windows资源,添加度量,添加windows的ip,即可监控windows资源

Linux资源监控:首先要打开LR服务,关闭Linux的防火墙要将windows与Linux改成桥接模式,将windows与Linux的ip在同一网段,并ping成功,在Linux上必须安装start进程…

你可能感兴趣的:(面试题锦集)