大厂面试热点问题
1、测试人员需要何时参加需求分析?
如果条件循序 原则上来说 是越早介入需求分析越好 因为测试人员对需求理解越深刻 对测试工作的开展越有利 可以尽早的确定测试思路 减少与开发人员的交互 减少对需求理解上的偏差
2、软件测试与调试的关系
测试条件已知,规程可定义,结果可预知
测试可以计划,过程可控
测试是检验,调试是推理过程
测试表明程序失败,调试表明正确
测试可不了解设计细节
测试由非设计人员完成
测试有理论依据
测试可自动化
3、比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系
黑盒测试:把测试对象当成一个黑盒子,测试人员完全不考虑逻辑结构和内部特性,只依据程式的需求说明书来检查程式的功能是否满足它的功能说明。 白盒测试:把测试对象当成一个透明的盒子,允许测试人员利用程序内部逻辑结构及相关信息,设计或选择测试用例,对程式所有逻辑路径进行测试。 单元测试:白盒测试的一种,对软件设计中的单元模块进行测试。 集成测试:在单元测试的基础上,对单元模块之间的连接和组装进行测试。 系统测试:在所有都考虑的情况下,对系统进行测试。 验收测试:第三方进行的确认软件满足需求的测试。
4、什么是兼容性测试?兼容性测试侧重哪些方面?
兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。
兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。
兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。
兼容和配置测试的区别在于,做配置测试通常不是Clean OS下做测试,而兼容测试多是在Clean OS的环境下做的。
5、所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?
从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的软件缺陷。测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复。发生这种现象的主要原因如下:
-没有足够的时间资源。在任何一个项目中,通常情况下开发人员和测试人员都是不够用的,而且在项目中没有预算足够的回归测试时间,再加上修改缺陷可能引入新的缺陷,因此在交付期限的强大压力下,必须放弃某些缺陷的修改。
-有些缺陷只是特殊情况下出现,这种缺陷处于商业利益考虑,可以在以后升级中进行修复。
-不是缺陷的缺陷。我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理。
最后要说的是,缺陷是否修改要由软件测试人员、项目经理、程序员共同讨论来决定是否修复,不同角色的人员从不同的角度来思考,以做出正确的决定。
6、简述一下缺陷的生命周期?
参考答案:提交->确认->分配->修复->验证->关闭
7、如果一个缺陷被提交后,开发人员认为不是问题,怎么处理?
1.首先,将问题提交到缺陷管理库里面进行备案。
2.然后,要获取判断的依据和标准:
(1)根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
(2)如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
(3)根据用户的一般使用习惯,来确认是否是缺陷;
(4)与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
3.合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不掺杂个人情绪。
4.等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。
8、如果一个缺陷被提交后,开发人员认为不是问题,怎么处理?
1.首先,将问题提交到缺陷管理库里面进行备案。
2.然后,要获取判断的依据和标准:
(1)根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
(2)如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
(3)根据用户的一般使用习惯,来确认是否是缺陷;
(4)与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
3.合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不掺杂个人情绪。
4.等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。
9、什么是关系型数据库,主键,外键,索引分别是什么?
关系型数据库是由多张能互相联接的二维行列表格组成的数据库
主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录
外键表示了两个关系之间的相关联系。以另一个关系的外键作主关键字的表被称为主表,具有此外键的表被称为主表的从表。外键又称作外关键字
在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构, 它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单
10、nginx,tomcat,apache 都是什么?
Nginx (engine x) 是一个高性能的HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 服务器。
Apache HTTP Server 是一个模块化的服务器,源于 NCSAhttpd 服务器
Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,是开发和调试JSP 程序的首选。
11、描述 TCP/IP 协议的层次结构,以及每一层中重要协议
12、Jmeter,一个接口的响应结果如下:
请用正则表达式方法分别获取一下 74956 和 713504275825 这两个数值分别赋值给 A1 和A2
13、HTTPS和HTTP的区别主要如下:
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
14、1Python 里 match 与 search 的 区 别 ?
match()函数只检测 RE 是不是在 string 的开始位置匹配, search()会扫描整个 string 查找匹配;也就是说 match()只有在 0 位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回 none。
15、Python 里面如何生成随机数?
在 Python 中用于生成随机数的模块是 random,在使用前需要 import.
如下例子可以酌情列举:
random.random():生成一个 0-1 之间的随机浮点数;
random.uniform(a, b):生成[a,b]之间的浮点数;
random.randint(a, b):生成[a,b]之间的整数;
random.randrange(a, b, step) :在指定的集合 [a,b) 中,以 step 为基数随机取一个数; random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等。
16、Python 是如何进行类型转换的?
内建函数封装了各种转换函数,可以使用目标类型关键字强制类型转换,进制之间的转换可以用int(‘str’,base=’n’)将特定进制的字符串转换为十进制,再用相应的进制转换函数将十进制转换为目标进制。
可以使用内置函数直接转换的有:
list---->tuple tuple(list)
tuple---->list list(tuple)
17、常用自动化测试工具机器运行原理,写出一段元素查找的代码?
webdriver 原理:
每个Selenium 命令,这里指的是所谓的基础操作,例如,点击、输入等,都会创建一条 HTTP 请求, 发送给 Browser
WebDriver Browser WebDriver 使用一个HTTPServer 监听和接收HTTP 请求
HTTP Server根据协议规则定义这些 Selenium 命令对应的浏览器具体操作
浏览器执行这些操作
浏览器将执行状态返回给HTTP Server
HTTP Server 再将这些状态信息返回给自动化脚本
-
from selenium import webdriver
-
from selenium.webdriver.common.keys import Keys
-
driver = webdriver.Chrome()
-
driver.get("http://www.python.org")
-
assert "Python" in driver.title
-
elem = driver.find_element_by_name("q")
-
elem.send_keys("pycon")
-
elem.send_keys(Keys.RETURN)
-
assert "No result found." not in driver page source
-
driver.close()
18、什么是自动化测试框架?
测试自动化框架是设置特定产品的自动化规则的集成系统。该系统集成了功能库,测试数据源,对象详细信息和各种可重复使用的模块。这些组件用作需要组装以代表业务流程的小型构建块。该框架为测试自动化提供了基础,并简化了自动化工作。
也是为自动化软件测试提供支持的假设框架,概念和工具的主要优点是维护成本低。如果任何测试用例发生变化,那么只需要更新测试用例文件,驱动程序脚本和启动脚本将保持不变。理想情况下,如果应用程序发生更改,则无需更新脚本。
选择正确的框架/脚本技术有助于降低成本。与测试脚本相关的成本是由于开发和维护工作。测试自动化期间使用的脚本的方法对成本有影响。
通常使用各种框架/脚本技术:
线性(程序代码,可能由使用记录和播放的工具生成)
结构化(使用控制结构 - 通常是“if-else”,“switch”,“for”,“while”条件/语句)
数据驱动(数据存储在数据库,电子表格或其他机制中,比如xml)
关键字驱动
行为驱动
混合(使用上述两种或更多种模式)
自动化测试框架主要负责:
定义表达期望的格式
创建一个挂钩或驱动被测应用程序的机制
执行测试
报告结果
19、你对Selenium Grid有什么了解?它提供了什么功能?
Selenium Grid是一款利用现有计算基础架构大幅加速Web应用程序功能测试的工具。允许测试者轻松地在多台机器上并行运行多个测试,并且可以在异构环境中运行。
基于优秀的Selenium Web测试工具,Selenium Grid允许测试者并行运行多个Selenium Remote Control实例。更好的是,它集成显示所有Selenium远程控制,所以不必担心实际的基础设施。Selenium Grid将运行Selenium测试套件所需的时间,缩短到Selenium实例的单个实例运行时间的一小点。
20、Selenium WebDriver中的可用定位器是什么?
ID,
Name,名称
CSS,
XPath,
Class name,
TagName,
LinkText, 链接文本
Partial Link Text.部分链接文本
21、性能测试有哪些分类
1.负载测试
2.压力测试
3.并发测试
4.基准测试
5.稳定性测试
6.可恢复测试
22、简述什么是值传递,什么是地址传递,两者区别是什么?
值传递主调函数传递给被调函数的是值的拷贝,不是原值;地址传递主调函数传递给被调函数的是值的地址。区别是值传递被调函数中的操作不改变主调函数的值,而地址传递则不同。
23、什么函数可以捕捉到web Vuser脚本的动态值?
Web_reg_save_param函数保存动态的数据信息到一个参数中。
24、Loadrunner支持哪些常用协议?
Web(HTTP/HTML)
Sockets
.net 协议
web services
常用数据库协议(ODBC,ORACLE,SQLSERVER 等)
邮件(SMTP、pop3)
其它协议
25、HTTP 和 HTTPS 的区别?
安全性上的区别:HTTPS:HTTP 协议的安全加强版,通过在 HTTP 上建立加密层,对传输数据进行加密。主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。
表现形式:HTTPS 站点会在地址栏上显示一把绿色小锁,表明这是加密过的安全网站,如果采用了全球认证的顶级 EV SSL 证书的话,其地址栏会以绿色高亮显示,方便用户辨认。
SEO:在 2015 年之前百度是无法收录 HTTPS 页面的,不过自从 2015 年 5 月份百度搜索全站 HTTPS 加密后,就已经可以收录 HTTPS 了。谷歌则是从 2014 年起便开始收录 HTTPS 页面,并且 HTTPS 页面权重比HTTP 页面更高。从SEO 的角度来说,HTTPS 和HTTP 区别不大,甚至HTTPS 效果更好。
技术层面:如果要说HTTPS 和HTTP 的区别,最关键的还是在技术层面。比如 HTTP 标准端口是 80, 而 HTTPS 标准端口是 443;HTTP 无需证书,HTTPS 需要 CA 机构颁发的 SSL 证书;HTTP 工作于应用层, HTTPS 工作于传输层。
26、TCP 的连接建立过程,以及断开过程?
27、还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质量?
测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。
28、16.2.4你在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?
测试从事过 web 测试,后台测试,客户端软件,进行功能测试,性能测试,编写测试工具,文档的管理等,比较擅长编写测试用例和进行功能测试。
29、测试结果分析如何?如何产生和被记录?
在项目测试之后,我们对缺陷进行了统计分析,并生成了测试报告文档。在此次项目中所有的缺陷都已修复并关闭。所有的缺陷都记录在缺陷管理工具中,并导出了缺陷报告
30、16.2.35在你以往的工作中,一条软件缺陷(或者叫 Bug)记录都包括哪些内容?如何提交高质量的软件缺陷(Bug)记录?
检测时间,系统环境,硬体环境,严重程度,程式版本,确认人,功能模块,问题描述,详细操作步骤,是否会重现。
问题描述和详细操作步骤要尽可能的详细。Bug 应该尽量用书面语,对与严重程度比较高的缺陷要在相同环境下在测试一遍。
在 C/S 模式下,如果条件满足可以使用替换法来确认是 client 端的问题还是 server 端的问题。
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方蓝色字体或小卡片即可自行领取。软件测试全套资料分享: 耗时2个月整理的软件测试最全资料包