软件测试面试题 背完面试没问题 亲测

请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程。
回答技巧:这个问题是考验你在工作前半段是否真的针对你业务进行过测试用例设计,所以回答的时候一定要仔细,并且要从开头讲,也就是从立项会开始讲
答案:
首先作为测试人员,当我们开完立项会后,需要拿到接下来测试项目的需求文档,(以及原型图)进行熟悉的工作,在熟悉完成之后按照需求文档功能点的顺序编写测试用例(业务比较复杂的建议用x-mind把业务流程画下来,方便自己日后理解),如果是电商网站或者其它旅游网站,可以按照场景法的顺序编写测试用例
如果你的项目是电商,在登录页面用户名,密码框,可以用到边界值测法,等价类划分法,错误推断法,如果涉及到用户支付了,可以使用场景法.说一套具体支付流程,还有就是涉及到账号,密码的状况.一旦登录成功之后,要考虑登录之后的网址复制到其它浏览器或者PC上,是否还是显示登录之后的页面,这块开发人员是否有处理.
在测试登录页面还要考虑到环境情况,如果是登录瞬间没有网络之后该怎么显示页面,点击登录之后,页面跳转时间也要进行测试
所以总结一点,测试项目要考虑到功能,性能,安全等因素
  就说最近的这次网站功能的测试吧
  首先:得到相关文档(需求文档和设计文档),理解需求和设计设计思想后,想好测试策略(测试计划简单点就OK了),考虑到测试环境,测试用例,测试时间等问题。
  第二步:设计测试用例,测试策略是:把网站部分的功能点测试完,然后在进行系统测试(另外个模块呢有另一个测试人员负责,可以进行联调测试),网站模块的测试基本是功能测试和界面测试(用户并发的可能性很小,所以不考虑):这次的网站的输入数据呢是使用数据库中的某张表记录,如果表中某一数据记录中新加进来的(还没有被处理的,有个标志位),网站启动后会立刻去刷那张表,得到多条数据,然后在进行处理。处理过程中,会经历3个步骤,网站才算完成了它的任务。有3个步骤呢,就可以分别对  这3个步骤进行测试用例的设计,尽量覆盖到各种输入情况(包括数据库中的数据,用户的输入等),得出了差不多50个用例。界面测试,也就是用户看的到的地方,包括发送的邮件和用户填写资料的页面展示。
  第三步:搭建测试环境(为什么这个时候考虑测试环境呢?因为我对网站环境已经很熟了,只有有机器能空于下来做该功能测试就可以做了),因为网站本身的环境搭建和其他的系统有点不同,它需要的测试环境比较麻烦,需要web服务器(Apache,tomcat),不过这次需求呢,网站部分只用到了tomcat,所以只要有tomcat即可
第四步:执行测试

  1. 怎样估计测试工作量?
    回答技巧:面试官问这个问题,可以说在你写测试计划的时候,工作量就会考虑到,工作量直接影响到你的测试周期
    答案:
    需求分析: 分析该项目测试所用到的技术(功能,安全,接口)
    效率假设:即测试队伍的工作效率。对于功能测试,这主要依赖于应用的复杂度,
    窗口的个数,每个窗口中的动作数目。对容量测试,主要依赖于建立测试 所需数据的工作量大小。是否需要进行数据库表的数据比对
    测试假设:为了验证一个测试需求所需测试动作数目。
    应用的维数:应用的复杂度指标。例如要加入一个记录,测试需求的维数就是这个
    记录中域的数目。
    开发人员认知:比如你负责的开发人员的水平问题,开发人员技术好,业务能力强的BUG就少,技术一般的业务差的要适当延长,总之项目开发人员的水平也会影响到你的工作量
    是否需要其它人员配合测试:例如手机注册,有可能会用到公司其它员工的手机号
    所处测试周期的阶段:有些阶段主要工作都在设计,有些阶段主要是测试执行。
    其实这个工作主要由测试组长来考虑,如果公司公司就你一个测试,那就要自己也懂才行

  2. 进行测试时产生了哪些文档或记录?
    技巧:这个也是判断面试人员是否真的工作过,要对每个文档有深入的理解,不能光说有哪些就行了,而是要把这些文档存在的意义讲出来才专业
    答:测试的整个过程有系统测试计划(主要表明接下来测试的具体分工,时长,环境,所用到的软硬件,预估测试环境,预发布环境,正式环境的时间安排,测试所用到的技术)、系统测试用例、系统测试报告(分日报,阶段报告,这2个我会着重讲)、缺陷报告、产品发布说明,产品使用手册
    在执行测试的过程中 只有缺陷报告,这个还是用在缺陷管理工具中进行的,最后在工具中导出缺陷报告.

  3. fiddler工具怎么使用?https如何抓包?会不会用postman,主要是用来测试什么的?
    技巧:Fiddler不仅可以在web端进行抓包,也可以在移动端进行抓包工作
    Fiddler是一个很好用的抓包工具,可以将网络传输发送与接收的数据包进行截获、重发、编辑等操作。也可以用来检测流量。
    Fiddler安装后,设置的端口默认为8888,当Fiddler启动后,默认将IE的代理设为了127.0.0.1:8888,而其他如火狐浏览器需要手动设置代理后才可以抓包。设置内容如图:
    1)要使用Fiddler进行抓包,首先需要确保Capture Traffic是开启的 (安装后是默认开启的),勾选File->Capture Traffic,也可以直接 点击Fiddler界面左下角的图标开启和关闭抓包。
    2)所以基本上不需要做什么配置,安装后就可以进行抓包了。那么我们 怎么分析抓到的这些数据包呢?如图所示的区域为数据包列表,要分析 这些数据包,首先要了解各字段的含义。
    3)每个Fiddler抓取到的数据包都会在该列表中展示,点击具体的一条 数据包可以在右侧菜单点击Insepector查看详细内容。主要分为请求 (即客户端发出的数据)和响应(服务器返回的数据)两部分
    5.接口自动化怎么测的?遇到问题怎么分析的
    1.在熟悉业务基础上,要测试接口,开发会先给api文档,一个URL对应了很多json字段或者xml字段,要清楚请求发送的字段和响应的字段的意思,如果响应的数据与api文档一致,则证明该接口首先是通的,再者接收数据正确,那么这个接口通过
    自动化接口测试,就是先将这些接口单个测通之后,再完整的串起来测试,如果没有问题,就可以编写自动化测试脚本了

6.场景题:给你一个自行车,你怎么测试?
技巧:面试官问你XXX怎么测,那基本都会从兼容性,性能,安全,自动化等角度去阐述
测自行车……最好的方法就是亲自去骑了。
因为只有亲自去骑,才知道舒不舒服,看是看不出来的——这叫友好性测试。
让矮子骑完高个骑,山地骑完公路骑,看看是否能胜任——这叫兼容性测试。
蹬蹬轮子、刹刹闸,调调座椅和车把,看看是否性能佳——这叫功能性测试。
你本身就不瘦,后座还要驮一个胖子,看看是否不爆胎——这叫压力测试。
毎当结构有变动,加个螺丝填个冒儿,你们就得重新测——这叫迭代测试。
自行车还没造好呢,你就开始骑了,bug你也没少提啊——这叫敏捷测试。
你发明了个机器人在轨道上骑自行车,看看有没有问题——这叫自动化测试。(机器人是封装好的类库,骑是调用类库中的方法,轨道是框架)
自行车在出场之前,重量,尺寸,材料强度等是否达标 —这叫功能测试

7.你对软件周期了解吗,你是怎样看待软件周期的?常见的软件生命周期模型有哪些?
技巧:这个问题一般从在于你之前对工作中的软件开发流程有没有深刻的认知,软件从无到有的一系列过程是否说的详细,所以我的建议是要从工作的角度去谈,这样更让人能够信服.尽量可以结合自己的项目去讲(从无到有)
软件生命周期是指一个计算机软件从功能确定、设计,到开发成功投入使用,并在使用中不断地修改、增补和完善,直到停止该软件的使用的全过程(从酝酿到废弃的过程)
生命周期从收到应用软件开始算起,到该软件不再使用为止。它有如下各方面的内容:初始构思、需求分析、功能设计、内部设计、文档计划、测试计划、文档准备、集成、测 试、维护、升级、再测试、逐步淘汰 (phase-out)、等等
瀑布模型,迭代式模型,快速原型模型,螺旋模型

8.什么是版本控制,常用的版本控制系统有哪些?(git后期我们会学习)
技巧:版本控制说白了就是不管是开发,测试,UI,运维,产品这些岗位,大家都会在项目的同一个版本进行各方面的工作,保证每个项目在更新迭代之前,大家的业务以及工作文档都处在同一节点上,避免版本不一致所造成的项目混乱,拖延项目整体的进度

版本控制(Revisioncontrol)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。
Git(读音为/g?t/。)是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。https://git-scm.com/doc
SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。https://tortoisesvn.net/support.html

9.APP 测试的内容主要包括哪些,如何开展?
技巧:可以从功能,性能,兼容性,安全角度去讲,如果自己的项目是APP项目,不仅要讲APP上的测试,还要讲跟APP对标的后台也要进行测试,通常后台会操纵APP,不管是功能还是数据,都会有关联.注意一点,APP项目前端后端都要说.

如何开展:和正常的项目基本一致,商务谈好合作项目,拿到需求.UI先做原型图,产品写需求文档,接下来开立项会,开完之后,移动端开发,后台开发,测试写用例,开发提测后,测试人员介入,进行测试,测试版本OK,提交到正式版本,回归测试完成就可以上线了

注意:正式环境的数据不能乱造,还有就是开发改完BUG之后,需要在测试机上重新打包,测试才能复测.
安卓端,APP一般上线的地方(腾讯应用宝,豌豆荚市场,华为市场等),但是APP上线之前需要这些提供平台的商家要进行审核,审核通过才能上线
IOS端,APP上线的地方(appstore) 由美国苹果公司进行对APP的审核,通过之后才能上线

功能测试:
1.业务逻辑正确性测试:依据:产品文档+原型图->测试用例编写
兼容性测试: 1.系统版本:Android:官方版本,定制版本;IOS:官方提供版本 2.分辨率:720 * 1280 1080* 1920
3.网络情况:2g 3g 4g 5g Wi-Fi
异常测试 1.热启动应用:应用在后台长时间待机;应用在后台待机过程中,手机重启 2.网络切换和中断恢复:网络切换;中断恢复:
3.电话信息中断恢复
升级,安装,卸载测试 1.升级测试:临近版本升级(1.0->1.1);跨版本(1.0->…->2.2) 2.安装测试:首次安装;覆盖安装(同版本,不同版本覆盖);卸载后安装 3.卸载测试:首次卸载;卸载安装后在卸载
健壮性测试
1.手机资源消耗:cpu,内存
2.流量消耗:图片,数据,视频
3.电量测试
4.崩溃恢复

  1. 项目版本执行过程中,测试人员如何把控测试进度?
    技巧:这个涉及到测试工作经验的问题.首先在测试之前会写测试计划,那预估的时间段是由测试,开发,产品共同商量得来的,所以测试人员要根据以往测试项目整体时间来判断,在新版本的时候,(测试环境)冒烟测试时间,执行测试用例测试时间,回归测试时间,突发情况预留时间,(正式环境)冒烟测试时间,回归测试时间.那这些时间必须要提前预估出来,并且在每个阶段遇到问题要及时跟开发,产品,项目经理,测试组长积极沟通.

在项目的系统测试过程中,测试负责人要及时了解测试进度,跟踪BUG提交、修复及验证情况以及系统的拷机情况。
在开发初期阶段,测试组在构建功能模块时,很多模块、功能点的开发完成进度和原计划会存在一定的偏差,就需要测试负责人动态的刷新计划表,根据实际的开发进度调整测试计划。
在开发阶段,存在版本编译不出来导致无法测试,开发人员修复代码太随意导致版本稳定性反复,需求变更过大导致后端测试开发变更严重等现象,会导致测试工作无法正常进行。就需要测试负责人及时反馈出来,根据项目本身的特点进行对应的处理。
当测试进度出现延期时,要及时确认问题原因,如果是问题协查导致,则需及时与研发人员进行沟通协商,看问题是否必须在测试环境进行排查,若为必现问题可与研发协商要求其在自己环境进行排查,若必须占用测试环境,则需及时调整测试计划,若因此可能影响版本的发布,则应及时与SE确认。
若发现有较多BUG未解决,则应主动联系SE(项目负责人)及研发人员召开BUG会确定问题的解决时间。若发现有较多BUG未验证,则应提醒项目组的测试人员及时进行验证,对于一些拷机或非必现的BUG,建议测试人员在此BUG上现做拷机标记,连续拷机一周未再复现的做关闭处理,若再次复现则继续进行排查。
疑难问题的跟控:比较难复现的问题,怎么去尝试复现。比较难定位的问题,怎么驱动、反馈给SE,协调开发人员定位问题。比较难处理的问题,怎么跟控反馈进度等。
每天下班前需确认拷机内容,每天上班第一件事需确认拷机结果,只有这样才能保证拷机的效果,实现拷机的真正意义。

  1. 你遇到过哪些情况可能到时漏测,后来你们又是如何改进的呢?

    漏测的原因分析有以下的几个方面:
    1.需求评审质量低,或参评人员能力不足,或过程不规范严谨
    2.需求变更频繁,测试用例无及时更新
    3.用例设计的过于粗犷,测试步骤不清晰
    4.测试用例对需求的覆盖面不全,考虑不足
    5.测试人员测试思维局限,无思考全面
    6.需求文档和原型图有出入,并且没有及时找产品和UI进行确认,按照自己的想法去测
    防止漏测或改进措施:
    1.测试人员测试思维和测试意识的提高
    2.测试环境要尽量贴近生产环境
    3.测试执行过程的规范性、严谨性和策略性
    4.需求评审质量的提高
    5.测试用例质量的提高
    6.如果是有大规模的客户群体,测试更多的要站在用户的角度去思考,而不光局限于需求文档

12.一个有广告的纸杯子,请问你会如何设计测试用例?
技巧:这种问题在面试中很容易被问到,所以就按照下方的答案去说就可以了,面试官主要考验你的基本功.
首先,问问面试官是否有需求,如果没有需求就从界面测试,功能性,安全性,可移植性,兼容性等等方面去测试。以下是测试内容范例:
测试项目:杯子
需求测试:查看杯子使用说明书
界面测试:查看杯子外观
功能度:用水杯装水看漏不漏;水能不能被喝到, 既然是广告被子,也要测试广告印刷是否清晰,印刷图案或字体是否会掉色的情况
安全性:杯子有没有毒或细菌
可靠性:杯子从不同高度落下的损坏程度
可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
跌落测试: 杯子加包装(有填充物),在多高的情况摔下不破损
震动测试: 杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路\公路\航空运输

13.一个身份证号码输入框,怎么设计用例?
技巧:测试基本功,可以用边界值,等价类划分的情况去考虑
校验身份证号规则的有效性(包括地址码、生日期码、顺序码和校验码)
校验15位身份证号和18位身份正好都是可用的
校验末位是X的情况
校验不足15位、16-17位和大于18位的情况
如果是必输项,校验不输入的时候会不会有正确的提示
如果不是必输项,则要校验不输入的时候流程能否正常进行
校验输入非数字的情况,是否会有正确提示信息(包括大小写字母、汉字、特殊字符和标点符号)
校验输入全角的数字的时候,系统是否会识别(这个得根据需求确定是否可以使用全角的数字)

14.你能说一下你了解的软件缺陷的生命周期吗?
技巧:这个问题简单来说BUG从无到有,再到close的过程
测试人员提交新的 Bug 入库,错误状态为 New。 高级测试人员验证错误,如果确 认是错误,分配给相应的开发人员,设置状态为 Open。如果不是错误,则拒绝,设置为 Declined(拒绝)状态。 开发人员查询状态为 Open 的 Bug,如果不是错误,则置状态为 Declined;如果是 Bug 则修复并置状态为 Fixed。不能解决的 Bug,要留下文字说明及保持 Bug 为 Open 状态。对于不能解决和延期解决的 Bug,不能由开发人员自己决定,一般要通 过某种会议(评审会)通过才能认可。 测试人员查询状态为 Fixed 的 Bug,然后验证 Bug 是否已解决,如解决置 Bug 的状态为 Closed,如没有解决置状态为 Reopen。
有些情况,项目为了上线,一些不重要的BUG 会推到下个版本去解决,所以软件缺陷生命周期会被延长

15.如果一个缺陷被提交后,开发人员认为不是问题,怎么处理?
技巧:说白了就是怎么处理BUG在测试和开发意见不一致的情况下,测试如何解决问题
a)首先,将问题提交到缺陷管理库里面进行备案。
b)然后,要获取判断的依据和标准:
v.根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
vi.如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
vii.根据用户的一般使用习惯,来确认是否是缺陷;
viii.与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
c)合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
d)等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

  1. 如何开展自动化测试框架的构建?
    技巧:我之前工作中基本也是遵循下方答案来进行的,从数据驱动,页面元素管理,工具库(主要封装一些元素定位,获取文本内容的方法),执行用例流程,测试报告,持续集成.
    我们公司的自动化测试框架主要是有页面库,数据驱动,测试执行脚本,测试报告,持续集成这几个部分组成的。
    页面对象库对自动化包括工具(selenium,appium)API 的二次封装,还有使用二次封装后的自动化工 具类实现的页面元素封装(Page Object)然后会给封装好的页面设置一个统一入口类。这些之中会有一个页 面元素文件专门存放元素的定位方法。数据驱动部分主要是测试脚本中使用的数据文件(excel,yaml,txt)以及读取方法类,如果数据涉及到数 据库,也会把对应的数据读取方法封装到这个部分。
    测试脚本主要是通过 pytest 测试框架进行编写的,选择其的原因主要有其支持 assert 语句断言,适合复 杂的功能测试,执行过程中可以自定义用例执行顺序和跳过以及预期,支持重复执行,还可兼容 unittest 编写 的测试用例,最重要的是支持参数化和方便持续集成工具集成。
    测试报告主要是通过 pytest 自动生成的 Allure 报告,其可读性可生动的数据表图比 pytest 报告更能反应 测试结果,也可以集成与 Jenkins 中。
    持续集成方面主要是通过 Jenkins 进行实现的,目的在于测试脚本的无人值守执行以及自动生成测试报 告,方便测试人员能够省出时间进行更多的功能测试和探索性测试。(通过设置几个 git,gitlab,mailer,allure, 等功能插件,配置 Allure 报告,默认邮件发送设置。用例脚本主要存放在 gitlab 用例库中,设置好轮询策略 之后,配置报告发送的目标邮箱,就可以实现持续集成实践中的测试环节)

17:软件测试在产品的各个阶段都做什么?
技巧:这个问题直接可以判断你是否真正的工作过,如果工作过这些都是脱口而出的,所以按照下方的答案就差不了多少.
1、规划阶段:
测试人员从一个更高的角度对产品的规划提出自己的想法,来更好的帮助产品取得成功。
还要考虑从以往工作经验,如何更高效,更精准的对产品进行测试
2、需求阶段:
  测试人员开始做需求阶段的缺陷预防,保证需求是能够满足用户的原始需求,并且整个需求都是非常清晰和合理的,版本后期没有需求不合理或者需求不清晰的问题。而且根据产品提供的需求要考虑到,部分功能它的深度和覆盖率情况
3、设计阶段:
  测试人员开始做设计阶段的缺陷预防,能够对于研发的整个设计方案非常清楚,能够根据研发设计文档里面的业务逻辑图自己能够站在测试的角度来画出一份让测试人员更加容易理解的业务逻辑图,并且能够发现研发在设计方案上存在的一些问题,并且指导研发进行修改。
4、测试阶段:
测试人员开始制定测试策略和测试计划、执行测试用例、发现和定位bug、跟踪和回归bug,质量分析,有效的探索性测试等等,目的是花更短的时间来更好的保证质量。并且在项目上线过后或者之前,有可能还要做性能和压力测试
5、编码阶段:
  测试人员开始编写单元测试、接口测试用例、测试工具或者自动化测试用例,并且开始思考后面如何去更好的测试(更高的效率,更好的保证质量),并且帮助研发提前做好编码阶段的缺陷预防,甚至做得测试驱动开发。

18.描述一下访问网页的过程

  1. 用户在浏览器中输入网址,计算机提取出域名;
  2. 浏览器通过DNS查找域名对应的IP地址,获得IP地址后;
  3. 尝试与对应的服务器建立TCP连接,连接成功之后;
  4. 将用户的请求装入http数据包,通过建立的tcp连接发送给服务器,等待数据返回;
  5. 如果数据成功返回,比如说,返回的是一个html页面,则渲染这个页面(可以理解为显示出来);
  6. 渲染的过程中会遇到一些数据标记,比如图片,这时候就查找本地缓存,如果缓存里有且没过期,就使用本地缓存的数据,否则就向服务器发送请求。
    19.HTTP常见的状态码
    技巧:先把常见码都说出来,再说每个常见码所代表的意义
    1XX系列:指定客户端应相应的某些动作,代表请求已被接受,需要继续处理。由于 HTTP/1.0 协议中没有定义任何 1xx 状态码,所以除非在某些试验条件下,服务器禁止向此类客户端发送 1xx 响应。
      2XX系列:代表请求已成功被服务器接收、理解、并接受。这系列中最常见的有200、201状态码。   200状态码:表示请求已成功,请求所希望的响应头或数据体将随此响应返回   201状态码:表示请求成功并且服务器创建了新的资源,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 ‘202 Accepted’
      202状态码:服务器已接受请求,但尚未处理
      3XX系列:代表需要客户端采取进一步的操作才能完成请求,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。这系列中最常见的有301、302状态码。   301状态码:被请求的资源已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
      302状态码:请求的资源临时从不同的URI响应请求,但请求者应继续使用原有位置来进行以后的请求
    304自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。 如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。
      4XX系列:表示请求错误。代表了客户端看起来可能发生了错误,妨碍了服务器的处理。常见有:401、404状态码。   401状态码:请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。   403状态码:服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。
      404状态码:请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。
      5xx系列:代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。常见有500、503状态码。   500状态码:服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器的程序码出错时出现。   503状态码:由于临时的服务器维护或者过载,服务器当前无法处理请求。通常,这个是暂时状态,一段时间会恢复
    20.一般测试用例的设计方法有哪些
    等价类划分法 边界值分析法 错误推测法 因果图法 判定表法 正交法
    通常在确定测试方法时,有以下几条参考原则:
    (1)如果测试一个功能中有输入功能,没有输入的组合情况,可以使用等价类划分法
    (2)如果测试一个功能中有输入功能,且输入类型或者范围长度有边界时,可以使用边界值法。
    (3)如果测试一个产品,有多个输入,多个输出,而且输入与输入之间有相互组合关系,输入和输出之间有相互制约和依赖关系可以使用因果图和判定表法
    (4)对于参数配置类的软件,需要考虑参数之间相互组合的情况,用最少的测试用例获得最大的测试覆盖率,可以使用正交试验法
    (5)对于多个功能之间的组合逻辑测试,可以使用场景法和流程图法。
    (6)采用错误推断法再追加测试用例——依靠测试工程师的经验和智慧。
    21.软件的安全性应该从哪些方面去测试
    技巧:用户认证机制, 数据加密机制, 安全防护策略, 数据备份与恢复手段, 防病毒系统来说,接着每个模块举例子就说明即可
    一、用户认证安全的测试:
    1、明确区分系统中不同用户权限
    2、系统中会不会出现用户冲突
    3、系统会不会因用户的权限的改变造成混乱
    4、用户登陆密码是否是可见、可复制
    5、是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
    6、用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
    二、系统网络安全的测试
    1、测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
    2、模拟非授权攻击,看防护系统是否坚固
    3、采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP )
    4、采用各种木马检查工具检查系统木马情况
    5、采用各种防外挂工具检查系统各组程序的客外挂漏洞
    6、入侵检测、隔离防护、漏洞扫描等
    三、 数据库安全测试:
    1、系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
    2、系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
    3、系统数据可管理性
    4、系统数据的独立性
    5、系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)
    22.为什么要做测试?
    技巧:因为软件它相当于一个产品,在产品交到客户之前,我们需要保证产品没有任何问题,那这个把关的就是我们测试了,在以前测试大部分都是开发来做,但是现在有了测试,所以我们的专业度要比之前开发自测高很多,产品才会更好
    还有一个关键点是,现在客户对软件产品要求越来越高了,所以为了达到这个高度,开发是一方面,测试也是重中之重的
    (1)客户需要对开发的软件进行测试
    (2)软件行业发展的趋势和必要
    (3)提高软件质量,满足用户需要
    (4)软件自身存在问题,不做测试无法发现和解决问题
    (5)提高用户体验

23.你认为怎样才算是一位好的测试人员?
良好的沟通、责任心、持续的努力、积极主动、对自己有信心淡定的心、与时俱进
还有一点就是经过你手的产品,上线之后客户满意度高,反馈差评几乎没有的,才是对你测试工作最好的认证
24.BUG的等级分为哪些?请依照等级举例
技巧:可以说从严重到普通(P0,P1,P2,P3或者S0,S1,S2,S3) ,这个可以按照自己想的说,但是严重等级一般最多分为4级足够了

	 举例:P0(系统奔溃,闪退,软件无法打开,有关于金钱,利息的BUG都可以)
	 	  P1(部分功能目前无法正常运行)
		  P2(页面跳转错误,一些输入框没有经验校验等)
		  P3(UI显示有问题,排版,错别字,地址错误等)

(1)最高优先级,例如,软件的主要功能错误或者造成软件崩溃,数据 丢失的缺陷。
(2)较高优先级,例如,影响软件功能和性能的一般缺陷;
(3)一般优先级,例如,本地化软件的某些字符没有翻译或者翻译不 准确的缺陷;
(4)低优先级,例如,对软件的质量影响非常轻微或出现几率很低的 缺陷。

1.在完成某项工作时,你认为领导要求的方式不是最好的,自己还有更好的方法,你应该怎么做?
回答提示:①.原则上我会尊重和服从领导的工作安排,同时私底下找机会以请教的口吻,婉转地表达自己的想法,看看领导是否能改变想法。②如果领导没有采纳我的建议,我也同样会按领导的要求认真地去完成这项工作。③.还有一种情况,假如领导要求的方式违背原则,我会坚决提出反对意见,如领导仍固执己见,我会毫不犹豫地再向上级领导反映

2.你对薪资的要求?
技巧:谈薪资的话可以根据你面试的情况来说,如果面试的比较好可以在他们给出薪资空间的中上等,如果面的不好可以给出中下等(前提是你想要进入这家公司)
如果你对薪酬的要求太低,那显然贬低自己的能力;如果你对薪酬的要求太高,那又会显得你分量过重,公司受用不起。一些雇主通常都事先对求职的职位定下开支预算,因而他们第一次提出的价钱往往是他们所能给予的最高价钱,他们问你只不过想证实一下这笔钱是否足以引起你对该工作的兴趣。
3.如果公司录用你,你将怎样开展工作?
如果是测试岗位:进公司先安装公司的软件或者环境,再熟悉项目,熟悉完项目就可以做领导分配的工作内容了.
很多企业在招聘开发人员时很看重是否能够尽快上手,所以回答这个问题时要“实打实”的回答,在回答中最好强调能够“尽快”投入开发工作中,这样领导就放心了,会觉得你不是一个只会盲目工作的人,而是一个按部就班,稳打稳扎的人。
4. 你未来3-5年的职业规划是怎样的?
技巧:从技术角度讲,来贵公司工作,一个是掌握公司的业务,另外一方面会提升个人技术,把自己的技术运用到公司项目上,未来几年,自己会朝着测试开发工程师,高级测试工程师的方向发展.
大部分面试官司都会问你是否有职业规划,这个问题的背后是了解你的求职动机和对自己中长期职业发展的思考。在回答这个问题之前,要对自己有个清晰的认识,知道自己想往哪个方向发展以及未来有什么计划,要给面试官一种积极向上,好学上进,有追求,有规划的感觉,面试官喜欢有规划的求职者。
5:你为什么离职?
回答提示:
回答这个问题时一定要小心,就算在前一个工作受到再大的委屈,对公司有多少的怨言,都千万不要表现出来,尤其要避免对公司本身主管的批评,避免面试官的负面情绪及印象。建议此时最好的回答方式是将问题归咎在自己身上,例如觉得工作没有学习发展的空间,自己想在面试工作的相关产业中多加学习,或是前一份工作与自己的生涯规划不合等等,回答的答案最好是积极正面的。
回答参考:
我希望能获得一份更好的工作,如果机会来临,我会抓住。我觉得目前的工作,已经达到顶峰,即沒有升迁机会。
还可以说由于家庭原因离职,家里的亲人的工作变动影响到你等,或者公司搬家

6:如果你在这次面试中没有被录用,你怎么打算?
技巧:要经常自我总结,自己之所以没面试上,问题是出在哪个环节了,弥补自己的不足争取在下一次面试中改掉这些问题.
还有一个就是调整自己的心态,不要气馁,要勇于面对,有一个积极的心态找工作才是你能面试上的最大保障
回答提示:
现在的社会是一个竞争的社会,从这次面试中也可看出这一点,有竞争就必然有优劣,有成功必定就会有失败。往往成功的背后有许多的困难和挫折,如果这次失败了也仅仅是一次而已,只有经过经验经历的积累才能塑造出一个完全的成功者。我会从以下几个方面来正确看待这次失败:①要敢于面对,面对这次失败不气馁,接受已经失去了这次机会就不会回头这个现实,从心理意志和精神上体现出对这次失败的抵抗力。要有自信,相信自己经历了这次之后经过努力一定能行,能够超越自我。②善于反思,对于这次面试经验要认真总结,思考剖析,能够从自身的角度找差距。正确对待自己,实事求是地评价自己,辩证的看待自己的长短得失,做一个明白人。③走出阴影,要克服这一次失败带给自己的心理压力,时刻牢记自己弱点,防患于未然,加强学习,提高自身素质。④认真工作,回到原单位岗位上后,要实实在在、踏踏实实地工作,三十六行、行行出状元,争取在本岗位上做出一定的成绩。⑤再接再厉,成为国家公务员一直是我的梦想,以后如果有机会我仍然后再次参加竞争。

7:如何安排自己的时间?会不会排斥加班?
技巧:如果被问到加班情况,要拿出高配合度才行,一般都会说可以接受加班
但实际有些面试官这样问你,只是想看你对加班的态度是怎样的,但有些是真的需要加班了.所以在面试之前可以通过网络了解下你去面试的公司
回答提示:基本上,如果上班工作有效率,工作量合理的话,应该不太需要加班。可是我也知道有时候很难避免加班,加上现在工作都采用责任制,所以我会调配自己的时间,全力配合。
分析:虽然不会有人心甘情愿的加班,但依旧要表现出高配合度的诚意

8:在五年的时间内,你的职业规划?
回答提示:这是每一个应聘者都不希望被问到的问题,但是几乎每个人都会被问到,比较多的答案是“管理者”。但是近几年来,许多公司都已经建立了专门的技术途径。这些工作地位往往被称作“顾问”、“参议技师”或“高级软件工程师”等等。当然,说出其他一些你感兴趣的职位也是可以的,比如产品销售部经理,生产部经理等一些与你的专业有相关背景的工作。要知道,考官总是喜欢有进取心的应聘者,此时如果说“不知道”,或许就会使你丧失一个好机会。最普通的回答应该是“我准备在技术领域有所作为”或“我希望能按照公司的管理思路发展”。

9.请介绍一下你自己
我的模板:
我叫XX,今年X岁,XXXX年毕业于XX大学(这个可说可不说)。有3年的测试工作经验,在这3年里面我从事了哪几家公司,做了哪些项目(只需要说名字就可以了),我平常空余时间喜欢看看技术类文章,与朋友一起交流,今天非常高兴来到贵公司面试,谢谢!

这是面试官100%会问的问题,一般人回答这个问题过于平常,只说姓名、年龄、爱好、所学专业等,如果你用一分钟来重复你的简历,那么,你的印象加分没有了!
不妨坦诚自信地展现自我,重点突出与应聘职位相吻合的优势。你的相关能力和素质是企业最感兴趣的信息。因为,在许多情况下,在听取你的介绍时,面试官也会抓住他感兴趣的点深入询问。所以,在进行表述时,要力求以真实为基础,顾及表达的逻辑性和条理性,避免冗长而没有重点的叙述。一定要在最短的时间内激发起面试官对你的好感。
回答范例:我叫XX,今年X岁,XXXX年毕业于XX大学。有3年的开发工作经验,我对技术有深厚的兴趣,专业知识面宽,责任心强,思路清晰,沟通力能好,精通.Net技术体系,熟悉MVC。平常有时间看看博客,并且自己也喜欢在CSDN上写技术类的文章,与博友一起讨论。谢谢!
10.谈谈你对跳槽的看法?
回答提示:①正常的“跳槽”能促进人才合理流动,应该支持。②频繁的跳槽对单位和个人双方都不利,应该反对。
11、最能概括你自己的三个词是什么?
回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释,
如果是问我:直接会说五个字:程序员终结师
12、你的业余爱好是什么?
回答提示:找一些富于团体合作精神的,这里有一个真实的故事:有人被否决掉,因为他的爱好是深海潜水。主考官说:因为这是一项单人活动,我不敢肯定他能否适应团体工作。
13、说说你对行业、技术发展趋势的看法?
技巧:这个问题首先需要你了解你面试的公司他在哪个领域,然后根据这个领域来说该公司以后发展好的情况下会是什么样的等等.为了公司的未来,我会努力工作,提升业务水平以及个人技术
回答提示:企业对这个问题很感兴趣,只有有备而来的求职者能够过关。求职者可以直接在网上查找对你所申请的行业部门的信息,只有深入了解才能产生独特的见解。企业认为最聪明的求职者是对所面试的公司预先了解很多,包括公司各个部门,发展情况,在面试回答问题的时候可以提到所了解的情况,企业欢迎进入企业的人是“知己”,而不是“盲人”。
14、你通常如何处理別人的批评?
回答提示:①沈默是金,不必说什么,否则情况更糟,不过我会接受建设性的批评。②我会等大家冷靜下来再讨论。
15、谈谈如何适应办公室工作的新环境?
回答提示:①办公室里每个人有各自的岗位与职责,不得擅离岗位。②根据领导指示和工作安排,制定工作计划,提前预备,并按计划完成。③多请示并及时汇报,遇到不明白的要虚心请教。④抓间隙时间,多学习,努力提高自己的政治素质和业务水平。
16、你怎么理解你应聘的职位?
技巧:首先我是个专业的测试工程师,所以看到这个测试岗位,我认为以下几点是必须掌握的
1熟知测试基本理论, 掌握常用测试工具、软件测试流程及各项规范,能进行测试需求分析,编写测试用例
2熟悉python,对于无论是UI自动化还是接口自动化我都可以胜任
3逻辑能力强、思维活跃,接受新事物能力强
4具有WEB/APP应用测试经验,熟悉常用的测试工具和Bug管理跟踪软件,版本控制软件
还有一点就是要体现自己沟通能力强,工作认真细致等
回答提示:把岗位职责和任务及工作态度阐述一下。

工作流程:
我们公司接到新项目之后,由产品经理组织开需求评审会,主要讲了这个项目的功能,我们在进行讨论(测试讨论的内容针对这个模块测试的覆盖面和深度等问题),当需求评审
会开完之后,编写测试计划,并熟悉项目,熟悉完成之后接下来就开始编写测试用例,测试用例写完之后,开一个测试用例评审会,主要由开发产品测试,UI人员参加,主要讲我的测试用例,再开发提测之后我就介入进来,先执行冒烟测试,再执行测试用例对产品进行整体测试,发现BUG,提交缺陷报告,开发改完之后再复测,走完之后,在进行回归测试,回归测试通过之后上线到正式环境,在这之中要编写阶段测试报告(不懂的百度查),上到正式环境之后,再执行几轮的回归测试,回归过后OK,撰写上线报告,然后就可以上线了
注意:这个上线有可能是内部更新迭代,也有可能是真的上线了

你可能感兴趣的:(面试,软件测试,面试)