测试面试题汇总(测试理论相关)

1.请说一说黑盒测试和百合测试的测试方法?

1.1黑盒测试

黑盒测试也可以称为功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能够正常使用,在程序接口进行测试,黑盒测试纸检查功能是否按照需求规格说明的规定正常使用,程序是否能适当的接受输入数据而产生正确的输出信息,并且保持外部信息的完整性。

常用的黑盒测试方法有:

等价类,边界值,因果图,场景,正交试验设计法,判定表驱动分析法,错误推测法,功能图分析法。

1.2白盒测试

白盒测试也可以称为结构测试或逻辑驱动测试,是针对被测单元内部是如何工作的测试,他是根据程序的控制结构设计测试用例,主要用于软件或程序验证,白盒测试法是检查程序内部逻辑结构并对所有逻辑路径进行测试

白盒测试需要遵循的原则:


1、保证一个模块中的所有独立路径至少被执行一次

2、所有的测试结果必须要有true和false

3、检查程序的内部数据结构,保证其结构的有效

4、在上下边界以及可操作范围内运行所有循环

白盒测试方法:

静态测试:代码检查 静态结构分析 代码质量度量 文档测试

动态测试:需要执行代码 通过运行程序找到问题 包括功能确认与接口测试。覆盖率分析、性能分析、内存分析等。

2.你认为手动测试和自动化的测试优缺点有哪些?

2.1手工测试缺点:

1、重复的进行手工回归测试,时间成本特别高且容易出错

2、依赖测试人员的测试能力

2.2手工测试的优点:

1、测试人员具有经验和对错误的猜测能力

2、测试人员具有审美能力

3、测试人员具有是非判断和逻辑推理能力

2.3自动化测试的优点:

1、对程序的回归测试更方便,这是自动化测试最重要也是最好的体现

2、可以运行更多更繁琐的测试

3、可以执行一些手工测试困难或不可能进行的测试,(比如大量用户测试,自动化可以轻松的做到)

4、更好的利用资源。将繁琐的任务自动化,可以提高准确性和人员的积极性 将手动测试和自动化测试分工更明确

5、测试结果具有一致性和可重复性

6、测试的复用性

2.4自动化测试的缺点:

1、不能缺带手工测试

2、手工测试比自动测试发现的缺陷更多

3、对测试质量的依赖性极大

4、测试自动化不能提高有效性

5、测试自动化可能会制约软件开发,由于自动测试比手动测试更加脆弱,所以维护收到限制,从而制约软件的开发

6、自动化测试是工具,并没有测试人员的想象力

3.你认为测试的核心竞争力是什么?(优势)

1、早发现早解决

2、发现别人无法发现的问题:我认为这个第二点是最重要的,你发现了别人发现不到的问题 那么就证明你是不可能被替代的,

4.你认为自动化测试有什么意义,需要你做些什么?

自动化测试的意义:

1、可以在版本进行更替的时候进行回归测试

2、可以执行手工测试困难或者不可能实现的测试功能,比如压力测试,性能测试等

3、能够更好的利用资源,节省时间和人力

当我们在做自动化测试的前提

在执行自动化测试之前需要判断这个项目适不适合推广自动化测试,

如果适合的话,对项目做需求分析,指定测试计划-->搭建自动化测试框架-->设计测试用例-->执行测试-->评估

5.那么请你回答一下测试的流程是什么?

最规范的过程:

需求测试---概要设计测试---详细设计测试---单元测试---集成测试---系统测试---验收测试

 

6.请你回答一下如何编写测试用例?

1、测试人员应尽早的介入,彻底理解清楚需求

2、清楚地输入,输出各种可能情况,以及各种输入之间的关系,理解清楚需求的执行逻辑,通过等价类边界值判定表等方法找出大部分用例

3、找到需求相关的一些特性,补充测试用例

4、书写格式需要清洗

除此之外编写测试用例还需要的有

用例id 用例名称 测试目的 测试级别 参考文档 测试步骤 期望结果 实际结果 差异分析

7.请你分别介绍下单元测试、集成测试、系统测试、验收测试、回归测试

7.1单元测试

单元测试也称为Unittest,是对软件最小离度的测试,目的是验证校验软件基本组成单位的正确性,测试的对象是软件设计的最小模块

测试阶段:编码后进行测试

测试对象:比如程序里面的一个方法 或者是一个函数的内部逻辑

测试人员:白盒测试工程师 开发工程师  测试开发工程师

测试依据:代码内部程序逻辑和开发注释

测试方法:白盒测试,我用的是python的Unittest和pytest的测试框架

测试内容:模块接口测试,程序内部逻辑,路径分支测试,局部数据结构测试,错误处理测试,边界测试

7.2集成测试

是把单个模块的

程序集成到一起后的测试,集成测试主要来验证各个模块集成后模块与模块之间的功能性,以及哥哥模块集成后的功能流程性和逻辑兼容性测试

测试阶段:一般在单元测试之后进行

测试对象:模块间的接口

测试依据:单元测试模块和概要设计文档

测试方法:黑盒测试与白盒测试相结合(灰盒测试)

测试内容:模块之间的数据传输,模块之间的功能冲突、模块组装功能正确性,全局数据结构、单模块缺陷对系统的影响

7.3系统测试

将软件系统看成是一个系统的测试,包括功能,性能以及运行的软硬件环境进行测试,时间大部分在系统测试执行阶段来验证被测程序的整体性的功能。

测试阶段:集成测试通过之后

测试对象:整个系统(软件以及涉及的硬件)

测试人员:黑盒测试工程师,功能测试工程师

测试依据:需求规格说明文档,以及产品的PRD文档

测试方法:黑盒测试,功能自动化测试

测试内容:功能 界面 可靠性 易用性 性能 兼容性 安全性等

7.4验收测试


验收测试是部署软件之前的最后一个测试,它是技术测试的最后一个阶段,也称为交付测试。总结验收测试的目的是确保软件准备就绪,并且按照项目合同,任务书,双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。

 

7.5回归测试

回归测试是指在发生修改之后重新进行先前的测试用例以保证修改的正确性,

理论上来说,软件产生新版本,都需要进行回归测试,来验证以前发现和修复的错误是否在新软件版本上再次出现。根据修复好了的缺陷再从新进行测试

8.请你回答一下,单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的时哪一步

首先,这些测试步骤是分别在软件开发的不同阶段对软件进行测试

我认为对软件完整功能进行测试的系统测试是最重要的

因为在做系统测试的时候 单元测试和集成测试已经完成,别情能够针对软件所有功能进行功能测试

能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足了需求规格的定义,

因此我认为系统测试很重要

9.请你回答一下,集成测试和系统测试的区别,以及他们的应用场景主要是什么?

1、集成测试和系统测试的区别

A、集合和测试用例编写的先后顺序   是先进行集成测试 待集成测试的出现的问题全部修复之后在进行系统测试

B、用例的离度:系统测试用例相对于很接近用户接受测试用例,集成测试相比于系统测试来说更加详细些,而且对于接口部分重点写,要集成各个模块或子系统

2、应用的场景

集成测试的场景:


完成单元测试之后,各个模块联调测试,集中在各模块的接口是否一致,各模块间的数据流和控制流是否按照设计实现其他功能以及结果的正确性验证 可以是整个产品的集成测试,也可以是大模块的集成测试          

集成测试要求对测试人员编写代码能力要求比较高,测试方法一般是黑盒测试和白盒测试相结合

 

系统测试的场景:

系统测试是针对整个产品的全面测试,即包含哥哥模块的炎症性测试和功能性测试,也包括整个产品的安全性,可维护性以及各种性能参数的测试。

系统测试软件测试《需求规格说明书》中提到的功能是否遗漏,是否正确的实现。做系统测试要严格按照《需求规格说明书》,以它为标准,测试发方法一般都使用黑盒测试方法

10.请你回答一下,软件质量的六个特性?

1、功能性:与一组功能及其制定性质有关的一组属性,这里的功能满足明确或隐含的需求的哪些功能。

2、可靠性:在规定的一段时间和条件下,软件维持其性能水平能力有关的一组数形

3、易用性:用一组规定或潜在的用户为使用软件所需作的努力和所做的评价有关的一组属性。

4、效率性:与在规定条件下软件的性能水平与使用资源量之间有关系的一组属性

5、可维护性:与进行制定修改所需努力有关的一组属性

6、可移植性:与软件从一个环境转移到另一个环境的能力有关的一组属性。

 11.请你说一下设计测试用例的方法有哪些?

1、等价类:是把所有的可能输入数据 划分成若干部分 按照有效数据和无效数据进行区分

2、边界值:是对输入或者输出的边界值进行测试的一种黑盒测试方法

举例说明:如需要字符串长度为5-12个字符 则在进行测试时候 需要对    4(5         12)13 的字符进行测试

3、错误推测法:基于经验和直觉来推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。

4、因果图方法:是一种利用图解分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况

5、判定表驱动方法:判定表是分析和表达多逻辑条件下不同操作情况的工具

6、正交试验设计方法:从大量的数据中挑选适量的,有代表性的店,从而合理的安排测试的一种科学实验设计方法

7、功能图分析方法:是用功能图FD形式化地表示程序的功能说明,并机械的生成功能图的测试用例

8、环境设计方法:同一事件不同的触发顺序和处理结果形成事件流

12.请你说一说bug的周期,描述下不同类别的bug?

1、New(新的):当 bug第一次被发现的时候 测试人员需与项目负责人沟通确认发现的的确是一个bug 如果被确认是bug就会被记录下来 并将bug的状态设置为New

2、Assigned(指派的):当bug被指认为New之后,会反馈给开发人员,开发人员将确认这是否是一个bug,如果是开发组的负责人就将这个bug制定给某位开发人员处理,并将bug状态设定为Assigned

3、Open(打开的):一旦开发人员处理bug的时候,就将这个bug的状态设置为Open,这表示开发人员正在处理这个bug

4、Fixed(已修复的):当开发人员进行处理(并认为已经解决)之后,他就可以将这个bug的状态设置为Fixed并将其提交给开发组的负责人,然后开发组的负责人将这个bug返还给测试组

5、Pending Reset(待测试的):当bug被返还到测试组后,我们将bug的状态设置为Pending Reset

6、Reset(再测试):测试组的负责人将bug制定给某位测试人员再测试,并将bug的状态设置为Reset

7、Closed(已关闭的):当测试人员经过再次测试之后确认bug已经被解决之后,就将bug的状态设置为Closed

8、Reopen(再次打开的):如果再次经过测试发现bug仍存在的话,测试人员将bug再次传递给开发组,并将bug的状态设置为Reopen

9、Postponed(延期):有些时候,对于一些特殊的bug的测试需要搁置一段时间,事实上有很多原因可能导致这种情况的发生,比如无效的测试数据,一些特殊的无效功能等,这个时候bug的状态就会被设置为Postponed

符合bug的类型有:

代码错误 界面优化  设计缺陷 配置相关  安装部署  安全相关 性能问题 标准规范 测试脚本 其他等

 13.一条高质量的缺陷记录BUG应该有哪些内容?

1、记录bug产生的前提条件

2、产生bug的详细操作步骤

3、截图,只管的展示问题,有效帮助开发快速定位问题

14.经典面试题:给你一个水杯 如何进行测试?

项目:杯子

需求测试:查看杯子的使用说明书界面测试,查看杯子外观

功能测试:用水杯装水看漏不漏,水能不能被喝到
安全性:杯子有没有毒或细菌

可靠性:杯子从不同高度落下的损坏程度

可移植性:杯子在不同地方,温度等各种环境下是否能够正常兼容,杯子是否能够容纳果汁,白水,酒精,汽油等。

易用性:杯子是否烫手,是否有防滑措施,是否方便饮用

用户文档:使用杯子的手法,限制,使用条件有详细描述

疲劳测试:盛放水24小时查看泄露情况

压力测试:用根针并在针上面不断加重量看多长时间会穿透

15.请说出你用到的5种测试软件?


在做接口测试的使用用到的是postman和jmeter

在抓包网页的时候用到的是chirles

在我们部署环境的时候用到的是docker

在做Jenkins持续集成的时候用到的时 allure

16.什么是自动化测试?

让程序代替人为去验证程序功能的过程

1、解决 回归测试

2、解决 压力测试

3、解决 兼容性测试

4、提高测试效率 保证产品质量

17.你理解的po模式是什么?

PO模式是一种自动化的设计模式  将定位和业务来分开操作从而提高可维护性,重复利用性 

PO模式的好处  

1、提高可维护性

2、提高可读性

3、提高复用性

18.显式等待和隐式的区别是什么?

显式等待作用于单个元素 而隐式等待作用于全局等待

19.谈一谈你对selenium的理解?

首先selenium是一个python的库 是用于测试额便捷式框架,是用于测试网站的自动化测试工具,包括chrome firefox 等主流浏览器 

对于现在工作的我来说,这个库是实现ui自动化必不可少的一个库,是用来自动化测试的灵魂

20.HTTP和HTTPS的区别?

HTTP协议是超文本传输协议明文传输,HTTPS是需要CA证书  为SSL+HTTP协议的请求  更加安全

另外标准端口也不同 HTTP的默认端口为80  HTTPS端口为443

HTTP工作应用于 应用层  HTTPS工作应用于传输层

21.cookies和session的区别?

cookies是针对每一个网站的信息,每一个网站只对应一个且cookies文件是保存在本地客户端的,每次访问相应网站的时候浏览器就会查找cookies 可以进行接下来的操作

session是针对每一个用户而言,只有客户访问,程序就会为这个客户增加一个session,session主要保存的时用户登录的信息,操作信息等,这个session会在用户访问结束后自动消失

22.常用的POST提交数据方法有哪些?

主要有4种方式 

1、application/x-www-form urlencoded

2、application/json

3、text/xml

4、文件上传

23.开发晚转测怎么解决?

早会的时候把进度反馈给领导,看能不能测试上线的时间往后延一天,如果不能延迟的话,就可以加班进行内部消化

24.ui自动化测试流程?

1、梳理哪些功能可以做自动化测试

2、编写对应的自动化测试框架,测试用例

3、叫上相关的人来进行测试用例评审

4、整合到Jenkins的持续集成平台

5、对回归测试进行备份

25.怎么评价上一家公司?

1、我学习到了很多知识

2、公司氛围 同事之间特别融洽 不管是我的领导 还是我的同事

26API的动态参数怎么处理?

场景:添加书

我添加一本书 会返回一个动态参数

在postman当中定义个全局变量 在其他地方调用该变量时候运用{{}}来进行调用

 

 

在JMeter后置处理器当中的json提取器将商品ID定义成变量   然后通过${}来进行调用

27.性能测试查看资源有哪些?

cpu

memory

I/O

聚合报告(响应时间 最大 最小 90 95 99 吞吐量)

28.性能测试的目的?

如果当大量用户同时登陆时候,可能会存在响应超时,甚至崩溃

所以这个时候我们需要做性能测试,来检测程序在大量用户 或同一时间段高频使用 防止程序无响应或响应超时或崩溃

29压力测试和负载测试的区别?

通过压力测试,您可以尽可能快地同时运行用户,以生成压力测试的过多流量

。. 负载测试的目标与压力测试的目标大不相同

负载测试通常用于容量规划过程,以确保系统能够处理到指定级别的同步流量。

posted on 2022-02-08 17:48  钢镚芽儿哟  阅读(346)  评论(0编辑  收藏  举报

导航