面试题
web与app测试的区别?
1、APP兼容性测试(不同平台,不同分辨率,不同厂商)
2、弱网络以及不同网络情况下APP的资源加载和异常处理
3、安装以及卸载,和增量更新这部分
4、APP专项方面的测试,比如:占用电量,流量,CPU和内存的资源
5、需要测试APP的CRASH与ANR(崩溃,卡死,闪退)
APP出错怎么获取错误日志?
答复:使用命令adb logcat | findstr package ,打开日志查看的控制台,再次测试APP,看是否会再次崩溃,如果崩溃,获取到它详细的错误信息。
APP的稳定性测试你是怎么测试的?
答复:APP的稳定性从两个维度考虑:
1、它作为客户端,能够很快速的从服务端获取数据,那么前提是服务端是稳定性的
2、客户端本身的稳定性,比如不会出现崩溃,卡死,闪退,以及其他异常的信息,还有它的流畅度
那么使用monkey的测试工具来针对APP做各种随机性的操作,来验证是否会出现CRASH和ANR的情况
你之前是怎么部署环境的?
(Linux怎么部署环境)
我们之前部署环境都是由开发来部署的,但是我说一下我理解的环境部署的方式,
第一种,以Java语言为例,通过maven吧springBoot的程序构建成war包,然后通过scp把它上传到Linux,服务器,部署在tomcat的环境下,启动tomcat部署成功,然后再浏览器中访问,比如Jenkins就是这样启动的;
第二种,也是以java为例,假设开发的是一种服务,通过maven,吧springBooot构建成war包后,再通过Linux服务器通过命令来启动,具体命令是:java -jar .war
第三种,通过docker的方式部署环境,把开发编写好的程序通过dockerfile构建成image的镜像,然后启动这个镜像后是一个容器吗,那么环境也就部署好了,如果贵司是测试来部署环境的,这点您放心,我加入公司后,能够很快速的掌握这部分并且承担起这部分的任务。
你是怎么来保证质量的?
我是通过这么几个维度来保证产品质量的
1、对需求的熟悉度,我会梳理清楚需求文档中存在的所有业务逻辑,以及找产品开发把自己理解不是很透彻或者是理解存在歧义的需求,都会和他们进行讨论,通过这样的方式,让需求理解上开发产品都理解一致,因为它是设计测试用例以及测试过程中逻辑沟通的唯一依据;
2、测试用例的覆盖度,我会考虑这么几个维度来考虑
首先是产品的正常业务逻辑流程以及正常流程的测试点设计,第二个会考虑异常逻辑产品的容错性以及脏数据程序对这一部分的容错性处理,第三个本次迭代关联之前的业务模块和其他业务团队关联的模块测试点都会考虑进去,第四个第会考虑产品的兼容性易用性稳定性以及性能方面的测试点都会考虑进去;
3评审测试用例的时候会让多个人参与产品开发等,看看测试用例是否考虑的足够全面;
4.我会采用交叉测试、验收测试来保证测试的质量;
5.我会通过技术手段主要用到ui测试和自动化测试的方式,这样会有更多的时间去看一下自动化测试没有考虑到的点,再次对产品的质量做一个审视。
你之前会写测试计划和测试报告吗?
会,我们之前是两周一个迭代,每个迭代都会编写测试计划和测试报告,那我说一下测试计划里面我们会写哪些内容:测试计划里面会写道这个迭代当中我们会做的工作内容以及这些工作内容从什么时间开始到什么时间结束,比如一个迭代当中测试需要做的工作内容就是参与需求的评审,第二,编写测试用例以及评审测试用例,第三,本次迭代产品功能的测试,下来就是产品报告的梳理,我们通过测试计划可以看到本次迭代可以什么时间上线,测试报告里面到时候我会写一些内容
1.本次迭代所有功能的测试结果
2.系统已有功能的测试结果
3.系统核心功能的测试结果(核心功能是每个用户需要用到的需要单独测)
4.系统本次迭代所有bug的解决的情况
5.如果本次迭代有性能测试,那么需要在测试报告加上性能测试的结果
6.本次迭代测试结论主要指的是可以上线还是不能上线
你是怎么理解水仙花数的?
一个三位数,个位数的三次方加上十位数的三次方再加百位数的三次方等于这个数字,就比如是153: 1*1*1+5*5*5+3*3*3=153
你是怎么理解冒泡排序的?
'''
1、列表每两个相邻的数,如果前面比后面大,则交互这两个数
2、一趟排序完成后,则无序区减少一个数,有序区增加一个数
'''
import random
def bubble_sort(li):
'''时间复杂度:O(n*n)'''
for i in range(len(li)-1):
#标记位
exchange=False
for j in range(len(li)-i-1):
#如果是降序,那么就是>修改为<号
if li[j]>li[j+1]:
li[j],li[j+1]=li[j+1],li[j]
exchange=True
#能够详细的展示出排序的过程
# print(li)
if not exchange:break
return li
if __name__ == '__main__':
li=[random.randint(0,1000) for i in range(10)]
print(bubble_sort(li=li))
如果让你独立负责一个产品的测试你会怎么做
(你对单独负责一个产品怎么看的)
1.因为我是刚加入公司,需要尽快的融入团队里面,尽快的熟悉公司的业务,
2.梳理清楚整个测试流程,把控各个阶段的关键点,这些关键点就是什么时间开始转测,什么时间开始测试,什么时间上线,如果出现风险,会及时的和我的pm领导沟通,来解决这些风险
3.产品质量的把控,参考前面保证质量的面试。
你是怎么评估各个迭代的测试点的
通过这么几个维度
1.根据本次迭代产品的难易度
2.以往的工作经验
3.更具这两点评估出来后可能会不合理,到时候会去和我的pm会核对一下
比如一个工作评估四天,他们评估两天 你会怎么办?这个时候我会根据这个迭代每个功能时间点再次划分一下,如果划分出来后,还是需要三天多的时间,那么我会向他们阐述我的理由,通过数据来说话,因为之前假设评估出来的是三天半,我要的是四天的时间,多出来的半天是做探索性测试,我相信不管是站在你的立场上还是pm的立场上,都为的是测试的质量,不可能是牺牲了测试的时间追求上线的效率而不管产品的质量,对客户而言是不负责的,
你在工作里面和同事发生冲突 ,你会怎么解决这个事情?
我和同事生冲突,肯定是我这边也有不对的地方,首先我需要向我的同事道歉,然后一起把这个事情说清楚,下次遇到类似的事情尽量克制一下自己的情绪
之前公司多少人 多少开发 多少测试 和你对接的开发是多少人?
测试4个,开发十几个,有一半开发可以对接到,包括前端后端和负责底层服务的开发
用什么样的监控工具?
针对Java程序,使用的监控工具是jvisualvm
针对系统的资源(CPU,内存,平均负载),使用的监控工具是prometheus
针对jmeter性能测试过程中的数据(响应时间,吞吐量),那么会把数据写到influxdb里面,最后展示在grafana的平台中
为什么你的接口要用那么多的工具?
charles主要使用它来抓取网络请求
在工作里面,和开发这边的联调以及验证一般的API,使用的是postman
接口自动化测试最初开始使用的是jmerer的测试工具,后面我的直属领导要求使用代码级别来做借口自动化测试,也就使用了requests
如何做多接口的?(参数之接的关联问题)
接口之间的参数关联问题。postman、JMenter、代码之间的参数关联。
公司架构
我们公司的组织架构研发部下边会分为开发、产品和测试部门。技术上,我们公司产品使用的是微服务架构,根据业务形态拆分成微小的服务,每个微服务都有自己独立的数据库,微服务中,服务与服务之间的通信会采用轻量级的REST API和gRPC的协议来进行通信
你印象中最深的bug是什么
内存泄漏、支付回调、多支付请求
匿名函数lambda
测试时遇到不可复现的BUG如何处理
比如我测试的时候 这个问题出现的时间是十点,后边我怎么测都不会出现,那么这个时候我到服务的日志找到十点的日志看能不能找到这个错误的日志,如果找到了错误的日志,我把日志反馈给开发,让他定位错误的具体状况,如果找不到日志,我会把这个问题提交到bug管理系统,我会提交给自己,如果再次出现,我把交互的图,错误的日志都带上,然后反馈给开发。

浙公网安备 33010602011771号