文章目录
- 1.如果一个问题你认为是bug,但是开发说不是,你怎么处理?
- 2.http协议和https的区别
- 3.HTTP 请求中的 POST、GET 有什么区别
- 4.不可复现的bug怎么处理:
- 5.请问还有什么想问的吗?(面试如何谈薪资)
- 6.Beta和alpha测试的区别
- 7.如何查看服务器日志
- 8.如何分析一个bug是前端还是后端的
- 9.说下这个模块的功能测试点是怎么整理的?
- 10.说下你了解那些云测平台?
- 11.如何保证测试的质量?
- 12.注册验证码是怎么来的?
- 13.一个页面空白了怎么去排查定位问题?
- 14.怎么发现线上用户存在的问题?
- 15. App测试和web测试的区别?
- 16.你是如何快速的熟悉一个项目?
- 17.提过bug吗?
- 18 . 写过测试用例吗?
- 19. bug定位
- 20.一个前后端都能修改的bug,应该由谁来修改?
- 21.注册账号成功之后登录失败,怎么进行排查?
- 22.如何制定测试过程中的时间进度表(如何排期)
- 23.如果发现线上出问题,你会怎么处理?
- 24.在地址栏输入URL会发生什么,过程是怎样的?
- 25.测试为啥要抓包?
- 26.如何通过fiddler定位前后端bug?
- 27.浏览器F12抓包工具介绍?
- 28.页面为什么会出现404?
- 29.你还有什么要问的么?
1.如果一个问题你认为是bug,但是开发说不是,你怎么处理?
首先先记录问题
- bug重现,在开发的面前重现操作一遍给他看,确定大家看到的都是同一个现象
- 校队需求,核对双方需求,看是否是同一版本的需求,如果不是同一版本,那就确定哪一方的需求是最新的
- 如果需求版本一致,双方意见还未达成一致,那就找产品经理确认
- 开会讨论决定
2.http协议和https的区别
HTTP 是超文本传输协议,信息是明文传输,
HTTPS 则是具有安全性的 SSL 加密传输协议。
HTTP 和 HTTPS 使用的是完全不同的连接方式,使用的端口也不一样,HTTP 默认是 80 端口,而 HTTPS 默认是 443 端口。
3.HTTP 请求中的 POST、GET 有什么区别
- GET 请求是通过 URL 直接传递请求数据,post是通过body传参
- get请求有数据大小的限制,(浏览器做了些处理,所以长度依据浏览器的不同有所不同),少量的数据使用 GET,大量的数据使用 POST
- 安全方面:get不安全,post安全,
GET 请求因为数据参数是暴露在 URL 中的,所以安全性较低,例如密码是不能透露的,就不能使用 GET 请求
4.不可复现的bug怎么处理:
首先记录一下什么测试场景下出现的
保留测试案例、日志截图以及相关截图
跟开发说明情况 开发检查代码
该问题记录,线上观测 是否出现 如果线上出现该问题,第一时间解决
5.请问还有什么想问的吗?(面试如何谈薪资)
我想了解下咱们公司的薪酬结构,绩效年终奖的基本算法是怎样的,
五险一金是按照什么基数上缴,一年有几次调薪机会,
分别在那几个月,加班制度是怎么样的,加班费是如何结算的,
6.Beta和alpha测试的区别
alpha测试是公司内部在模拟实际操作环境下进行的一种验收测试,会组织内部员工也需要用户的参与,,Beta测试是软件多个用户在一个或多个环境下使用的一个测试 区别测试场所不同
7.如何查看服务器日志
进入日志文件所在目录,tail -f error.log动态查看日志
tail -n 50 error.log 查看后50行日志
8.如何分析一个bug是前端还是后端的
这种情况很容易判断,先抓包看请求报文,对着接口文档,看请求报文有没问题,有问题就是前端发的数据不对
请求报文没问题,那就看返回报文,返回的数据不对,那就是后端开发的问题咯
9.说下这个模块的功能测试点是怎么整理的?
先确认这个模块包括哪些功能以及小模块,一般我会用xmind去梳理整理尝试去了解一下每个功能的一个细节,描述比如输入输出,还有一些限制跟约束等等,尝试去寻找功能与功能之间的交互,然后我们去编写测试用例,首先呢写我们正常的测试用例,然后针对每一个输入的异常去考虑他的一些异常测试点
10.说下你了解那些云测平台?
云测平台提供了远程租用真机的服务,基本上都是用自动化框架来实现真机上的脚本的,自动化运行,或者远程租用真机人工进行测试,因为安卓端设备种类众多,云测平台在安卓端使用比较广泛,国内外都提供了多种云测平台,比如国内的testin,国内的腾讯优测,国外有pefecto还有testDroid之类等
11.如何保证测试的质量?
1.减少漏测,这种情况可能在回归测试的过程当中容易出现,那么我们可以适当的运用一些自动化测试的手段去保证这样的一个测试质量
2.熟悉用户使用场景,我们通过去熟悉使用场景,可以对我们常见的一些用例去进行进一步的设计包括功能需求和非功能性的需求
3.持续更新用例库,当新的用例进来之后,下一个阶段去加入到常规测试当中
4.开展探索性测试
5.梳理逻辑漏洞,尽量避免会一些隐藏的使用场景的测试
12.注册验证码是怎么来的?
首先呢,当你在页面当中输入手机号码,点击获取验证码的时候呢,前端会调用接口将你的手机号作为参数传递给后端,那么后端会根据算法和规则
随机生成4位或者6位的验证码,然后呢后端会将手机号码验证码,以及过期时间存入到数据库或者redis缓存当中,比如说mysql或者redis中,再然后呢
后端会调用通讯运营商的发送接口或者第三方短信平台的发送接口,将验证码发送到对应的手机,同时呢后端也会监听短信平台上行接口的响应结果,将发送成功
的状态返回给前端,最后呢后端会与数据库进行校验比对,已确认短信验证码是否是正确和有效的
13.一个页面空白了怎么去排查定位问题?
你可以通过查看你的请求当中参数是否正确, url是否正确,然后你的响应结果当中状态码是否正确,它的响应结果是否正常,如果你发现在浏览器这些调试工具当中控制台里面出现了一些js异常这一类错误,那么通常来说就是前端出现问题,如果我们发现是响应结果报500之类的错误那么一般是后端出现了问题
14.怎么发现线上用户存在的问题?
1.如果说是用户已经发现的问题,可以通过分析日志来分析这个用户的问题,
2.如果这个问题不是一个现成的问题,那我们可以去分析用户他的操作步骤,配置还有环境,模拟用户的使用场景,在测试环境里面去复现这个问题。如果一旦复现了就要把这个测试的一个场景添加到用例库里边,以便后期执行更加贴近用户的使用场景
15. App测试和web测试的区别?
单纯功能上来讲,App和web没有区别
系统架构上:
Web 一般基于B/S架构,基于浏览器
App 则是C/S架构,用户需要安装客户端
性能方面
Web页面主要关注响应时间
App测试要看分辨率,CPU、GPU、memory这些
兼容方面:
Web是基于浏览器,电脑系统,分辨率
App测试要看分辨率,屏幕尺寸,手机型号,系统
Web是基于浏览器不需要考虑安装卸载
App是客户端必须测试安装、卸载、升级、更新,还要考虑异常场景,包括断网、弱网、中断测试
16.你是如何快速的熟悉一个项目?
1.要尽快熟悉项目的业务流程,并且开展系统测试
2.把能找到的文档都收集起来,快速地过一遍,对产品的需求有个大概的了解
3.我安装部署被测软件,将自己转变为一名用户,以用户的思维和角度使用软件,在使用的过程当中,提出疑问,并且找项目模块的开发或同事进行沟通。梳理用户核心场景,并关注各类异常的情况
4.查看之前的测试用例,以便对当前系统有更深入的理解
5.查看之前的bug,以便对当前系统的缺陷分布有理解和掌握
6.尽早和开发交流,对于后续版本的需求分析和评审持续关注和参与
7.对于版本已有功能开展回归测试,对于新功能开展测试设计等
17.提过bug吗?
提过,我是基于优先级和风险对于当前项目进行测试,在测试过程当中,按照优先级进行测试,这样可以优先发现系统严重和紧急的bug,一旦发现不过,我通常会记录当前的测试环境,系统截图,复杂步骤,如果功能复杂,会及时联系开发,保留环境。并且提交到bug管理系统,跟踪直到问题得到解决
18 . 写过测试用例吗?
我是根据用户场景来设计编写用例的,因为我测试的系统挺复杂的,使用用户场景方法设计,可以优先保障用户最关心,最频繁使用的功能不会错,在时间充裕的条件下,对于关键的功能点和操作输入相关的,进行各种异常情形的测试。当完成了功能用例的编写后,会进一步考虑非功能性,比如兼容性,可靠性,性能等的测试用例的编写
19. bug定位
1.用户层面问题:用户自己环境问题或操作问题
2.web页面:样式问题css,交互问题js,文本问题HTML
3.接口问题
4.后端问题
5.数据库问题
20.一个前后端都能修改的bug,应该由谁来修改?
按道理前端和后端都应该修复的,但如果说因为我们时间比较紧张,项目着急上线的话,我们可以考虑优先让前端来进行修复,因为前端直接对应着用户的一个操作的,用户直接交互的界面在前端,而后端他可能只是有一些安全隐患存在,然后后期后面的一些迭代里面再让后端做一些同样的检查。来巩固代码的安全性。
21.注册账号成功之后登录失败,怎么进行排查?
1.有可能注册本身就有问题,它的成功是一个假的成功,那么这个时候我们就需要去检查一下数据库里面的对应的表,看下这个表里边有没有对应的注册的那个账号的一些信息。
2.如果数据库里边是存在的,说明我们的注册确实成功了,那我们可能要检查前端输入的用户名密码是不是输对了,检查下有没有一些特殊字符或者一些空格之类的
3.检查下有没有做过一些密码的加密处理,然后导致我们注册跟登录的密码不匹配
22.如何制定测试过程中的时间进度表(如何排期)
首先我们会根据项目的需求,还有项目的周期以及开发那边的一些时间进度表,去制定出来一个测试这边的时间进度表的初稿,然后呢再召集所有的项目相关人员,一起讨论分析,确定时间排期,这个表应该包含了开发提测的时间,测试具体执行测试的时间,验收时间等,时间表制定后,严格按照时间进度表执行
23.如果发现线上出问题,你会怎么处理?
1.与客户进行沟通得到完整具体详细的操作环境,操作步骤以及操作数据等内容
2.到测试环境去确认这个问题,并且通过查看日志的方法,去定位这个问题
3.当确认好了bug之后,把它提交到bug管理平台,指派到对应的开发,去修复它就可以了
4.当问题解决之后,总结判断这个问题产生的原因,
24.发版时间已定,之前规划的测试时间明显不够,如何处理?
1.根据我们之前公司的情况,遇到这种情况我们基本上可以先确认一下是否可以调动别的组的人员进行测试的帮忙,如果不可以的话,需要让领导发动我们这个项目组进行加班,当然对于参加加班的同事可以给予已定的激励,
2.项目结束之后,一定要对此项目的问题进行总结和改良的措施,避免下次项目出现同样的问题,例如我们分析一下,项目的一个测试时间不够的原因,具体时间什么,如果说是因为对需求理解不深刻,导致对测试时间的评估不准确的话,那么可以从测试这边入手,让大家理解更加深刻一点,如果说是因为开发压缩时间,导致测试时间不够的话,我们可以从整个项目管理流程入手
24.在地址栏输入URL会发生什么,过程是怎样的?
首先计算机会向DNS服务器发起请求进行域名转换,将域名转换成服务器的IP地址,然后会发起http的请求,http的请求是一个应用层的请求,会带上它的请求报文一层一层的封装,从应用层会向下传输,到传输层会封装一个tcp的头部信息,然后再到网络层,会封装一个IP的头部信息,然后再往下传到我们的数据链路层,会封装一个MAC地址的头部,然后通过我们的物理媒介进行传输,服务器收到之后,会对这个报文一层一层的解封装,然后回到原始的http的请求,然后服务器对他进行一个响应,得到响应消息,同样方法进行一层一层的封装然后传输给客户端,客户端收到之后,也用同样的方法进行一层一层的解封装,这样子就可以得到http的一个响应消息,也就是服务器给它返回的一个响应资源了
25.测试为啥要抓包?
如果是http或者是https的话可以用fiddler或者用charles进行抓包,其他协议tcp、udp的话我们用wireshark,在程序运行的时候,数据都是以数据包的形式进行传输,这个发送和接收的过程中,可能发出的数据包有错误的数据,也可能接收的包有错误的数据,从而会导致我们的程序处理会出错,因此我们直接抓取传输的数据包,通过其他工具或者方法解析数据包的原始数据可以定位出来是否因为数据出错而导致程序出错。
26.如何通过fiddler定位前后端bug?
在fiddler没有设置过滤器的情况,如果没有抓到请求信息,可能是前端页面元素没有绑定事件,也有可能是前端发生了js错误,这就是前端的bug,若抓取到的请求数据,如果是前端传输的数据错的,那就是前端的bug,如果请求数据正确返回的数据错误,那是后端的bug,如果中间的http状态码是500的话,说明是服务器内部错误,后端返回值的状态码是404的话,说明是后端服务器根本没有对应的地址服务,当然还有可能是前端js提交的时候提交错误的地址。
27.浏览器F12抓包工具介绍?
比如访问某个网站有异常的时候通过F12抓取报文分析具体问题,F12主要针对的是http协议和https协议,它可以确认我们的网络数据包的一个状态以及通过分析请求报文,和响应报文里面的内容从而分析出来请求数据和响应数据是否正确也可以分析出来问题是前端问题还是后端问题
28.页面为什么会出现404?
当你去连接一个网站的时候,服务器首先回去检测你输入的网址链接它是否在服务器上有一个对应的网页信息,如果没有对应的网页信息就说明用户输入的是一串无效的链接,这个时候服务器就会提示404 not found的错误提示。
29.你还有什么要问的么?
请问你担任的职位是?
贵公司的规模是什么样的?有多少人?
我如果入职以后做的项目在公司处于什么样的地位?
项目目前的状况?发布了几个版本,已有的计划?
我如果入职的话,以后从事的是那一块的工作?