测试面试题(2021)干货!
Posted KIMdamI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了测试面试题(2021)干货!相关的知识,希望对你有一定的参考价值。
以此献给正在努力找工作的你
1. 软件测试的目的与原则是什么?
答 : 目的:
A. 通过测试工作可以发现并修复软件当中存在的缺陷,
B. 可以降低同产品开发遇到的风险,
C. 记录软件运行过程中的一些数据,从而为决策者提供技术支持。
原则:
A. 2/8定律,核心功能占20%,非核心占80%,我们会集中测试20%的核心功能,发现缺陷的几率会高于80%,因此,遇到的缺陷都会集中20%功能模块里。
B. 不能进行穷尽测试,有些功能是无法将所有测试情况逻辑出来的,任何的测试都有结束的时间。
C. 为了更好地发现和解决软件中的缺陷。
2. 测试人员在测试中的任务是什么?
答:
A. 尽早的找出系统当中的Bug
B. 避免软件开发过程中缺陷的出现
C. 确保缺(软)件的质量
D. 关注用户的需求,并保证系统符合用户需求
3. 缺陷报告内容包括什么?
答:
A. Bug的优先级,
B. Bug的严重程度,
C. 开发的接口人员,与Bug产生对应的软件版本
D. Bug可能属于的模块。如果不能确认,可以由开发人员来判读
E. Bug标题,需要清晰的描述现象
F. Bug描述,需要尽量给出新的Bug步骤
G. Bug附件中能给出相关的日志与截图
4. 请您描述一下测试的V模型?
答:
用户需求-需求分析-概要设计-详细设计-编码-单元测试-集成测试-系统测试-验收测试
5. 性能测试关注的指标是什么?
答:
吞吐率,用户的响应时间,每秒点击数,资源利用率,业务成功率,Tps
6. Bug不能复现怎么办?
答:
A. 首先考虑环境问题,看是否能够还原原来的环境
B. 遇到问题就要提,不能放过任何一个Bug,在提交的Bug描述中加上一句话,那就是复现概率,尝试20次,出现一次或尝试10次,交给开发,开发会根据Bug的复现概率,调整改Bug的优先级。
C. 尽量回想发生问题时的复现步骤,不要漏掉任何一个细节,按照步骤的组合尝试复现
D. 与开发人员配合,让开发人员对相应的代码检查,看是否通过代码层面检查出问题
E. 保留发生bug时的log,附加到提交的Bug中,希望可以通过log中找到一些蛛丝马迹。
F. 查看代码,也许是代码变更,引起的Bug
7. 什么是Http协议,请求方法是什么?,以及Http协议与Https协议的区别?
答:
Http协议又叫超文本传输协议,是定义了一个客户端到服务器请求与应答的标准,分别为请求头与响应头。
请求方法是:get请求与post请求。
HTTPS协议是以安全为目标的HTTP通道,简称Http的安全版。
区别:答:
A. http协议需要ca申请证书,一般免费证书较少,需要一定费用。
B. http的链接简单,是无状态的,而https协议是由SSL+http协议构建的可进行加密传输,身份认证的网络协议要比HTTP协议安全。
C. http协议是超文本协议,又叫明码传输,而https是具有安全性的SSL加密传输协。
http协议与HTTps协议使用的链接方式不同,一个用的端口是80(http),一个是443(https)。
8. get请求与post请求的区别?
答:
get请求通常从服务器获取数据,请求参数在地址栏之后,数据量有限制,不够安全
Post请求通常往服务器提交数据,请求参数在请求实体中,数据量无限制,较为安全。
9. 重载与重写的区别?
答:
A. 重载是发生同一个类中,方法名相同,参数列表(列表类型,参数个数,或者二者接不同)却不同,与返回值无关。
B. 重写是发生在父类与子类之间,子类的重写方法必须与父类的重写方法声明完全相同,有相同的返回值类型,比父类的重写方法更好访问。
10. APP测试与Web测试的区别?
答:
相同点:
A. 同样的测试用例方法相同。
B. 同样的测试方法:都会依据原型图或效果图来检查UI。
C. 测试页面载入与翻页的速度,登陆时长,内容是否溢出等。
D. 测试应用系统的稳定性。
不同点:
A. app测试平台:百度云测,testin云测不同。
B. App的安装卸载:全新安装,升级安装,第三方工具安装,第三方工具卸载,直接卸载删除,消息推送测试,手机授权测试,前后台切换,网络环境(wifi/2G/3G/4G/无网络)。
C. App的中断测试:来电中断,短信中断,蓝牙,闹钟,拔插数据线,手机锁定,手机断电,手机问题(系统死机重启)。
D. 兼容性测试:Web项目考虑不同浏览器的兼容,app需要考虑手机不同的操作系统,不同机型,不同屏幕等。
E. 网路测试:不同网络与运营商,目前我国有三大运营商如:电信,移动,联通,不同的网络制式,如:GSM,CDMA,3G等,在不好或无网络的情况下的APP行为。
F. 操作系统:大量的设备,各种的操作系统,目前使用最多的操作系统有:
G. android,ios,windows,blackberry等,它们之间的应用软件互不兼容。
H. 如设备不同:触摸式与非触摸式设备,有限的内存容量,电池耗电量,屏幕尺寸,分辨率等。
11. BS/CS架构的区别是什么?
答:
概念:所谓的架构就是用来指导我们软件开发的一种思维,目前最长见的就是BS/CS.
B—browser 浏览器
C—clent 客户端
S—server 服务端
区别:
A. 标准:相对于cs架构来说Bs架构的两端都是使用现成的成熟产品,bs会显示的标准一些。
B. 效率:相对于bs架构来说cs中的客户端可以分担一些数据的处理,执行效率会高一些。
C. 安全:bs架构当中得到数据的传输都是以Http协议进行传输的,而Http协议又是明文输出。可以被抓包,那么bs架构相比cs架构显得就不那么安全了,(其实都是相对的)。
D. 升级:bs架构只需要在服务器端将数据进行更新,前台只需要刷新页面就可以升级,而cs架构必须要将两端都进行更新才可以。
E. 开发成本:相对于bs架构来说cs当中的客户端需要自己开发,bs不用,所以说cs成本会高一些。
12. 举例说一下你的接口测试是怎么做的?
答:
我以下单这个接口说下吧:下单这个接口用的是http协议,使用post请求方式,发送给服务器的参数有token,产品ID,购买数量,收货人地址等等,这些参数都是必传的参数。我们是使用Jmeter来做接口测试的,首先,要新建一个线程组,在线程组下面添加一个http的请求,然后填写好服务器地址,接口路径,请求方式,请求参数。由于下单的接口依赖于等于,所以我们会先调用登录接口,从中获取token值,在下单接口中使用
参
数
名
的
方
式
引
用
,
接
下
来
还
要
对
其
他
参
数
进
行
参
数
化
,
构
造
各
种
正
常
和
异
常
的
数
据
,
我
们
先
在
本
地
创
建
一
个
t
x
t
文
档
,
把
参
数
填
写
到
文
档
里
面
,
在
J
m
e
t
e
r
中
添
加
一
个
c
s
v
文
件
设
置
,
填
写
好
t
x
t
文
档
的
路
径
,
然
后
在
请
求
参
数
中
使
用
J
s
o
n
提
取
器
把
t
o
k
e
n
值
关
联
出
来
,
然
后
在
下
单
接
口
中
使
用
参数名的方式引用,接下来还要对其他参数进行参数化,构造各种正常和异常的数据,我们先在本地创建一个txt文档,把参数填写到文档里面,在Jmeter中添加一个csv文件设置,填写好txt文档的路径,然后在请求参数中使用Json提取器把token值关联出来,然后在下单接口中使用
参数名的方式引用,接下来还要对其他参数进行参数化,构造各种正常和异常的数据,我们先在本地创建一个txt文档,把参数填写到文档里面,在Jmeter中添加一个csv文件设置,填写好txt文档的路径,然后在请求参数中使用Json提取器把token值关联出来,然后在下单接口中使用参数名的方式引用;接下来添加断言,检查服务器返回的结果和预期结果是不是一致的。最后,添加查看结果树查看测试结果。
13. Android手机和IOS手机,系统有什么区别?
答:
A. 运行机制不同:IOS采用的是沙盒运行机制,安卓采用的是虚拟机运行机制
B. 两者后台制度不同:IOS中任何第三方程序都不能在后台运行,安卓中任何程序都能在后台运行,直到没有内存才会关闭
C. IOS中用于UI指令权限最高,安卓中数据处理指令权限最高
14. 请说一下测试分类?
答:
功能测试、用户体验测试、性能测试、UI测试、兼容性测试、安装测试、文档测试、 稳定性测试等
15. 接口测试流程?
答:
项目启动后,测试人员近早找开发人员拿到接口文档,获取接口文档后进行接口用例的编写和调试,完成后部署到持续集成的测试环境种,设定脚本执行的运行频率,告警方式等基本参数,进行接口的日常监控,定期对接口脚本的维护更新,接口异常的处理
16. 你以前工作时的测试流程是什么?
答:
先要有需求评审(有开发人员—产品经理—测试人员—项目经理)需求确定(出一份确定好的需求文档)开发设计文档(开发人员在开始写代码前就能够输出设计文档)制定测试计划—写出测试用例—发给开发人员与测试经理看一下—接到测试版本—执行测试用例—提交Bug(有些时候可以直接写到TDTest Director相当于禅道—交给开发人员修改—回归测试。
17. 当你参加评审时,你的评审原则是什么?
答:
首先要从正确性,一致性,可行性,必要性,可跟踪性,分配优先级,可测性,可修改性考虑:
正确性:每一条需求都必须准确的陈述其要开发的功能。
一致性:必须与其他软件需求或高层需求不相矛盾。
可行性:其每一项需求都必须是已系统和环境的权能和限制范围可以来实施的。
必要性:每项需求都是用来授权你编写文档的“根源”,要使每项需求都能回潮至某项客户的输入。
可测性:每项需求都能通过设计测试用例或其他的验证方法来进行测试。
可修改性:每项需求只应在SRS中出现一次,这样更改会容易保持一致性。
可跟踪性:在每项软件需求与它的根源与设计元素,源代码,测试用例之间建立起链接,而这种可跟踪性要求每项需求都必须以一种结构化的,粒度好(fine-grained)的方式编写并单独标明,而不是大段大段的陈述。
分配优先级:应当对所有的需求分配优先级,如把所有需求都看作同样重要,那么项目管理者在开发或节省预算或调度中丧失控制自由度、
18. 软件测试的需求标准是什么?
答:
A. 文档版本信息:包含文档版本,作者,完成日期,修订版需要加上修订记录(版本号,修订者,日期,内容)。
B. 目录结构要清晰,不同级别的标题要区分字号。
C. 产品架构:一般只有功能以及信息架构,
D. 功能:一级-二级,三级功能要划出。以及产品特性(功能列表,原型界面,详细设计)
E. 其它产品需求需根据公司产品需求来定,如(兼容性,产品运营,性能要求等)。
19. 请写一下W模型图?
答:
20. 软件质量的特性是什么?
答:
A. 功能性:软件需求要满足用户显示或者稳式的功能。
B. 易用性:软件易于学习和上手使用
C. 可靠性:软件必须实现需求当中指明的具体功能。
D. 效率性:类似于软件的功能。
E. 可维护性:需求软件具有将某个功能修复之后继续使用的功能。
21测试计划工作的目的是什么?以及测试计划文档的内容包括什么?
目的:
明确测试任务与测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
内容:
A. 是指软件测试过程的纲领性文件。
B. 里面包含了产品概述,测试策略,测试方法,区域,配置,周期,资源,交流,风险分析等内容。
C. 测试不同的起止时间。
D. 相应文档,缺陷的存放位置,测试环境等。
E. 项目有关人员的组成,安排那些测试人员进行测试。
22.搭建过什么环境,搭建工作环境是如何搭建的?
答:
测试环境操作系统用Linux,通常测试环境包括JDK环境,Tomcat环境和mysql环境
JDK:1.安装jdk如果有自带,先卸载再装,2.把包复制/usr/local
,3.解压,4.配置环境变量,5.检查java是否安装成功java -version
Tomcat:1.安装tomcat,2.把下载的tomcat包复制/usr/local,3.解压,4.在tomcat/bin目录执行startup.sh文件5.启动服务6.在浏览器中连接:IP:8080,7.如果连接不上,但tomcat又是显示启动OK,检查firewall,路径为 /etc/sysconfig/iptables,将8080端口开启,6.重启服务
Mysql数据库:mysql安装比较简单,可以使用源码安装,也可以使用yum在线安装,在这里简单地介绍一下yum在线安装
用yum在线安装
1.rpm -qa|grep mysql --检查linux是否有存在的mysql
2.如果有mysql,卸载 rpm -e --nodeps mysql
3.安装 yum install mysql-server mysql mysql-dev -y
4.安装成功后,启动服务 service mysqld start service 服务名 restart/start
5.直接输入mysql 进入到数据库。
23.怎样保证覆盖用户需求
项目开始前,我们会先熟悉需求,画好流程图,保证整个流程都覆盖全面,小组之间每个人都要根据各自的流程图,各个功能点有哪些限制条件,来讲解一下自己对测试点的理解,防止之后编写测试用例时出现遗漏;用例编写完之后,再进行用例的评审,看看测试点有没有用遗漏,对需求理解有没有错误,测试场景是否覆盖完全。
24.开发环境与测试环境有什么区别?
开发环境:是在编码阶段,一般我们的代码基本上都是在开发环境中,不会再生产与测试环境,如操作系统,web服务器,语言环境,php,数据库等等。
测试环境:项目完成后,找Bug,以及修改Bug。
生产环境: 项目数据前后端已经疏通,部署到阿里云上有客户去使用以及访问,网络正常运行就好了。
工具+项目:
25. 如果给你购物商城网页(京东,淘宝等)你会怎样进行测试?测试哪些主要功能?
答:
A. 首先要先进行需求分析,xmind梳理测试点,编写案例,案例评审,寻求他人意见,再完善案例,交给其他人检查。
B. 测试点:如UI,美观度,易操作型,易理解型方面进行测试。
C. 在考虑功能点,如登陆注册,添加购物车,下单,付款,发货,确认收货,评价。
D. 还有就是支付时候的绑定银行卡,以及实名认证。
E. 性能方面:如打开网页,确认订单,付款的响应时间等。
F. 兼容性:如支持各种主流浏览器,如(EI,360,火狐,谷歌等)。
26. 微信发红包的测试用例?
A. 功能:
a) 在红包钱数,和红包个数的输入框中只能输入数字
b) 红包里最多和最少可以输入的钱数 200 0.01
c) 拼手气红包最多可以发多少个红包 100
d) 超过最大拼手气红包的个数是否有提醒
e) 当红包钱数超过最大范围是不是有对应的提示
f) 当发送的红包个数超过最大范围是不是有提示
g) 当余额不足时,红包发送失败
h) 在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,
i) 是否可以输入它们的混合搭配
j) 输入红包钱数是不是只能输入数字
k) 红包描述里许多能有多少个字符 10个
l) 红包描述,金额,红包个数框里是否支持复制粘贴操作
m) 红包描述里的表情可以删除
n) 发送的红包别人是否可以领取
o) 发的红包自己可不可以领取 2人
p) 24小时内没有领取的红包是否可以退回到原来的账户
q) 超过24小时没有领取的红包,是否还可以领取
r) 用户是否可以多次抢一个红包
s) 发红包的人是否还可以抢红包 多人
t) 红包的金额里的小数位数是否有限制
u) 可以按返回键,取消发红包
v) 断网时,无法抢红包
w) 可不可以自己选择支付方式
B. 兼容:
a) 苹果,安卓是否都可以发送红包
b) 电脑端可以抢微信红包
c) 界面
d) 发红包界面没有错别字
e) 抢完红包界面没有错别字
f) 发红包和收红包界面排版合理,
g) 发红包和收到红包界面颜色搭配合理
C. 安全:
a) 对方微信号异地登录,是否会有提醒 2人
b) 红包被领取以后,发送红包人的金额会减少,收红包金额会增加
c) 发送红包失败,余额和银行卡里的钱数不会少
d) 红包发送成功,是否会收到微信支付的通知
D. 易用性(有点重复):
a) 红包描述,可以通过语音输入
b) 可以指纹支付也可以密码支付
27.写好测试用例的关键 /写好用例要关注的维度?
1.覆盖用户的需求
2.从用户使用场景出发,考虑用户的各种正常和异常的使用场景;
3.用例的颗粒大小要均匀。通常,一个测试用例对应一个场景;
4.用例各个要素要齐全,步骤应该足够详细,容易被其它测试工程师读懂,并能顺利执行
5.做好用例评审,及时更新测试用例。
28.Jmeter的是如何进行测试的?
1.打开JMeter,
2.创建线程组
3.设置线程数和循环次数。我这里设置线程数为500,循环一次
4.配置元件
5. 配置我们需要进行测试的程序协议、地址和端口
6. 构造HTTP请求
7. 添加HTTP请求头
8. 添加断言
9. 添加察看结果树
10. 添加Summary Report
11. 执行测试计划,执行测试计划不能用GUI,需要用命令行来执行
12. Web报告
29.Jmeter的连接数据库
A. 添加需要的驱动
B. 添加jar包
C. 配置JDBC Connection Configuration
D. 添加JDBC Request
30.Jemeter为什么要参数化?
1,多用户登录的时候,如果不进行参数化就没演示了。
2,需要使用CSV将参数放到文件,来演示多用户登陆。
3,在进行录制的时候,有可能存在第二个请求的参数是从第一个请求中获取出来的,需要在第一个请求下,去将参数提取出来,再到第二个请求中进行参数化。
31.Jemeter如何进行压力测试?
我们在公司大部分是进行的数据库压测以及接口压测。
32.请您介绍一下Jemeter是如何使用的?
答,先创建一个线程组,指定并发的线程数量,在指定测试的接口,创建相应的监听器,(如,表格结果,结果树,以及聚合报告信息)通过监听器来进行监听测试是否通过以及接口存在什么问题。
33. 进行接口测试,你是如何进行去测试的?
答:
1,首先要看有没有接口文档,如果有文档的时候按接口文档去做,没有的话就去抓包。
2,我们一般使用postmian以及jemter.
3,没有接口文档的情况下,要先创建一个线程组,指定并发的线程数量,在指定测试的接口,创建相应的监听器,(如,表格结果,结果树,以及聚合报告信息)通过监听器来进行监听测试是否通过以及接口存在什么问题。
34.性能测试怎么做的?
做性能需求分析,挑选了用户使用最频繁的功能来做性能测试,比如:登陆,打开系统首页,搜索,提交订单,确定性能指标,比如:事务通过率为100%,90%的事务响应时间不超过3秒,CPU和内存的使用率为70%以下。
搭建性能测试环境,准备好性能测试数据。
使用Jmeter开发优化脚本,包括:参数化,断言,关联等。
设计性能测试场景,我们这个项目做了单用户单功能循环200次的基准测试,然后使用1500个用户,执行30分钟的负载测试,看系统有没有性能瓶颈;
我们搭建了分布式压力测试环境进行测试,每台压力机并发500个用户,并监控linux服务器的CPU,内存,IO。
分析性能测试结果,如果有性能瓶颈,收集相关的日志提单给开发修改。
开发修改好后,回归性能测试,然后输出性能测试报告。
35.如果你要进行性能测试,你是如何展开操作的?
答:
A. 确定关键业务,关键路径
B. 确定输入参数以及输出参数,指定负载测试方案
C. 准备测试环境,完成脚本录制,或者测试脚本开发,
D. 执行测试,观察或输出参数,如(数据吞吐量,响应时间,资源占有率等)
E. 对测试结果进行分析
36.自动化测试有了解吗?自动化测试的工具有哪些?(了解)
常用的自动测试框架工具:Selenium,Appium,unittest。等
37.Selenium元素定位方法有哪些?
web端: 各种方式来定位页面元素,如通过id,通过link Text,通过css,通过xpath来定位元素,一般,如果有id,我们就使用id,然后使用css或者xpath来定位,dom(document object model) 元素,当然定位的时候,需要在浏览器里边安装firebug firepath来抓取页面元素对应的xpath信息。其他的定位方式有name classname css_selector,tag-name,linux-txet
38.安全性测试包括哪些方面?
用户验证,用户权限管理,系统数据的保护
39. 为什么要进行抓包?
答:
A. 有些时候公司没有标准的接口文档,测试人员只能抓包来获取接口测试。
B. 抓包可以迅速找到请求,通过抓包可以查看整个请求的过程,以及响应时间,还可以分辨前台与后台Bug.
C. 通过抓包,可以查看是否有敏感信息,如(用户密码,个人账户信息等数据)
D. 可以通过抓包进行测试,拦截请求,修改请求数据,查看对应的响应结果,抓包本身就是接口的一部分。
40.一般抓包用什么工具,怎么进行抓包?
工具上使用:Fiddler.charles这两个工具
Fiddler:
A. 设置Http代理,设置端口号,在手机上设置与fiddler在同一网段上,设置代理ip,设置代理端口,手机上的请求就能获取到了。
B. 抓取请求查看,可以过滤,找到自己域名下的请求,通过分析请求地址,请求参数,响应结果来查找问题。
Https包怎么抓?
A. http与Https协议区别在于Https多了一个ssL协议,更加安全,默认端口是443,而http默认端口是80.
B. 抓取Https时,需要获取申请证书,在fiddler与charles两个工具中,可以模拟下载966证书,下载后,在手机上访问代理服务器的ip与端口,下载证书,就可以抓取到HTTPS的请求了。
41.测试用例评审的流程是什么?
目的:主要是为了开展测试用例评审工作提供指引,规范测试用例管理工作。
流程:
A. 测试用例是否按照公司定义的模板进行编写的;
B. 测试用例的本身的描述是否清晰,是否存在二义性;
C. 测试用例内容是否正确,是否与需求目标相一致;
D. 测试用例的期望结果是否确定、唯一的;
E. 操作步骤应与描述是否相一致;
F. 测试用例是否覆盖了所有的需求;
G. 测试设计是否存在冗余性;
H. 测试用例是否具有可执行性;
I. 是否从用户层面来设计用户使用场景和业务流程的测试用例;
J. 场景测试用例是否覆盖最复杂的业务流程;
K. 用例设计是否包含了正面、反面的用例;
L. 对于由系统自动生成的输出项是否注明了生成规则;
M. 用例应包含对中间和后台数据的检查;
N. 测试用例应有正确的名称和编号,
O. 测试用例应标注有执行的优先级;
P. 测试用例包含相关的配置信息:测试环境、数据、前置测试用例、用户授权等;
Q. 每个测试用例步骤应<=15 Step;
R. 自动化测试脚本必须带有注释(注释应包括:目的、输入、期望结果等);
S. 非功能测试需求或不可测试需求是否在用例中列出并说明?
42. 怎样分析性能测试结果?
答:
1.查看聚合报告和服务器的资源使用图,检查响应时间,事务成功率,CPU,内存和IO使用率是否达到要求,如果出错率达到了总请求数的3%,我们会检查是什么原因导致的,修改好后,重新测试;2.如果出现了性能瓶颈,比如响应时间,或者CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致响应时间过长,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试。
43.请说几个常见的状态码?
200:请求发送成功。
302:代表重定向。
400:客户端发送的请求语法错误。
401:请问的页面没有授权。
403:没有权限访问这个页面。
404:没有这个页面。
500:服务器内部异常。
501:当前不能处理客户端的请求。
504:服务器端超时,没返回结果。
44.请描述下接口测试与UI测试是如何协同测试的?
A. 有一部分是重叠的,Ui测试是通过前端写的界面,是来调用接口的,而接口测试是直接调用接口。
B. 排除前端的处理逻辑与调用的正确性,在理论上接口测试是可以覆盖所有的Ui测试,但实际中,如接口层覆盖所有的业务流,在Ui上只测试前端的逻辑,而最终的结果会忽视很多原有的功能点,导致了Ui测试的不充分,那么会存在人多分工且时间充分的时候可以尝试接口去做业务流的全覆盖,否则不要轻易的去尝试。
45.接口抓包测试是如何去抓的?
工具上使用:Fiddler.charles这两个工具
Fiddler:
A. 设置Http代理,设置端口号,在手机上设置与fiddler在同一网段上,设置代理ip,设置代理端口,手机上的请求就能获取到了。
B. 抓取请求查看,可以过滤,找到自己域名下的请求,通过分析请求地址,请求参数,响应结果来查找问题。
Https包怎么抓?
A. http与Https协议区别在于Https多了一个ssL协议,更加安全,默认端口是443,而http默认端口是80.
B. 抓取Https时,需要获取申请证书,在fiddler与charles两个工具中,可以模拟下载966证书,下载后,在手机上访问代理服务器的ip与端口,下载证书,就可以抓取到HTTPS的请求了。
46.你们项目最佳的并发用户数是多少?
答:我们当时做到1500个并发用户的时候,查询功能的响应时间超过了性能指标2秒多,原因是有几个表的索引建得不合理导致的,重新建索引后,问题就解决了。我们当时做到1500并发用户后,就没再继续增加用户量了。
47.如何判断网络是否存在瓶颈?
在性能测试结束之后,我们会根据性能测试的结果,查看在整个性能测试过程中,网络的吞吐量是多少,如果网络的吞吐量占到了服务器的70%以上,我们就认为网络存在瓶颈,通常会增加带宽或者压缩传输数据。
48.如何判断响应时间不达标
响应时间不达标的话,我们会根据性能测试结果先检查看下是否是服务器带宽存在问题,如果带宽存在瓶颈,则会考虑增加带宽或者压缩传输数据,如果带宽没有问题的话,我们会从服务器上导出日志,开发一起讨论分析是哪个地方导致响应时间过长,确定问题后,就提单给开发修复,修复好了就进行回归测试。
49.如何判断CPU使用率不达标
CPU使用率不达标,我们会从服务器上导出日志,分析是哪个地方导致CPU使用率不达标,如果分析不出来,就叫上开发一起讨论,确定问题后,就提单给开发修复,修复好了就进行回归测试。
50.App常见崩溃的原因?
A. 设备碎片化:由于设备极具多样性,App在不同的设备上可能有不同表现形式。
B. 宽度限制:宽带不佳的的网络对APP所需的快速响应时间不够。
C. 网络的变化:不同网络间的切换可能会影响App的稳定性。
D. 内存管理:可能内存过低,或非是授权的内存位置的使用可能会导致App失败。
E. 用户过多:连续数量过多可能会导致App崩溃。
F. 代码错误:没有经过测试的新功能,可能会导致App在生产环境中失败。
G. 第三方服务:广告或弹出屏幕可能会导致App崩溃。
51.你在项目中最经典的BUG是什么?
A. 兼容性问题,在ie浏览器,提交订单按钮可以点击,到了谷歌,火狐就不能了。
B. 查询订单页面,根据条件筛选的结果不是想要的结果,还有某些字段的值没有显示出来,或者显示错误。(因为开发从库表取值有误)
C. 付款成功后,订单状态一直不翻转为交易成功。(因为代码没有正确获取库表中付款成功记录的状态码)
D. 修改支付密码,新密码和原密码一致,也通过了,系统没有做新旧密码的校验。
E. 付款时候的手机验证码,可以一直使用,没有成功做有效期控制。
F. 手机app断开网络后,再去点击,没有友好的错误页面提示网络已断开,只有undefined返回
52.你在你工作中遇到最棘手的问题是什么?
自动化测试,编写脚本,我工作以来遇到最大的问题就是这个
53.弱网情况下你是如何测试的?
如:
A. 2G的网速150kbps,折合下载速度15-20K/S.B=8b.g
B. 3G的网速 1-6Mbps,折合下载速度120K/S-600K/S.
C. 4G的网速10-100Mbps,折合下载速度1.5M/s-10M/s.
a) 使用真实的SIM卡,运营上网络来进行测试。
b) 通过代理的方式模拟弱网环境下进行测试(charles应延迟)
c) 链接模拟弱网的热点进行测试(如360wifi助手可以设置)
54.跟开发人员因为BUG产生分歧你是如何解决的?
A. 问题确认与评估
B. 明确开发不修改该缺陷的确切原因
C. 具体问题具体分析–注:dev代表开发 tester表示测试人员
D. 发挥TM与PM的沟通职责 注TM表示测试经理 PM表示产品经理强调沟通。
55.如何提交高质量的软件缺陷记录(报告)?
A. 通用ui要统一、准确。
B. 尽量使用业界惯用的表达术语和表达方法
C. 每条缺陷报告只包括一个缺陷
D. 不可重现的缺陷也要报告
E. 明确指明缺陷类型
F. 明确指明缺陷严重等级和优先等级
G. 描述 (Description) ,简洁、准确,完整,揭示缺陷实质,记录缺陷或缺陷出现的位置
短行之间使用自动数字序号,使用相同的字体、字号、行间距
短行之间使用自动数字序号,使用相同的字体、字号、行间距,可以保证各条记录格式一致,做到规范专业。
H. 每一个步骤尽量只记录一个操作
I. 确认步骤完整,准确,简短
J. 根据缺陷,可选择是否进行图象捕捉
56. 手机端测试的关注点有哪些?
答:
ui测试,功能,性能测试,安装卸载测试,软件升级测试,登陆测试,安全性测试,消息推送,前后台切换,兼容性测试,网络环境测试,monkey测试。
57.Web测试的方法有哪些?
58.软件测试的分类有哪些?
59. 测试用例的方法有哪些以及包含的内容?
答:
方法:等价类划分法,边界值,场景法,因果图,正交表。
内容:等价类划分法:边界值:场景法: 因果图:正交表:数据库与命令:
60.App的性能测试怎么做的?
App的性能分为服务器端的性能和手机端的性能。 服务器端的性能,我们用Jmeter工具进行测试的,和web的端性能测试方法一样的。我们是用monkey做手机端App的稳定性测试的,使用monkey跑10万次,看它会不会出问题,如果出了问题,我们再定位原因,具体的做法是这样的:在跑monkey前,先使用adb logcat -c清空手机的logcat日志接下来,使用adb logcat -v time获取logcat日志并导入本地文件使用monkey运行被测应用:adb shell monkey -p 包名 -v 10万次 并将执行结果导入到本地测试完成后查看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。那我就要去看看monkey日志中有没有crash或者anr的关键字,如果有还需定位到是什么原因导致的anr或者crash的问题。并且将相关日志和logcat日志与进程号提交给开发定位,如果是anr的问题,还需要从安卓中获取/data/anr/traces.txt文件提交给开发定位。
61.看你写有用MONKEY做APP测试,怎么做的?如果有问题的话怎么定位?
我们是使用monkey来做稳定性测试的,在跑monkey前,先使用adb logcat -c清空手机的logcat日志接下来,使用adb logcat -v time获取logcat日志并导入本地文件使用monkey运行被测应用:adb shell monkey -p 包名 -v 10万次 并将执行结果导入到本地
试完成后查看monkey日志,如果说它跑的次数跟我设的次数不一样.就说明monkey中途跑失败了。那我就要去看看monkey日志中有没有crash或者anr的关键字,如果有还需定位到是什么原因导致的anr或者crash的问题。并且将相关日志和logcat日志与进程号提交给开发定位,如果是anr的问题,还需要从安卓中获取/data/anr/traces.txt文件提交给开发定位。
62.APP出现ANR的原因
线程阻塞的,内存不足,CPU满负荷(由于现在的手机基本都是8核CPU,所以基本不会出现CPU满负荷的情况)
63.APP出现CRASH的原因:
空值指针
数组越界
内存不足
CPU满负荷(由于现在的手机基本都是8核CPU,所以基本不会出现CPU满负荷的情况)
64.Appium的工作原理是什么?
我们的电脑(c端)上运行自动化测试脚本,调用的是appium的webdriver的接口,appium服务器(s端)接收到我们client上发送过来的命令后,他会将这些命令转换为UIautomator认识的命令,然后由UIautomator来在设备上执行自动化。
65.MySql数据库查询语言有哪些?多表联查会吗?
数据库语言最常用的bai是SQL (结构化查询语du言)。
多表联查:
select * from table1 t1,table2 t2 where t1.id=t2.id
这样就是联合查询啊
left join
right join
inner join
66.MySql数据库的增删改查?
增加列:
alter table 数据表名 add birthday datetime;
改:
1.修改字段,不重命名,用modify
alter table 数据表名 modify birthday date;
2.修改字段,重命名,用change
alter table 表名 change 原名 新名 类型及约束
alter table 数据表名 change birthday birth date;
删:
alter table 表名 drop 列名;
枚举中的下标从1开始,对应枚举
数据:
查:
查询表使用数据 select * from 表名;
部分查询 select * from 表名 where 条件;
可以使用as 为列表指定别名
select 字段 as 别名,字段 as 别名 from 数据表名 where…;
67.SQL内关联和外关联的区别?
内关联是求交集
外观连是一主表为标准,去附表找需要的信息
详细就去自己做测试
68.SQL语句做哪些处理,举例?
如果用sql语句,数据处理比较快,处理后传输的数据量稍大,由123变成了汉字。
在代码中处理,传输的数据量小点,处理速度取决于代码怎么处理。
如果数据量不大,两种方法区别不明显,建议用sql语句。
69.liunx磁盘满了,怎么处理?
#ls –bailR /home >;files.txt
#diff filesold.txt files.txt
70.Linux系统操作的指令说一下:增加,删除,复制,移动等问题?
Cd:进入目录
Cd app:切换到app目录
Cd… :切换到上一层目录
Cd/: 切换到系统根目录
Tail -10 a.txt :查看后10行数据
Ifconfig :查看ip
Ll:查看文件及其属性
Vi: 编辑
Rm-rf: 删除
Car:解压及压缩命令
Cp:复制
Pwd:显示当前路径
Mv:移动
Cat:查看文件内容
Touch:创建文件
Tail logcat:查看日志
Cat logcat:查看日志
Tomcat:日志
Tail :查看日志记录信息,tail -f catinalia out
71.Linux系统日志查看指令,压缩,解压指令等问题?
tar -xvf 文件名 :解压
Tar -n logcat 查看系统日志
tar -zcvf 文件名:压缩
72.LInux系统TOP命令介绍?
显示,管理执行中的程序 就是任务管理器
73.说几个常用的adb指令?
Adb install(apk的文件路径) 安装软件到手机或者模拟器
Adb uninstall(包名) 卸载手机或模拟器上的某款软件
Adb devices 查看与当前电脑连接的移动设备
Abd ,adb start-server 启动
Adb,adb kill-server 杀死
Adb logcat 查看日志
Adb logcat -v time process >
74.软件负盖安装的adb命令?
adb install -r xx.apk 覆盖低版本的
adb install -r -d 覆盖高版本的
75.性能测试的Adb命令?
adb shell dumpsys cpuinfo 查看手机cpu的使用情况
adb shell getprop|findstr dalvik 手机系统自己运行的内存使用
76.说几个Monkey指令?
Adb shell monkey -p 包名
Adb-shell–ignore-crashes 忽略崩溃
Adb-shell–ignore-timeouts 忽略延时
Adb-shell–ignore-throttle 延时毫秒值
Adb-shell–pct-touch–pct-motion 触摸与滑动事件的比例
工作的话一般是根据文档或百度去查
77.Linux上能不能直接进行性能测试?
不能,脚本需要通过windows调试好后,才能在linux上运行,运行的时候,只能通过non GUL形式进行启动jmeter,但需要注意的是,csv文件在windows上与LInux上要统一路径,最好使用相对路径,放到统一目录下边。
工具:
78.你都过什么测试
答:功能测试,性能测试,以及接口测试,在公司中大部分是做的功能与性能测试
19. 你们接口测试是怎么测试的
答;根据接口文档,进行测试,里面包含url,请求参数,以及响应结果,如果没有接口文档的情况下,通过抓包的方式进行测试一般抓包的时候我们会使用charles的方式进行抓包或者是fiddler
79.如果回归测试不通过怎么办?
A. 首先考虑环境问题,看是否能够还原原来的环境
B. 遇到问题就要提,不能放过任何一个Bug,在提交的Bug描述中加上一句话,那就是复现概率,尝试20次,出现一次或尝试10次,交给开发,开发会根据Bug的复现概率,调整改Bug的优先级。
C. 尽量回想发生问题时的复现步骤,不要漏掉任何一个细节,按照步骤的组合尝试复现
D. 与开发人员配合,让开发人员对相应的代码检查,看是否通过代码层面检查出问题
E. 保留发生bug时的log,附加到提交的Bug中,希望可以通过log中找到一些蛛丝马迹。
F. 查看代码,也许是代码变更,引起的Bug
80.测试报告包括哪些?
A. 项目的概要描述。
B. 测试过程缺陷的统计, 一定程度反映项目的质量。
C. 整个项目过程有需要改善地方,提出建议。
D. 给出结论,项目是否可以上线
81.postman与jmeter的区别是什么?
答:1,用例组织不同,jmeter的组织是比较扁平,首先他没有工作空间的概念,直接就是测试计划,而postman功能上更简单,组织方式是轻量级,他主要针对的是单个的http请求。
2. 支持接口的类型与测试的类型不同:jmeter的功能更强大,可以通过各种类型的接口,不支持的也可以通过网上或者自己编写的插件进行扩展,而postman更轻量级,定位不同,可用来测试Rest接口。
3. 配置不同:jmeter可以在线程组里添加http,tcp,而postman只支持Rest接口。
82.postman做哪些操作?
Postman 是一款功能超级强大的用于发送 HTTP 请求的 Chrome插件 。做web页面开发和测试的人员应该是无人不晓无人不用!其主要特点 特点: 创建 + 测试:创建和发送任何的HTTP请求浏览器的兼容性测试是怎么测试的?
83.手机兼容性测试?兼容测试测试哪些内容?
大型的,用户群体多的网站都需要做浏览器兼容性测试,需要测试主流的浏览器(除特定要求的浏览器以外)
测试的内容:一般是页面的排版,页面格式,字体,颜色,下拉菜单,复选框等测试(UI:CSS,HML,Js在不同浏览器下的表现)
再就是对功能进行检查PC端打开浏览器网页测试流程? 对于账户名密码安全的查看,怎么查看
84.最近工作功能测试流程?意思是问测过哪些功能?
测试流程:
A. 待测应用在不同的操作系统平台上正常运行,包括待测试项目能在同一操作系统平台的不同版本上正常运行;
B. 待测应用能与相关的其他软件或系统“协调工作”;
C. 待测应用能在指定的硬件环境中正常运行;
D. 待测应用能在不同的网络环境中正常运行。
测过哪些功能:
A. 兼容性测试就是测试电脑硬件之间是否有不兼容等问题或软件问题。
B. 兼容性测试侧重哪些方面 1、向前兼容和向后兼容。向前兼容是指可以使用软件的未来版本,向后兼容是指可以使用软件的以前版本。 2、不同版本之间的兼容。实现测试平台和应用软件多个版本之间能够正常工作。
85.代码的版本管理用什么工具,上传和合并代码?SVN介绍用的版本管理工具
第一问:
A. 首先在电脑上打开360极速浏览器,其他浏览器也大同小异,在一个网页中“右键–审查元素”…
B. 在弹出的窗口中,在右下角找到setting按键,进入设置界面。
C. 在settings中,找到overrides,并点击,勾选Enable和User-…
D. 然后选择相应需要用到的手机系统与相应的设备,进行模拟。
E. 然后再下拉,这里可以设置屏幕的分辨率,字体的大小比例等。
第二问:
A. 首先打开支付宝在最下面一行找到“我的”点击
B. 然后点击账户名右边的小箭头。
C. 接着找到“设置”点击。
D. 点击“安全设置”。
E. 点击“安全中心
86.测试手机兼容性测试是如何测试的?
答:一般测试手机兼容性的时候会考虑到手机的型号,分辨率以及安卓版本号,一般常用的手机型号如:华为,锤子,小米,魅族等,一般碎片化会严重,从Android6.0到Android10.0的版本是不一样的,而最近的版本号已经到10了,也就是AndroidQ,它是协助开发者利用5G,折叠屏,无框屏,设备内置Al等最新技术继续创新,同时确保用户安全,隐私及数字健康。向分辨率这块大部分是19201080,还有好多的分变率,如7201280,还有大的分辨率,都要考虑兼容,不然的话手机视觉体验就会不太好,一般会买真机去测。。
87.压力测试与负载测试的区别是什么?
答:通常性能测试中的压力测试是在系统资源特别低的情况下软件系统运行的情况,其目的是找到系统在哪里失效以及失效的地方,关注点在于系统咋峰值负载或超出最大负荷情况下的处理能力,而负载测试是指数据在超负荷环境下运行,程序是否能够承受并满足最终确定性能指标的情况下所能承受的最大负载量。
以上是关于测试面试题(2021)干货!的主要内容,如果未能解决你的问题,请参考以下文章
2021 字节,网易,华为,小米,讯飞面试经验总结!(纯干货分享)
2021精选 Java后端面试题资料大全 SpringBoot,Kafka,Mysql,Redis等PDF资料,实战项目,阿里巴巴,腾讯,字节,京东,美团,滴滴,Bilibili面试经历,实用干货