各类测试工程师的面试秘籍

软件测试工程师的面试秘籍

  1. 敏捷开发测试的核心实质是什么?为什么敏捷开发模型能够对需求的变更应对自如?

答:敏捷开发拥有更好的设计架构,重构是敏捷开发中常用的技术手段。同时足够的沟通、合理的、细致的迭代是敏捷开发的实质。

  1. 手机客户端APP常见的出错点是什么?如何测试?

答:资源释放、网络、内存;
容易发生在启动、关闭APP, 横竖屏切换,基站切换。
可考虑将所有可打开的功能均打开,进行横竖屏切换等操作;在各种网络环境(电信、移动、联通、WiFi等)覆盖和场景(地铁、公交、室内、室外等)覆盖下测试。

3.软件测试的方法有哪些分类?设计测试用例的主要方法有哪些?

(1)从是否关心内部结构:
黑盒测试:只是进行功能上的测试,点点点,站在使用软件或程序的角度,从输入数据与输出数据的对应关系除法进行的测试。
白盒测试:会涉及到内部逻辑结构和编码结构
灰盒测试:主要进行的是接口测试,将白盒与黑盒结合在一起。基于程序运行时的外部表现又结合内部的逻辑结构来设计用例。
(2)从是否执行代码看:
静态测试:指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。
动态测试:指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能指标。
(3)从执行过程是否需要人工干预来看:
手工测试:就是测试人员按照事先为覆盖被测软件需求而编写的测试用例,是手工地一个一个地输入执行。
自动化测试:将大量的重复性的工作交给计算机去完成,不需要人工干预,由程序自动完成测试的全过程。
(4)按测试的阶段划分为:
单元测试、集成测试、系统测试、验收测试、回归测试、alpha测试、beta测试。

问题二:设计测试用例的主要方法:
主要有:等价类划分法、边界值分析法、因果图法以及错误推测法。

4。怎样才是成为一个合格的软件测试工程师(成为一个软件测试工程师的素养?)?

答:①计算机专业技能;②测试专业技能;③软件编程技能;④网络、操作系统、数据库等知识的掌握;⑤较强的责任心,对待测试工作要有不厌其烦的态度,有一直面对干枯重复性的单调的工作的想法;⑥有较强的沟通能力,与需求人员、研发人员可以顺利够用交流。

5。《闰年的测试用例》:假设输入的取值范围是1000 闰年的判断<(year%40 && year%100!=0)||(year%4000)>

答:用例1:year是1000~2000能被4整除的整数;
用例2:year是1000~2000能被4整除但不能被100整除的整数;
用例3: year是1000~2000能被100但不能被400整除的整数;
用例4: year是1000~2000能被400整除的整数;

6.白盒测试与黑盒测试区别:

**黑盒测试(功能测试),它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。 黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
**白盒测试:白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
**区别:
一、测试方式不同
1、黑盒测试:功能测试,是通过测试来检测每个功能是否都能正常使用。
2、白盒测试:称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
二、测试目的不同
1、黑盒测试:把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。
2、白盒测试:通过检查软件内部的逻辑结构,对软件中的逻辑路径进行覆盖测试。在程序不同地方设立检查点,检查程序的状态,以确定实际运行状态与预期状态是否一致。
三、 测试方法不同:
1.黑盒测试:等价类划分法、边界值分析法、因果图法以及错误推测法;黑盒测试方法的定义
2.白盒测试:强度由低到高:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。若要了解深入可以查看白盒测试各种方法的定义

  1. 什么是正交测试?使用场景是什么?

正交测试源于正交试验设计方法,是从大量数据中挑选合适的、适量的、有代表性的点,从而合理地安排测试的一种科学的试验设计方法。

8.列举一些自动化测试工具,并说明他们的实现原理。

1)Loadrunner:是一种预测系统行为和性能的负载测试工具。它能够对整个企业架构进行测试,可以较大限度的缩短测试时间。Loadrunner可适用于各种体系结构的自动负载测试,能预测系统行为并评估系统性能。
2)postman:提供强大的web api和http请求的调试,能够发送任何类型的http请求(get、post、put、delete…),并且能附带任何数量的参数和headers。
3)selenium:是一个用于web应用程序测试的工具,selenium直接运行在浏览器中,就像真的用户在操作一样。这个工具的主要功能有:①测试与浏览器的兼容性;②测试系统功能;
4)appium:是一个移动端自动化测试开源工具,支持iOS和Android两种平台,它是一个CS架构,核心是一个web服务器,他提供了一套rest的接口,当收到客户端的连接,就会监听到命令,然后在移动设备上执行这些命令,最后将执行结果放在http响应中返还给客户端。

9.自动化测试应用场景能否代替手工测试,为什么?

答:可以分别从自动化测试的优点和缺点进行分析如下:

自动化测试的优点是:
①减少人力成本,提高测试效率;②完成大量重复性工作;③完成手工无法完成的工作;④有效的利用资源;⑤保证工作的一致性,增加信
这里是引用

任度。

自动化测试的优点是:
①不能取代手工测试;②手工测试可以发现更加详细、隐秘的软件缺陷;③对测试质量的依赖性极大;④测试自动化不能提高有效性;⑤自动化测试比手动测试脆弱,所以维护会受到限制,从而制约软件开发;⑥工具本身不存在想象力。
总结:自动化测试完成不了的,手工测试可以进行补充完成,两者有效结合是测试质量保证的关键。

10.⑦alpha测试与beta测试的区别?

*Alpha测试在系统开发 接近完成 时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。由一个或多个用户在开发环境下进行测试。
*Beta测试当开发和测试 根本完成 时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。由一个或多个用户在用户实际环境下进行而是。

11.什么是关键字驱动化测试?

关键字驱动是自动化框架实现方式的一种,一个关键字对应一种操作,比如: 新建用户,对应的一系列代码。Case是由一系列关键字对应的代码组成。而关键字驱动自动化测试就是通过读取关键字,自由生成测试用例的自动化测试框架。

12.高质量的自动化测试需要具备哪些特性?

执行稳定,编写case工作量小。

13.在SQL server中,如何从名为“Student”的表中选取列为“mayingbao”的值以“a”开头的所有记录?

select * from Student where mayingbao like “a%” ;

14.假如某银行,由于新上线的后台对账项目突然出现崩溃,系统处于停用状态,最后查明系统可能存在性能瓶颈,你作为此项目的主要测试负责人,你该如何处理?

答:首先:回滚线上环境,让线上使用旧版本,确保线上系统正常运行;
然后,跟开发者一起查找、修复问题后,重新上线。

15.web测试中,经常会设计安全测试,那么什么是“SQL注入”?

答:就是通过把SQL命令插入到“web表单递交 或 输入域名 或 页面请求的查询字符串”,最终达到欺骗服务器并执行恶意的SQL命令的效果。

16.运行web浏览器的计算机与网页所在的计算机建立______连接,采用______协议传输文件。

答: TCP HTTP

游戏类测试工程师面试样题及答案

  1. 请简述你进入此行业的职业目标:

(根据自己实际情况作答)前3~5年,对游戏测试打好基础。三五年后视情况而定,可能继续走技术也可能转为管理,看3年后的发展情况而定。目前是想继续做测试。

2.请简述你对游戏测试工作的理解。

答案:游戏测试需要用心、仔细。

第一步要作出全面的测试计划,这是个很花时间的过程,认真的测试员必须要对游戏产品有全盘了解,并制定完整、正确的企划书,这份企划书要准确描述测试结束后游戏所能达到的品质。据此做出测试时间和人力安排方案。

第二步是实施阶段,这一阶段的目标是“确保其功能的正确性,在指定环境下运行的正确性”,这在测试中有两个专用术语指代:功能测试与压力测试。功能测试即检验游戏是否能实现所有设计功能。测试功能可分为:游戏画面、NPC对话、物品的穿戴摘取带来的数据变化、升级带来的数据变化、各个频道的聊天是否正常、任务的完成过程和结果,技能的使用等等。压力测试的项目则主要有职业平衡性、某一场景中能够承载的人数、不同场景间承载的不同级别人物、怪物的刷新率、同场景内不同怪物的搭配等。此外还要依照游戏中的语音、对话表,来检查错别字。
第三步被称作回归测试,准确来说并非一个测试步骤,只是用于保障对Bug的修改不会引入新的BUG,所以简单讲就是对修改后的版本重新进行一次完整的测试过程,查看之前的bug是否被正确修改或者是有没有出现新的bug,这也是回归测试的目的。重新验证每个细节,然后将测试过程中的信息收集整理,供下个游戏制作和测试借鉴。

3.哪些个人特质或性格使你认为自身适合做测试工作?

答案:仔细、反向思维、有计划、有耐心以及有责任心。

4.请列举你所熟悉的5款游戏,并指出其游戏类型:

竞技类--------王者荣耀
动作------格斗游戏
冒险--------荒岛求生
模拟---------赛车
休闲----------台球

5.什么是bug?

bug原意是“臭虫”,现在用来指代计算机上存在的漏洞,原因是系统安全策略上存在的缺陷,有攻击者能够在未授权的情况下访问的危害。在软件测试这一块,简单理解为:只要跟预期不符合的都是bug,bug的变动很大,每一个项目或者软件都有各种各样的bug。

6.若是需要测试俄罗斯方块,从哪些方面入手呢?

可以从界面UI、动作、软硬件环境、性能以及兼容性方面入手测试。

性能测试工程师面试样题以及答案

  1. .什么是性能测试?什么是负载测试?什么是压力测试?

答案:

(1)性能测试:是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

(2)负载测试:是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。

(3)压力测试:是通过确定一个系统的瓶颈或者 不能接收的性能点,来获得系统能提供的最大服务级别的测试。

2.性能测试包含了哪些测试(至少举出3种) ?

答案:压力测试、负载测试、并发测试、可靠测试、失效恢复测试。

3.简述性能测试的步骤。

答案:计划测试一测试设计一创建脚本-创建场景→分析结果。

4.简述使用LoadRunner的步骤。

答案:脚本录制设置一录制脚本-调试脚本-场景设置→结果分析。

5.什么时候可以开始执行性能测试?

答案:在产品相对比较稳定,功能测试完成后。其灵活性比较强。

试题6. LoadRunner 由哪些部件组成?

答案:①virtual user generator—>用来录制脚本
②controller—>可以模拟多用户并发下回放脚本
③running controller
④analysis

7.性能测试里的健壮性和稳定性的理解?

答:1)健壮性是指:程序在运行过程中出现的一般性错误,程序会自动进行错 误处理函数。 (是指出现错误还能运行的能力)
性能测试的内容:①系统是否很快响应用户;②系统能否处理预期的用户负载并具有盈余能力;③能否处理业务所需的事务数量;④在预期和非预期的用户负载下,系统是否稳定;⑤系统能否确保用户在真正使用系统时所获得积极的体验。
性能测试的目标:①系统响应时间,支持客户数等;②服务器的配置(CPU、内存、磁盘)客户机配置;③连接数:数据库缓存池的连接、IE的连接。
2)稳定性是指:是指系统长期稳定运行的能力,在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标。

8.集合点是什么? 设置集合点有什么意义? loadrunner中设置集合点的函数是哪个?

答:设置多个用户到达某个用户数量点集合。
设置集合点可以同时触发一个事务,以达到模拟真实环境下同时多个用户操作,同时模拟负载,实现性能测试的最终目的。
函数是LR_rendezvous(“集合点名称”)。

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

答:场景是指模拟真实环境中,用户运行的状况。
场景的重要性:
(1)通过场景模拟实际用户的操作,这样得到的性能测试结果才具有代表性。
(2)在运行过程中也需要关注场景性能测试值,以便检测测试过程是否正常。
如何设置场景:
尽量站在用户角度考虑用户操作。

10.为什么需要创建参数,如何创建参数?

答:在环境变化时必须使脚本更具有环境变化的能力,这时就需要参数化(客户端发送到服务器端);
创建参数步骤:(1)确定要参数话的数据;(2)设定规则形式来取值

11.什么是关联?请解释一下自动关联和手动关联的不同。

答案:

关联:很多构架用sii等方法标识不同任务和数据,应用在每次运行时方式发送数据不完全相间,需要利用的机制对录制的脚本进行处理,这种机制叫做关联(服务端发送到客户端)。

自动关联就是跳转过程中通过sd可以自动找到信息。
手动关联就是要用户再次输入登录密码再关联。

12.你如何找出哪里需要关联?请给出一些你所在项目的实例。

答案:

用户登录,客户端发送请求后,服务端验证正确性后,发送给客户端ssionid,使某种规则产生。

比如:你登录了一一个淘宝账号, 跳转支付宝后,无须输入支付宝再次登录,这就是关联。

13.你在哪里设置自动关联选项?

答案:

两个地方可以设置。

(1)设置允许录制时进行自动关联,可以自定义规则。
(2)录制完成后,vuser-scan action for correlations。

14.你在VuGen中何时选择关闭日志?何时选择标准和扩展日志?

答案:

当调试脚本时,可以只输出错误日志;当在场景找你管加载脚本时,日志自动变为不可用。选择标准日志时,就会在脚本执行过程中,生成函数的标准日志并且输出信息,供调试用。大型负载测试场景不用启用这个选项。扩展日志包括警告和其他信息。大型负载测试不要启用该选项。用扩展日志选项,可以指定哪些附加信息需要加到扩展日志中。

15.你如何调试LoadRunner脚本?

答案:VuGen有两个选项帮助调试Vuser脚本。RunStepbyStep命令和Breakpoints(断点)。Option对话框中的调试设置(Debug setting)项,可以确定在场景执行过程中执行轨迹范围。调试信息写在Output窗口。如果我们只想接收到一小段脚本的调式信息。

16.什么是逐步递增?你如何来设置?

答:
逐步递增是指用于增加服务器的虚拟用户数或负载量。可以设置一个初始值,而且可以在两个迭代之间设置一个值等待。设置逐步递增,请到“Scenario
Scheduling Options”.

17.响应时间和吞吐量间的关系是什么?

答:吞吐量显示的是虚拟用户每秒钟从服务器接受到的字节数。或者是在单位时间内系统处理客户端的请求数。当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低;同样,吞吐量的峰值和最大响应时间差不多在同时出现。

18.若web服务器、数据库以及网络都正常时,问题会出在哪里?

答:通过操作系统、代码算法、其他通信传输层硬件。

19.如何发现web服务器相关的问题?

答:通过网络带宽、内存、存储、CPU。

20.什么是思考时间?

答:思考时间是真实用户在action间等待的时间。
例如:但一个用户接受到服务器传来的数据时,用户可能需要在响应之前等待几分钟回顾数据,这种推迟本称为“思考时间”

21.java web应用的三层结构是什么?

答:浏览器 / 中间层(Java ASP等程序) / 后台数据库服务器

  1. cookie和session是什么意思? 有什么区别?

答:session是由应用服务器维持的一个服务器端的存储空间,用户在连接服务器时,会有服务器生成一个唯一的sessionID,用该sessionID为标识符来存取服务器端的session存储空间。而sessionID这一数据则是保存在客户端,用cookie保存,当用户提交页面时,会将这一sessionID提交到服务器端,来存取session数据。这一过程,是不用开发人员干预的。所以一旦客户端禁用cookie,则session也会失效。
服务器也可以通过URL重写的方式来传递sessionID的值,因此也不是完全依赖cookie。如果客户端cookie禁用,则服务器可以自动通过重写URL的方式来保存session的值,并且这个过程对程序员透明。
cookie是客户端的存储空间,由浏览器来维持。
两者的区别:
1、cookie数据存放在客户的浏览器上,session数据放在服务器上。
2、cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗
考虑到安全应当使用session。
3、session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能
考虑到减轻服务器性能方面,应当使用COOKIE。
4、单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
5、会话机制方面:session会话机制是一种服务器端机制;cookie会话机制是服务器存储在本地计算器上的小块文本,并随着每个请求发送到服务器端。
两者的联系:
session是通过cookie来工作的。
session和cookie之间是通过 C O O K I E [ ′ P H P S E S S I D ′ ] 来 联 系 的 , 通 过 _COOKIE['PHPSESSID']来联系的,通过 COOKIE[PHPSESSID]_COOKIE[‘PHPSESSID’]可以知道session的id,从而获取到其他的信息。在购物网站中通常将用户加入购物车的商品联通session_id记录到数据库中,当用户再次访问是,通过sessionid就可以查找到用户上次加入购物车的商品。因为sessionid是唯一的,记录到数据库中就可以根据这个查找了。

23.负载测试、可靠性测试和可用性测试的定义有什么区别?

答:(1)负载测试时通过逐步增加系统负载、测试系统性能的变化、并最终确定在满足性能指标的情况下,查看系统所能承受的最大负载量的测试。
(2)可靠性测试通过在有使用代表性的环境中执行软件,以证实软件需求是否正确实现。为进行软件可靠性估计采集准确的数据。估计软件可靠性一般分为4个步骤:—>数据采集、模型选择、模型拟合以及软件可靠性评估。可以认为,数据采集是整个软件可靠性估计工作的基础,数据的准确与否关系到软件可靠性评估的准确度。通过软件可靠性测试可找出所有对软件可靠性影响较大的错误。
(3)可用性测试:顾名思义是测试设计方案或者产品在一定环境下的可用性水平,可以通过其可用性水平高低来查看其可用性的高低。

24。 (经典问题)测试过程中,开发人员认为不是bug怎么办?

答:首先作为测试人员,肯定自己要确保出现的错误是否正确理解为bug,并是否能重现bug。所以①首先一定要确保自己能重现bug的过程,真正模拟到该问题所在;②其次要将系统的bug带给用户的影响要详细解释和说明,让开发人员了解到问题所在,能够针对性的解决问题并节省时间;③也要分析修复bug后会不会还增加新的bug,如果开发还是不肯修改,挖历史,找当时的例子噎住他;④开发人员修复bug后测试员再进行依次回归测试,让开发人员觉得我们是对质量的负责,也有利于开发与测试下一次友好的合作。⑤或者找研发总监或者项目经理,解释给他们听,让他们评估这个bug的严重级别并进行对开发人员的劝说,最后记得有图有真相的对bug进行备注。

25.十四.数据库里的add和insert以及delete和drop的区别

(1)add和insert; add是在alter里面用于添加列的操作; 而insert是向特定的表里边添加一行或多行数据。
(2)Delete、truncate和drop
Delete是对表里的数据进行的操作,是删除符合一定条件的数据行;
Truncate只能是清空表里的数据,但不能删除表结构,其依然存在。
Drop是删除一整张表包括所有数据,也包括视图、游标以及存储过程等。

26.数据库相关知识

1. 触发器的作用?
答:特殊的存储过程。可强化约束,维护数据的完整性和统一性。
2. 什么是存储过程,用什么来调用?以及其作用?
1)存储过程是一个预编译的SQL语句。只需要创建一次,可以吊用多次。
2)调用: ①可以用一个命令对象来调用存储过程;②可以供外部程序使用,如Java程序。
3)作用:
①存储过程因为SQL语句已经预编译过了,所以运行速度比较快;
②存储过程运行比较稳定,不会有太多错误。
③存储过程主要是在服务器上运行,减少对客户机的压力;
④存储过程可以在单个存储过程中执行一系列SQL语句。
⑤它可以从自己存储过程内引用其他存储过程,可以简化一系列复杂语句。
3. 索引的作用以及优缺点以及索引的分类
(1)索引的作用是为了提高系统的性能。
优点: 加快数据检索;可以保证数据的唯一性;
缺点: 创建索引需要占用空间,且创建和维护索引需要时间的消耗。
(2)索引的分类
索引分为:唯一索引(比如:主键索引)和非唯一索引(比如复合索引和普通索引)。
4. SQL语句查询 语数英综成绩加起来前十的学生的id:
Select s_id sum(score) as a from s_score group by s_id where score >= 10;

27.冒烟测试和回归测试的区别:

1.测试的目的不同:冒烟测试是为了用于确认代码中的修改会按预期执行,且不会破坏整个版本的稳定性。 而回归测试是确认是否修改旧bug且查看有没有引入新的错误或者导致其他代码产生错误。
2.问题解决方式不同:冒烟测试中是发现问题然后反馈给开发人员进行修改;而回归测试是修改完之后进行验证再进行的工程。
3.测试过程不同:冒烟测试是将代码更改嵌入到产品源树中之前对这些更改进行验证的过程;回归测试:是指漏洞由开发人员修改之后再次测试的过程。
4.测试周期不同:冒烟测试会节省测试时间;回归测试:在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。
5.测试意义不同:冒烟测试是针对软件质量的整体体验,是测试人员对测试流程的一个熟悉。回归测试:是一个成本昂贵的过程。

28.Group by 与 order by 的区别 :

1.Order by 从英文里理解为行的排序,默认为升序(asc)\降序(desc)。Order by后面必须列出排序的字段名,可以是多个字段名。
2.Group by 为分组。必须有“聚合函数”来配合使用,使用时至少需要一个分组标志字段。Having只能用于group by子句,作用于组内<聚合函数:类似于sum()、count()、avg()>
3.在SQL命令格式的使用顺序上,group by > order by.
4.在SQL中也可以说是order by是按字段排序,group by是按字段分类。 Eg:
① select * from s order by sno desc; (按学号降序查询所有学生)
②select cno, count(sno) from sc group by cno. (求各个课程号及相应的选课人数)

29.数据库相关:

1.mysql加入一个元祖: Insert into 表名 (字段列表) values (‘’,’’,’’);
2.mysql删除表: Truncate/Delete from 成绩表 where 总分 <120
(删除表里的所有数据) Drop table 表名。
3.mysql清空表: Truncate table + 表名

30.Linux:

1.【查看文本】命令有哪些
cat: 由第一行开始显示内容,并将所有内容输出;
tac: 从最后一行倒序显示内容,并将所有内容输出;
More: 根据窗口大小,一页一页的显示内容;
Less: 和more类似,但其优点可以一页一页的往前翻页,而且可以进行搜索字符。
Head:只显示头几行;
Tail : 只显示最后几行;
nl : 类似于cat-n ,显示时,输出行号;
Tailf:类似于tail-f 文件跟踪,tailf从文件头一点一点的读;tail-f 从文件尾一点的一点的读取。
2.查【看文本中某个词】的出现次数
grep-c key_word file1 file2 file3 : 统计文件中字符串出现的次数 ;
grep-w ‘所查词’ 文本文件 |tr-c [:alpha:] “/n” | grep ‘所查词’ -c: 查一个文件 ;
Grep命令:是一种强大的文本搜索工具,它能使用正则表达式搜索文本。
3.【进程相关】命令
1)查进程: ps: 命令查找与进程相关的PID号; Ps - A 显示所有程序 (ps-H)

2)杀进程: 使用kill命令结束进程 : kill xxx
3)进入到进程的执行文件所在的路径下,执行文件 ./ 文件名
4.【修改文件权限】的命令
文件或目录的访问权限分为 只读r、只写w和可执行x三种。
1)Chmod:重新设定不同的访问权限;
2)Chgrp:更改某个文件或目录的用户组。
3)Chown:更改某个文件或目录的所有者(属组or属主);
有三种不同类型的用户对文件或目录进行访问
①文件所有者(a);②同组用户(g);其他用户(o); 所有者一般是文件的创建者。 当用ls - l 命令显示文件或目录的详细信息/文件的大小时,最左边的一列为文件的访问权限。 eg:“ -rw-r–r--” 横线‘-’代表空许可。第一个字符指定了文件的类型。一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件;若是d,代表是目录文件。

  • rw- r-- r-- 分别代表:普通文件 文件主 组用户 其他用户 具体的权限(如777的含义):最高位7代表所有者的访问权限;第二位为群组用户的访问权限;第三位为其他用户的访问权限。
    且r权限制为4,即r4;w3;x==1

在这里插入图片描述

软件测试工程师面试题目合集

  1. 什么是数据需求?

数据需求是用户数据以实体、属性、关系和规则形式的表述。

  1. 什么是过程需求?

过程需求是用于某个业务过程及其信息、信息系统的处理需求的用户理解。

  1. 简单描述什么是软件测试?软件测试的两大目的是什么?

答:软件测试简单描述来说就是使用人工或自动手段来运行或测定某个系统或软件的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。即软件测试是一种软件质量保证活动,其动机是通过一些经济有效的方法,发现软件中存在的缺陷,从而保证软件质量。
软件测试的两大目的是:找出bug和预防缺陷。

4.3个不同的信箱,有4种不同的信预投其中,共有多少种不同的投法?

答:3 x 3 x 3 x 3 = 81种。

5.有一个5升的桶和一只3 升的桶,怎样得到4升的水?

答案:

第一步:将5升桶装满水,再倒入3升水桶中,那么还剩下2升水。
第二步:将3升桶空出来,把5升桶中的2升水倒入3升桶中,3升桶中含2升水。
第三步:将5升桶倒满水,再将5升桶的水倒往3升桶,倒满为止,剩下就是4升水。

6.列出文件详细信息的命令和修改文件权限的命令是什么?答案:

答: ls

chmod.

  1. Linux 中统计目录下文件个数的命令是什么?

答案: ls|we-1。

8.简述软件生命周期。

答案:需求分析、开发、测试、测试回归、上线。

9.简述测试流程,以及每阶段的内容、输出的文档。

答案:需求了解一测试用例,测试→测试报告,上线→验收报告。

10.请你分别写出OSI的七层网络结构图和TCP/IP的五层结构图?

答案:

OSI的七层结构从上到下依次是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层.
TCP/IP的五层结构是应用层、运输层、网络层、链路层、物理层。

11.请详细解释一下IP的定义,在哪个层上面,主要有什么作用?TCP与UDP呢?

答:IP在网络层,TCP和UDP在传输层,TCP/IP的英文Transmission Control Protocol/Internet Protocol的缩写,意思是“传输控制协议/网际协议”.TCP/IP之所以流行,部分原因是他可以用各种各样的信道和底层协议。确切地说,TCP/IP是一组包括TCP和IP,udp(User Datagram Protocol)、ICMP(Internet Control Message Protocol)和其他一些协议的协议组。TCP/IP并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一层通信协议的7层抽象的参考模型,其中某一层执行特定的任务。
该模型的目的是使各种硬件在相同的层次上相互通信。这7层是应用层、表示层、会话层、传输层、网络层、数据链路层、物理层.。而TCP/IP采用了4层结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:
应用层是应用程序间沟通的层,如简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telent)等。传输层提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传送数据并把它传输到请求数据的一方。

12.TCP与UDP的区别

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接

2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达; UDP尽最大努力交付,即不保证可靠交付。TCP通过校验和,重传控制,序号标识,滑动窗口、确认应答实现可靠传输。如丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。

3、UDP具有较好的实时性,工作效率比TCP高,适用于对高速传输和实时性有较高的通信或广播通信。

4.每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的交互通信。

5.TCP对系统资源要求较多,UDP对系统资源要求较少。

13.为什么UDP有时比TCP更有优势?

UDP以其简单、传输快的优势,在越来越多场景下取代了TCP,如实时游戏。

(1)网速的提升给UDP的稳定性提供可靠网络保障,丢包率很低,如果使用应用层重传,能够确保传输的可靠性。

(2)TCP为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,由于TCP内置的系统协议栈中,极难对其进行改进。采用TCP,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接收到后再继续发送,延时会越来越大,基于UDP对实时性要求较为严格的情况下,采用自定义重传机制,能够把丢包产生的延迟降到最低,尽量减少网络问题对游戏性造成影响。

14.全局变量和局部变量有什么区别?是怎么实现的?操作系统和编译器是怎么知道的?

答案:它们之间主要的区别是变量的作用范围不同。全局变量在全局范围内都有效,局部变量只在声明此变量的作用域内有效。
全局变量是属于实例的,在初始化对象的时候初始化,生命周期与该实例相同,之所以叫全局变量是因为该实例中的所有方法或属性都可以引用:局都变量是在实例方法内或Static块中,生命周期从调用该方法到该方法退出,并且只有该方法能够引用之。全局变量和局部变量另一个区别是在存储器中位置不同,具体说,全局变量存储在数据段中,局部变量都有可能,一般来说存储在堆栈段。操作系统和编译器通过内存分配的位置来知道全局变量分配在全局数据段,并且在程序被运行的时候就被加载。

编译器通过语法词法的分析,判断出是全局变量还是局部变量。如果是全局变量的话,编译器在将源代码翻译成二进制代码时就为全局变量分配好一个虚拟地址(Windows下0x00400000以上的地址,也就是所说的全局区),所以,程序在对全局变量的操作时是对一个硬编码的地址操做。

局部变量,编译时不分配空间,而是以相对于ebp或esp的偏移来表示局部变量的地址,所以,局部变量内存是在局部变量所在的函数被调用时才真正分配。以汇编的角度来看:函数执行时,局部变量在栈中分配,函数调用完毕释放局部变量对应的内存,另外,局部变量可以直接分配在寄存器中。
操作系统通过变量的分配地址就可以判断出是局部变量和全局变量。

15.单元测试、集成测试、系统测试的侧重点是什么?

答:单元测试的侧重点是内部逻辑的正确性。
集合测试侧重点是与外部的衔接是否正确。
系统测试的侧重点是整个系统的流程是否流畅。

16.白盒测试、黑盒测试与回归测试是什么?

答:白盒测试是根据内部逻辑以及代码实现设计测试用例。
黑盒测试是根据业务逻辑来设计测试用例。
回归测试是在开发者修复完bug后进行测试用例回归。

17.一个缺陷测试报告的组成有哪些?
缺陷测试报告的组成以及缺陷的严重程度和级别

18.软件测试项目从什么时候开始?为什么?

答: 从需求分析制定时就该介入,软件测试贯穿了整个项目的生命周期···早期了解项目,对测试有很大的帮助。

19.简述缺陷的生命周期

答:发现bug------新建bug-------指派bug-------已解决bug--------待验证bug-------关闭bug。

20.为什么TCP握手需要3次?挥手需要4次?

答:TCP三次握手的过程是他建立连接的过程,确定双方可以通信,所以握手需要三次;
TCP四次挥手是TCP去结束了数据发送要断开连接的时候的一个过程,为了确保既结束了发送数据,又结束了接收数据。
所以TCP需要三次握手,四次挥手。

21.进程、线程的定义以及区别?
答:

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单元。
线程是进程的一个实体,是CPU调度和分配的基本单位,它是比进程更小的能独立运行的基本单位。线程基本上不拥有资源,只拥有一点在运行中必不可少的资源(如程序计数器、一组寄存器和栈),但是它可与同属一个进程的其他线程共享进程所拥有的全部资源。一个线程可以创建和撤销另一个线程;同一个进程中的多个线程间可以并发执行。
区别
进程是指运行中的应用程序,每一个进程都有自己独立的内存空间。一个应用程序可以同时启动多个进程。例如对于IE浏览器程序,每打开一个IE浏览器窗口,就启动了一个新的进程。同样,每次执行JDK的java.exe程序,就启动了一个独立的Java虚拟机进程,该进程的任务是解析并执行Java程序代码。
线程是指进程中的一个执行流程,有时也称为执行情景。一个进程可以由多个线程组成,即在一个进程中可以同时运行多个不同的线程,它们分别执行不同的任务。当进程内的多个线程同时运行时,这种运行方式称为并发运行。许多服务器程序,如数据库服务器和Web服务器,都支持并发运行,这些服务器能同时响应来自不同客户的请求。
进程和线程的主要区别在于:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源,比如共享一个对象或者共享已经打开的一个文件。
进程与线程的区别

22.测试工作很枯燥的,你如何理解?且软件压力测试的定义分别是什么?

答:问题一:软件测试工作其实并不枯燥,在重复性的工作中发现新的bug是一件很开心的事情,并且还可以了解不同的业务,还可以自动化。随着工作时间的累加,成长和对知识的储备也是日益增多,对个人以后的发展相当有益。
问题二:软件压力测试的定义是:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件测试的资源包括内部内存、CPU可用性、磁盘空间和网络宽带。

23.你的职业生涯规划是什么?

答: 前期加深技术,3、5年之后再看自身发展情况,走技术还是走管理路线要看机会和自己发展情况而定。

24。软件测试为什么会从需求分析开始?

答:前期加入对测试员了解被测对象有帮助,编写case会更加全面,会降低后期测试引起误会的概率。

25。如果能执行完美的黑盒测试,还需要进行白盒测试嘛?为什么?

答:需要!黑盒测试是测试人员完全不考虑程序内部的逻辑结构和内部特征,只依据程序的需求分析规格说明,检查程序的功能是否符合它的功能说明。对于一个质量较高的软件产品,必须要黑白盒测试结合起来,二者缺一不可,二者负责的领域也是不同的,白盒测试针对的是程序的逻辑结构,所以仅仅黑盒测试是无法保障一个软件的质量的。

26.(面试常考)你认为一个优秀的测试工程师应该具备哪些素质?

答:①具有良好的计算机编程基础;②具有创新精神和超前意识;③不懈努力且追求完美;④具有整体观念,对细节敏感;⑤团队合作精神;⑥责任心、耐心、细心、信心;⑦沟通能力;⑧时时保持怀疑态度,并且有缺陷预防的意识。

27.产品测试到什么时候就算是足够了?

答 :上线验证好之后就可以了。

28.测试计划的目的是什么?

答:用来识别任务、分析风险、规划资源和确定进度。

29.软件测试应该划分几个阶段?简述各个阶段应重点测试的点?各个阶段的含义?

答案:单元测试(测最小模块)------集成测试(将模块逐渐递增)------系统测试------验收测试。
初始测试集中在每个模块上,保证源代码的正确性,,该阶段称为单元测试,主要用白盒测试方法。

接下来是模块集成和集成以便组成完整的软件包。集成测试集中在证实和程序构成问题上。主要采用黑盒测试方法,辅之以白盒测试方法。

软件集成后,需要完成确认和系统测试。确认测试提供软件满足所有功能、性能需求的最后保证。确认测试仅应用黑盒测试方法。

单元测试是对软件中的基本组成单位进行的测试,如一个模块、一个过程等。它是软件动态测试的最基本的部分,也是最重要的部分之一,其目的是检验软件基本组成单位的正确性。
集成测试是在软件系统集成过程中所进行的测试,其主要目的是检查软件单位之间的接口是否正确。
系统测试是对已经集成好的软件系统进行彻底地测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确并非一项简单的任务,它被称为测试的“先知者问题”。
验收测试旨在向软件的购买者展示该软件系统满足其用户的需求。它的测试数据通常是系统测试的测试数据的子集。
回归测试是在软件维护阶段,对软件进行修改之后进行的测试。其目的是检验对软件进行的修改是否正确。

30.针对缺陷采取怎样的管理措施?

答案:提交缺陷报告------分配缺陷报告------处理缺陷报告------返测报告------关闭缺陷报告。

在这里插入图片描述

1.讲述一下自己最熟悉的一个项目是怎么做的?具体用什么方法和测试工具?(根据自身情况)

答案:最近上了一个视频广告投放项目,我们用敏捷的方式跟进项目。前蝴Selenium进行自动化Case,后端用TestNG进行自动化接口测试。自动化测试主要用任回归上。

2.简述一下整个项目 的测试流程和Bug管理流程?

答案:在项目初期,参与需求评审,了解需求。开发阶段,测试用例、测试数据准备。测试开始前,进行一次测试用例评审,定稿。测试执行。测试回归。上线。

发现Bug后,提交到系统中,分配给相应开发者。修复后,测试回归检查,关闭Bug。

3.讲述一个Bug的生命周期?

答案: Bug提交,Bug 分配,Bug 确认,Bug 修复,Bug 回归,Bug 关闭。

4.讲述自己在项目中发现的最有意义的一个Bug,是什么导致出现这个问题?
答案:略,考生自己情况而定。

5.Bug描述中都包括哪些内容?

答案:bug标题、描述操作、结果、预期结果、原因分析、如何修改、Bug等级、bug发现时间,发现人,bug修复时间,Bug修复人,Bug 状态。

6… memepy 和strcpy的区别。

答案: strepy 是拷贝字符串,以 ‘\0’ 为标志结束。

strepy的原型为:

char *strcpy(char dest, const charsrc) //注意是char.

从源s所指的内存地址的起始位置开始拷贝n个字节到目标dest 所指的内存地址的起始位置中,而不管拷贝的内容是什么(不仅限于字符)。

memcpy的原型为:

void *memcpy(void dest, const voidsrc, size_t n); //注意是void.

7.门禁系统测试的内容有哪些?

答案:外观设计、功能实现、异常处理、性能等方面。

8.对于分布式系统的性能测试,如何做系统性能评估,性能瓶颈与性能指标分析?

答案:

(1) 建立系统环境模型,最大程度模拟实际情况,无法模拟时采取何种方式规避。(如单个微子系统区分。)

(2)采取分块法抽离子系统,将相同消耗型的模块(子系统)进行分析。定位可能存在系统瓶颈的地方。采取多种方法,如日志、性能指标都可以观察。

(3)外界反馈无法明确时,采取内部原理分析机制。最终解决方案是分块尝试,找出每个子系统或者模块的瓶颈。

(4)定位单个系统的性能瓶颈。采取压力方式选择,瞬间压力与稳步上升压力的区别。根据长短连接方式选择压力方式。关注系统性能指标(CPU, I0, MEM,网卡等)。
(5)最终瓶颈由最弱的子系统与模块确定。(此时会需要面试者给出优化方案。考虑几种,如多线程方式,缩减内存消耗方式(一般优化数据结构与数据处理方式都可以解决),部署方式(不同消耗型模块统一部署,充分利用资源等)。 yi般给出几种方式考察知识面即可。

9.java语言中,sleep()方法和wait()方法有什么区别?

答:sleep()方法使线程停止一段时间的方法。在sleep时间间隔期满后,线程不一定立即恢复执行。这是因为在那个时刻,其他线程可能正在运行而且没有被调度为放弃执行,除非“醒来”的线程具有更高的优先级或正在运行的线程因为其它原因而阻塞。
wait()方法是线程交互时,如果线程对一个同步对象x发出一个wait()方法调用,该线程会暂停执行,被调对象进入等待状态,知道被唤醒或者等待时间到。

10.堆和栈的区别?以及他们的变量的有效期?
答:

申请方式不同
是自动申请释放;而是手动申请释放。
有效期至函数结尾;到释放为止。

11.集成、单元测试的策略
*集成测试的策略

1、在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
2、各个子功能组合起来,能否达到预期要求的父功能;
3、一个模块的功能是否会对另一个模块的功能产生不利的影响;
4、全局数据结构是否有问题;
5、单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
6.一个缺陷测试报告的组成

*单元测试的策略

逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析。 单元测试是对软件基本组成单元进行测试
*单元测试的目的:1.验证代码是与设计符合的;2.跟踪需求和设计的实现;3.发现设计和需求中存在的错误;4.发现在编码过程中引入的错误
*何时开展单元测试 一般地,在编码阶段就应开展单元测试,边写程序边测试是一个好习惯。 一个组织不要孤立的划分出编码和单元测试两个阶段,也不要等代码都写完了才开始单元测试。有时候需要将单元测试时间推后到集成阶段,甚至系统完成阶段。
单元测试可以分为计划、设计、实现、执行几个阶段。

12.软件测试的策略

(1)测试级别:常见的测试级别有单元测试,集成测试和系统测试。大部分的测试组织里面,单元测试由开发负责,而集成测试和系统测试由测试部门或者质量保证部门负责。
(2)角色与职责:需要在测试策略里面明确定义各个角色,以及该角色的职责。比如项目经理,测试组长,测试工程师…
(3)环境需求:这一点非常重要,它将描述测试时需要的系统环境,包括软硬件以及网络环境等等。在澄清环境需求的时候,测试组织可以识别出资源方面的风险。
(4)风险分析:影响测试过程的风险都应该尽早被识别出来,而且必须有相应的解决办法以便消除或者减轻这些风险。
(5)测试进度:测试进度将会评估完成测试所需要的时间。在设定进度的时候,首先需要明确测试范围,然后根据测试资源的多少来制定能被各方面认可的测试进度计划。做一个非常准确的进度计划是困难的事情,因为测试过程中充满了各种不确定性,所以一般计划者需要考虑增加一定的buffer。当然,制定进度计划的时候可以参考已有的项目的数据。如果是一个全新的软件项目,专家认为将初始计划的时间翻倍比较靠谱!
(6)回归测试方法:回归测试用来保证之前fix
bug的代码不会影响软件的其他部分,这样需要我们选择已经执行过的测试用例重新运行。测试人员需要找到一个方法来确定哪些测试用例应该在回归测试中运行,用例不能太多,因为资源有限,用例也不能太少,否则会达不到必须的测试强度。不过,如果测试部门对待测系统以及软件架构非常了解的话,就比较容易找到合适的回归测试集合。
(7)测试范围:这个没啥好说的,就是你要测试的内容,可能是某些模块,可能是某些指标,比如功能,性能,易用性…
(8)测试优先级:测试范围内的东西不会都是一样重要的,加上测试资源各种有限,所以为测试排定优先级是十分的必要。

13.testmanage的人物以及如何管理?

TestManager是个执行测试和脚本开发的桥梁,建立你的测试集和测试工具的关联并提供给你测试项目的进度。
TestManager支持5中测试活动:
1.测试计划。这个步骤了主要解决了这样一个问题,“我要测试哪些东西?”当你完成你的测试计划,结果就是一个定义了所要测试内容的测试计划。在TestManager中,一个测试计划可以包含测试用例。测试用例可以以测试用例文件夹的方式来组织。
2.测试设计。这个步骤主要解决的是“我应该怎么去做测试”的问题。当一个测试设计完成时,出炉的将是一个能够帮助你去理解怎么去执行测试用例的测试计划。在TestManager里,你可以通过指定测试中要进行的实际步骤来设计测试用例。你也可以指定测前条件,测后条件以及可接受的评判标准。
3.脚本设计。这个步骤主要是生成一些可重用的脚本。在TestManager中,你可以通过人工来编写测试脚本。你也可以通过使用RationalRobot来产生自动测试脚本。你也可以通过API来扩展TestManager的功能,这样你就可以通过TestManager来调用你自己的工具。由于它的扩展性,你可以通过它在其他任何适用于你的测试环境和组织的工具中建立测试脚本.
4.测试执行。这个步骤主要是运行脚本以确保系统的功能的正确性。在TestManager中,你可以执行一下任何一种:(1)运行一个单一的测试脚本。(2)运行一个或多个测试用例。(3)通过多台电脑和多个用户运行测试用例来执行一个测试包。
5.测试分析。这个步骤决定了系统测试的质量。在TestManager中,你可以通过检查测试执行结果的日志来分析测试并且生成各种报告。 计划和管理测试只是Rational
TestManager的一部分功能,你也可以使用TestManager来查看Robot执行的日志,同时TestManager也可以用来做性能测试。

14.alpha测试与beta测试的区别?

*Alpha测试在系统开发 接近完成 时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。由一个或多个用户在开发环境下进行测试。
*Beta测试当开发和测试 根本完成 时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。由一个或多个用户在用户实际环境下进行而是。

计算机网络原理与技术

① HTTP协议:HTTP超文本传输协议。是一个简单的请求-响应协议,是WWW服务程序所使用的协议;它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使得开发和部署是那么的直截了当。
② TCP/IP协议:TCP/IP(Transmission Control Protocol / Internet Protocol,传输控制协议/ 网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP
和IP两个协议,而是指一个由FTP(file transfer protocol)、SMTP(simple message transfer
protocol)、TCP、UDP(user datagram protocol)、IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。

**在TCP/IP协议有四层:

1、应用层:应用层是TCP/IP协议的第一层,是直接为应用进程提供服务的。
2、运输层:作为TCP/IP协议的第二层,运输层在整个TCP/IP协议中起到了中流砥柱的作用。且在运输层中,TCP和UDP也同样起到了中流砥柱的作用。
3、网络层:网络层在TCP/IP协议中的位于第三层。在TCP/IP协议中网络层可以进行网络连接的建立和终止以及IP地址的寻找等功能。
4、网络接口层:在TCP/IP协议中,网络接口层位于第四层。由于网络接口层兼并了物理层和数据链路层所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路。

MYSQL的增删改查语句:

1)增加: INSERT INTO表名(字段名1,段名2) VALUE(字段值1,字段值2)

例: INSERT INTO a(id,name) VALUE(2,'李四);

2)删除: DELETE FROM表名WHERE条件

例: DELETE FROM a WHERE id=1;

3)修改: UPDATE表名SET字段名:字段值WHERE条件

例: UPDATE a SET id=1 ,name=‘张三’ WHERE id=2;

4)查询: SELECT (字段名, *代表全部) FROM 表名WHERE条件

例: SELECT id,name FROM a WHERE id=1;

软件开发流程:

需求分析—》概要设计—》详细设计----》编码开发—》测试----》维护。

为什么选择测试:

首先,软件测试是从职位发展方向来讲可以做到高级测试工程师——自动化测试工程师,从管理岗位来讲呢,可以做到测试经理。
从行业方面分为金融测试、web测试、游戏测试、手机测试,需要测试的范围很广,对于我的职业生涯来讲可以一直发展下去,另外我觉得软件测试是国内最热的行业之一,很多国企、外企都对测试工作非常的重视,加之我的性格属于比较踏实肯干型,更适合做测试工作。

测试计划如何编写

Why --为什么要进行这些测试
WHat–测试哪些内容
When–测试不同阶段的起止时间
WHere–相应文档,缺陷的存放位置,测试环境
Who–项目有关人员组成
How–如何去做,使用哪些测试工具和测试方法

传统测试与敏捷测试的区别

》》传统测试更强调测试的独立性,将“开发人员”和“测试人员”角色分得比较清楚。而敏捷测试中,测试人员需要参与全部开发活动,需要参与整个项目组的所有会议,两者在不用的迭代周期可以互换。
》》敏捷测试是根据市场和需求进行测试的,所以开发人员和测试人员要不断进行沟通交流,以用户的角度进行测试,持续测试持续反馈。
》》测试对于旧功能采用自动化测试,对于新功能采用手工测试。相对于传统测试节省了时间。

在这里插入图片描述

面试题目再现

TCP三次握手题目《画图更清晰
题目:1.TCP建立连接的过程采用三次握手,已知第三次握手报文的发送序列号为1000,确认序列号为2000,请问第二次握手报文的发送序列号和确认序列号分别为

答:发送序列是自己发送报文的序列号,当前发送序列号是上一次发送序列号+1;确认序列号是从对方接收到的发送序列号+1;第三次握手发送的序列号是1000,那说明第一次握手发送的序列号是999,注意:这里是握手,因此,第二次握手的确认序列号是1000,即确认序列号是从对方接收到的发送序列号+1。第三次握手发送的确认号是2000,说明第二次握手的发送序列是1999.

java中是否可以继承String类,为什么?

java中不可以继承String类. 因为String类有final修饰符,而final修饰的类是不能被继承的。
String 使用final修饰的主要原因:
1.由于String类被final修饰不能被继承,所以就不能修改,这就避免了因继承而引起的安全隐患。
2.由于String类在程序中使用毕竟频繁, 设置为final可以提高执行效率。

java中数组有没有length()方法,String有没有length()方法?

java中数组是没有length()方法的,只有length属性,数组array.length返回的是该数组的长度。
字符串String是有length()方法的,str.length()返回的是该字符串的长度。

String s = new String(“xyz”);创建了几个对象?

答:创建了两个对象。引用对象s和字符串对象”xyz”; 即使:String s = new String(“xyz”);和String s1 = new String(“xyz”); 他们的字符串内容相同,对象都为”xyz”;但是它们在内存中的地址不同,s 和 s1
是两个对象。

线程是否为守护线程?

答:GC(garbage collection,垃圾回收)线程是守护线程。线程分为守护线程和非守护线程(即用户线程)。只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。

boolean a = null 啥意思?

答:前面那个是对象的引用,其初始值是null,就是不指向任何对象;第二个是java的基本数据类型。第一个是第二个的包装类。。。

链表的特点是:

》》不必预先分配较多存储空间;
》》插入删除不需要移动元素;
》》所需空间与线性表长度成正比。

java中final的特点:

1、final修饰的类不能被继承。
2、Sting就是一 个被final修饰的类, 我们只能用,不用继承。
3、final不仅可以修饰类, 还可以修饰变量,被final|修饰的变 量就是一个常量, 只能赋值一-次。
4、注意final和finally的区别 ,final是修饰类或者变量,finally是在异常处理中使用,如: try{ }catch
() {}finally{}中 ,final的作用一 般用于必须处理的事情, 如关闭连接。

不能用来修饰interface的是?

Private protected static

java中goto是关键字吗

这么告诉你,由于goto语句的争议,java中没有goto语句,但是goto是java中的保留字,java中类似跳转的操作可以由break和continue以及标签机制完成

synchronized是用来对对象加锁的。

ArrayList list = new ArrayList(20);中的list扩充几次

答: 0次

final, finally, finalize的区别?

答:final修饰符(关键字)。如果一个类被声明为final,意味着不能再派生出新的子类,不能作为父类被继承。因此一个类既不能被声明为abstract也不能被声明为final。将变量或方法声明为final,可以保证它们在使用时不被改变。被声明为final的变量在声明时给定初值,而在以后的引用中只能读取,不可修改。被声明为final的方法也只能使用,不能重载。
Finally在异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的catch子句就会执行,然后控制就会进入finally块(如果有的话)。
Finalize方法名。java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前作必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。

排序算法

1)冒泡排序:比较相邻的元素,如果第一个比第二个大,就交换它们两个位置。对每一个相邻元素作同样的工作,从开始第一到结尾的最后一对。到这一点,最后的元素应该是最大的数。
2)快速排序:<是对冒泡的一种改进>通过一趟排序要将数据分隔成独立的两部分,其中一部分的所有数据都比另一部分的所有数据都要小,然后再彼此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
3)选择排序:用第一个数与其他数比较,如果其他数比第一个数大就交换,不然就不换。

Eg: {100 34 2 16 87 98 23}---->{100 98 2 16 87 34 23}---->{100 98 87
16 2 34 23}
---->{100 98 87 34 2 16 23}---->{100 98 87 34 23 16 2}
4)插入排序:把数组分成两部分,将后面部分的数据一个一个的和前边部分数据的元素进行比较,如果我们指定的元素比前面部分的元素小,那么就将前边的元素往前移动一步,直到没有比我们这个指定的元素还小的元素,那么这个位置就是需要插入的地方。

测试用例是指??测试用例的作用是什么?

答:测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。简单认为:测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
作用:①指导测试的实施;②规划测试数据的准备;③编写测试脚本的“设计规格说明书”;④评估测试结果的度量基准;⑤分析缺陷的标准。

事件处理的三要素是?

答:事件源、 事件类型 以及事件监听器。

软件测试活动的生命周期(STLC)?

答:需求阶段–>计划阶段–>分析阶段–>设计阶段–>实施阶段–>执行阶段–>总结阶段–>结束阶段。

阐述“单元测试、集成测试以及系统测试”的侧重点?

答:“单元测试”侧重于:针对的是软件设计的最小单元–程序模块,进行正确检测的测试工作,在于发现每个程序模块内部可能存在的差错;一般有两个步骤:人工静态检查/动态执行跟踪。
“集成测试”侧重于:通过了单元测试的各个模块集成起来的组件进行检验,其主要内容是各个单元模块之间的接口,以及各个模块集成后所实现的功能。
“系统测试”侧重于:继承好的软件系统,作为整个计算机系统的一个元素,要在实际的运行环境中,对计算机系统进行一系列的集成测试和确认测试。

所有的软件缺陷都能修复嘛? 所有的软件都需要修复嘛?

答:从技术上讲,是都可以修复的,但没有必要修复所有的缺陷;需要对缺陷进行取舍,根据风险决定哪些缺陷需要修复。
原因
①没有足够的时间资源:在任何一个项目里,开发和测试人员时间都不够,且在项目中没有预算足够的回归测试时间,再加上修改缺陷可能新增缺陷。
②有些缺陷只是特殊情况下出现,处于商业利益考虑,可以在以后升级中进行修复。
③不是缺陷的缺陷,如:我们经常碰到某些功能方面的问题被当做缺陷来处理。
最后:缺陷是否修复由软件测试人员、项目经理以及程序员共同决定。

用SQL和mysql分别写出语句“查询分数前五的所有人”?

答:SQL
select top 5 * from Students order by score desc;
Mysql:
select * from Students order by score desc limit 5;

如何开展软件测试?

答:获取测试需求–>撰写测试用例–>执行测试–>回归测试–>撰写测试报告 说明:
回归测试主要测试上一次记录的bug是否被修复以及是否出现新的bug,若被修复,则关闭bug;若出现新bug,则记录并通知相关人员。回归测试的测试是视软件情况而定,如有bug反复回归测试都未修复,则需进行多次回归测试,直至达到测试通过标准。

测试人员如何保证软件质量?

答:从两个角度:
①质量是全员质量:公司每个员工都有责任参与质量保证;
②从测试角度来保证质量,测试也分为多个层次:
1).质量管理:①代码质量:开发通过单元测试保证;②让用户参与UAT测试,保证用户体验(使用质量);③引入QA,保存过程环节质量;④系统测试工程师保证系统质量满足需求。
2).质量保证:①测试策略;②用例质量;③执行质量;④缺陷质量;⑤过程质量。

1.性能测试里的健壮性和稳定性的理解

答:1)健壮性是指:程序在运行过程中出现的一般性错误,程序会自动进行错 误处理函数。 (是指出现错误还能运行的能力)
性能测试的内容:①系统是否很快响应用户;②系统能否处理预期的用户负载并具有盈余能力;③能否处理业务所需的事务数量;④在预期和非预期的用户负载下,系统是否稳定;⑤系统能否确保用户在真正使用系统时所获得积极的体验。
性能测试的目标:①系统响应时间,支持客户数等;②服务器的配置(CPU、内存、磁盘)客户机配置;③连接数:数据库缓存池的连接、IE的连接。
2)稳定性是指:是指系统长期稳定运行的能力,在系统运行过程中,对系统施压,观察系统的各种性能指标,以及服务器的指标。

TCP三次握手简要概述

1)第一次握手:Client将标志位SYN置为1,随机产生一个值,seq=j,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server的确认。
2)第二次握手:Server收到数据包后,由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=j+1,随机产生一个值,seq=k;并将该数据包发送给Client以确认请求建立,Server进入SYN_RCVD状态。
3)第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,若正确,则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,若正确,则建立连接成功,Client和Server进入ESTABLISHED状态,完成三次握手,客户端和服务端开始传送数据。

使用SQL语句为数据表增加一个字段,使用alter table 表格名 add 字段名。

Alter table table_name add col_name char(5);

web端和APP端的测试区别;

答:①兼容性方面:Web端考虑的浏览器兼容性没有APP端考虑的多;
②更新不同:APP端手动更新客户端以及卸载、安装等操作;而web端只要更新了服务器端,客户端就会同步更新;
③监测不同:web测试需监测响应时间、CPU以及Memory;
而APP测试除了监测响应时间、CPU、Memory外,还需要监测流量、电量等。
④回归测试不同:web测试不需要进行回归测试;而APP测试所有核心版本都需要进行回归测试。
⑤web端充电器只能是唯一,但是APP端的充电器同类型就可以充电

操作系统有哪些?有什么了解

答:操作系统有:DOS操作系统、Windows、Linux、Unix、Mac…
操作系统:是对计算机系统中的所有资源进行高效管理的一种系统软件,是所有其他软件运行的基础,是用户使用计算机的接口。
操作系统的三个主要功能:①资源管理;②进程控制;③人机交互;
其中:资源管理包括:进程管理(主要是对处理机进行管理);存储管理(对内存的分配、保护和补充);设备管理(对所有输入、输出设备的管理);文件管理(主要涉及文件的逻辑组织和物理组织);作业管理(为用户提供一个友好的环境,方便用户组织自己的工作流程)

如果你进了公司,你将怎样开展工作(面试常问)

迂回战术:
我会首先听取领导的指示和要求,然后就有关情况进行了解和熟悉,接下来会制定一份近期的工作计划并报给领导批准,最后根据计划展开工作。

你最不喜欢什么课?(面试常问,因人而异回答)

我其实对我的所有课程对还挺感兴趣的,因为都是比较新颖的知识,各有特色,要是硬要说一门的话,可能是离散数学,太抽象化我在理解上有一点的吃力,但其实后边我花了很多时间在图书馆学习的时候,我发现它也特别有趣,深入了解发现其实他也并没有那么难。

在这里插入图片描述

希望大佬们给我多多多多多提点(#.#)
各类测试工程师的面试秘籍_第1张图片

你可能感兴趣的:(测试,经验分享,面试,编程语言,面试,数据库)